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

scikit-learn学习基础知识四

[机器学习与scikit-learn-3]:scikit-learn模型地图与模型选择

scikit-learn:如何使用拟合概率模型?

在 spark ML 2.2.0 中使用 sklearn-python 模型进行预测

使用 yml 环境获取 scikit-learn 版本警告