TF-IDF介绍

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_)

©AHIEC人工智能工作室 2021

地址:安徽省合肥市包河区梁园路安徽工业经济职业技术学院现代科教中心101室

创作者信息:

皖ICP备20011723号-2