2022-11-20 14:43:37 词 编辑:黎为乐
理论:
TF:词频,即某个词在文章(段落)中的出现次数/文章(段落)的总词数
还有另一种表述:某个词在文章(段落)中的出现次数/文章(段落)中次数最多的词的出现次数
IDF:逆文档频率,log(语料库(文章)的文档总数/包含该词的文档(段落)数+1)
即一个词越常见,那么分母越大,逆文档频率就越小越接近0,分母加一是为了避免分母为0,即所有文档(段落)都不包含该词。
TF-IDF:TF*IDF
代码不用自己写,会复制就行:
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vec = TfidfVectorizer()
# stop words自定义停用词表,为列表List类型
# token_pattern过滤规则,正则表达式,如r"(?u)bw+b
# max_df=0.5,代表一个单词在 50% 的文档中都出现过了,那么它只携带了非常少的信息,因此就不作为分词统计
documents = [
'This is the bayes document',
'This is the second second document',
'And the third one',
'Is this the document',
'This line has several words',
'This is the final document'
]
tfidf_matrix = tfidf_vec.fit_transform(documents)
# 拟合模型,并返回文本矩阵 表示了每个单词在每个文档中的 TF-IDF 值
print('输出每个单词在每个文档中的 TF-IDF 值,向量里的顺序是按照词语的 id 顺序来的:', '\n', tfidf_matrix.toarray())
print('不重复的词:', tfidf_vec.get_feature_names())
print('输出每个单词对应的 id 值:', tfidf_vec.vocabulary_)
print('返回idf值:', tfidf_vec.idf_)
print('返回停用词表:', tfidf_vec.stop_words_)