陳可嘉,黃思翌
(福州大學 經濟與管理學院,福州 350108)
E-mail:kjchen@fzu.edu.cn
互聯網快速發展的背景下,微博等短文本數量增長.人們期望快速、準確地掌握短文本的核心內容以便形成對文本的大致判斷.關鍵詞是表達一段文本核心內容的最小單元[1],提取關鍵詞能快速地掌握一篇文本的主題.高效、準確、快速地提取關鍵詞,有助于滿足人們對信息質量的核心要求.提高關鍵詞自動提取的效果是當前研究的一個重要課題.
主流的文本關鍵詞提取分為有監督提取和無監督提取[2].有監督的關鍵詞提取技術需要事先標注語料,利用模型訓練語料,預處理代價較高[3].因此,本文主要討論無監督的關鍵詞提取方法.無監督式的關鍵詞提取算法又稱為自動關鍵詞提取算法,自動地從文本中提取出具有代表性的詞或者短語,方便概括文本的主題.傳統的自動關鍵詞提取有3種:1)基于主題的方法.基于主題的關鍵詞提取方法從文章的全局出發,該方法認為文章都是由主題和與主題相關的詞或短語組成,具有代表性的方法為LDA[4];2)基于詞圖方法.該種方法通過一定的算法描述詞語間的關系并以此來判斷詞語在文本中的重要程度,例如TextRank[5];3)基于統計的方法.該方法通過計算詞語的統計學特征從候選詞中選出幾個較為重要的詞作為關鍵詞,具有代表性的方法為TF-IDF[6].此外,一些研究將這些方法融合取得了較好的成果,如劉嘯劍等融合圖和LDA主題模型,先用LDA計算詞語之間的相似性,以此為權重構建無向圖[7].
目前,無監督式的短文本關鍵詞提取算法大都采用上述無監督式關鍵詞提取的3種算法.例如,Kim等利用n-gram LDA,通過分析推特文本,挖掘用戶對埃博拉病毒的情緒[8].也有一些學者將這些方法相結合,例如Tu和Huang將TextRank與TF-IDF結合,先通過計算微博的每個詞的TF-IDF值,再利用該值作為TextRank的權重提取關鍵詞[9].但這些方法都在固定的短文本語料進行建模[10],關鍵詞提取效果受語料庫的量級與質量影響,通常需要較大規模、高質量的語料訓練.然而短文本實時性較強、數據更新快、表達隨意,且具有稀疏性、不平衡的特點[11],傳統的短文本自動關鍵詞提取算法靈活性與適應性較弱,不能較好地抽取短文本關鍵詞.
快速自動關鍵詞提取算法——RAKE算法在英文短文本提取上有較為優異的表現,在單一的短文本中即可提取關鍵詞[12].該算法的核心思想是通過英文的空格進行英文的分詞,再通過構建共現矩陣提取關鍵詞短語,并且傾向于較長的英文單詞.該方法簡單高效,無需大量的語料庫支持,可提取出文本關鍵短語.Haque將RAKE算法應用于孟加拉語[13];Siddiqi和Sharan根據印地語的特征,提出了SD-RAKE方法,有效地將RAKE算法應用于印地語文本的關鍵詞提取中[14].但該算法以統計學為基礎,僅以共現頻率計算某詞的特征值,而中文詞語之間的關系較為復雜,句式繁多,若該方法應用于中文短文本關鍵詞提取中,則易忽略了詞語之間語義的關系.此外,由于中文中存在較多的歧義詞,句子較長,詞與詞之間不是通過空格分割,而RAKE算法僅以停用詞和空格進行分詞,若某詞未在停用詞表中出現則判定為有用詞,RAKE算法的分詞效果不佳,因此將RAKE算法應用在中文短文本中容易出現提取出的關鍵詞組過長的問題.
針對RAKE算法在中文短文本關鍵詞提取方面的不足,本文基于RAKE算法提出了新的短文本關鍵詞提取方法.本文方法首先根據詞語間距與句法關系頻次、語境權重計算每個詞的特征值,若短語過長,則采用窗口輸出方法使短語按語法規則輸出.
綜上所述,本文方法不僅不受語料庫量級的影響,也可以較好地解決RAKE算法未考慮詞語語義的問題,可控制中文關鍵詞的長度,短文本關鍵詞提取效果較其它的關鍵詞提取算法更優.
RAKE算法共5個步驟,其流程如圖1所示.
該算法首先對句子進行分詞,分詞后去除停用詞,根據停用詞劃分短語;之后計算每一個詞在短語的共現詞數,并構建詞共現矩陣;共現矩陣的每一列的值即為該詞的度deg,每個詞在文本中出現的次數即為頻率freq,得分score為度deg與頻率freq的商,deg越大,則該詞更重要;最后按照得分的大小值降序輸出該詞所在的短語.

圖1 RAKE算法流程Fig.1 Process of RAKE
例如“系統有聲音,但系統托盤的音量小喇叭圖標不見了”,經過分詞、去除停用詞處理后得到的詞集Wt={系統,聲音,托盤,音量,小喇叭,圖標,不見},短語集DP={系統,聲音,系統托盤,音量小喇叭圖標不見},詞共現矩陣如表1.

表1 RAKE算法共現矩陣Table1 RAKE algorithm co-occurrence matrix
每一個詞的度為deg={“系統”:2 ,“聲音”:1,“托盤”:1;“音量”:3;“小喇叭”:3,“圖標”:3,“不見”:3},頻率freq={“系統”:2,“聲音”:1,“托盤”:1;“音量”:1;“小喇叭”:1,“圖標”:1,“不見”:1},score={“系統”:1,“聲音”:1,“托盤”:1;“音量”:1;“小喇叭”:3,“圖標”:3,“不見”:3},輸出結果為{音量小喇叭圖標不見了,系統托盤,系統,聲音}.
本文根據RAKE算法的核心思想,對RAKE算法的文本預處理、共現矩陣構造以及過長關鍵詞過濾進行改進.此方法包含預處理、候選關鍵詞提取、窗口輸出3大部分,算法流程如圖2所示.

圖2 改進RAKE算法流程Fig.2 Process of improved RAKE
預處理共包含3步.
第1步.對于給定的短文本Dt,根據標點符號對短文本進行分句,得到分句集Ds;
第2步.利用依存句法分析工具對Ds進行依存句法分析,得每兩詞之間的依存句法關系集Dr;
第3步.將Ds的每個子集進行分詞,引入停用詞表,刪除詞表內的單詞去重后得詞集Dw.
候選關鍵詞的提取通過計算詞間關系權重,并以計算后的權重為依據構建共現矩陣,計算每個詞的度,最后計算每個詞的語境特征值,降序輸出該候選關鍵詞.
3.2.1 改進的度計算公式
RAKE算法以兩詞在短語中的共現次數描述詞語間的關系,本文認為詞語之間的關系除去共現關系之外,還與兩詞之間的距離和詞語之間的句法關系有關.為此,本文引入詞項距離公式與詞間關系權重公式改變詞ti與詞tj間度degij的計算方法.
1)詞項距離公式
詞項間的距離能一定程度地反映出兩個詞項之間的關系,詞項距離越遠表示詞項與詞項之間的聯系越不密切.參考文獻[15]給出詞項距離公式(1).
cords(ti,tj)=e-distds(ti,tj),ti∈ds且tj∈ds
(1)
distds(ti,tj)為詞項ti和tj在分句去除停用詞后的短句ds中的距離,計算為公式為|j-i|(j>i),即詞ti和詞tj之間間隔的詞數.例如“但系統托盤的音量小喇叭圖標不見了”,經過3.1節預處理后得到ds={系統托盤,音量小喇叭圖標不見},則“音量”與“圖標”之間的距離為2.
2)詞間關系權重
詞項間的關系不僅需要考慮詞項間的距離關系,更需要考慮詞項間的語義關系.句法關系可以一定程度反映詞項間的語義關系,為體現詞項間的語義相關度,參考文獻[16]給出詞項間的句法權重公式(2).
(2)
參考文獻[16]認為兩詞之間的句法權重與句法分析發生頻次與兩詞項間的距離有關,但由于本文方法經過分句處理,句子較短,兩詞項之間發生多次句法關系的概率較小,因此,在公式(2)的基礎上本文給出改進的句法關系公式(3).

(3)

3)共現頻率
共現頻率表示關鍵詞在短語內的共同出現的頻率,用f表示.例如“新型物理方法研究物理”,則“物理”與“研究”的共現次數為2.綜合公式(1)、公式(3)和共現頻率f的定義,給出詞i與詞j的共現度degij,如公式(4)所示.
(4)
當詞語出現在同一個短語內時,則兩詞的權重為ti和tj的詞項距離、詞間關系權重與共現次數f之和;若兩詞項在同一句子內,但不在同一短語內,則為詞項距離權重;若不在一個句子內,度為0.
3.2.2 構建共現矩陣
詞共現矩陣是詞共現模型的量化,詞共現矩陣可以直觀地表示兩個詞之間共同出現的頻率[17].而本文所構建的詞共現矩陣基于3.2.1節計算得出的兩詞間度degij,計算每一個詞的總的度degi,算法描述如下.
第1步.接收預處理后的分句集Ds和依存句法關系集合Dr、分句集Ds、詞集Dw.
第2步.根據詞集Dw中詞的個數構建共現矩陣,將矩陣的所有值設成0.
第3步.遍歷分句集Ds,計算分句集中每一個詞出現的概率,對角線的權重即為詞ti在Ds中出現的次數.
第4步.計算詞ti與tj所有分句集Ds中出現的次頻率f.
第5步.計算詞ti與tj所有詞在Ds中的每一個元素ds中的距離,計算詞項距離權重cords(i,j).
第6步.計算詞ti、ti與tj在句法關系集合Dr中出現的次數count2和count3,計算兩詞在Ps中的每一個元素的距離distPSm(i,j),計算cords(i,j).
第7步.根據公式(4)計算degij.
第8步.重復第4步計算下一個詞與該詞的度degi.
第9步.每一行遍歷完進行列相加操作,直至遍歷完每一行.
3.2.3 計算語境特征值
依據特征值的大小判斷某詞語否為關鍵詞,特征值越大,則為關鍵詞的概率更大.本文通過計算每一個詞在短語中的語境信息熵計算該詞的特征值.
1)語境
語境是表示一句話所表示的外部環境特征,包括上下文、時間、空間、情景等.語境在一段文本中,可以是一句話,也可以是一個句法關系、一個短語.本文的語境是一個短語,而語境中的核心詞是文本的關鍵詞.
2)語境特征值
參考文獻[18]提出的語境模型包含背景、參與者、交際行為及其它行為,認為語境的本質是一個樹結構偶,語境中的核心詞是獨立的,其它詞依附于核心詞,核心詞包含了最多的信息.基于此觀點,參考文獻[18]中語境熵值的計算方法,提出一種基于短文本的語境核心詞算法計算每個詞的語境特征值.首先,根據公式(5)計算每一個詞在短句中的信息比重;再次,利用公式(6)求出每個詞在文章中的平均語境特征值,度越大,其中degi為3.2.2節提出的每個詞ti總的度,freqi為詞ti在短語中出現的頻率,則包含的語境信息越多.按照語境特征值的大小對候選詞進行降序排序,形成詞集Dw.之后,按序輸出Dw每一個詞所在的短語,形成短語集Dp.
(5)
H(wordi)=Fwilog(Fwi)
(6)
由于RAKE算法輸出的短文本關鍵詞過長,本文采用設置窗口的方法控制輸出的關鍵詞短語的長度,算法描述如下.
第1步.輸入詞集Dw與短語集Dp.
第2步.對詞集Dw中的每一個詞進行詞性判定.
第3步.遍歷詞集Dw中的每一個詞.對于詞集Dw中的名詞wordi:
1.在短語集Dp中按照窗口n的大小遍歷每一個短語.
2.若窗口內包含詞wordi,則該短語為候選關鍵短語.
3.計算每一個候選關鍵短語在Dp中出現的詞數Count.
4.Count最大的即為wordi所對應的關鍵詞keywordi.
第4步.keywordi中若包含多個名詞,則在Dw中刪除keywordi中包含的名詞.
第5步.逐一輸出關鍵短語集.
本文實驗在中文數據集中測試.學術文獻摘要作為重要的短文本類別,表達形式更為規范,故本文在知網知識檢索(1)http://search.cnki.net輸入“計算機”、“醫學”、“物理”、“數學”、“文學”、“英語”作為關鍵詞,收集檢索結果前1500頁學術期刊的相關文獻摘要與關鍵詞,去重以及刪除空文獻資源后共得到11128篇期刊摘要和45907個關鍵詞,摘要的平均字數在200字內,每篇文章設置的關鍵詞為標注關鍵詞,平均每篇數據集的標注關鍵詞為4.1253個詞或短語.數據集描述見表2.因本方法需引入中文停用詞,本文融合哈工大停用詞表、百度停用詞表、四川大學機器智能實驗室停用詞庫,去重后應用于文本預處理中.

表2 數據集Table 2 Dataset
本部分采用準確率P、召回率R和F1值對改進的RAKE算法進行性能評估,公式描述如公式(7)-公式(9):
(7)
(8)
(9)
sumright為均在人工提取集和算法提取集中詞的總數,summanual為人工提取關鍵詞的總數,sumextract為算法提取關鍵詞的總數,F1為P與R的調和平均值.算法在不同文章中提取出的關鍵詞的個數不同,因此,本文使用F1值作為主要的評價指標.
3.3節窗口輸出算法中涉及關鍵詞詞長n的判斷,由于詞長的確定影響算法的性能,因此需先確定最優參數.
圖3為在數據集中不同的詞長n中F1值的變化情況.可以看出,當n設置為2時,本文方法的F1值達到最高,為19.04%.受分詞的效果的影響,在n=5時,F1值略大于n=4時的取值.

圖3 n不同取值時的F1值Fig.3 F1 at different values of n
為驗證在不同類型短文中n的最優取值使F1值達最高,本文在數據集中不同類別的子數據集中進行實驗,實驗結果如圖4所示.由圖4可知,在不同的 數據集中,雖n=1與n=2時F1值的變化不大,n=2時,4個子數據集中F1值最高.同時也說明本文方法在不同的數據集中的效果均無太大差異,具有普適性.

圖4 子集中n取不同值時的F1值Fig.4 F1 for different values of n in the subset
為測試本文方法在短文本關鍵詞提取方面的性能,本部分實驗首先與基礎RAKE算法進行對比:首先驗證本文兩處改進對RAKE算法的性能提升,進行縱向對比;之后再將本文方法與不同的關鍵詞提取方法進行對比,進行橫向對比.
4.4.1 改進性能測評
為驗證本文兩處對于RAKE算法改進的合理性,本次實驗首先測試原始RAKE算法在數據集中的效果;其次測試改進度計算公式后的RAKE算法,即3.2節所述方法的效果;最后測試既改進度計算公式又增加窗口過濾算法后的RAKE算法的結果,實驗結果如表3.可知,中文 RAKE算法的提取效果不好,但改進共現矩陣后的RAKE召回率明顯提升,這是因為提取的關鍵詞正確度提高,但P值較小的原因是提取的中文關鍵詞結果較多.當加入窗口輸出算法后,因符合關鍵詞短語語言特征,算法的召回率有較大的提升,同時準確率也有所提升.

表3 改進RAKE算法的效果Table 3 Effect of the improved RAKE
4.4.2 不同方法對比
自動關鍵詞提取算法有兩種典型代表,第1種是基于統計的關鍵詞提取方法TF-IDF,第2種是基于圖的關鍵詞提取方法TextRank,本文方法與TF-IDF、TextRank算法和原始的RAKE算法進行對比.
表4為在中文語料庫下,當候選關鍵詞長度n設置為2時,本文方法與其它方法P值、R值與F1值的對比結果.較其它方法,準確率P提升了1.55%-8.36%,召回率R提升了4.28%-16.38%,F1值提升了2.56%-11.78%.可見本方法在中文短文本關鍵詞提取的效果優于其它方法.

表4 不同關鍵詞提取算法結果Table 4 Result of different keyword extraction algorithms
本文方法在考慮詞間關系與輸出長度規則后,對于短文本的提升效果較好.原因在于兩點:1)詞語之間存在著依存關系,而其它3種方法并未考慮到詞語間的依存句法關系;2)現在中文短文本的關鍵詞通常是以短語形式存在的,而RAKE算法輸出過長,TF-IDF和TextRank輸出的關鍵詞卻為單個詞語.
本文針對RAKE算法在中文短文本關鍵詞提取中未考慮詞間語義關系及關鍵詞過長的特點,提出一種改進的RAKE關鍵詞提取方法提高關鍵詞提取效果.本文方法結合RAKE算法的基本思想,利用詞項距離公式、詞間關系權重公式、共現頻率公式量化每一詞項間的關系,后計算語境信息熵得出候選關鍵詞,若候選關鍵詞詞長過長,則根據窗口輸出算法輸出短語.在中文學術摘要短文本數據集中的實驗表明,本文方法對中文短文本關鍵詞提取是可行和有效的,提取效果較好.
本文需構建共現矩陣,時間復雜度較高,容易造成數據維度較大的情況.因此,本文的下一步工作是降低時間復雜度,使算法更加的高效.