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

前言

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

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,所以我們求出有向圖中節(jié)點的重要性就是網頁的重要性。TextRank其實思想類似,只是把有向圖換成了無向圖,所以公式大家就應該很熟悉,和PageRank類似:
image

其中,d依舊是阻尼系數,但是大家發(fā)現多了w,這個其實是節(jié)點之間邊的權重,因為無向圖,文本分詞后的詞匯跳轉我們假設是相互等同的。

實現

  • 關鍵詞提?。?a target="_blank">TextRankKeyWord
  • 摘要句提?。?a target="_blank">TextRankSummary

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

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

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容