文本挖掘学习(三) 关键词提取、TF-IDF

1.TF-IDF算法

基本思想:

  • 如果一个词在一篇文档中出现的频率高,并且在语料库中其他文档中很少出现,则认为这个词有很好的类别区分功能

词频TF:Term Frequency,衡量一个term在文档中出现的有多频繁

  • 平均而言出现越频繁的词,其重要性可能就越高

考虑到文章长度的差异,需要对词频做标准化

  • TF(t) = (t出现在文档中的次数) / (文档中term总数)
  • TF(t) = (t出现在文档中的次数) / (文档中出现最多的term的次数)

逆文档频率IDF:Inverse Document Frequency, 用于模拟在该语料的实际使用环境中,某一个term有多重要

  • 把罕见的词的重要性调高,把常见词的重要性调低

IDF的具体算法

  • IDF(t) = log(语料库中的文档总数 / (含有该term的文档总数+1))

TF-IDF = TF * IDF

  • TF-IDF与一个词在文档中的出现次数成正比
  • 与该词在整个语料库中的出现次数成反比

2.基于sklearn的实现

# 计算TF-IDF
from sklearn.feature_extraction.text import TfidfTransformer
# 取出所有分词
words_list = list(chap.words_list)
countvec = CountVectorizer(min_df=5)  # 在5个以上章节中出现才保留
words_vec = countvec.fit_transform(words_list)  # 得到一个稀疏矩阵,词频矩阵

transformer = TfidfTransformer()
tfidf = transformer.fit_transform(words_vec) # 基于词频矩阵计算TF-IDF值
tfidf.toarray()

文本挖掘学习(三) 关键词提取、TF-IDF

上一篇:R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究


下一篇:php选择文件夹上传