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()
标签:term,TF,文档,words,IDF,词频,文本 来源: https://blog.csdn.net/beibidou/article/details/87889543
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。