倪 兵,廖光忠+
(1.武漢科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,湖北 武漢 430081; 2.武漢科技大學(xué) 大數(shù)據(jù)科學(xué)與工程研究院,湖北 武漢 430081)
隨著互聯(lián)網(wǎng)上文本數(shù)據(jù)的大量增長,從文本中提取出具有核心思想的關(guān)鍵詞這一技術(shù)得到了巨大的發(fā)展,但面對網(wǎng)絡(luò)上日益繁雜的數(shù)據(jù),其效果仍有待進一步提升[1]。在眾多的關(guān)鍵詞抽取方法中,以TextRank為代表的基于圖的方法具有簡單易部署、效果不錯、易于融合其它各種特征等優(yōu)點,成為了近年來的研究熱點[2,3]。在對TextRank算法的改進上,多數(shù)是通過改進詞圖中節(jié)點的得分計算公式,從而選取出更合適的文本關(guān)鍵詞[4]。這類方法典型的有將TF-IDF(term frequency-inverse document frequency)融合到TextRank中[5,6];在詞圖的迭代計算過程中加入詞位置和語義特征[7,8];將文檔中的詞頻、詞長和詞性等特征融入其中[9-11]。此外,還有利用文檔主題模型將文檔集中每篇文檔的主題以概率分布的形式給出,然后據(jù)此計算候選關(guān)鍵詞的主題特征影響力[12]。在機器學(xué)習(xí)方面,有使用Word2vec進行詞向量表征,獲取詞向量模型,通過詞向量融合了語義特征,優(yōu)化了TextRank中均等的概率轉(zhuǎn)移問題[13,14]。上述方法多數(shù)還是通過基礎(chǔ)的共現(xiàn)窗口來構(gòu)建詞圖,然而在中文中,句子中相鄰的詞語間多數(shù)并不具備認(rèn)知上的語義關(guān)聯(lián),針對這方面的改進,有使用句法依存代替共現(xiàn)窗口構(gòu)建詞圖[15]。本文一方面以語義依存圖代替共現(xiàn)窗口構(gòu)建詞圖,相比于句法依存,能從句子的底層語法結(jié)構(gòu)上獲取詞語間更深層的語義聯(lián)系。同時引入規(guī)范化谷歌距離(normalized Google distance,NGD)[16]和外部領(lǐng)域詞典對候選關(guān)鍵詞加權(quán)計算得分,綜合考慮了文檔的內(nèi)外部信息。然后對獲取的關(guān)鍵詞應(yīng)用本文提出的前后向匹配算法做進一步處理,得到的關(guān)鍵詞可讀性更好。
TextRank繼承自PageRank的思想,其將文檔中的候選關(guān)鍵詞看作是PageRank中的網(wǎng)頁,將共現(xiàn)窗口內(nèi)的候選關(guān)鍵詞進行組合構(gòu)建詞圖[17]。詞圖中的頂點為候選關(guān)鍵詞,邊是詞語與其共現(xiàn)窗口內(nèi)其它詞語的共現(xiàn)關(guān)系,以此來模擬PageRank中網(wǎng)頁間超鏈接的連接關(guān)系。在給候選關(guān)鍵詞打分的過程中,TextRank根據(jù)式(1)進行多次迭代計算,獲取詞圖中各頂點所代表的候選關(guān)鍵詞的得分,然后選取出得分最高的前N個候選關(guān)鍵詞作為文檔的關(guān)鍵詞
(1)
使用TextRank對候選關(guān)鍵詞打分與PageRank對網(wǎng)頁打分的原理是一致的,然而TextRank在關(guān)鍵詞抽取過程中存在一些不足,具體表現(xiàn)在以下幾點:
(1)在PageRank中,如果一個網(wǎng)頁中有超鏈接指向另一個網(wǎng)頁,那么就代表這兩個網(wǎng)頁具有相關(guān)性。而在Text-Rank中,是根據(jù)兩個詞語是否出現(xiàn)在同一個共現(xiàn)窗口內(nèi)來判斷的,但是在同一個共現(xiàn)窗口內(nèi)的詞語大部分并不具備任何語義上的相關(guān)性,僅僅只是位置上的臨近而已。
(2)TextRank方法并未考慮不同重要性的詞語對最終選取文檔關(guān)鍵詞的影響[18],同時在詞圖中某條邊的權(quán)重只受到對應(yīng)兩個候選關(guān)鍵詞的共現(xiàn)頻次影響,沒有考慮其間的語義關(guān)聯(lián),最終選取的文檔關(guān)鍵詞受詞頻的影響很大,降低了關(guān)鍵詞抽取的正確率。
(3)最終得到的文檔關(guān)鍵詞在可讀性上受中文分詞技術(shù)的影響很大。例如,很多中文分詞工具會將“自然語言處理”分割為“自然”、“語言”和“處理”;“關(guān)鍵詞提取”分割成了“關(guān)鍵詞”和“提取”。這導(dǎo)致最終得到的文檔關(guān)鍵詞缺乏可讀性,不具有完整的語義。
本文使用訊飛開放平臺提供的語義依存圖分析對句子中各個語言單位間的語義關(guān)聯(lián)進行分析,并將語義關(guān)聯(lián)以依存結(jié)構(gòu)呈現(xiàn)。語義依存圖分析會直接將文檔進行分句、分詞和詞性標(biāo)注,然后對每句話中各個詞語構(gòu)建出語義結(jié)構(gòu)上的依存圖關(guān)系,以“組建中國南水北調(diào)集團有限公司”這句話為例,其語義依存圖結(jié)構(gòu)如圖1所示。
圖1 語義依存圖結(jié)構(gòu)
在PageRank中,一個網(wǎng)頁中有超鏈接指向另一個網(wǎng)頁,那么這兩個網(wǎng)頁在內(nèi)容上是存在關(guān)聯(lián)的。在圖1中,“組建”與除“有限公司”外的其它詞語并未有語義上的關(guān)聯(lián),而使用共現(xiàn)窗口,“組建”與其它每個詞語都會有一個無向邊相連。相較于共現(xiàn)窗口,語義依存分析可以很好描述句子中各個語言單位之間的語義關(guān)聯(lián),所構(gòu)建的有向詞圖具有認(rèn)知上的語義聯(lián)系,更加符合PageRank中網(wǎng)頁間通過超鏈接的指向關(guān)系,并且去除了共現(xiàn)窗口大小對最終獲取文檔關(guān)鍵詞的影響。此外,相較于句法分析,語義分析通過標(biāo)記句子中各個語言單位間的語義關(guān)系,可以更加直接地獲取深層的語義信息。
當(dāng)前的語義依存關(guān)系有主要語義角色、事件關(guān)系和語義依附標(biāo)記3大類型,前兩大類型描述了語義角色間的關(guān)系。這3類語義依存關(guān)系共包含71種具體的關(guān)系類型,可以非常詳細準(zhǔn)確地描述句子中各個語言單位。對于關(guān)鍵詞抽取而言,主要語義角色和事件關(guān)系是核心,是分析句子的主要成分,而語義依附標(biāo)記所對應(yīng)的語氣等依附性詞語基本不會成為一個文檔的關(guān)鍵詞。因此,當(dāng)兩個詞語間的關(guān)系是語義依附標(biāo)記時,就拋棄其出鏈所指向的詞語,不將其加入詞圖中。
在部分事件關(guān)系和主要語義角色中,有向圖邊的指向是以謂語動詞為核心。比如,在“我送她一束花”中,其施事關(guān)系指向是“送→我”;在“國家依法宣判”中,其方式角色關(guān)系的指向是“宣判→依法”,而不是我們習(xí)慣上理解的類似于“主→謂”這種結(jié)構(gòu)順序。但在PageRank中,如果某個網(wǎng)頁比較重要,應(yīng)該有更多的網(wǎng)頁指向它,而不是它指向更多的網(wǎng)頁,因此針對這幾個特殊的關(guān)系類型,在構(gòu)建詞圖的時候需要轉(zhuǎn)換其邊的指向順序。此外,每個句子中都包含一個根節(jié)點Root,其指向句子的核心成分,通常是謂語動詞。
對于中文文本而言,每句話的語義依存關(guān)系是獨立存在的,因此對于一篇文檔,只需要依次對其中的每句話進行語義依存分析即可。本文以一個四元組來表示句子中的每個詞語,形式為 (Wp,Ww,Wd,Wr), 其中Wp為詞語在句子中的位置,Ww為詞語本身,Wd為詞語在句中的語義依存關(guān)系所指向的另一個詞語位置,Wr為語義依存關(guān)系類型。在構(gòu)建詞圖的過程中,以結(jié)構(gòu)體SW存儲句子中的各個詞語,使用鄰接表來存儲整個詞圖,如圖2所示。
圖2 詞圖的鄰接表存儲格式
其中,n為文檔中總的詞語個數(shù),x為文檔中某個候選關(guān)鍵詞。左側(cè)第一豎列代表文檔中所有的候選關(guān)鍵詞,對于每個SWi∈n, 右側(cè)是與其具有語義依存關(guān)聯(lián)所指向的其它詞語,通過鏈表相連接。
2.2.1 規(guī)范化谷歌距離
規(guī)范化谷歌距離(NGD)被用來計算兩個詞或短語的語義相似度,在自然語言中,具有相同或相似意思的兩個關(guān)鍵字在以規(guī)范化谷歌距離為單位的情況下趨向于“接近”,意思不同的兩個關(guān)鍵字則趨向于“疏遠”。該算法假設(shè)若兩個詞語出現(xiàn)在同一個文檔中則代表兩者具有語義關(guān)系,因此當(dāng)兩個詞語出現(xiàn)在同一文檔中的次數(shù)越高,那么其語義相似性就更強
(2)
N是外部數(shù)據(jù)集中總的文檔數(shù)量,當(dāng)采用維基百科作為外部數(shù)據(jù)集時,則為下載的詞條總數(shù);p(Vi) 可以看作是一個函數(shù),輸入詞語Vi, 返回數(shù)據(jù)集中包含詞語Vi的文檔數(shù)量;p(Vi,Vj) 則是輸入兩個詞語,返回同時包含這兩個詞語的文檔數(shù)量。使用式(2)計算的NGD數(shù)值范圍在零到正無窮之間,等于零代表兩個詞語是完全相同的,等于正無窮則代表兩個詞語是完全獨立的,沒有任何語義上的相似性。使用NGDR(Vi,Vj) 表示兩個詞語的NGD數(shù)值的倒數(shù)。
本文基于維基百科這個外部知識庫來使用規(guī)范化谷歌距離度量詞語相似度,首先從網(wǎng)絡(luò)上下載維基百科詞條;其次對下載的每個詞條文檔去除html標(biāo)簽等內(nèi)容,只保留標(biāo)題和正文,并且對這些文檔進行預(yù)處理,內(nèi)容包括切詞、去除停用詞等不具備實意的詞語;最后對所有的詞語建立倒排索引,每個詞語對應(yīng)一個倒排鏈,鏈表上的內(nèi)容為包含這個詞語的維基百科詞條?;诘古潘饕?,可以很容易計算出任意兩個詞語的NGD數(shù)值。以SWi∈n來代替式(1)中的Wij, 則有式(3)
(3)
2.2.2 外部領(lǐng)域詞典加權(quán)
領(lǐng)域詞典是相關(guān)領(lǐng)域內(nèi)常用詞匯的集合,對于某些文檔,尤其是專業(yè)性較強的文檔,其關(guān)鍵詞很有可能是對應(yīng)領(lǐng)域的專業(yè)詞匯,因此當(dāng)一個候選關(guān)鍵詞出現(xiàn)在領(lǐng)域詞典中,其成為文檔關(guān)鍵詞的概率應(yīng)更高[19]。本文使用清華大學(xué)推出的開放領(lǐng)域詞庫作為外部領(lǐng)域詞典。對于將詞庫中的所有詞語存儲入位圖中以及查詢要抽取關(guān)鍵詞的某個文檔中的詞語是否處于詞庫中時,借鑒布隆過濾器的思想,如圖3所示。
圖3 存儲和查詢詞語
首先對詞庫中的每個詞語使用K個哈希函數(shù)求哈希值,那么會得到K個不同的哈希值,分別記作 [X1、X2、…、XK]。 然后將這K個哈希值作為位圖中的下標(biāo),對應(yīng)的 [Bitmap[X1]、Bitmap[X2]、…、Bitmap[XK]] 都設(shè)置為1。當(dāng)要查詢文檔中某個詞語是否處于這個詞庫中時,使用同樣的K個哈希函數(shù)對這個詞語求K個哈希值,若這K個哈希值作為位圖中的下標(biāo)對應(yīng)的位都為1,則說明這個文檔中的詞語處于詞庫中,當(dāng)有一個不為1則說明其不處于詞庫中。該方法存在一定程度的誤判,對于存在于位圖中的詞一定可以判斷為存在,但是對于不存在于位圖中的詞也可能判斷為存在。不過實驗中位圖的裝載因子(存在的詞條數(shù)/位圖中能容納的詞條數(shù))大小可以容忍這種誤判的概率,并且也可以通過調(diào)整哈希函數(shù)的個數(shù)、位圖的大小和存儲詞語的個數(shù)之間的比例,使得誤判的概率降到非常低。
在給詞語進行外部詞典加權(quán)的過程中,首先對每個詞語設(shè)置一個初值為1的λ, 之后按照式(4)依次對文檔中每個詞語計算
(4)
式中:freq(Vi) 表示詞語Vi在文檔中出現(xiàn)的次數(shù)。這樣在進行外部領(lǐng)域詞典加權(quán)的同時也考慮了詞頻對文檔關(guān)鍵詞的影響。若詞語Vi的領(lǐng)域詞典加權(quán)得分為λi, 則其歸一化權(quán)重如式(5)所示
(5)
最終計算候選關(guān)鍵詞得分公式為
(6)
在使用式(6)的計算過程中,當(dāng)前后兩次迭代計算結(jié)果的值小于指定的閾值時判定為收斂,當(dāng)算法收斂或者迭代的次數(shù)超過設(shè)定的最大迭代次數(shù)時計算停止。計算過程中閾值取值為0.0001,最大迭代次數(shù)為200。
分詞是在文檔預(yù)處理階段進行的,而由于目前分詞算法的不足,會導(dǎo)致將具有完整語義的詞語進行切分,最終抽取的文檔關(guān)鍵詞也會缺乏可讀性。若最終的文檔關(guān)鍵詞不具有完整語義,則即使在詞圖迭代計算過程中的得分很高,也是毫無意義的,因此對最終得分TOP-N的關(guān)鍵詞做進一步處理,使其更具有可讀性。
本文提出一種前后向匹配的方法應(yīng)用于獲取的文檔關(guān)鍵詞中,使其更具有可讀性。對每個選取的文檔關(guān)鍵詞,具體的處理過程如下所示:
(1)在原文檔中找到包含關(guān)鍵詞的句子集合T;
(2)依次對T中包含的每個句子進行分詞和詞性標(biāo)注,然后去除不包含實意的特定詞性的詞語,包括代詞、介詞、連詞、助詞、感嘆詞和標(biāo)點符號,得到剩下的詞語集合S,S是T中單個句子經(jīng)過處理后的詞語集合;
(3)在句子集合T中找到關(guān)鍵詞在集合S中所在的位置,然后進行前后向匹配;
(4)若某個詞語匹配的句子數(shù)量與集合T中所有的句子數(shù)量的比值大于α(α∈0.5~1) 時,則將這個詞語按照原有的順序附加到原關(guān)鍵詞上,組成一個新的關(guān)鍵詞。需要注意的是,當(dāng)某個詞語匹配率低于值α, 則該方向的匹配結(jié)束,只進行另一方向的匹配。
(5)對所有新的關(guān)鍵詞進行去重處理,得到文檔最終的關(guān)鍵詞。
本文提出的關(guān)鍵詞抽取方法總體流程如圖4所示。
圖4 關(guān)鍵詞抽取流程
實驗數(shù)據(jù)采用在多個網(wǎng)絡(luò)新聞平臺上抓取IT、經(jīng)濟和日常社會性新聞共400篇,其中IT和經(jīng)濟各100篇,日常社會性新聞200篇。爬取的文檔格式為XML,所以需要先進行清洗,去除標(biāo)簽只保留標(biāo)題、關(guān)鍵詞和正文內(nèi)容。由于實驗結(jié)果嚴(yán)重依賴于新聞中標(biāo)注的關(guān)鍵詞,但是經(jīng)過觀察發(fā)現(xiàn)原有的關(guān)鍵詞并不是太準(zhǔn)確,因此本文采用多人人工交叉的方式進行手動標(biāo)注,為此召集數(shù)十名校內(nèi)相關(guān)專業(yè)的師生完成。每篇文檔提取的關(guān)鍵詞在4~6個,在實驗中按照文檔已有的關(guān)鍵詞個數(shù)動態(tài)改變算法的關(guān)鍵詞提取數(shù)量。
關(guān)鍵詞抽取效果的評判標(biāo)準(zhǔn)采用準(zhǔn)確率P、召回率R和F1值,其計算公式為
(7)
(8)
(9)
在前后向匹配算法中,α的值對最終獲取的文檔關(guān)鍵詞有較大的影響。若該值太低,則可能將一個本不需要補充語義完整性的關(guān)鍵詞進行了補充;若該值太高,則又可能將一個需要補充語義完整性的關(guān)鍵詞忽略了,因此,α的取值對前后向匹配算法至關(guān)重要。經(jīng)過大量的數(shù)據(jù)實驗,得出了以下結(jié)果:根據(jù)表1,當(dāng)α取值為0.8時,召回率最大,效果最好。
表1 α取值對召回率的影響
對同一篇文檔進行是否應(yīng)用前后向匹配算法的關(guān)鍵詞可讀性效果對比,以展示本文所提出的改進關(guān)鍵詞可讀性算法的效果。實驗使用了一篇主題為“新時代中國共產(chǎn)黨的歷史使命”的文檔,字?jǐn)?shù)1528,以及一篇主題為“中國高速發(fā)展”,字?jǐn)?shù)1906,各抽取5個文檔關(guān)鍵詞,其對比結(jié)果見表2。
表2 關(guān)鍵詞可讀性對比
為了說明本文所提出方法的有效性,選取了4個已有的無監(jiān)督基于圖的關(guān)鍵詞提取方法進行對比,實驗結(jié)果見表3。
表3 實驗結(jié)果對比
TFIDF-TextRank是結(jié)合了TF-IDF和TextRank兩個傳統(tǒng)方法,將TFIDF融入TextRank中改進詞圖中邊的權(quán)重轉(zhuǎn)移;EPRank是融合了詞位置和詞向量Word2vec,對TextRank算法進行加權(quán),改進詞圖迭代過程中的詞打分公式。這兩個方法在準(zhǔn)確率、召回率和F1值上具有一定的提升,但總體來說優(yōu)化的效果并不明顯。根據(jù)實驗數(shù)據(jù)對比,本文提出的方法明顯優(yōu)于其它4個關(guān)鍵詞提取方法,這驗證使用語義依存分析代替共現(xiàn)窗口以及借助外部知識庫特征進行加權(quán)的方式是有效的。
實驗發(fā)現(xiàn),文中的方法在100篇IT新聞和100篇經(jīng)濟新聞中關(guān)鍵詞抽取的效果好于在日常社會性新聞中抽取的效果,考慮到外部領(lǐng)域詞典的影響,在專業(yè)性更強的文檔下外部領(lǐng)域詞典能發(fā)揮的作用更大,因此這種情況是合理的。另外,此方法在構(gòu)建詞圖的過程中沒有消除停用詞或特定詞性的詞語,而是在語義依存分析結(jié)束后去除語義依附標(biāo)記類關(guān)系的詞匯,這種做法更符合PageRank的思想,避免得到的關(guān)鍵詞結(jié)果受文檔信息不完整的影響。
本文使用語義依存關(guān)系代替共現(xiàn)窗口構(gòu)建詞圖,使用基于維基百科的規(guī)范化谷歌距離以及引入外部領(lǐng)域詞典來給候選關(guān)鍵詞打分,并提出了前后向匹配算法來提高關(guān)鍵詞的可讀性。實驗結(jié)果表明,文中所使用的方法顯著提升了關(guān)鍵詞抽取的效果,相較于TextRank方法,在準(zhǔn)確率、召回率和F1值上分別提升了18.6%、19.7%和17.1%,并且實驗過程無需受到各種參數(shù)的制約,實現(xiàn)簡單。此外,根據(jù)表3的對比可知,對抽取的文檔關(guān)鍵詞應(yīng)用于前后向匹配算法能較好提升關(guān)鍵詞的可讀性,使其表達的語義信息更完整。接下來的工作是融合其它語義和統(tǒng)計特征來繼續(xù)改進詞圖中節(jié)點的打分公式,同時進一步改善關(guān)鍵詞可讀性問題。