徐遠威 李勁華
(青島大學數據科學與軟件工程學院 山東 青島 266071)
近年來互聯(lián)網的快速發(fā)展,使得新聞文章、互動信息和學術論文等文本數據不斷增加,而關鍵短語有利于幫助我們快速理解文本并獲取文本關鍵信息[1]。關鍵短語是對文本的內容進行提煉和概括,相比于關鍵詞具有更豐富的語義信息。例如,“中國”“食品”“產業(yè)”和“分析師”四個詞各自所表達的含義與“中國食品”“產業(yè)分析師”作為一個整體所表達的含義有明顯的差異。中文關鍵短語提取是國內文本挖掘[2]中一項基礎而又重要的工作,因此需要一種高效提取高質量中文關鍵短語的技術。
關于關鍵短語提取的研究主要有監(jiān)督學習和無監(jiān)督學習這兩種機器學習方法。其中,監(jiān)督學習將關鍵短語提取看作是一項二值分類任務[3],把一些特征例如短語長度、位置和頻率等作為分類模型的輸入。監(jiān)督學習需要人工標注短語,對于海量數據而言,是一項耗時費力的工作,所以本文著重研究監(jiān)督學習[4]的方法。
現有的無監(jiān)督學習方法一般分為基于統(tǒng)計的方法和基于圖排序的方法?;诮y(tǒng)計的方法一般使用外部文本語料庫來輔助提取關鍵短語,如TF-IDF、TPR算法。TF-IDF是Salton等[5]提出的一種結合逆文檔頻率和詞頻來表現詞在文本中的關鍵程度算法,此算法缺點在于粗粒度地通過頻率來統(tǒng)計分析,沒有考慮到文本語義關系,而且需要大量的外部文本語料來實現。TPR算法[6]是一種主題PageRank算法,使用Wikipedia文章來訓練LDA模型,在給定文檔主題分布的情況下統(tǒng)計排名得分來提取關鍵短語,依賴于外部語料庫?,F有研究者提出多種基于改進TF-IDF的算法,牛萍[7]提出一種TF-IDF與規(guī)則相結合的方法,運用一種結合連續(xù)單字詞和多詞表達式識別的方法來進行候選詞識別,選取TF-IDF為主要特征來進行關鍵短語提取。公冶小燕等[8]提出基于改進TF-IDF和共現的主題詞抽取算法,對文檔的語義相似矩陣進行聚類來提高準確率。
基于圖排序的方法中,TextRank算法[9]通過詞的相鄰關系生成詞的共現圖,使用圖的中心性算法獲得每個節(jié)點的排名得分,降序排序得分選擇前K個作為關鍵詞,缺點在于太依賴于共現關系,沒有充分考慮到語義關系。之后多位學者對TextRank進行改進,如ExpandRank[10]、CiteTextRank[11]和WeightedTextRank[12]算法等。近年來,Zuo等[13]利用單詞嵌入技術提出一種將Word2Vec與TextRank相結合的算法,通過利用文本之間的語義相似性來提高關鍵短語提取性能。Yan等[14]充分利用詞與句子之間的潛在關系,融合了它們之間的語義關系,并用話題模型提出一種基于圖排序的關鍵短語提取算法,較好地挖掘出文本中的語義關系。
綜上所述,基于統(tǒng)計的方法將一個詞映射到外部文本語料庫中具有相同表面形式的詞,由于中文詞歧義性較強,相同的詞在不同語境中表達的含義可能不同,輸入文本中詞的真正含義可能因大量擴展語料庫被淹沒。基于圖排序的方法需要構建共現圖,依賴于兩個詞之間的共現關系,若兩個詞未出現在預設定的窗口范圍內,即使語義相關也不會將它們連在構建的共現圖邊上,從而出現信息遺漏、涵蓋信息量少等問題。針對以上缺陷,本文提出一種基于知識圖譜的中文關鍵短語提取算法,主要貢獻包括以下三點:
(1) 將詞向量化后進行AP聚類加強文本中的主題覆蓋率。
(2) 運用知識圖譜的語義網絡結構挖掘詞之間的潛在關系,減少外部語料庫的噪聲引入。
(3) 結合量化潛在關系的邊權值和詞頻改進PageRank。
圖1為本文算法框架,分為以下五個步驟。
圖1 APKGRank算法框架
(1) 預處理輸入文本獲得分詞結果,將分詞結果映射到由訓練語料庫得到的詞向量中獲得每個詞的詞向量。
(2) 將基于語義的AP聚類算法應用到文本中得到詞集群。
(3) 運用知識圖譜將集群中的詞連接到知識圖譜中的實體,通過語義網絡結構挖掘文本中詞之間的潛在關系,賦予邊權值量化潛在關系構建關系詞圖。
(4) 對將所有集群提取的關系詞圖組合成一個完整的文本關系詞圖執(zhí)行改進PageRank獲得每個詞的排名得分。
(5) 對輸入文本運用短語生成規(guī)則生成候選短語,將短語特征與候選短語得分相結合計算得到最終短語得分,根據降序排序選擇前K個候選短語作為關鍵短語。本文將該算法簡稱為APKGRank。
一般來說,一個文本中包含多個主題,一個主題可以用文本中所包含的詞來表示,而且同一主題中的詞是密切相關的[15]。本文通過基于語義的方法對文本中詞進行AP聚類,將文本分成若干個詞集群,其中每個集群中的詞傳遞一個主題,從而加強文本的主題覆蓋率。
對于輸入文本,首先進行分詞操作得到候選詞集,并對候選詞完成詞性標注,去除其中停用詞,過濾處理之后得到整個文本的分詞結果。
Word2vec是2013年Google的Mikolov等[16]發(fā)布的一種詞向量計算工具,分為Skip-gram和CBOW兩個模型。一般來說,雖然Skip-gram模型訓練速度不如CBOW模型,但是Skip-gram模型對于不常見詞的訓練效果更加良好。本文選用Skip-gram模型進行詞向量訓練。
Skip-gram模型是一個三層淺型神經網絡,如圖2所示。三層分別為輸入層、投影層和輸出層,輸入層為根據One-hot編碼得到的輸入詞向量,投影層用來放置一個學習權重矩陣,在輸出層使用結合哈夫曼樹的層次Softmax算法和負采樣算法來優(yōu)化計算輸入詞與輸出詞之間的概率分布。其主要思想為根據目標詞來預測上下文詞,最后根據迭代次數來確定每個詞的詞向量。
圖2 Skip-gram模型
為了傳遞語義,使用中文維基百科語料庫作為輔助文本構建Skip-gram模型。對中文維基百科語料庫進行詞向量訓練后,將預處理的分詞映射到訓練結果中得到每個詞的詞向量。缺失值用隨機初始化相同維度的詞向量表示。
AP聚類算法是由Frey等[17]提出根據數據對象之間進行“信息傳遞”的一種聚類算法。與普通的K-Means聚類和譜聚類不同,其優(yōu)勢在于當文本長短的不一致時,不用人為設定簇的個數從而減少人為引入主題個數帶來的誤差,并且具有明確的質心,其性能和效率相比其他聚類算法都有較大的提高。
AP聚類定義一個相似矩陣來更新迭代歸屬度矩陣(availability)和吸引度矩陣(responsibility)。前者記為A,A(i,k)表示對象i以對象k作為聚類中心的適合程度,后者記為R,R(i,k)表示對象k相對于其他候選示例適合作為對象i的聚類中心程度。以對象i當作聚類中心的參考度表示為p(i)。我們使用詞向量之間的歐氏距離來計算對象i和對象j之間的相似度,記為s(i,j),參考度設為所有相似度值的中位數。當聚類中心穩(wěn)定或完成預設的迭代次數時,吸引度矩陣和歸屬度矩陣更新迭代結束。R和A更新公式如式(1)、式(2)所示。
(1)
(2)
考慮到聚類過程中出現振蕩的情況,引進阻尼系數λ來控制算法收斂。吸引度矩陣和歸屬度矩陣設定為本次更新值的(1-λ)倍加上前次迭代更新值的λ倍,通常λ設為0.5。具體公式如式(3)和式(4)所示。
rt+1(i,k)=(1-λ)×rt+1(i,k)+λ×rt(i,k)
(3)
at+1(i,k)=(1-λ)×at+1(i,k)+λ×at(i,k)
(4)
當聚類中心穩(wěn)定或完成預設的迭代次數時,我們把A(i,i)+R(i,i)>0的點當作聚類的中心,將其余點分派給相距最短的聚類中心,以此完成詞向量聚類。
本節(jié)運用知識圖譜進一步來輔助提取關鍵短語。由于針對中文關鍵短語,選擇使用CN-DBpedia知識圖譜[18],表示為KG,通過將每個集群中的詞連接到知識圖譜中的實體并通過語義關系構建文本關系詞圖,使用改進PageRank獲得詞排名得分,最后結合短語生成規(guī)則、詞得分和短語特征提取關鍵短語。
給定一個知識圖譜KG,記為G,將詞連接到G,使每個詞對應到G中的映射實體??紤]到中文詞歧義性較強,一個表層形式的詞通常有多個映射實體,例如,“司機”可以指職業(yè)、電影或者歌曲?,F有的多數研究都集中在語義消歧上[19],大多數的方法需要G中的每個實體都有一個描述該實體的頁面p,然后計算p與輸入文檔d之間的語義關系[20],例如,計算它們之間的余弦相似度,選擇相似度最大的頁面對應的實體作為映射實體。本文方法為歧義詞構建了一個映射字典,每個可能的映射都有一個先驗概率。為了計算先驗概率,使用百度百科來進行輔助,對于百度百科中歧義詞的每個鏈接,可以得到一對描述詞的內容文本和實體,通過計算每個候選實體ce與詞t的共現數與t的詞頻的比例來獲得每個候選實體的先驗概率。計算公式如式(5)所示,其中T(t,cei)表示詞與候選實體的共現次數,T(t)表示詞頻。
(5)
給定一個詞t,如果知識圖譜中有描述節(jié)點信息且沒有出現歧義詞情況,則直接連接節(jié)點。如果出現歧義詞情況,我們利用構建字典并通過結合實體內容文本和輸入文檔之間的余弦相似度和先驗概率來尋找它的正確映射,從而減少外部語料庫的噪聲引入。
詞連接后得到詞的映射實體(稱為錨節(jié)點),構建一個S-ties關系詞圖來獲得每個集群中詞之間的語義關系。首先定義一個知識圖譜G=(V,E),其中:V表示實體對應節(jié)點的集合;E表示實體之間邊的集合;任意一條邊對應一個三元組Ek=(vi,vj,lable),其中:vi和vj分別表示始節(jié)點和終節(jié)點;lable表示始節(jié)點與終節(jié)點的關系標簽;An表示錨節(jié)點的集合,即An={v1,v2,…,vk}。
算法1為S-ties詞圖的構建過程。結合知識圖譜G,根據錨節(jié)點An對應到G中得到子圖,EV是An對應子圖中的擴展節(jié)點集,我們使用廣度優(yōu)先搜索來遍歷錨節(jié)點vi和其擴展節(jié)點EVi之間不超過h的路徑。為了添加具有語義關系的路徑并挖掘出錨節(jié)點vi與其他節(jié)點的擴展節(jié)點EVj的潛在關系,使用Word2vec計算兩節(jié)點之間的余弦相似度作為vi與EVj之間的語義相似度,記為μ(vi,EVj)。考慮到若擴展節(jié)點對應的是一個由多個詞組成的命名實體,根據其包含詞向量計算平均值來進行此節(jié)點的詞向量表示。我們通過設定一個語義相似度閾值τ來添加具有潛在語義關系的邊,其中邊的權值表現了兩個錨節(jié)點之間的語義關系程度。
算法1S-ties詞圖構建算法
輸入:G=(V,E),最長路徑h,錨點集An,語義相似度閾值τ。
輸出:S-ties詞圖。
vi,vj∈An,EVk∈EV
forviinAndo
forEVjinEVandi≠jdo
computeμ(vi,EVj);
ifμ(vi,EVj)>=τdo
ifvi指向vj之間不存在邊do
add Path
else do
邊的權值weight加1;
return 包含Path
為了合并每個詞集群構建的關系詞圖,考慮到將輸入文本內容的語義關系添加到關系詞圖中,對文本的詞序列進行遍歷,如果兩個錨節(jié)點vi和vj對應的詞ti和tj前后出現在設定的同一窗口λ內,若不存在vi到vj的邊,則增添一條權值為1的此方向邊。若存在vi到vj的邊,則邊的權值加1,從而得到了一個完整的帶權有向文本關系詞圖。一個關系詞圖示例如圖3所示。
圖3 關系詞圖示例
構建文本關系詞圖之后,我們使用圖的中心性算法估量圖中節(jié)點的重要性來獲取詞的排名得分?,F有的詞圖排序方法采用了度中心性、間接中心性、緊密中心性、特征向量中心性和PageRank等多種圖的中心性算法[21]。由于關系詞圖是一個帶權有向圖,邊反映了詞之間的語義關系程度,并且已有的方法表明[22],詞頻是表現詞關鍵性的一個重要特征,因此需要一種通過結合關系詞圖的語義關系結構和詞頻來對詞進行排序的圖算法??紤]到PageRank使用圖結構對節(jié)點進行排序,但是PageRank的轉移概率是標準化的,它不能反映節(jié)點特征的差異。相比基于PageRank改進的個性化PageRank算法為每個節(jié)點分配了一個有偏差的轉移概率?;诰C合考慮,結合邊權值和詞頻改進PageRank迭代公式如式(6)所示。
(6)
式中:PR(vj)是vj的rank得分;p(vj)表示vj的隨機轉移概率;in(j)為朝向vj的全部節(jié)點;p(Wij)表示vi到vj的跳轉概率;d是阻尼因子,通常設為0.85。隨機轉移概率p(vj)和跳轉概率p(Wij)計算公式如式(7)和式(8)所示。最后對文本的關系詞圖執(zhí)行改進PageRank,得到每個錨節(jié)點對應詞的排名得分。
(7)
(8)
式中:N是節(jié)點數;tf(vj)是vj的詞頻;weight(vi→vj)表示vi指向vj邊的權值。
考慮到中文關鍵短語大多為名詞性短語,形容詞和副詞只是起到修飾作用,本文制定候選短語生成的語句規(guī)則:
(1) 由連續(xù)一個或者多個名詞組成。
(2) 由連續(xù)一個動詞加一個或者多個名詞組成。
(3) 由連續(xù)一個名詞加一個動詞組成。
例如,給定一句“達州市公安交警支隊對該路段臨時實施管制”,結合詞性標注使用規(guī)則將生成候選短語“達州市公安交警支隊”“路段”和“實施管制”。若出現“達州市公安交警支隊”由三個以上詞組成的候選短語、表達語義粒度過大的情況,我們結合詞之間的凝聚度和自由度來優(yōu)化生成雙詞候選短語[23-24],凝聚度表示兩個詞構成短語的內部緊密性,自由度用來估量詞與左右相鄰詞的自由搭配能力。最后根據規(guī)則生成的候選短語得為其包含詞得分之和,公式如式(9)所示。
(9)
本文進一步考慮短語首現位置和頻率兩個短語特征來提高關鍵短語提取的準確率,在文本中短語首次出現位置越靠前并且出現頻率越高表明該短語的重要程度越高,首現位置和頻率分別用p(pi)和tf(pi)表示,最終候選短語排名得分計算式表示為:
(10)
計算全部候選短語得分后,根據降序排序選擇前K個候選短語作為輸入文本的關鍵短語。
為了驗證本文算法性能,實驗采用爬蟲在國內新浪、搜狐和騰訊新聞網站上爬取了共1 046篇新聞文本,篩選出內容字數大于500的文本801篇,共計1 233 313字數,平均每篇約1 540字數,每篇文本的關鍵短語由人工手動標注。中文維基百科語料庫選用最近2020年8月發(fā)布的語料數據“zhwiki-latest-pages-articles.xml.bz2”,處理之后得到371 263篇文章。通過Neo4j圖數據庫構建知識圖譜CN-DBpedia,其中包含16 341 239個節(jié)點,54 173 197個關系。實驗在配置為8 GB內存、i5-8300H處理器、Windows 10系統(tǒng)的筆記本進行,開發(fā)環(huán)境為PyCharm平臺、Neo4j數據庫。
在實驗中,本文采用準確率P、召回率R和F1值來評估關鍵短語提取的性能,其中:P指算法提取的正確關鍵短語個數占提取的所有關鍵短語個數的比例;R指算法提取的正確關鍵短語個數占人工標注關鍵短語個數的比例。由于P和R指標有時會出現相互矛盾的情況,使用對P和R的一個綜合考慮的評價指標F1值來對算法性能進行評判,下面是三個評判標準的定義:
式中:Ccorrect是算法提取的正確關鍵短語個數;Ctotal是算法提取的所有關鍵短語個數;Cmark是人工標注關鍵短語個數。根據P、R和F1這三個評判指標可以對實驗結果得出相對客觀的評價。
APKGRank存在兩個參數可能影響著算法性能,分別為知識圖譜中的語義相似度閾值τ和合并關系詞圖中的遍歷窗口大小λ。因考慮到文本長短不一致導致平均標注關鍵短語個數不同,在討論語義相似度閾值τ和遍歷窗口大小λ時,將標記關鍵短語個數固定為所有文本的平均標注個數,提取關鍵短語個數K為10。
4.2.1 語義相似度閾值
在運用知識圖譜CN-DBpedia中,考慮到CN-DBpedia中節(jié)點的頂點度較大,在實驗中確定錨節(jié)點和其擴展節(jié)點最長路徑的長度為2,設定遍歷窗口大小λ為5,提取關鍵短語個數K為10。圖4顯示了τ對關鍵短語提取的影響,可以看出,賦予一個合適的語義相似度閾值可以提高算法性能,當τ=0.4左右時,F1值到達峰值,但是隨著τ繼續(xù)增大,由于較大的語義相似度閾值過濾了過多可能相關的語義關系從而降低了性能。從τ=0.6開始,由于基本過濾掉了全部的語義關系,算法性能不再變化。因此確定語義相似度閾值τ為0.4。
圖4 F1值隨語義相似度閾值τ的變化情況
4.2.2 窗口大小
為了分析合并關系詞圖的遍歷窗口大小λ對關鍵短語提取性能的影響,本文設定提取關鍵短語個數K為10,語義相似度閾值τ為0.4??紤]到如果設置的窗口大小過大,則添加的邊權值也會很大,從而影響到由挖掘語義關系得到的邊權值,所以在實驗中分析窗口大小λ=3,4,5,6,7時的算法性能。實驗結果如圖5所示,隨著窗口逐漸增大,算法性能小幅提高,當λ等于5時,算法性能最佳。這表明適當地增加窗口大小可以把更多相關的詞包括在內加強了語義關系,我們確定遍歷窗口大小為5。
圖5 P、R和F1值隨窗口大小λ的變化情況
本實驗選用了三種經典的中文關鍵短語算法TF-IDF、TextRank和LDA來對比本文算法的有效性。圖6為知識圖譜KG的局部示例,例如考慮文本中未出現在預設定窗口內的“肺炎”和“鐘南山”兩個詞,在共現圖中不會引導任何邊來連接它們,表明兩者之間沒有高度相關性,而根據知識圖譜的語義網絡結構計算“肺炎”與“鐘南山”擴展節(jié)點之間的語義相似度得到邊權值可以表現出兩者有密切相關性,并且運用詞連接方法得到詞的正確映射,避免了擴展語料庫中的大量噪聲數據引入。從表1提取結果中可以看出,APKGRank算法提取到“新冠肺炎”和“鐘南山”這兩個關鍵短語正是需要的關鍵短語。表1顯示了四種算法在提取關鍵短語個數K=5時的具體結果。
表1 不同方法提取的關鍵短語
圖6 知識圖譜KG的局部示例
圖7、圖8和圖9分別顯示了四種算法在準確性、召回率和F1值方面的性能情況,其中提取關鍵短語個數K=5,10,15,20??梢钥闯?隨著提取關鍵短語個數增加,提取到正確的關鍵短語個數相比提取關鍵短語個數的增長較慢導致各算法的準確率逐漸下降,但召回率開始逐漸上升,原因是確定了標記關鍵短語個數,隨著提取關鍵短語個數增加獲取到正確的關鍵短語個數也逐漸增加。F1值是來綜合評判算法性能的指標,可以看出本文方法相比其他三種算法F1值有了明顯的提升。當提取關鍵短語個數為10時,算法性能最佳。這表明了相比于TextRank、TF-IDF和LDA,結合基于語義的AP聚類和知識圖譜中的語義網絡結構可以更深層次地挖掘出詞之間的潛在語義關系,減少了外部語料庫的噪聲引入,從而提高了關鍵短語提取的性能。
圖7 不同算法在P上的性能
圖8 不同算法在R上的性能
圖9 不同算法在F1值上的性能
本文提出一種基于知識圖譜的中文關鍵短語提取算法,將基于語義的AP聚類與知識圖譜相結合的方法來發(fā)現隱藏在輸入文本中詞之間的語義關系?;谡Z義的AP聚類方法加強了文本中的主題覆蓋率,知識圖譜的語義網絡結構挖掘出詞之間的潛在關系,并減少了外部語料庫的噪聲引入。最后使用改進PageRank獲得每個詞的排名得分,將兩個短語特征與候選關鍵短語得分相結合得到最終短語得分。通過與經典的中文關鍵短語提取算法相比,本文算法在精確率、召回率和F1值上有了顯著提升,表明本文算法在提取中文關鍵短語上性能更加良好。
我們下一步工作設想中,將加入更多的約束規(guī)則來優(yōu)化生成候選關鍵短語,并結合深度學習模型提高關鍵短語提取效率。