王成柱 魏銀珍
(武漢郵電科學研究院 武漢 430074)
隨著互聯(lián)網(wǎng)的成熟與移動互聯(lián)網(wǎng)的普及,人類進入了一個數(shù)據(jù)爆炸的時代,無處不在的文本信息塞滿了我們的生活,我們需要對這些信息進行選擇與過濾,而人工篩選的成本過大,因此,如何有效并且準確地自動抽取文本中的關鍵信息便成了自然語言處理領域急需解決的基礎問題和研究熱點,對文本分類[1],情感分析[2],文檔檢索[3],問答系統(tǒng)[4]等細分領域的研究有著重大意義,而關鍵詞自動抽取便是其中的核心問題。
關鍵詞自動抽取被定義為自動識別一組最能描述文本主題的詞語的任務,這組詞語可以很好地代表文本的中心意思,當我們知道文本的中心意思后,無論是對文本進行分類,情感分析,或者意圖識別,都可以很快地做出判斷。而在語義相似度計算中,關鍵詞自動抽取是影響相似度計算結果的重大因素,利用關鍵詞我們可以生成多種基于關鍵詞的相關特征,更好地判斷文本的相似程度。
GBDT(Gradient Boosting Decision Tree)是一種基于梯度提升的集成學習算法,其主要思想是通過弱模型的迭代加權累加形成一個強模型。XGBOOST(eXtreme Gradient Boosting)是陳天奇對GBDT的一種高效實現(xiàn),在學術界和工業(yè)界有著廣泛實現(xiàn)。本文XGBOOST算法引入關鍵詞自動抽取領域,并與傳統(tǒng)機器學習算法進行比較。
本文提出的關鍵詞自動抽取算法是針對語義相似度領域,即在比較兩個文本是否相似時,對兩個文本抽取關鍵詞,由于該場景的特殊性,存在相似與不相似兩種不同分布,因此本文在單一文本的關鍵詞自動抽取技術的基礎上,提出了一種基于KL散度的關鍵詞特征,并且引入XGBOOST算法,融合KL散度,TF-IDF等多種特征提出了一種基于機器學習的關鍵詞自動抽取方法。
關鍵詞自動抽取方法可以分為兩大類,無監(jiān)督方法和有監(jiān)督方法。
無監(jiān)督方法利用候選詞的統(tǒng)計特征的得分進行排序,選取最高的若干個作為關鍵詞。無監(jiān)督方法包括基于統(tǒng)計模型的算法、基于語義的算法和基于圖模型的算法?;诮y(tǒng)計模型的關鍵詞抽取算法中常見的有基于詞頻和TF-IDF的算法,該類方法簡單易實現(xiàn),通用性與實用性較好,但準確率較低,通常作為關鍵詞抽取算法的基礎。基于語義的算法使用詞,句子和文本的語義特征進行關鍵詞抽取,該類方法考慮了語法的含義,但是依賴于背景知識庫,詞典等,難以推廣與遷移。基于圖模型的算法是近年來研究者研究無監(jiān)督方法的主流方向,圖是一種數(shù)學模型,它能非常有效地探究關系和結構信息,受到PageRank在信息檢索領域巨大成功后的啟發(fā),2004年Mihalcea和Tarau提出一種基于圖的排序算法TextRank,該方法的基本思想是將文本看成詞的網(wǎng)絡,該網(wǎng)絡中鏈接表示詞與詞之間的共現(xiàn)關系,一個詞的重要性由鏈向它的詞的重要性與數(shù)量決定。由于需要構造圖結構,因此該方法不適合短文本或句子。
有監(jiān)督方法是利用標注訓練集,抽取候選詞的各類特征,將問題轉換為一個機器學習問題,通過模型對每個候選詞進行判定。自1999年Frank提出采用樸素貝葉斯分類器,利用TF-IDF和相對位置兩個特征抽取關鍵詞以來,研究者不斷嘗試各種經(jīng)典分類器,并且細化已有特征和提出新的特征,諸如決策樹,支持向量機,條件隨機場,隨機森林等分類器,詞頻,長度,位置,詞嵌入向量等特征以及不同場景下的加權處理都被研究者不斷地研究與運用,進而提出更有效的關鍵詞自動抽取方法。
本文針對語義相似度領域,研究了KL散度用于關鍵詞自動抽取的可實現(xiàn)性,并且融合KL散度,TF-IDF等多種特征,基于XGBOOST算法構建了一個機器學習模型,結果表明,該方法比現(xiàn)有的無監(jiān)督方法和基于傳統(tǒng)機器學習的有監(jiān)督方法效果更好。
本文在語義相似度領域利用KL散度構造了一個關鍵詞評分指標,并且設計了一種基于XGBOOST算法,融合KL散度,TF-IDF等多種特征的關鍵詞自動抽取方法。
3.1.1 KL散度
在數(shù)理統(tǒng)計中,KL散度也被稱為相對熵,是一種度量一個概率分布與另一種概率分布偏離的方法,對于離散概率分布P和Q,從Q到P的KL散度定義為
對于連續(xù)隨機變量的分布P和Q,其KL散度定義為
本文將兩個文本相似與否當成兩種不同的概率分布,相似標記為1,不相似標記為0,對于這兩種概率分布可以應用KL散度得到偏離程度。
由數(shù)據(jù)統(tǒng)計的結果,我們可以得到每個特征在不同分布中的概率,利用這兩個離散概率分布,根據(jù)KL散度計算出的結果即為每個特征的重要性得分,如果 pk=qk,即該詞語在相似對文本對與不相似文本對中出現(xiàn)的概率相等,其KL散度則為0,該特征的影響可以忽略不計,這種方法可以有效地增加在標記ti=1的文本對中共同出現(xiàn)的詞語,及在標記ti=0的文本對中單獨出現(xiàn)的詞語的重要性得分。
3.1.2 TF-IDF
詞頻(Term frequency,TF)是指詞語在給定文本中出現(xiàn)的頻率:
其中ni,j表示第i個詞語在第j個文本中出現(xiàn)的次數(shù),表示第j個文本中的總詞數(shù),
通常情況下認為詞頻高,該詞為文本中的關鍵詞的可能性越大。在某些長文本或者文檔中,有TF變化得到多種相關特征,如標題TF,摘要TF等被提出,但實際情況經(jīng)常存在某些常用詞的使用頻率特別高,其本身卻并不是關鍵詞,因此在整體語料的基礎上引入了逆文檔頻率(Inverse document frequency,IDF)來衡量包含一個詞語的普遍重要性:
其中D表示總文本數(shù),ti表示第i個詞,dj表示包含ti的文本,j表示包含ti的文本數(shù)。在某些時候可能存在特殊情況,若文檔集中不存在某個生僻的詞語,這會導致公式中的分母為0,此時的IDF值便沒有意義了,因此在實際操作中,本文中做了平滑處理:
根據(jù)某一特定文本的高頻詞語,以及該詞語在整個文件集合中的逆文檔頻率,我們可以綜合起來得到tfidf:
TF-IDF是一種無監(jiān)督學習的關鍵詞抽取方法,綜合了詞頻與逆頻率的優(yōu)勢,當TF-IDF值越大時,即該詞語在當前文本中出現(xiàn)頻率高,而在其他文本中較少出現(xiàn),則說明該詞的重要性程度越大。經(jīng)過幾十年的研究與發(fā)展,關鍵詞自動抽取出現(xiàn)了各種各樣的方法,但是由于TF-IDF的有效性和簡單性,它仍然在當今關鍵詞自動抽取的學術界與工業(yè)界占據(jù)了重要的地位。
3.1.3 詞長
詞長特征是指詞語本身的長度,通常關鍵詞的長度一般為2和3,因此關鍵詞的長度具有很好區(qū)分性。
3.1.4 詞性
詞性是淺層的語言特征,不需要對文本進行復雜的分析,根據(jù)關鍵詞的詞性分布規(guī)律,本文將詞性設計為多維布爾型特征,選取的關鍵詞詞性標注為NN,VV,JJ,AD,,DT,VA,VE,DT,如果一個詞的詞性標注為NN,那NN對應的特征記為1,其他的詞性特征則記為0。通過對詞性特征進行選擇性組合,既可以避免詞性特征維度過高與稀疏,同時也有很好的區(qū)分性。
詞性特征能夠有效克服基于傳統(tǒng)統(tǒng)計方法無法解決高頻但無非重要性的詞語,從而提高關鍵詞自動抽取的性能。
Boosting算法屬于集成學習,其主要思想是通過迭代生成多個弱模型,然后將每個弱模型的預測結果相加得到一個強模型。
在XGBoost中,我們對損失函數(shù)進行泰勒展開:
由損失函數(shù)的公式可知,γ與λ越大,表示希望獲得結構相對簡單的樹,確定樹的葉子結點之后,進行樹的分裂,我們采用貪心生長的方法,遍歷所有特征,基于分裂前目標函數(shù)值與分裂后最小目標函數(shù)值,找到增益最大的點為最優(yōu)點,其對應的特征即為最優(yōu)特征,以此循環(huán),直到一定深度或者無法繼續(xù)分裂時停止,此時的樹便是第t輪迭代的最優(yōu)子結構樹。將每輪得到最優(yōu)子結構樹進行累加求和即得到XGBOOST算法的最終模型。
XGBOOST是GBDT的一種高效實現(xiàn),它相較于傳統(tǒng)的GBDT有著多方面的優(yōu)勢,它利用泰勒展開求二階導比一階導即梯度更加準確,支持線性基分類器,加入正則項控制模型復雜度,同時它也支持分布式計算,更加適用于大規(guī)模數(shù)據(jù)集的訓練,并且可以進行列抽樣,能夠降低過擬合,減少計算量。本文利用采用python語言的XGBOOST工具包實現(xiàn)了關鍵詞自動抽取模型。
本文實驗的輸入數(shù)據(jù)為一段文本,已標記數(shù)據(jù)中會標識每個文本中的關鍵詞,將文本預處理后得到文本中的詞語與詞性標注以及對應的標簽,實驗分為兩個步驟,訓練階段和預測階段。
步驟1訓練階段:對數(shù)據(jù)集中的訓練集進行預處理與特征抽取,利用XGBOOST算法訓練獲得關鍵詞自動評分模型。
步驟2預測階段:利用訓練階段得到的模型對測試數(shù)據(jù)進行關鍵詞評分,對文本中的詞語進行得分排序,取排名前N的詞語為該文本的關鍵詞。
本文關鍵詞自動抽取框架如圖1所示。
圖1 關鍵詞抽取框架
其中特征抽取部分依賴于數(shù)據(jù)字典,即根據(jù)大規(guī)模語料計算得到的每個詞語的KL散度與TF-IDF得分字典,輸出關鍵詞部分中含有一個超參數(shù)N,即選取文本中排名前N的詞語作為關鍵詞輸出,可以根據(jù)不同場景來確定不同的N值。
本文采用電商客服中的客服回答模板語料,共303個句子,預處理之后得到7821個詞語,其中標注為關鍵詞的詞語個數(shù)為1557個,將其切分訓練集與測試集,如表2所示。
表1 數(shù)據(jù)集
由于本文研究的是語義相似度計算領域的關鍵詞自動抽取方法,對于兩個文本,關鍵詞抽取的個數(shù)相同時才方便用于計算語義相似度的特征,如Jaccard距離,因此我們每個句子中抽取N個關鍵詞,只需要關心每個句子中抽取的N個詞語中關鍵詞的準確率,至于當句子中關鍵詞個數(shù)大于N時,還有多少個關鍵詞未被抽取出,即召回率,在此場景下我們并不關心。
本文中關鍵詞自動抽取的評估指標采取句子中得分排名前N的詞語的準確率作為評估指標,即準確率P=句子得分排名前N的詞語正確的個數(shù)/句子中關鍵詞的個數(shù)(大于N按N算)。
實驗中XGBOOST模型選擇基于樹的模型做提升計算,參數(shù)booster為gbtree,學習率eta設置為0.1,訓練的最大深度max_depth設置為9,此時性能最優(yōu)。
針對不同的超參數(shù)N,即選取每個文本中得分排名前N的詞語作為關鍵詞,本文算法與無監(jiān)督方法KL散度,TF-IDF,以及有監(jiān)督方法SVM和LR進行了評估指標的對比,結果如圖2所示。
圖2 算法性能對比圖
由圖2可以明顯地看出有監(jiān)督方法相對于無監(jiān)督方法準確率有大幅提升,在無監(jiān)督方法中,KL散度的表現(xiàn)比TF-IDF更好,因此在語義相似度計算領域,KL散度可以代替TF-IDF得到詞語的重要性得分,在有監(jiān)督方法中,XGBOOST算法的準確率高于SVM算法和LR算法,并且在效率方面也大幅領先,運算時間相對而言更少。因此,在語義相似度計算領域,本文提出的KL散度方法是優(yōu)于TF-IDF的,基于XGBOOST算法的有監(jiān)督方法也比傳統(tǒng)的機器學習方法準確率更高。
在語義相似度計算領域,本文提出了一種基于XGBOOST算法,融合KL散度,TF-IDF等多種特征的關鍵詞自動抽取方法,根據(jù)得分排序選擇最終關鍵詞。實驗證明,該方法不僅優(yōu)于單一的無監(jiān)督方法,也比基于傳統(tǒng)機器學習算法的有監(jiān)督方法效果更好。
本文的下一步研究工作將會考慮更多的詞語特征,如依存關系,詞向量表示,并且擴大標注數(shù)據(jù)集,進一步優(yōu)化關鍵詞自動抽取的效果。并且將該方法用于語義相似度計算中,通過提高關鍵詞抽取的準確率來優(yōu)化語義相似度計算的結果。