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

2024-10-04 13:15:54 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑下面的例子。代表文件的重要词语是“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,0.7071067811865475

Tags: nameimportismycorpushimaxfeature
1条回答
网友
1楼 · 发布于 2024-10-04 13:15:54

如果增加“最大”功能:

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所示: “如果不是没有,那么建立一个词汇表,它只考虑在语料库上按词频排序的最前面的Max特征。”因此,它可以像以前的例子那样删除更有用的词。p>

也许您对选项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

也许最好尝试不同的方法,直到你对正在发生的事情有所了解

从另一个角度来看,删除一些停止词也是一件好事

相关问题 更多 >