技術乾貨 | 如何做好文字關鍵詞提取?從三種演算法說起
【資料猿導讀】 不管是基於文字的推薦還是基於文字的搜尋,對於文字關鍵詞的依賴也很大,關鍵詞提取的準確程度直接關係到推薦系統或者搜尋系統的最終效果。因此,關鍵詞提取在文字挖掘領域是一個很重要的部分
作者 | 韓信
官網 | www.datayuan.cn
微信公眾號ID | datayuancn
在自然語言處理領域,處理海量的文字檔案最關鍵的是要把使用者最關心的問題提取出來。而無論是對於長文字還是短文字,往往可以通過幾個關鍵詞窺探整個文字的主題思想。與此同時,不管是基於文字的推薦還是基於文字的搜尋,對於文字關鍵詞的依賴也很大,關鍵詞提取的準確程度直接關係到推薦系統或者搜尋系統的最終效果。因此,關鍵詞提取在文字挖掘領域是一個很重要的部分。
關於文字的關鍵詞提取方法分為有監督、半監督和無監督三種:
1.有監督的關鍵詞抽取演算法
它是建關鍵詞抽取演算法看作是二分類問題,判斷文件中的詞或者短語是或者不是關鍵詞。既然是分類問題,就需要提供已經標註好的訓練語料,利用訓練語料訓練關鍵詞提取模型,根據模型對需要抽取關鍵詞的文件進行關鍵詞抽取
2.半監督的關鍵詞提取演算法
只需要少量的訓練資料,利用這些訓練資料構建關鍵詞抽取模型,然後使用模型對新的文字進行關鍵詞提取,對於這些關鍵詞進行人工過濾,將過濾得到的關鍵詞加入訓練集,重新訓練模型。
3.無監督的方法
不需要人工標註的語料,利用某些方法發現文字中比較重要的詞作為關鍵詞,進行關鍵詞抽取。
有監督的文字關鍵詞提取演算法需要高昂的人工成本,因此現有的文字關鍵詞提取主要採用適用性較強的無監督關鍵詞抽取。其文字關鍵詞抽取流程如下:
圖 1 無監督文字關鍵詞抽取流程圖
無監督關鍵詞抽取演算法可以分為三大類,基於統計特徵的關鍵詞抽取、基於詞圖模型的關鍵詞抽取和基於主題模型的關鍵詞抽取。
NO.1文字關鍵詞提取演算法——基於統計特徵的關鍵詞提取演算法
基於於統計特徵的關鍵詞抽取演算法的思想是利用文件中詞語的統計資訊抽取文件的關鍵詞。通常將文字經過預處理得到候選詞語的集合,然後採用特徵值量化的方式從候選集合中得到關鍵詞。基於統計特徵的關鍵詞抽取方法的關鍵是採用什麼樣的特徵值量化指標的方式,目前常用的有三類:
1基於詞權重的特徵量化
基於詞權重的特徵量化主要包括詞性、詞頻、逆向文件頻率、相對詞頻、詞長等。
2基於詞的文件位置的特徵量化
這種特徵量化方式是根據文章不同位置的句子對文件的重要性不同的假設來進行的。通常,文章的前N個詞、後N個詞、段首、段尾、標題、引言等位置的詞具有代表性,這些詞作為關鍵詞可以表達整個的主題。
3基於詞的關聯資訊的特徵量化
詞的關聯資訊是指詞與詞、詞與文件的關聯程度資訊,包括互資訊、hits值、貢獻度、依存度、TF-IDF值等。
下面介紹幾種常用的特徵值量化指標。
詞性
詞性時通過分詞、語法分析後得到的結果。現有的關鍵詞中,絕大多數關鍵詞為名詞或者動名詞。一般情況下,名詞與其他詞性相比更能表達一篇文章的主要思想。但是,詞性作為特徵量化的指標,一般與其他指標結合使用。
詞頻
詞頻表示一個詞在文字中出現的頻率。一般我們認為,如果一個詞在文字中出現的越是頻繁,那麼這個詞就越有可能作為文章的核心詞。詞頻簡單地統計了詞在文字中出現的次數,但是,只依靠詞頻所得到的關鍵詞有很大的不確定性,對於長度比較長的文字,這個方法會有很大的噪音。
位置資訊
一般情況下,詞出現的位置對於詞來說有著很大的價值。例如,標題、摘要本身就是作者概括出的文章的中心思想,因此出現在這些地方的詞具有一定的代表性,更可能成為關鍵詞。但是,因為每個作者的習慣不同,寫作方式不同,關鍵句子的位置也會有所不同,所以這也是一種很寬泛的得到關鍵詞的方法,一般情況下不會單獨使用。
互資訊
互資訊是資訊理論中概念,是變數之間相互依賴的度量。互資訊並不侷限於實值隨機變數,它更加一般且決定著聯合分佈 p(X,Y) 和分解的邊緣分佈的乘積 p(X)p(Y) 的相似程度。互資訊的計算公式如下:
其中,p(x,y)是X和Y的聯合概率分佈函式,p(x)和p(y)分別為X和Y的邊緣概率分佈函式。
當使用互資訊作為關鍵詞提取的特徵量化時,應用文字的正文和標題構造PAT樹,然後計算字串左右的互資訊。
詞跨度
詞跨度是指一個詞或者短語字文中首次出現和末次出現之間的距離,詞跨度越大說明這個詞對文字越重要,可以反映文字的主題。一個詞的跨度計算公式如下:
其中,Lasti表示詞i在文字中最後出現的位置,firsti表示詞 i 在文字中第一次出現的位置,sum表示文字中詞的總數。
詞跨度被作為提取關鍵詞的方法是因為在現實中,文字中總是有很多噪聲(指不是關鍵詞的那些詞),使用詞跨度可以減少這些噪聲。
TF-IDF值
一個詞的TF是指這個詞在文件中出現的頻率,假設一個詞w在文字中出現了m次,而文字中詞的總數為n,那麼一個詞的IDF是根據語料庫得出的,表示這個詞在整個語料庫中出現的頻率。假設整個語料庫中,包含詞w的文字一共有M篇,語料庫中的文字一共有N篇,則
由此可得詞w的TF-IDF值為:
TF-IDF的優點是實現簡單,相對容易理解。但是,TFIDF演算法提取關鍵詞的缺點也很明顯,嚴重依賴語料庫,需要選取質量較高且和所處理文字相符的語料庫進行訓練。另外,對於IDF來說,它本身是一種試圖抑制噪聲的加權,本身傾向於文字中頻率小的詞,這使得TF-IDF演算法的精度不高。TF-IDF演算法還有一個缺點就是不能反應詞的位置資訊,在對關鍵詞進行提取的時候,詞的位置資訊,例如文字的標題、文字的首句和尾句等含有較重要的資訊,應該賦予較高的權重。
基於統計特徵的關鍵詞提取演算法通過上面的一些特徵量化指標將關鍵詞進行排序,獲取TopK個詞作為關鍵詞。
基於統計特徵的關鍵詞的重點在於特徵量化指標的計算,不同的量化指標得到的結果也不盡相同。同時,不同的量化指標作為也有其各自的優缺點,在實際應用中,通常是採用不同的量化指標相結合的方式得到Topk個詞作為關鍵詞。
NO.2文字關鍵詞提取演算法——基於詞圖模型的關鍵詞抽取演算法
基於詞圖模型的關鍵詞抽取首先要構建文件的語言網路圖,然後對語言進行網路圖分析,在這個圖上尋找具有重要作用的詞或者短語,這些短語就是文件的關鍵詞。語言網路圖中節點基本上都是詞,根據詞的連結方式不同,語言網路的主要形式分為四種:共現網路圖、語法網路圖、語義網路圖和其他網路圖。
在語言網路圖的構建過程中,都是以預處理過後的詞作為節點,詞與詞之間的關係作為邊。語言網路圖中,邊與邊之間的權重一般用詞之間的關聯度來表示。在使用語言網路圖獲得關鍵詞的時候,需要評估各個節點的重要性,然後根據重要性將節點進行排序,選取TopK個節點所代表的詞作為關鍵詞。節點的重要性計算方法有以下幾種方法。
1.綜合特徵法
綜合特徵法也叫社會網路中心性分析方法,這種方法的核心思想是節點中重要性等於節點的顯著性,以不破壞網路的整體性為基礎。此方法就是從網路的區域性屬性和全域性屬性角度去定量分析網路結構的拓撲性質,常用的定量計算方法如下。
度
節點的度是指與該節點直接向量的節點數目,表示的是節點的區域性影響力,對於非加權網路,節點的度為: 對於加權網路,節點的度又稱為節點的強度,計算公式為:
接近性
節點的接近性是指節點到其他節點的最短路徑之和的倒數,表示的是資訊傳播的緊密程度,其計算公式為:
特徵向量
特徵向量的思想是節點的中心化測試值由周圍所有連線的節點決定,即一個節點的中心化指標應該等於其相鄰節點的中心化指標之線性疊加,表示的是通過與具有高度值的相鄰節點所獲得的間接影響力。特徵向量的計算公式如下:
集聚係數
節點的集聚係數是它的相鄰的節點之間的連線數與他們所有可能存在來連結的數量的比值,用來描述圖的頂點之間階級成團的程度的係數,計算公式如下:
平均最短路徑
節點的平局最短路徑也叫緊密中心性,是節點的所有最短路徑之和的平均值,表示的是一個節點傳播資訊時對其他節點的依賴程度。如果一個節點離其他節點越近,那麼他傳播資訊的時候也就越不需要依賴其他人。一個節點到網路中各點的距離都很短,那麼這個點就不會受制於其他節點。計算公式如下:
因為每個演算法的側重方向的不同,在實際的問題中所選取的定量分析方法也會不一樣。同時,對於關鍵詞提取來說,也可以和上一節所提出的統計法得到的詞的權重,例如詞性等相結合構建詞搭配網路,然後利用上述方法得到關鍵詞。
2.系統科學法
系統科學法進行中心性分析的思想是節點重要性等於這個節點被刪除後對於整個語言網路圖的破壞程度。重要的節點被刪除後會對網路的呃連通性等產生變化。如果我們在網路圖中刪除某一個節點,圖的某些指定特性產生了改變,可以根據特性改變的大小獲得節點的重要性,從而對節點進行篩選。
3.隨機遊走法
隨機遊走演算法時網路圖中一個非常著名的演算法,它從給定圖和出發點,隨機地選擇鄰居節點移動到鄰居節點上,然後再把現在的節點作為出發點,迭代上述過程。
隨機遊走演算法一個很出名的應用是大名鼎鼎的PageRank演算法,PageRank演算法是整個google搜尋的核心演算法,是一種通過網頁之間的超連結來計算網頁重要性的技術,其關鍵的思想是重要性傳遞。在關鍵詞提取領域, Mihalcea 等人所提出的TextRank演算法就是在文字關鍵詞提取領域借鑑了這種思想。
PageRank演算法將整個網際網路看作一張有向圖,網頁是圖中的節點,而網頁之間的連結就是圖中的邊。根據重要性傳遞的思想,如果一個大型網站A含有一個超連結指向了網頁B,那麼網頁B的重要性排名會根據A的重要性來提升。網頁重要性的傳遞思想如下圖所示:
圖2PageRank簡單描述(來自PageRank論文)
在PageRank演算法中,最主要的是對於初始網頁重要性(PR值)的計算,因為對於上圖中的網頁A的重要性我們是無法預知的。但是,在原始論文中給出了一種迭代方法求出這個重要性,論文中指出,冪法求矩陣特徵值與矩陣的初始值無關。那麼,就可以為每個網頁隨機給一個初始值,然後迭代得到收斂值,並且收斂值與初始值無關。
PageRank求網頁i的PR值計算如下:
其中,d為阻尼係數,通常為0.85。 是指向網頁 i 的網頁集合。 是指網頁j中的連結指向的集合, 是指集合中元素的個數。
TextRank在構建圖的時候將節點由網頁改成了句子,併為節點之間的邊引入了權值,其中權值表示兩個句子的相似程度。其計算公式如下:
公式中的 為圖中節點 和的邊 的權重。其他符號與PageRank公式相同。
TextRank演算法除了做文字關鍵詞提取,還可以做文字摘要提取,效果不錯。但是TextRank的計算複雜度很高,應用不廣。
NO.3文字關鍵詞提取演算法——基於主題模型的關鍵詞抽取
基於主題關鍵詞提取演算法主要利用的是主題模型中關於主題的分佈的性質進行關鍵詞提取。演算法步驟如下:
1.獲取候選關鍵詞
從文章中獲取候選關鍵詞。即將文字分詞,也可以再根據詞性選取候選關鍵詞。
2.語料學習
根據大規模預料學習得到主題模型。
3.計算文章主題分部
根據得到的隱含主題模型,計算文章的主題分佈和候選關鍵詞分佈。
4.排序
計算文件和候選關鍵詞的主題相似度並排序,選取前n個詞作為關鍵詞。
演算法的關鍵在於主題模型的構建。主題模型是一種文件生成模型,對於一篇文章,我們的構思思路是先確定幾個主題,然後根據主題想好描述主題的詞彙,將詞彙按照語法規則組成句子,段落,最後生成一篇文章。
主題模型也是基於這個思想,它認為文件是一些主題的混合分佈,主題又是詞語的概率分佈,pLSA模型就是第一個根據這個想法構建的模型。同樣地,我們反過來想,我們找到了文件的主題,然後主題中有代表性的詞就能表示這篇文件的核心意思,就是文件的關鍵詞。
pLSA模型認為,一篇文件中的每一個詞都是通過一定概率選取某個主題,然後再按照一定的概率從主題中選取得到這個詞語,這個詞語的計算公式為:
一些貝葉斯學派的研究者對於pLSA模型進行了改進,他們認為,文章對應主題的概率以及主題對應詞語的概率不是一定的,也服從一定的概率,於是就有了現階段常用的主題模型--LDA主題模型。
LDA是D.M.Blei在2003年提出的。LDA採用了詞袋模型的方法簡化了問題的複雜性。在LDA模型中,每一篇文件是一些主題的構成的概率分佈,而每一個主題又是很多單詞構成的一個概率分佈。同時,無論是主題構成的概率分佈還是單詞構成的概率分佈也不是一定的,這些分佈也服從Dirichlet 先驗分佈。
文件的生成模型可以用如下圖模型表示:
其中α和η為先驗分佈的超引數,β為第k個主題下的所有單詞的分佈,θ為文件的主題分佈,w為文件的詞,z為w所對應的主題。
圖 3 Blei在論文中的圖模型
DA挖掘了文字的深層語義即文字的主題,用文字的主題來表示文字的也從一定程度上降低了文字向量的維度,很多人用這種方式對文字做分類,取得了不錯的效果。具體LDA的演算法在請參考《一文詳解LDA主題模型》。
LDA關鍵詞提取演算法利用文件的隱含語義資訊來提取關鍵詞,但是主題模型提取的關鍵詞比較寬泛,不能很好的反應文件主題。另外,對於LDA模型的時間複雜度較高,需要大量的實踐訓練。
NO.4文字關鍵詞提取演算法——應用
現階段,文字的關鍵詞提取在基於文字的搜尋、推薦以及資料探勘領域有著很廣泛的應用。同時在實際應用中,因為應用環境的複雜性,對於不同型別的文字,例如長文字和短文字,用同一種文字關鍵詞提取方法得到的效果並相同。因此,在實際應用中針對不同的條件環境所採用的演算法會有所不同,沒有某一類演算法在所有的環境下都有很好的效果。
相對於上文中所提到的演算法,一些組合演算法在工程上被大量應用以彌補單演算法的不足,例如將TF-IDF演算法與TextRank演算法相結合,或者綜合TF-IDF與詞性得到關鍵詞等。同時,工程上對於文字的預處理以及文字分詞的準確性也有很大的依賴。對於文字的錯別字,變形詞等資訊,需要在預處理階段予以解決,分詞演算法的選擇,未登入詞以及歧義詞的識別在一定程度上對於關鍵詞突提取會又很大的影響。
關鍵詞提取是一個看似簡單,在實際應用中卻十分棘手的任務,從現有的演算法的基礎上進行工程優化,達觀資料在這方面做了很大的努力並且取得了不錯的效果。
NO.5文字關鍵詞提取演算法——總結
本文介紹了三種常用的無監督的關鍵詞提取演算法,並介紹了其優缺點。關鍵詞提取在文字挖掘領域具有很廣闊的應用,現有的方法也存在一定的問題,我們依然會在關鍵詞提取的問題上繼續努力研究,也歡迎大家積極交流。
作者介紹:
韓偉,達觀資料資料探勘工程師,負責達觀資料文字方面的挖掘與應用。主要參與達觀資料標籤提取與文字分類系統的構建與實現,對深度學習,NLP資料探勘領域有濃厚興趣。
金猿榜往期的獲獎名單,將會在峰會現場隆重發布,期待我們的見面?