标签:word keys doc filename TF 词频 IDF freq 自然语言
统计每篇文章重要的词作为这篇文章的关键词,用tf-idf来实现。生产中有很多第三包可以调用,这里记录原理,顺便熟练python
1、公式 :
计算词频TF
考虑到文章有长短之分,为了便于不同文章的比较,进行"词频"标准化。
或者
计算反文档频率idf
import os import math import operator filepath='H:/data/allfiles/allfiles' doc_word = dict() i=0 #统计每篇文章中的词频,及文章总数 for filename in os.listdir(filepath): with open(filepath+'/'+filename,'r',encoding='utf-8') as f: freq_word = dict() for line in f.readlines(): words = line.strip().split(' ') if len(words) == '': continue for word in words : if freq_word.get(word,-1) == -1: freq_word[word] = 1 else: freq_word[word] += 1 doc_word[filename] = freq_word i += 1 #统计idf doc_nums = float(i) doc_freq = dict() for filename in doc_word.keys(): for word in doc_word[filename].keys(): if doc_freq.get(word,-1)==-1: doc_freq[word]=1 else: doc_freq[word]+=1 for word in doc_freq.keys(): doc_freq[word] =math.log(doc_nums/(doc_freq[word]+1)) #TF-IDF for filename in doc_word.keys(): word_sorted = sorted(doc_word[filename].items(),key=operator.itemgetter(1),reverse=True) for word in doc_word[filename].keys(): doc_word[filename][word] = doc_word[filename][word]*doc_freq[word]/float(word_sorted[0][1]) print (doc_word[filename])
标签:word,keys,doc,filename,TF,词频,IDF,freq,自然语言 来源: https://www.cnblogs.com/students/p/10334236.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。