textrank提取文档关键词
前言:我大致介紹一下TextRank算法的實現,對于細節和相關公式的介紹不做過多的介紹,感興趣的同學可以去看TextRank算法的論文(英文版)里面有具體的實現,文章下載地址http://download.csdn.net/detail/sinat_29957455/9925407
一、TextRank算法簡介
TextRank算法主要用于文檔的關鍵詞抽取和摘要的抽取,TextRank主要借鑒了PageRank的思想來實現的。PageRank是由Google用來體現網頁之間的相關性和重要性,它是通過網頁之間的超鏈接來計算網頁的重要性。通過網頁之間超鏈接之間的關系將不同的頁面劃分成不同的等級,頁面劃分等級的依據是根據各個頁面之間給其他頁面之間的投票來進行衡量的。而,TextRank提取關鍵詞也正是采用了這種思想來實現的,它需要將一片文章先進行分詞,然后將每個詞語作為一個無向圖的節點,最后通過單詞之間的投票計算出權重。
二、TextRank實現
1、將給定輸入的文章,進行分詞,如何將文章進行分詞可以使用jieba來實現。
2、對于分詞的詞語,我們可以對其詞性進行標注處理,并可以過濾掉一些停用詞(如:的、有...),只保留我們需要的詞性的單詞,名詞或者動詞或形容詞。
3、將上述我們需要的詞語構建一個關鍵詞圖,其中詞語為圖的節點,然后通過共現關系構造任意兩點之間的變,兩個節點之間存在邊僅當他們對應的詞匯在長度為k的窗口中共現,K表示窗口的大小,即一個窗口單詞的個數默認是5.
4、然后根據公式計算,最后可以等到每個單詞的權重,我們可以根據順序選取權重最大的前幾個。
5、對節點的權重進行排序,逆序排序,選取權重最大的前幾個作為文章的關鍵詞。
三、TextRank算法的測試
測試文章
有很多不同的數學公式可以用來計算tf-idf。 這邊的例子以上述的數學公式來計算。 詞頻(tf)是一詞語出現的次數除以該文件的總詞語數。 假如一篇文件的總詞語數是100個,而詞語“母牛”出現了3次, 那么“母牛”一詞在該文件中的詞頻就是3/100=0.03。 一個計算文件頻率(DF)的方法是測定有多少份文件出現過“母牛”一詞, 然后除以文件集里包含的文件總數。所以,如果“母牛”一詞在1,000份文件出現過, 而文件總數是10,000,000份的話,其逆向文件頻率就是log(10,000,000 / 1,000)=4。 最后的tf-idf的分數為0.03 * 4=0.12。實現代碼,使用jieba實現的import sys sys.path.append('../')import jieba import jieba.analyse from optparse import OptionParserfile_name = "../txt/test.txt"content = open(file_name, 'rb').read()#topK表示輸出多少個關鍵詞,withWeight表示是否輸出權重,如果想要獲取權重,for x,w并將withWeight=True #allowPOS表示輸出的詞性 for x in jieba.analyse.textrank(content,topK=20,withWeight=False,allowPOS=('ns','n','vn','v')):print('%s' % (x))輸出結果
文件 出現 計算 詞語 數學公式 份文件 頻率 母牛 測定 集里 總數 包含 次數 用來 詞頻 逆向 方法 例子 四、TF-IDF測試結果 import sys sys.path.append('../')import jieba import jieba.analyse from optparse import OptionParserfile_name = "../txt/test.txt"content = open(file_name, 'rb').read()#10表示輸出的前10個 tags = jieba.analyse.extract_tags(content, topK=10)print(",".join(tags))輸出結果
000,文件,母牛,詞語,tf,詞頻,100,0.03,idf,10
總結:對比TextRank算法和TF-IDF算法的結果,我們可以發現TextRank算法提取的關鍵詞更能表現出文章的意思,而TF-IDF算法主要還是依靠詞頻來判斷一個詞語是否為文章的關鍵詞。當然,如果你想要提高TF-IDF算法的準確性可以根據自己的業務需要,來使用適合自己業務的語料庫和設置詞語的權重來達到自己想要的效果,TF-IDF算法相對于TextRank算法來說,效率較高。但是,TextRank算法不需要自己來訓練數據。
總結
以上是生活随笔為你收集整理的textrank提取文档关键词的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Carla控制指定Actor(四)
- 下一篇: 网易面试Java开发凉凉经,面试官:基础