自然語言處理之關鍵詞提取TF IDF

2022-04-03 09:22:23 字數 1758 閱讀 5173

1、公式 :

計算詞頻tf

考慮到文章有長短之分,為了便於不同文章的比較,進行"詞頻"標準化。

或者

計算反文件頻率idf

import

osimport

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] += 1doc_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])

自然語言處理 TF IDF演算法提取關鍵詞

這個標題看上去好像很複雜,其實我要談的是乙個很簡單的問題。這個問題涉及到資料探勘 文字處理 資訊檢索等很多計算機前沿領域,但是出乎意料的是,有乙個非常簡單的經典演算法,可以給出令人相當滿意的結果。它簡單到都不需要高等數學,普通人只用10分鐘就可以理解,這就是我今天想要介紹的tf idf演算法。乙個容...

自然語言處理 TF IDF演算法提取關鍵詞

這個標題看上去好像很複雜,其實我要談的是乙個很簡單的問題。這個問題涉及到資料探勘 文字處理 資訊檢索等很多計算機前沿領域,但是出乎意料的是,有乙個非常簡單的經典演算法,可以給出令人相當滿意的結果。它簡單到都不需要高等數學,普通人只用10分鐘就可以理解,這就是我今天想要介紹的tf idf演算法。乙個容...

自然語言處理 關鍵詞提取之TFIDF方法

tf idf terms frequency inverse document frequency 主要思想 如果某個單詞在一篇文章 現的頻率高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。詞頻 term frequency,tf 即乙個詞條在文字 現的頻率。逆...