孟彩霞 張 琰 李楠楠
(西安郵電大學計算機學院 西安 710121)
關鍵詞是表達文檔核心的最小單位。從單個或多個文檔中的文本中提取關鍵短語是信息檢索(IR),文本挖掘(TM)和自然語言處理(NLP)領域中的重要問題,也是文檔聚類,文檔摘要和信息檢索任務的基本步驟。因此,關鍵字提取在文本數據挖掘領域發揮著重要作用。
關鍵字提取包含有監督的提取方法和無監督的提取方法[1]。鑒于有監督的關鍵詞提取方法需要人工標記的語料庫,而人工標記因人而異,從不同的角度出發有不同的結果。本文主要關心無監督的關鍵詞提取方法,表1為典型的無監督關鍵詞提取方法對比。
基于圖形的文本表示被稱為提取關鍵短語的最佳無監督方法之一,可以非常有效地查詢文本和結構信息之間的聯系。其中,最具有代表性的就是谷歌提出的PageRank算法[7]。TextRank將PageRank算法思想引入文本,以詞語為圖節點,文本間的共現關系表示為圖結構,并通過圖的迭代計算實現重要性排序,可以用于關鍵詞/文本摘要抽取[6]。經典的Text Rank算法在摘要提取時只考慮了句子節點間的相似性,而忽略了文檔的篇章結構及句子的上下文信息。文獻[8]中,于珊珊等提出引入標題、段落信息、句子長度等外部信息,改善TextRank中句子相似度計算方法和權重調整因子。文獻[9]中,利用Word2vec模型訓練詞向量計算詞匯之間的相似度,進而對TextRank算法進行改進。文獻[10~12]中,利用LDA算法對文本語料庫進行挖掘,進而改善TextRank算法。文獻[13]中,利用聚類算法調整簇內節點的投票重要性,結合節點的覆蓋和位置因素,改進TextRank算法以提高關鍵詞的提取效果。
本文利用word2vec詞向量工具表示文本信息,并結合文本的外部信息,如詞語位置信息和語義相似度對TextRank算法進行改進,實驗取得了良好的效果。
Word2vec是一個用于生成單詞向量的開源工具包。由Word2vec訓練的矢量具有以下特征:字之間的相關性可以通過字矢量之間的矢量距離來測量。語義相關性越高,兩個詞向量之間的距離就越短[15]。Word2vec可以利用連續詞袋模型(CBOW)和Skip-gram模型來產生詞向量。CBOW的主要思想是根據單詞周圍的上下文預測中心單詞的概率,而Skip-gram模型是圍繞中心單詞來預測上下文[16]。在Word2vec的基礎上,文本關鍵詞提取算法可以在一定程度上保持句子之間的語義相關性。
基于圖的排序算法本質上是一種基于從整個圖遞歸繪制的全局信息來確定圖中頂點的重要性的方法。基于圖表的排名模型實現的基本思想是“投票”或“推薦”。當一個頂點鏈接到另一個頂點時,它基本上就是為該另一個頂點投了一票。為一個頂點投的投票數越高,該頂點的重要性越高。此外,投出選票的頂點的重要性決定了投票本身有多重要,排名模型考慮了這一信息。因此,與一個頂點相關聯的得分是基于為其投出的選票以及投出這些選票的頂點的得分來確定的。
形式上,令G是具有頂點集V和邊集E的有向圖,其中G'=V*V的子集。對于給定的頂點Vi,令In(Vi)是指向它的頂點集(前趨),令Out(Vi)是頂點Vi指向的頂點集(后繼者)。頂點Vi的得分定義如式(1)所示:

其中d是可以在0~1之間設置的阻尼因子,其作用是將從給定頂點跳到圖中的另一個隨機頂點的概率整合到模型中。阻尼因子d通常設置為0.85。
TextRank運行完成后獲得的最終值不受初始值選擇的影響,只是收斂的迭代次數可能不同[6]。鑒于此,本文將研究重點放在詞語的狀態轉移矩陣上,通過狀態轉移矩陣改善TextRank算法運行結果。
基于TextRank的關鍵詞提取問題,是將關鍵詞提取問題轉化為圖排序問題。圖1為改進Text Rank提取關鍵詞的工作流程。

圖1 改進Text Rank提取關鍵詞的工作流程
清理和標準化文本的整個過程叫做文本預處理[15]。本文包含的處理過程為:1)除去數據中非文本部分,如:圖片。2)處理中文編碼問題。中文的編碼并非是utf8,而是unicode。未處理的編碼問題會導致在分詞的時候出現亂碼。3)中文分詞。中文不同于英文,分詞結果的好壞很大程度上影響了后續的實驗結果。本文采用Python實現,分詞和詞性標注使用jieba開源工具包。
TextRank是基于圖形的關鍵詞提取方法,因此首先要根據單個文本的候選關鍵詞構建詞圖。主要步驟如下:
Step1:對單文檔D進行分詞,即D=[w1,w2,w3,…,wn];
Step2:對D去停用詞、詞性標注,選特性詞性的詞(如名詞、動詞、形容詞)作為候選關鍵詞,得D1=[w1,w2,w3,…,wm];
Step3:對D1應用TextRank算法,本文以詞語間的相似性和共現頻率作為關鍵詞提取的權重。
構建候選關鍵詞圖G=(V,E),其中V為節點集,表示由步驟(2)中生成的候選關鍵詞D1=[w1,w2,w3,…,wm],G'=V*V,對于圖G中的任意的一個節點,In(Vi)表示指向Vi的節點,Out(Vi)表示由Vi所指向的節點。令wij表示由節點Vi→Vj的邊的權重,則節點Vi的分值WS(Vi)如式(2):

其中d等于0.85,節點初始值為1,根據式(2)迭代獲得節點權重。當兩次迭代誤差小于等于0.0001時,算法收斂。
在構建關鍵詞圖的過程中,本文為實現節點間非均勻的進行權重傳遞,將權重的影響因素分解為:詞語位置影響力和詞語跨度影響力[13]。令w表示節點權重,a、b分別表示詞語位置影響力和詞語跨度影響力,則:w=a+b=1。
1)詞語位置影響力
令e=

其中Loc(Vi)表示詞語的位置信息,具體計算如下:

2)詞語跨度影響力
在TextRank算法中,由于滑動窗口的設定,在同一窗口內會經常有若干相同詞的情況,這樣就會導致算法的提取結果是局部關鍵詞而非全局關鍵詞[17]。因此本文將詞語跨度作為考慮因素。計算式(4)如下:

其中D(V)如式(5):

其中Lastv表示詞語v在文中最后一詞出現位置,Firstv表示第一次出現位置,len表示文檔詞語總數。
結合以上,wij可通過以下式(6)得到,Wij表示Vi轉移到Vj的權重:

本文采用夏天論文中提供的新聞數據[12]。通過python中文分詞包jieba進行分詞,詞性標注。然后,采用Word2Vec模型,以默認參數對這批文本數據進行訓練得到詞向量模型文件。
為便于與已有方法對比分析,本文采用準確率P、召回率R以及測量值F作為關鍵詞抽取效果的評判標準,其計算公式如下:

本文將以下方法進行對比:1)傳統的TF_IDF方法;2)文獻[6]提出的TextRank關鍵詞提取;3)文獻[9]提出的Word2Vec+TextRank方法;4)本文關鍵詞提取方法。
通過調整實驗參數,當a=0.35,b=0.65時實驗效果相對較好。當提取關鍵詞個數為[1,7]時,實驗結果如圖2。

圖2 準確率P、召回率R,平均值F
由圖2可知,當關鍵詞個數在K=3、4時,F值較高,所得實驗效果最佳。當K≥4時,隨著關鍵詞個數增加,準確率P和平均值F逐漸降低,這是由于實驗數據中的關鍵詞個數大多在3~5之間。因此當實驗數據提取關鍵詞個數為3、4時,提取效果最好。
實驗結果表明,對于單文檔的無指導關鍵詞抽取來說,TextRank只考慮了部分語義信息,但沒有考慮文檔的結構信息,因此當利用文檔外部信息改善TextRank算法時能取得較好的實驗結果。具體表現:使用基本的TextRank算法進行關鍵詞提取時,當關鍵詞個數相同K=3時,TextRank算法評價指標P、R、F分別為22.21%、19.78%、20.92%;加入文檔結構信息后評價指標P、R、F分別為29.83%、31.34%、30.56%。