天天看點

NLP中關鍵詞的提取

一:關鍵詞提取的方法有多種,分别如下:

TF-IDF、主題模型、TestRank、rake

二:首先來說一下TF-IDF:

TF是詞頻,IDF是逆向檔案頻率,IDF起到給詞賦予權重的作用。

TF-IDF的思想:重要的詞一定在文章中出現多次,但同時在各個文章中出現多次的詞一定沒有在隻在同一篇文章中出現多次的詞的重要性大。

此方法類似統計方法,下面把計算方法列舉出來:

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

IDF=Log(語料庫文檔總數或者大小/包含該詞的文檔文檔的總數+1)

TF-IDF=TF*IDF

NLP中關鍵詞的提取

中國在各個文檔中出現的次數很多,是以讓它的權重IDF小一些,是以中國不會在關鍵詞中出現。相反蜜蜂和養殖出現的少讓其大一些。

還有關鍵字一般出現在文章的第一段或者最後一段中,是以我們要将其IDF提升的大一些。還有就是TF-IDF是基于詞頻,會忽略其中的

一些語義資訊。

給出一個例子:

import jieba.analyse as analyse
lines=open('/home/yang/下載下傳/zuowen.txt').read()
print " ".join(analyse.extract_tags(lines,topK=10,withWeight=False,allowPOS=()))      

評語 12 評分 老師 qidian com 我能 2010 www 10

二:主題模型和關鍵詞提取

LDA是一種無監督的貝葉斯模型,是一種無監督學習算法,不需要手工給出标簽,我們需要的隻有文檔集和指定主題個數K,優點是可以找到一些詞來描述它。

LDA可以看成是詞袋模型,一篇文檔可以有多個主題組成,每個詞都是由主題生成的。

P(單詞 | 文文檔) = P(單詞 | 主題) * P(主題 | 文文檔)

對語料庫中的每篇文檔,LDA定義如下的生成過程:

1:對每篇文檔,從主題分布中抽取一個主題;

2:從上述被抽取的主題所對應的單詞分布中抽取一個單詞

3:重複1,2直到周遊所有的單詞

這裡會有一個文檔主題的分布圖和主題單詞的分布圖,不給出來了自己領會把。

三:TestRank

基本思想:1:首先對文本進行分詞處理;    2:固定視窗的大小,通過span設定,預設是5,根據詞之間的共現關系建構無向圖;  3:計算圖中的pagerank,作為圖的權重。

  • jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意預設過濾詞性。
  • jieba.analyse.TextRank() 建立自定義 TextRank 執行個體

四:rake

rake提取的并不是單一的單詞,而是單詞組成的短語。

每個短語的得分由組成短語的詞累加得到,而詞的得分與詞的度與詞頻有關

繼續閱讀