微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 TfIdfVectorizer 查找重要单词?

如何解决如何使用 TfIdfVectorizer 查找重要单词?

考虑下面的例子。代表文件的重要词是“Bob”和“Sara”。但是使用 max_features输出往往会显示频繁的单词。当语料库很大时,这会变得更糟。怎么才能只得到重要的词?

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd


corpus = [
    'hi,my name is Bob.','hi,my name is Sara.'
]

vectorizer = TfidfVectorizer(max_features=2)
X = vectorizer.fit_transform(corpus).todense()


df = pd.DataFrame(X,columns=vectorizer.get_feature_names())

输出

,hi,is
0,0.7071067811865475,0.7071067811865475
1,0.7071067811865475

解决方法

如果增加 max_features:

vectorizer = TfidfVectorizer(max_features=10)
X = vectorizer.fit_transform(corpus).todense()
df = pd.DataFrame(X,columns=vectorizer.get_feature_names())
print(df)
   bob       hi       is       my     name      sara 
0  0.574962  0.40909  0.40909  0.40909  0.40909  0.000000 
1  0.000000  0.40909  0.40909  0.40909  0.40909  0.574962

你可以看到 sara 和 bob 真的很重要,因为 tfidf 对于那些更高而对于另一个更小且相等,因为在两个句子中重复是有道理的。

请注意 here 中的内容。如max_features: “如果不是 None,则构建一个仅考虑按语料库中的词频排序的最高 max_features 的词汇表。”所以它可能会像前一种情况一样删除更有用的词。

也许您可能对选项 max_dfmin_df 更感兴趣:

vectorizer = TfidfVectorizer(max_df=0.5)
X = vectorizer.fit_transform(corpus).todense()
df = pd.DataFrame(X,columns=vectorizer.get_feature_names())
print(df)
   bob  sara
0  1.0   0.0
1  0.0   1.0

也许最好尝试不同的方法,直到您了解正在发生的事情。

从另一个角度来看,删除一些停用词也不错。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。