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

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

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

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

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

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

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

表1 α取值對(duì)召回率的影響
對(duì)同一篇文檔進(jìn)行是否應(yīng)用前后向匹配算法的關(guān)鍵詞可讀性效果對(duì)比,以展示本文所提出的改進(jìn)關(guān)鍵詞可讀性算法的效果。實(shí)驗(yàn)使用了一篇主題為“新時(shí)代中國(guó)共產(chǎn)黨的歷史使命”的文檔,字?jǐn)?shù)1528,以及一篇主題為“中國(guó)高速發(fā)展”,字?jǐn)?shù)1906,各抽取5個(gè)文檔關(guān)鍵詞,其對(duì)比結(jié)果見表2。

表2 關(guān)鍵詞可讀性對(duì)比
為了說明本文所提出方法的有效性,選取了4個(gè)已有的無監(jiān)督基于圖的關(guān)鍵詞提取方法進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果見表3。

表3 實(shí)驗(yàn)結(jié)果對(duì)比
TFIDF-TextRank是結(jié)合了TF-IDF和TextRank兩個(gè)傳統(tǒng)方法,將TFIDF融入TextRank中改進(jìn)詞圖中邊的權(quán)重轉(zhuǎn)移;EPRank是融合了詞位置和詞向量Word2vec,對(duì)TextRank算法進(jìn)行加權(quán),改進(jìn)詞圖迭代過程中的詞打分公式。這兩個(gè)方法在準(zhǔn)確率、召回率和F1值上具有一定的提升,但總體來說優(yōu)化的效果并不明顯。根據(jù)實(shí)驗(yàn)數(shù)據(jù)對(duì)比,本文提出的方法明顯優(yōu)于其它4個(gè)關(guān)鍵詞提取方法,這驗(yàn)證使用語義依存分析代替共現(xiàn)窗口以及借助外部知識(shí)庫特征進(jìn)行加權(quán)的方式是有效的。
實(shí)驗(yàn)發(fā)現(xiàn),文中的方法在100篇IT新聞和100篇經(jīng)濟(jì)新聞中關(guān)鍵詞抽取的效果好于在日常社會(huì)性新聞中抽取的效果,考慮到外部領(lǐng)域詞典的影響,在專業(yè)性更強(qiáng)的文檔下外部領(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)鍵詞的可讀性。實(shí)驗(yàn)結(jié)果表明,文中所使用的方法顯著提升了關(guān)鍵詞抽取的效果,相較于TextRank方法,在準(zhǔn)確率、召回率和F1值上分別提升了18.6%、19.7%和17.1%,并且實(shí)驗(yàn)過程無需受到各種參數(shù)的制約,實(shí)現(xiàn)簡(jiǎn)單。此外,根據(jù)表3的對(duì)比可知,對(duì)抽取的文檔關(guān)鍵詞應(yīng)用于前后向匹配算法能較好提升關(guān)鍵詞的可讀性,使其表達(dá)的語義信息更完整。接下來的工作是融合其它語義和統(tǒng)計(jì)特征來繼續(xù)改進(jìn)詞圖中節(jié)點(diǎn)的打分公式,同時(shí)進(jìn)一步改善關(guān)鍵詞可讀性問題。