【发布时间】:2015-01-05 16:56:58
【问题描述】:
我想在 TfidfVectorizer 中的 stop_words 中添加更多单词。我遵循了Adding words to scikit-learn's CountVectorizer's stop list 中的解决方案。我的停用词列表现在包含“英语”停用词和我指定的停用词。但是 TfidfVectorizer 仍然不接受我的停用词列表,我仍然可以在我的功能列表中看到这些词。下面是我的代码
from sklearn.feature_extraction import text
my_stop_words = text.ENGLISH_STOP_WORDS.union(my_words)
vectorizer = TfidfVectorizer(analyzer=u'word',max_df=0.95,lowercase=True,stop_words=set(my_stop_words),max_features=15000)
X= vectorizer.fit_transform(text)
我还尝试将 TfidfVectorizer 中的 stop_words 设置为 stop_words=my_stop_words 。但它仍然不起作用。请帮忙。
【问题讨论】:
-
我确实使用了您的代码并以here 运行。我得到了预期的结果。你能提供更多细节吗?
-
我正在对包含 url 的推文进行分类。现在我使用 SelectKBest 提取的特征包含这些 url。所以我想在我的停用词列表中添加这些网址,以便将其从我的功能集中删除。如上所示,我添加了这些网址。
-
这是我的停用词列表的样子:frozenset(['', 'wA4qNj2o0b', 'all', 'fai5w3nBgo', 'Ikq7p9ElUW', '9W6GbM0MjL', 'four', 'WkOI43bsVj ','x88VDFBzkO','谁的','YqoLBzajjo','NVXydiHKSC','HdjXav51vI','q0YoiC0QCD','to','cTIYpRLarr','nABIG7dAlr','under','6JF33FZIYU','非常', 'AVFWjAWsbF'])
-
这是我的功能集的样子:[u'bcvjby2owk', u'cases bcvjby2owk', u'cases dgvsrqaw7p', u'dgvsrqaw7p', u'8dsto3yxi2', u'guardianafrica' , u'guardianafrica 监护人\xe2', u'guardianafrica 监护人\xe2 nickswicks']
-
我可以看到功能列表中没有出现任何停用词。因此,报告的行为是预期的。在这里,用于过滤这些哈希的方法是错误的。如果您将随机字符串作为停用词传递给矢量化器,它不会智能地过滤相似的字符串。停用词是要过滤的精确/硬编码字符串。或者,您可以使用正则表达式(在将文本块传递给矢量化器之前)过滤所有不需要的 url。这可能会解决您的网址问题。
标签: python scikit-learn classification stop-words text-classification