关键词提取算法
來源:《Python自然語言處理實戰:核心技術與算法》
1.TF-IDF
TF-IDF從詞頻、逆文檔頻次兩個角度對詞的重要性進行衡量,可以根據tf-idf值由大到小排序取前n個作為關鍵詞。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
傳統的TF-IDF算法中,僅考慮了詞的兩個統計信息(出現頻次、在多少個文檔出現),因此,其對文本的信息利用程度顯然也是很少的。
除了上面的信息外,在一個文本中還有許多信息能對關鍵詞的提取起到很好的指導作用,例如每個詞的詞性、出現的位置等。在某些特定的場景中,如在傳統的TF-IDF基礎上,加上這些輔助信息,能對關鍵詞提取的效果起到很好的提高作用:
在文本中,名詞作為一種定義現實實體的詞,帶有更多的關鍵信息,如在關鍵詞提取過程中,對名詞賦予更高的權重,能使提取出來的關鍵詞更合理。
此外,在某些場景中,文本的起始段落和末尾段落比起其他部分的文本更重要,如對出現在這些位置的詞賦予更高的權重,也能提高關鍵詞的提取效果。
算法本身的定義是死的,但是結合我們的應用場景,對算法進行合適的重塑及改造,使之更適應對應場景的應用環境,無疑能對我們想要得到的結果起到更好的指導作用。
2.TextRank
TextRank算法,基本思想來源于Google的PageRank算法,最早用于文檔的自動摘要,基于句子維度的分析,利用TextRank對每個句子進行打分,挑選出分數最高的n個句子作為文檔的關鍵句,以達到自動摘要的效果。
TextRank算法,可以脫離語料庫的背景,僅對單篇文檔進行分析就可以提取該文檔的關鍵詞,即TextRank可以不用訓練,直接根據單個文檔就可以對關鍵詞進行提取。這也是TextRank算法的一個重要特點。其他算法的關鍵詞提取都要基于一個現成的語料庫,如:
-
在TF-IDF中,需要統計每個詞在語料庫中的多少個文檔有出現過,也就是逆文檔頻率;
-
主題模型的關鍵詞提取算法,則是要通過對大規模文檔的學習,來發現文檔的隱含主題。
3. 主題模型?
一般來說,TF-IDF算法和TextRank算法就能滿足大部分關鍵詞提取的任務。但是在某些場景,基于文檔本身的關鍵詞提取還不是非常足夠,有些關鍵詞并不一定會顯式地出現在文檔當中,如一篇講動物生存環境的科普文,通篇介紹了獅子老虎鱷魚等各種動物的情況,但是文中并沒有顯式地出現動物二字,這種情況下,前面的兩種算法顯然不能提取出動物這個隱含的主題信息,這時候就需要用到主題模型。
前面兩種模型缺點:是直接根據詞與文檔的關系,對關鍵詞進行抽取。這兩種方法僅用到了文本中的統計信息,對文本中豐富的信息無法充分地進行利用,尤其是其中的語義信息,對文本關鍵詞的抽取顯然是一種非常有用的信息。
主題模型:與前面兩種模型不同的是,主題模型認為在詞與文檔之間沒有直接的聯系,它們應當還有一個維度將它們串聯起來,主題模型將這個維度稱為主題。每個文檔都應該對應著一個或多個的主題,而每個主題都會有對應的詞分布,通過主題,就可以得到每個文檔的詞分布。
3.1 LSA/pLSA
相較于傳統SVM模型(Space Vector Model,空間向量模型)對語義信息利用的缺乏,LSA通過SVD(奇異值分解)將詞、文檔映射到一個低維的語義空間,挖掘出詞、文檔的淺層語義信息,從而對詞、文檔進行更本質地表達。這也反映了LSA的優點,可以映射到低維的空間,并在有限利用文本語義信息的同時,大大降低計算的代價,提高分析質量。
LSA是通過SVD這一暴力的方法,簡單直接地求解出近似的word-topic-document分布信息。但是其作為一個初級的主題模型,仍然存在著許多的不足。其中主要的缺點是:
1. SVD的計算復雜度非常高,特征空間維度較大的,計算效率十分低下。
2. 另外,LSA得到的分布信息是基于已有數據集的,當一個新的文檔進入到已有的特征空間時,需要對整個空間重新訓練,以得到加入新文檔后對應的分布信息。
3. 除此之外,LSA還存在著對詞的頻率分布不敏感、物理解釋性薄弱等問題。
為了解決這些問題,學者們在LSA的基礎上進行了改進,提出了pLSA算法,通過使用EM算法對分布信息進行擬合替代了使用SVD進行暴力破解,從一定程度上解決了LSA的部分缺陷,但是LSA仍有較多不足。通過不斷探索,學者們又在pLSA的基礎上,引入了貝葉斯模型,實現了現在topic model的主流方法——LDA(LatentDirichlet Allocation,隱含狄利克雷分布)。
3.2 LDA
?
?
?
?
?
總結
- 上一篇: pLSA概率潜在语义分析
- 下一篇: 自编码器(AE)