欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python TF-IDF算法實現(xiàn)文本關(guān)鍵詞提取

 更新時間:2019年05月29日 15:05:41   作者:lalalawxt  
這篇文章主要為大家詳細介紹了python TF-IDF算法實現(xiàn)文本關(guān)鍵詞提取,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

TF-IDF算法步驟:

(1)、計算詞頻:

詞頻 = 某個詞在文章中出現(xiàn)的次數(shù)

考慮到文章有長短之分,考慮到不同文章之間的比較,將詞頻進行標(biāo)準(zhǔn)化

詞頻 = 某個詞在文章中出現(xiàn)的次數(shù)/文章的總詞數(shù)

詞頻 = 某個詞在文章中出現(xiàn)的次數(shù)/該文出現(xiàn)次數(shù)最多的詞出現(xiàn)的次數(shù)

(2)、計算逆文檔頻率

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

逆文檔頻率 = log(語料庫的文檔總數(shù)/(包含該詞的文檔數(shù) + 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
 
#統(tǒng)計詞頻
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("成功創(chuàng)建文件夾!")
 
#寫入文件
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"分詞結(jié)果"
 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計算結(jié)果"
 buildfolder(new_folder)
 
 #計算tf-idf,并將結(jié)果存入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()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python自動化辦公之創(chuàng)建PPT文件

    Python自動化辦公之創(chuàng)建PPT文件

    python-pptx模塊是Python中用于PPT操作的模塊。本文將利用這一模塊實現(xiàn)創(chuàng)建PPT文件。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-05-05
  • selenium在scrapy中的使用代碼

    selenium在scrapy中的使用代碼

    本文給大家分享selenium在scrapy中的使用代碼,使用selenium可以很好的幫助我們獲取一些重要數(shù)據(jù)信息,本文通過代碼給大家詳細介紹,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Python中用xlwt制作表格實例講解

    Python中用xlwt制作表格實例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于Python中用xlwt制作表格實例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-11-11
  • Python中初始化一個二維數(shù)組及注意事項說明

    Python中初始化一個二維數(shù)組及注意事項說明

    這篇文章主要介紹了Python中初始化一個二維數(shù)組及注意事項說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 16行Python代碼實現(xiàn)微信聊天機器人并自動智能回復(fù)功能

    16行Python代碼實現(xiàn)微信聊天機器人并自動智能回復(fù)功能

    聊天機器人自動智能回復(fù)給我們的生活帶來了極大的便利,尤其在業(yè)務(wù)比較繁忙的時候,智能機器人給我們帶來極大的方便,今天小編教大家一招通過16行代碼實現(xiàn)微信聊天智能機器人,感興趣的朋友一起看看吧
    2022-01-01
  • 徹底卸載anaconda詳細教程(推薦!)

    徹底卸載anaconda詳細教程(推薦!)

    用anaconda更改我的python版本,就是出現(xiàn)了凍結(jié)無法更改等等之類的問題,擔(dān)心更新anaconda還是會出錯,于是打算卸載anaconda,重新下載一個安裝,下面這篇文章主要給大家介紹了關(guān)于徹底卸載anaconda的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Python文件夾與文件的操作實現(xiàn)代碼

    Python文件夾與文件的操作實現(xiàn)代碼

    最近在寫的程序頻繁地與文件操作打交道,這塊比較弱,還好在百度上找到一篇不錯的文章,這是原文傳送門,我對原文稍做了些改動
    2014-07-07
  • Python json轉(zhuǎn)字典字符方法實例解析

    Python json轉(zhuǎn)字典字符方法實例解析

    這篇文章主要介紹了Python json轉(zhuǎn)字典字符代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Python 時間戳之獲取整點凌晨時間戳的操作方法

    Python 時間戳之獲取整點凌晨時間戳的操作方法

    這篇文章主要介紹了Python 時間戳之獲取整點凌晨時間戳的操作方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-01-01
  • Python的化簡函數(shù)reduce()詳解

    Python的化簡函數(shù)reduce()詳解

    這篇文章主要介紹了Python的化簡函數(shù)reduce()詳解,reduce()函數(shù)即為化簡函數(shù),它的執(zhí)行過程為:每一次迭代,都將上一次的迭代結(jié)果與下一個元素一同傳入二元func函數(shù)中去執(zhí)行,需要的朋友可以參考下
    2023-12-12

最新評論