Sklearn tf-idf TfidfVectorizer无法捕获一个字母单词

问题描述

特定实例为"Queens Stop 'N' Swap"。转换后,我只有三个特征['Queens','Stop','SWap']'N'已被忽略。如何捕获'N'?所有参数都是我的代码中的认设置。

### Create the vectorizer method
tfidf_vec = TfidfVectorizer()

### Transform the text into tf-iwine vectors
text_tfidf = tfidf_vec.fit_transform(title_text)

解决方法

您没有获得'n'作为令牌,因为默认情况下令牌生成器不将其视为令牌:

from sklearn.feature_extraction.text import TfidfVectorizer

texts = ["Queens Stop 'N' Swap",]
tfidf = TfidfVectorizer(token_pattern='(?u)\\b\\w\\w+\\b',)
tfidf.fit(texts)
tfidf.vocabulary_
{'queens': 0,'stop': 1,'swap': 2}

要捕获1个字母标记并保留大写字母,请更改它,例如:

tfidf = TfidfVectorizer(token_pattern='(?u)\\b\\w+\\b',lowercase=False)
tfidf.fit(texts)
tfidf.vocabulary_
{'Queens': 1,'stop': 2,'N': 0,'swap': 3}