【问题标题】:scikit-learn TfidfVectorizer ignoring certain wordsscikit-learn TfidfVectorizer 忽略某些单词
【发布时间】: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?

【问题讨论】:

  • 您的代码中的“单词”是什么?

标签: python scikit-learn nlp tf-idf tfidfvectorizer


【解决方案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

    【讨论】:

      猜你喜欢
      • 2018-01-23
      • 2014-08-22
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 2013-02-05
      • 2014-10-23
      • 2013-06-16
      • 2020-01-21
      相关资源
      最近更新 更多