倪 兵,廖光忠+
(1.武漢科技大學 計算機科學與技術學院,湖北 武漢 430081; 2.武漢科技大學 大數據科學與工程研究院,湖北 武漢 430081)
隨著互聯網上文本數據的大量增長,從文本中提取出具有核心思想的關鍵詞這一技術得到了巨大的發展,但面對網絡上日益繁雜的數據,其效果仍有待進一步提升[1]。在眾多的關鍵詞抽取方法中,以TextRank為代表的基于圖的方法具有簡單易部署、效果不錯、易于融合其它各種特征等優點,成為了近年來的研究熱點[2,3]。在對TextRank算法的改進上,多數是通過改進詞圖中節點的得分計算公式,從而選取出更合適的文本關鍵詞[4]。這類方法典型的有將TF-IDF(term frequency-inverse document frequency)融合到TextRank中[5,6];在詞圖的迭代計算過程中加入詞位置和語義特征[7,8];將文檔中的詞頻、詞長和詞性等特征融入其中[9-11]。此外,還有利用文檔主題模型將文檔集中每篇文檔的主題以概率分布的形式給出,然后據此計算候選關鍵詞的主題特征影響力[12]。在機器學習方面,有使用Word2vec進行詞向量表征,獲取詞向量模型,通過詞向量融合了語義特征,優化了TextRank中均等的概率轉移問題[13,14]。上述方法多數還是通過基礎的共現窗口來構建詞圖,然而在中文中,句子中相鄰的詞語間多數并不具備認知上的語義關聯,針對這方面的改進,有使用句法依存代替共現窗口構建詞圖[15]。本文一方面以語義依存圖代替共現窗口構建詞圖,相比于句法依存,能從句子的底層語法結構上獲取詞語間更深層的語義聯系。同時引入規范化谷歌距離(normalized Google distance,NGD)[16]和外部領域詞典對候選關鍵詞加權計算得分,綜合考慮了文檔的內外部信息。然后對獲取的關鍵詞應用本文提出的前后向匹配算法做進一步處理,得到的關鍵詞可讀性更好。
TextRank繼承自PageRank的思想,其將文檔中的候選關鍵詞看作是PageRank中的網頁,將共現窗口內的候選關鍵詞進行組合構建詞圖[17]。詞圖中的頂點為候選關鍵詞,邊是詞語與其共現窗口內其它詞語的共現關系,以此來模擬PageRank中網頁間超鏈接的連接關系。在給候選關鍵詞打分的過程中,TextRank根據式(1)進行多次迭代計算,獲取詞圖中各頂點所代表的候選關鍵詞的得分,然后選取出得分最高的前N個候選關鍵詞作為文檔的關鍵詞
(1)
使用TextRank對候選關鍵詞打分與PageRank對網頁打分的原理是一致的,然而TextRank在關鍵詞抽取過程中存在一些不足,具體表現在以下幾點:
(1)在PageRank中,如果一個網頁中有超鏈接指向另一個網頁,那么就代表這兩個網頁具有相關性。而在Text-Rank中,是根據兩個詞語是否出現在同一個共現窗口內來判斷的,但是在同一個共現窗口內的詞語大部分并不具備任何語義上的相關性,僅僅只是位置上的臨近而已。
(2)TextRank方法并未考慮不同重要性的詞語對最終選取文檔關鍵詞的影響[18],同時在詞圖中某條邊的權重只受到對應兩個候選關鍵詞的共現頻次影響,沒有考慮其間的語義關聯,最終選取的文檔關鍵詞受詞頻的影響很大,降低了關鍵詞抽取的正確率。
(3)最終得到的文檔關鍵詞在可讀性上受中文分詞技術的影響很大。例如,很多中文分詞工具會將“自然語言處理”分割為“自然”、“語言”和“處理”;“關鍵詞提取”分割成了“關鍵詞”和“提取”。這導致最終得到的文檔關鍵詞缺乏可讀性,不具有完整的語義。
本文使用訊飛開放平臺提供的語義依存圖分析對句子中各個語言單位間的語義關聯進行分析,并將語義關聯以依存結構呈現。語義依存圖分析會直接將文檔進行分句、分詞和詞性標注,然后對每句話中各個詞語構建出語義結構上的依存圖關系,以“組建中國南水北調集團有限公司”這句話為例,其語義依存圖結構如圖1所示。

圖1 語義依存圖結構
在PageRank中,一個網頁中有超鏈接指向另一個網頁,那么這兩個網頁在內容上是存在關聯的。在圖1中,“組建”與除“有限公司”外的其它詞語并未有語義上的關聯,而使用共現窗口,“組建”與其它每個詞語都會有一個無向邊相連。相較于共現窗口,語義依存分析可以很好描述句子中各個語言單位之間的語義關聯,所構建的有向詞圖具有認知上的語義聯系,更加符合PageRank中網頁間通過超鏈接的指向關系,并且去除了共現窗口大小對最終獲取文檔關鍵詞的影響。此外,相較于句法分析,語義分析通過標記句子中各個語言單位間的語義關系,可以更加直接地獲取深層的語義信息。
當前的語義依存關系有主要語義角色、事件關系和語義依附標記3大類型,前兩大類型描述了語義角色間的關系。這3類語義依存關系共包含71種具體的關系類型,可以非常詳細準確地描述句子中各個語言單位。對于關鍵詞抽取而言,主要語義角色和事件關系是核心,是分析句子的主要成分,而語義依附標記所對應的語氣等依附性詞語基本不會成為一個文檔的關鍵詞。因此,當兩個詞語間的關系是語義依附標記時,就拋棄其出鏈所指向的詞語,不將其加入詞圖中。
在部分事件關系和主要語義角色中,有向圖邊的指向是以謂語動詞為核心。比如,在“我送她一束花”中,其施事關系指向是“送→我”;在“國家依法宣判”中,其方式角色關系的指向是“宣判→依法”,而不是我們習慣上理解的類似于“主→謂”這種結構順序。但在PageRank中,如果某個網頁比較重要,應該有更多的網頁指向它,而不是它指向更多的網頁,因此針對這幾個特殊的關系類型,在構建詞圖的時候需要轉換其邊的指向順序。此外,每個句子中都包含一個根節點Root,其指向句子的核心成分,通常是謂語動詞。
對于中文文本而言,每句話的語義依存關系是獨立存在的,因此對于一篇文檔,只需要依次對其中的每句話進行語義依存分析即可。本文以一個四元組來表示句子中的每個詞語,形式為 (Wp,Ww,Wd,Wr), 其中Wp為詞語在句子中的位置,Ww為詞語本身,Wd為詞語在句中的語義依存關系所指向的另一個詞語位置,Wr為語義依存關系類型。在構建詞圖的過程中,以結構體SW存儲句子中的各個詞語,使用鄰接表來存儲整個詞圖,如圖2所示。

圖2 詞圖的鄰接表存儲格式
其中,n為文檔中總的詞語個數,x為文檔中某個候選關鍵詞。左側第一豎列代表文檔中所有的候選關鍵詞,對于每個SWi∈n, 右側是與其具有語義依存關聯所指向的其它詞語,通過鏈表相連接。
2.2.1 規范化谷歌距離
規范化谷歌距離(NGD)被用來計算兩個詞或短語的語義相似度,在自然語言中,具有相同或相似意思的兩個關鍵字在以規范化谷歌距離為單位的情況下趨向于“接近”,意思不同的兩個關鍵字則趨向于“疏遠”。該算法假設若兩個詞語出現在同一個文檔中則代表兩者具有語義關系,因此當兩個詞語出現在同一文檔中的次數越高,那么其語義相似性就更強
(2)
N是外部數據集中總的文檔數量,當采用維基百科作為外部數據集時,則為下載的詞條總數;p(Vi) 可以看作是一個函數,輸入詞語Vi, 返回數據集中包含詞語Vi的文檔數量;p(Vi,Vj) 則是輸入兩個詞語,返回同時包含這兩個詞語的文檔數量。使用式(2)計算的NGD數值范圍在零到正無窮之間,等于零代表兩個詞語是完全相同的,等于正無窮則代表兩個詞語是完全獨立的,沒有任何語義上的相似性。使用NGDR(Vi,Vj) 表示兩個詞語的NGD數值的倒數。
本文基于維基百科這個外部知識庫來使用規范化谷歌距離度量詞語相似度,首先從網絡上下載維基百科詞條;其次對下載的每個詞條文檔去除html標簽等內容,只保留標題和正文,并且對這些文檔進行預處理,內容包括切詞、去除停用詞等不具備實意的詞語;最后對所有的詞語建立倒排索引,每個詞語對應一個倒排鏈,鏈表上的內容為包含這個詞語的維基百科詞條。基于倒排索引,可以很容易計算出任意兩個詞語的NGD數值。以SWi∈n來代替式(1)中的Wij, 則有式(3)

(3)
2.2.2 外部領域詞典加權
領域詞典是相關領域內常用詞匯的集合,對于某些文檔,尤其是專業性較強的文檔,其關鍵詞很有可能是對應領域的專業詞匯,因此當一個候選關鍵詞出現在領域詞典中,其成為文檔關鍵詞的概率應更高[19]。本文使用清華大學推出的開放領域詞庫作為外部領域詞典。對于將詞庫中的所有詞語存儲入位圖中以及查詢要抽取關鍵詞的某個文檔中的詞語是否處于詞庫中時,借鑒布隆過濾器的思想,如圖3所示。

圖3 存儲和查詢詞語
首先對詞庫中的每個詞語使用K個哈希函數求哈希值,那么會得到K個不同的哈希值,分別記作 [X1、X2、…、XK]。 然后將這K個哈希值作為位圖中的下標,對應的 [Bitmap[X1]、Bitmap[X2]、…、Bitmap[XK]] 都設置為1。當要查詢文檔中某個詞語是否處于這個詞庫中時,使用同樣的K個哈希函數對這個詞語求K個哈希值,若這K個哈希值作為位圖中的下標對應的位都為1,則說明這個文檔中的詞語處于詞庫中,當有一個不為1則說明其不處于詞庫中。該方法存在一定程度的誤判,對于存在于位圖中的詞一定可以判斷為存在,但是對于不存在于位圖中的詞也可能判斷為存在。不過實驗中位圖的裝載因子(存在的詞條數/位圖中能容納的詞條數)大小可以容忍這種誤判的概率,并且也可以通過調整哈希函數的個數、位圖的大小和存儲詞語的個數之間的比例,使得誤判的概率降到非常低。
在給詞語進行外部詞典加權的過程中,首先對每個詞語設置一個初值為1的λ, 之后按照式(4)依次對文檔中每個詞語計算
(4)
式中:freq(Vi) 表示詞語Vi在文檔中出現的次數。這樣在進行外部領域詞典加權的同時也考慮了詞頻對文檔關鍵詞的影響。若詞語Vi的領域詞典加權得分為λi, 則其歸一化權重如式(5)所示
(5)
最終計算候選關鍵詞得分公式為

(6)
在使用式(6)的計算過程中,當前后兩次迭代計算結果的值小于指定的閾值時判定為收斂,當算法收斂或者迭代的次數超過設定的最大迭代次數時計算停止。計算過程中閾值取值為0.0001,最大迭代次數為200。
分詞是在文檔預處理階段進行的,而由于目前分詞算法的不足,會導致將具有完整語義的詞語進行切分,最終抽取的文檔關鍵詞也會缺乏可讀性。若最終的文檔關鍵詞不具有完整語義,則即使在詞圖迭代計算過程中的得分很高,也是毫無意義的,因此對最終得分TOP-N的關鍵詞做進一步處理,使其更具有可讀性。
本文提出一種前后向匹配的方法應用于獲取的文檔關鍵詞中,使其更具有可讀性。對每個選取的文檔關鍵詞,具體的處理過程如下所示:
(1)在原文檔中找到包含關鍵詞的句子集合T;
(2)依次對T中包含的每個句子進行分詞和詞性標注,然后去除不包含實意的特定詞性的詞語,包括代詞、介詞、連詞、助詞、感嘆詞和標點符號,得到剩下的詞語集合S,S是T中單個句子經過處理后的詞語集合;
(3)在句子集合T中找到關鍵詞在集合S中所在的位置,然后進行前后向匹配;
(4)若某個詞語匹配的句子數量與集合T中所有的句子數量的比值大于α(α∈0.5~1) 時,則將這個詞語按照原有的順序附加到原關鍵詞上,組成一個新的關鍵詞。需要注意的是,當某個詞語匹配率低于值α, 則該方向的匹配結束,只進行另一方向的匹配。
(5)對所有新的關鍵詞進行去重處理,得到文檔最終的關鍵詞。
本文提出的關鍵詞抽取方法總體流程如圖4所示。

圖4 關鍵詞抽取流程
實驗數據采用在多個網絡新聞平臺上抓取IT、經濟和日常社會性新聞共400篇,其中IT和經濟各100篇,日常社會性新聞200篇。爬取的文檔格式為XML,所以需要先進行清洗,去除標簽只保留標題、關鍵詞和正文內容。由于實驗結果嚴重依賴于新聞中標注的關鍵詞,但是經過觀察發現原有的關鍵詞并不是太準確,因此本文采用多人人工交叉的方式進行手動標注,為此召集數十名校內相關專業的師生完成。每篇文檔提取的關鍵詞在4~6個,在實驗中按照文檔已有的關鍵詞個數動態改變算法的關鍵詞提取數量。
關鍵詞抽取效果的評判標準采用準確率P、召回率R和F1值,其計算公式為
(7)
(8)
(9)
在前后向匹配算法中,α的值對最終獲取的文檔關鍵詞有較大的影響。若該值太低,則可能將一個本不需要補充語義完整性的關鍵詞進行了補充;若該值太高,則又可能將一個需要補充語義完整性的關鍵詞忽略了,因此,α的取值對前后向匹配算法至關重要。經過大量的數據實驗,得出了以下結果:根據表1,當α取值為0.8時,召回率最大,效果最好。

表1 α取值對召回率的影響
對同一篇文檔進行是否應用前后向匹配算法的關鍵詞可讀性效果對比,以展示本文所提出的改進關鍵詞可讀性算法的效果。實驗使用了一篇主題為“新時代中國共產黨的歷史使命”的文檔,字數1528,以及一篇主題為“中國高速發展”,字數1906,各抽取5個文檔關鍵詞,其對比結果見表2。

表2 關鍵詞可讀性對比
為了說明本文所提出方法的有效性,選取了4個已有的無監督基于圖的關鍵詞提取方法進行對比,實驗結果見表3。

表3 實驗結果對比
TFIDF-TextRank是結合了TF-IDF和TextRank兩個傳統方法,將TFIDF融入TextRank中改進詞圖中邊的權重轉移;EPRank是融合了詞位置和詞向量Word2vec,對TextRank算法進行加權,改進詞圖迭代過程中的詞打分公式。這兩個方法在準確率、召回率和F1值上具有一定的提升,但總體來說優化的效果并不明顯。根據實驗數據對比,本文提出的方法明顯優于其它4個關鍵詞提取方法,這驗證使用語義依存分析代替共現窗口以及借助外部知識庫特征進行加權的方式是有效的。
實驗發現,文中的方法在100篇IT新聞和100篇經濟新聞中關鍵詞抽取的效果好于在日常社會性新聞中抽取的效果,考慮到外部領域詞典的影響,在專業性更強的文檔下外部領域詞典能發揮的作用更大,因此這種情況是合理的。另外,此方法在構建詞圖的過程中沒有消除停用詞或特定詞性的詞語,而是在語義依存分析結束后去除語義依附標記類關系的詞匯,這種做法更符合PageRank的思想,避免得到的關鍵詞結果受文檔信息不完整的影響。
本文使用語義依存關系代替共現窗口構建詞圖,使用基于維基百科的規范化谷歌距離以及引入外部領域詞典來給候選關鍵詞打分,并提出了前后向匹配算法來提高關鍵詞的可讀性。實驗結果表明,文中所使用的方法顯著提升了關鍵詞抽取的效果,相較于TextRank方法,在準確率、召回率和F1值上分別提升了18.6%、19.7%和17.1%,并且實驗過程無需受到各種參數的制約,實現簡單。此外,根據表3的對比可知,對抽取的文檔關鍵詞應用于前后向匹配算法能較好提升關鍵詞的可讀性,使其表達的語義信息更完整。接下來的工作是融合其它語義和統計特征來繼續改進詞圖中節點的打分公式,同時進一步改善關鍵詞可讀性問題。