如何使用 TfIdfVectorizer 查找重要词?
How to find important words using 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,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_df
或 min_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
也许最好尝试不同的方法,直到您了解正在发生的事情。
从另一个角度来看,也可以删除一些停用词。
考虑下面的例子。代表文档的重要词是 '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
如果增加 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_df
或 min_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
也许最好尝试不同的方法,直到您了解正在发生的事情。
从另一个角度来看,也可以删除一些停用词。