TF-IDF病态学习将单词中的“单词”分开

时间:2018-10-04 09:20:08

标签: python text-classification tf-idf

我正在处理文本分类中的一个问题,如果找到以这种格式“ word” 的单词,它将与以这种格式 word 所以我尝试了此代码

    import re
    from sklearn.feature_extraction.text import CountVectorizer
    sent1 = "The cat sat on my \"face\" face"
    sent2 = "The dog sat on my bed"
    content = [sent1,sent2]
    vectorizer = CountVectorizer(token_pattern=r"(?u)\b\w\w+\b|!|\?|\"|\'")
    vectorizer.fit(content)
    print (vectorizer.get_feature_names()) 

结果是

    ['"', 'bed', 'cat', 'dog', 'face', 'my', 'on', 'sat', 'the']

我希望在哪里

    ['bed', 'cat', 'dog', 'face','"face"' 'my', 'on', 'sat', 'the']

2 个答案:

答案 0 :(得分:2)

您的令牌模式是

token_pattern=r"(?u)\b\w\w+\b|!|\?|\"|\'"

正在查找单词(\ b \ w \ w + \ b)或感叹号,问号或引号。尝试类似

token_pattern=r"(?u)\b\w\w+\b|\"\b\w\w+\b\"|!|\?|\'"

注意部分

\"\b\w\w+\b\"

查找包含引号的单词。

答案 1 :(得分:0)

您需要根据需要调整token_pattern参数。以下应该适用于所提供的示例:

pattern = r"\S+[^!?.\s]"
vectorizer = CountVectorizer(token_pattern=pattern)

但是,您可能需要进一步细化图案。 https://regex101.com可能有助于使正则表达式正确。