孟彩霞 張 琰 李楠楠
(西安郵電大學(xué)計(jì)算機(jī)學(xué)院 西安 710121)
關(guān)鍵詞是表達(dá)文檔核心的最小單位。從單個或多個文檔中的文本中提取關(guān)鍵短語是信息檢索(IR),文本挖掘(TM)和自然語言處理(NLP)領(lǐng)域中的重要問題,也是文檔聚類,文檔摘要和信息檢索任務(wù)的基本步驟。因此,關(guān)鍵字提取在文本數(shù)據(jù)挖掘領(lǐng)域發(fā)揮著重要作用。
關(guān)鍵字提取包含有監(jiān)督的提取方法和無監(jiān)督的提取方法[1]。鑒于有監(jiān)督的關(guān)鍵詞提取方法需要人工標(biāo)記的語料庫,而人工標(biāo)記因人而異,從不同的角度出發(fā)有不同的結(jié)果。本文主要關(guān)心無監(jiān)督的關(guān)鍵詞提取方法,表1為典型的無監(jiān)督關(guān)鍵詞提取方法對比。
基于圖形的文本表示被稱為提取關(guān)鍵短語的最佳無監(jiān)督方法之一,可以非常有效地查詢文本和結(jié)構(gòu)信息之間的聯(lián)系。其中,最具有代表性的就是谷歌提出的PageRank算法[7]。TextRank將PageRank算法思想引入文本,以詞語為圖節(jié)點(diǎn),文本間的共現(xiàn)關(guān)系表示為圖結(jié)構(gòu),并通過圖的迭代計(jì)算實(shí)現(xiàn)重要性排序,可以用于關(guān)鍵詞/文本摘要抽取[6]。經(jīng)典的Text Rank算法在摘要提取時只考慮了句子節(jié)點(diǎn)間的相似性,而忽略了文檔的篇章結(jié)構(gòu)及句子的上下文信息。文獻(xiàn)[8]中,于珊珊等提出引入標(biāo)題、段落信息、句子長度等外部信息,改善TextRank中句子相似度計(jì)算方法和權(quán)重調(diào)整因子。文獻(xiàn)[9]中,利用Word2vec模型訓(xùn)練詞向量計(jì)算詞匯之間的相似度,進(jìn)而對TextRank算法進(jìn)行改進(jìn)。文獻(xiàn)[10~12]中,利用LDA算法對文本語料庫進(jìn)行挖掘,進(jìn)而改善TextRank算法。文獻(xiàn)[13]中,利用聚類算法調(diào)整簇內(nèi)節(jié)點(diǎn)的投票重要性,結(jié)合節(jié)點(diǎn)的覆蓋和位置因素,改進(jìn)TextRank算法以提高關(guān)鍵詞的提取效果。
本文利用word2vec詞向量工具表示文本信息,并結(jié)合文本的外部信息,如詞語位置信息和語義相似度對TextRank算法進(jìn)行改進(jìn),實(shí)驗(yàn)取得了良好的效果。
Word2vec是一個用于生成單詞向量的開源工具包。由Word2vec訓(xùn)練的矢量具有以下特征:字之間的相關(guān)性可以通過字矢量之間的矢量距離來測量。語義相關(guān)性越高,兩個詞向量之間的距離就越短[15]。Word2vec可以利用連續(xù)詞袋模型(CBOW)和Skip-gram模型來產(chǎn)生詞向量。CBOW的主要思想是根據(jù)單詞周圍的上下文預(yù)測中心單詞的概率,而Skip-gram模型是圍繞中心單詞來預(yù)測上下文[16]。在Word2vec的基礎(chǔ)上,文本關(guān)鍵詞提取算法可以在一定程度上保持句子之間的語義相關(guān)性。
基于圖的排序算法本質(zhì)上是一種基于從整個圖遞歸繪制的全局信息來確定圖中頂點(diǎn)的重要性的方法?;趫D表的排名模型實(shí)現(xiàn)的基本思想是“投票”或“推薦”。當(dāng)一個頂點(diǎn)鏈接到另一個頂點(diǎn)時,它基本上就是為該另一個頂點(diǎn)投了一票。為一個頂點(diǎn)投的投票數(shù)越高,該頂點(diǎn)的重要性越高。此外,投出選票的頂點(diǎn)的重要性決定了投票本身有多重要,排名模型考慮了這一信息。因此,與一個頂點(diǎn)相關(guān)聯(lián)的得分是基于為其投出的選票以及投出這些選票的頂點(diǎn)的得分來確定的。
形式上,令G是具有頂點(diǎn)集V和邊集E的有向圖,其中G'=V*V的子集。對于給定的頂點(diǎn)Vi,令I(lǐng)n(Vi)是指向它的頂點(diǎn)集(前趨),令Out(Vi)是頂點(diǎn)Vi指向的頂點(diǎn)集(后繼者)。頂點(diǎn)Vi的得分定義如式(1)所示:
其中d是可以在0~1之間設(shè)置的阻尼因子,其作用是將從給定頂點(diǎn)跳到圖中的另一個隨機(jī)頂點(diǎn)的概率整合到模型中。阻尼因子d通常設(shè)置為0.85。
TextRank運(yùn)行完成后獲得的最終值不受初始值選擇的影響,只是收斂的迭代次數(shù)可能不同[6]。鑒于此,本文將研究重點(diǎn)放在詞語的狀態(tài)轉(zhuǎn)移矩陣上,通過狀態(tài)轉(zhuǎn)移矩陣改善TextRank算法運(yùn)行結(jié)果。
基于TextRank的關(guān)鍵詞提取問題,是將關(guān)鍵詞提取問題轉(zhuǎn)化為圖排序問題。圖1為改進(jìn)Text Rank提取關(guān)鍵詞的工作流程。
圖1 改進(jìn)Text Rank提取關(guān)鍵詞的工作流程
清理和標(biāo)準(zhǔn)化文本的整個過程叫做文本預(yù)處理[15]。本文包含的處理過程為:1)除去數(shù)據(jù)中非文本部分,如:圖片。2)處理中文編碼問題。中文的編碼并非是utf8,而是unicode。未處理的編碼問題會導(dǎo)致在分詞的時候出現(xiàn)亂碼。3)中文分詞。中文不同于英文,分詞結(jié)果的好壞很大程度上影響了后續(xù)的實(shí)驗(yàn)結(jié)果。本文采用Python實(shí)現(xiàn),分詞和詞性標(biāo)注使用jieba開源工具包。
TextRank是基于圖形的關(guān)鍵詞提取方法,因此首先要根據(jù)單個文本的候選關(guān)鍵詞構(gòu)建詞圖。主要步驟如下:
Step1:對單文檔D進(jìn)行分詞,即D=[w1,w2,w3,…,wn];
Step2:對D去停用詞、詞性標(biāo)注,選特性詞性的詞(如名詞、動詞、形容詞)作為候選關(guān)鍵詞,得D1=[w1,w2,w3,…,wm];
Step3:對D1應(yīng)用TextRank算法,本文以詞語間的相似性和共現(xiàn)頻率作為關(guān)鍵詞提取的權(quán)重。
構(gòu)建候選關(guān)鍵詞圖G=(V,E),其中V為節(jié)點(diǎn)集,表示由步驟(2)中生成的候選關(guān)鍵詞D1=[w1,w2,w3,…,wm],G'=V*V,對于圖G中的任意的一個節(jié)點(diǎn),In(Vi)表示指向Vi的節(jié)點(diǎn),Out(Vi)表示由Vi所指向的節(jié)點(diǎn)。令wij表示由節(jié)點(diǎn)Vi→Vj的邊的權(quán)重,則節(jié)點(diǎn)Vi的分值WS(Vi)如式(2):
其中d等于0.85,節(jié)點(diǎn)初始值為1,根據(jù)式(2)迭代獲得節(jié)點(diǎn)權(quán)重。當(dāng)兩次迭代誤差小于等于0.0001時,算法收斂。
在構(gòu)建關(guān)鍵詞圖的過程中,本文為實(shí)現(xiàn)節(jié)點(diǎn)間非均勻的進(jìn)行權(quán)重傳遞,將權(quán)重的影響因素分解為:詞語位置影響力和詞語跨度影響力[13]。令w表示節(jié)點(diǎn)權(quán)重,a、b分別表示詞語位置影響力和詞語跨度影響力,則:w=a+b=1。
1)詞語位置影響力
令e=
其中Loc(Vi)表示詞語的位置信息,具體計(jì)算如下:
2)詞語跨度影響力
在TextRank算法中,由于滑動窗口的設(shè)定,在同一窗口內(nèi)會經(jīng)常有若干相同詞的情況,這樣就會導(dǎo)致算法的提取結(jié)果是局部關(guān)鍵詞而非全局關(guān)鍵詞[17]。因此本文將詞語跨度作為考慮因素。計(jì)算式(4)如下:
其中D(V)如式(5):
其中Lastv表示詞語v在文中最后一詞出現(xiàn)位置,F(xiàn)irstv表示第一次出現(xiàn)位置,len表示文檔詞語總數(shù)。
結(jié)合以上,wij可通過以下式(6)得到,Wij表示Vi轉(zhuǎn)移到Vj的權(quán)重:
本文采用夏天論文中提供的新聞數(shù)據(jù)[12]。通過python中文分詞包jieba進(jìn)行分詞,詞性標(biāo)注。然后,采用Word2Vec模型,以默認(rèn)參數(shù)對這批文本數(shù)據(jù)進(jìn)行訓(xùn)練得到詞向量模型文件。
為便于與已有方法對比分析,本文采用準(zhǔn)確率P、召回率R以及測量值F作為關(guān)鍵詞抽取效果的評判標(biāo)準(zhǔn),其計(jì)算公式如下:
本文將以下方法進(jìn)行對比:1)傳統(tǒng)的TF_IDF方法;2)文獻(xiàn)[6]提出的TextRank關(guān)鍵詞提??;3)文獻(xiàn)[9]提出的Word2Vec+TextRank方法;4)本文關(guān)鍵詞提取方法。
通過調(diào)整實(shí)驗(yàn)參數(shù),當(dāng)a=0.35,b=0.65時實(shí)驗(yàn)效果相對較好。當(dāng)提取關(guān)鍵詞個數(shù)為[1,7]時,實(shí)驗(yàn)結(jié)果如圖2。
圖2 準(zhǔn)確率P、召回率R,平均值F
由圖2可知,當(dāng)關(guān)鍵詞個數(shù)在K=3、4時,F(xiàn)值較高,所得實(shí)驗(yàn)效果最佳。當(dāng)K≥4時,隨著關(guān)鍵詞個數(shù)增加,準(zhǔn)確率P和平均值F逐漸降低,這是由于實(shí)驗(yàn)數(shù)據(jù)中的關(guān)鍵詞個數(shù)大多在3~5之間。因此當(dāng)實(shí)驗(yàn)數(shù)據(jù)提取關(guān)鍵詞個數(shù)為3、4時,提取效果最好。
實(shí)驗(yàn)結(jié)果表明,對于單文檔的無指導(dǎo)關(guān)鍵詞抽取來說,TextRank只考慮了部分語義信息,但沒有考慮文檔的結(jié)構(gòu)信息,因此當(dāng)利用文檔外部信息改善TextRank算法時能取得較好的實(shí)驗(yàn)結(jié)果。具體表現(xiàn):使用基本的TextRank算法進(jìn)行關(guān)鍵詞提取時,當(dāng)關(guān)鍵詞個數(shù)相同K=3時,TextRank算法評價指標(biāo)P、R、F分別為22.21%、19.78%、20.92%;加入文檔結(jié)構(gòu)信息后評價指標(biāo)P、R、F分別為29.83%、31.34%、30.56%。