scikit-learn TfidfVectorizer 忽略某些单词
Posted
技术标签:
【中文标题】scikit-learn TfidfVectorizer 忽略某些单词【英文标题】:scikit-learn TfidfVectorizer ignoring certain words 【发布时间】:2019-04-03 15:37:38 【问题描述】:我正在尝试使用 TfidfVectorizer 处理取自关于葡萄牙历史的***页面的一句话。但是我注意到TfidfVec.fit_transform
方法忽略了某些单词。这是我试过的句子:
sentence = "The oldest human fossil is the skull discovered in the Cave of Aroeira in Almonda."
TfidfVec = TfidfVectorizer()
tfidf = TfidfVec.fit_transform([sentence])
cols = [words[idx] for idx in tfidf.indices]
matrix = tfidf.todense()
pd.DataFrame(matrix,columns = cols,index=["Tf-Idf"])
数据框的输出:
本质上,它忽略了“Aroeira”和“Almonda”这两个词。
但我不想让它忽略这些词,我该怎么办?我在他们谈论这个的文档上找不到任何地方。
另一个问题是为什么重复“the”这个词?算法是否应该只考虑一个“the”并计算其 tf-idf?
【问题讨论】:
您的代码中的“单词”是什么? 【参考方案1】:tfidf.indices
只是 TfidfVectorizer 中特征名称的索引。
通过这个索引从句子中获取单词是错误的。
您应该将 df 的列名称设为 TfidfVec.get_feature_names()
【讨论】:
【参考方案2】:输出是给出两个 the,因为你在句子中有两个。对整个句子进行编码,并为每个索引获取值。其他两个词没有出现的原因是因为它们是稀有词。您可以通过降低阈值使它们出现。
参考 min_df 和 max_features:http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html
【讨论】:
以上是关于scikit-learn TfidfVectorizer 忽略某些单词的主要内容,如果未能解决你的问题,请参考以下文章
[机器学习与scikit-learn-3]:scikit-learn模型地图与模型选择