快速上手關鍵詞抽取的算法

前言

在自然語言處理領域,我們有一種類型的問題是如何在一堆文本中提取出核心詞/句子。而無論是對於長文本還是短文本,往往幾個關鍵詞就可以代表整個文本的主題思想。同時,在很多推薦系統中,由於無法直接就整體文本進行利用,往往會現對文本進行彙總,常用的方法就是embedding或者關鍵詞抽取,關鍵詞提取的準確程度直接關係到推薦系統或者搜索系統的最終效果。讓我們看下有哪些快速上手可用的方法。

TFIDF

TFIDF是term frequency inverse document frequency的簡稱,很好理解:term frequency dot inverse document frequency,文本頻率與逆文檔頻率指數, TFIDF就是爲了表徵一個token(可以是一個字或者一個詞)的重要程度。所以,當我們把doc中的每個詞的重要程度算出來,倒序即可作爲關鍵詞。

Term Frequency

image

Inverse Document Frequency

image分母+1是平衡未出現詞

TF * IDF

TF-IDF算法非常容易理解,並且很容易實現,但是其簡單結構並沒有考慮詞語的語義信息,無法處理一詞多義與一義多詞的情況。

實現

RAKE

RAKE是Rapid Automatic Keyword Extraction的簡稱,RAKE算法的亮點在於“R”,快速同時也有不俗的效果。

流程

  • 切句切詞:切句是以標點+停頓詞+分割詞做標記,切詞是藉助第三方切詞工具,我python版實現的時候用的是jieba,Java版實現的時候用的是HanNlp
  • 共現矩陣:構建共現矩陣
  • 特徵提取:基於詞的詞頻freq、度deg 以及度與頻率之比deg/freq三個特徵
  • 句的score:score = deg/freq
    • 建議通過句長進行平衡

實現

TextRank

知道PageRank的同學,一定知道這麼一個道理,網頁點擊行爲是一個有向圖,重要的網頁會被各種網頁鏈接到,比如baidu,所以我們求出有向圖中節點的重要性就是網頁的重要性。TextRank其實思想類似,只是把有向圖換成了無向圖,所以公式大家就應該很熟悉,和PageRank類似:image

其中,d依舊是阻尼係數,但是大家發現多了w,這個其實是節點之間邊的權重,因爲無向圖,文本分詞後的詞彙跳轉我們假設是相互等同的。

實現


以上的方法中,TFIDF只能對詞進行提取,而RAKE和TextRank都可以抽詞或者抽句。其實,以上方法都很簡單,在數據量足夠大的情況下,沒有基於深度循環神經網絡的算法效果好,但是強就強在易於上手,效果快速可見。

歡迎大家關注我的個人bolg知乎,更多代碼內容歡迎follow我的個人Github,如果有任何算法、代碼疑問都歡迎通過郵箱發消息給我。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章