tf-idf sickitlearn отделяет слово от слова - PullRequest
0 голосов
/ 04 октября 2018

Я работаю с проблемой в классификации текста, где Если слово было найдено в этом формате "слово" , оно будет иметь значение, отличное от найденного в этом формате слово , поэтомуЯ попробовал этот код

    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 голосов
/ 04 октября 2018

Ваш шаблон токена

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\"

, которая ищет слово в кавычках.

0 голосов
/ 04 октября 2018

Вам необходимо настроить параметр token_pattern в соответствии с вашими потребностями.Следующее должно работать для предоставленного примера:

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

Однако вам может потребоваться дальнейшее уточнение шаблона.https://regex101.com может быть полезно для правильного выражения.

...