欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python TF-IDF算法實現文本關鍵詞提取

系統 1947 0

TF(Term Frequency)詞頻,在文章中出現次數最多的詞,然而文章中出現次數較多的詞并不一定就是關鍵詞,比如常見的對文章本身并沒有多大意義的停用詞。所以我們需要一個重要性調整系數來衡量一個詞是不是常見詞。該權重為IDF(Inverse Document Frequency)逆文檔頻率,它的大小與一個詞的常見程度成反比。在我們得到詞頻(TF)和逆文檔頻率(IDF)以后,將兩個值相乘,即可得到一個詞的TF-IDF值,某個詞對文章的重要性越高,其TF-IDF值就越大,所以排在最前面的幾個詞就是文章的關鍵詞。

TF-IDF算法的優點是簡單快速,結果比較符合實際情況,但是單純以“詞頻”衡量一個詞的重要性,不夠全面,有時候重要的詞可能出現的次數并不多,而且這種算法無法體現詞的位置信息,出現位置靠前的詞和出現位置靠后的詞,都被視為同樣重要,是不合理的。

TF-IDF算法步驟:

(1)、計算詞頻:

詞頻 = 某個詞在文章中出現的次數

考慮到文章有長短之分,考慮到不同文章之間的比較,將詞頻進行標準化

詞頻 = 某個詞在文章中出現的次數/文章的總詞數

詞頻 = 某個詞在文章中出現的次數/該文出現次數最多的詞出現的次數

(2)、計算逆文檔頻率

需要一個語料庫(corpus)來模擬語言的使用環境。

逆文檔頻率 = log(語料庫的文檔總數/(包含該詞的文檔數 + 1))

(3)、計算TF-IDF

TF-IDF = 詞頻(TF)* 逆文檔頻率(IDF)

詳細代碼如下:

            
#!/usr/bin/env python
#-*- coding:utf-8 -*-
 
'''
計算文檔的TF-IDF
'''
import codecs
import os
import math
import shutil
 
#讀取文本文件
def readtxt(path):
 with codecs.open(path,"r",encoding="utf-8") as f:
  content = f.read().strip()
 return content
 
#統計詞頻
def count_word(content):
 word_dic ={}
 words_list = content.split("/")
 del_word = ["\r\n","/s"," ","/n"]
 for word in words_list:
  if word not in del_word:
   if word in word_dic:
    word_dic[word] = word_dic[word]+1
   else:
    word_dic[word] = 1
 return word_dic
 
#遍歷文件夾
def funfolder(path):
 filesArray = []
 for root,dirs,files in os.walk(path):
  for file in files:
   each_file = str(root+"http://"+file)
   filesArray.append(each_file)
 return filesArray
 
 
#計算TF-IDF
def count_tfidf(word_dic,words_dic,files_Array):
 word_idf={}
 word_tfidf = {}
 num_files = len(files_Array)
 for word in word_dic:
  for words in words_dic:
   if word in words:
    if word in word_idf:
     word_idf[word] = word_idf[word] + 1
    else:
     word_idf[word] = 1
 for key,value in word_dic.items():
  if key !=" ":
   word_tfidf[key] = value * math.log(num_files/(word_idf[key]+1))
 
 #降序排序
 values_list = sorted(word_tfidf.items(),key = lambda item:item[1],reverse=True)
 return values_list
 
#新建文件夾
def buildfolder(path):
 if os.path.exists(path):
  shutil.rmtree(path)
 os.makedirs(path)
 print("成功創建文件夾!")
 
#寫入文件
def out_file(path,content_list):
 with codecs.open(path,"a",encoding="utf-8") as f:
  for content in content_list:
   f.write(str(content[0]) + ":" + str(content[1])+"\r\n")
 print("well done!")
 
def main():
 #遍歷文件夾
 folder_path = r"分詞結果"
 files_array = funfolder(folder_path)
 #生成語料庫
 files_dic = []
 for file_path in files_array:
  file = readtxt(file_path)
  word_dic = count_word(file)
  files_dic.append(word_dic)
 #新建文件夾
 new_folder = r"tfidf計算結果"
 buildfolder(new_folder)
 
 #計算tf-idf,并將結果存入txt
 i=0
 for file in files_dic:
  tf_idf = count_tfidf(file,files_dic,files_array)
  files_path = files_array[i].split("http://")
  #print(files_path)
  outfile_name = files_path[1]
  #print(outfile_name)
  out_path = r"%s//%s_tfidf.txt"%(new_folder,outfile_name)
  out_file(out_path,tf_idf)
  i=i+1
 
if __name__ == '__main__':
 main()
          

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日产乱码卡1卡2卡三免费 | 国产二区三区视频 | 国产精品1024永久观看 | 性视频久久 | 国产免费一区二区 | 狠狠久 | 2021国产成人综合亚洲精品 | 91精品视频免费在线观看 | 国产vr一区二区在线观看 | 亚洲精品第一综合99久久 | 色老头永久免费视频 | 波多野结衣一区二区三区88 | 亚洲免费精品视频 | 成人性a激情免费视频 | 亚洲精品日本高清中文字幕 | 国产精品午夜小视频观看 | 亚洲第一中文字幕 | 最新中文字幕 | 欧美一区二区三区视频 | 成人深夜视频在线观看 | 国产91成人精品亚洲精品 | 免费免费视频片在线观看 | 午夜精品久久久久久91 | 亚洲欧美日韩精品一区 | 久久久久久久久久综合 | 亚洲码欧美码一区二区三区 | 中文字幕一区二区三区四区 | 欧美成人性生活 | 欧洲在线观看 | 在线视频97 | 手机看片日韩欧美 | 精品在线一区二区 | 激情五月婷婷 | 亚洲综合精品一区 | 亚洲色综合图区p | 91精品国产免费久久久久久 | 国产成人福利精品视频 | 日韩中文字幕不卡 | 91视频久久 | 久久综合一区二区 | 亚洲国产精品成人 |