陳可嘉,黃思翌
(福州大學(xué) 經(jīng)濟與管理學(xué)院,福州 350108)
E-mail:kjchen@fzu.edu.cn
互聯(lián)網(wǎng)快速發(fā)展的背景下,微博等短文本數(shù)量增長.人們期望快速、準(zhǔn)確地掌握短文本的核心內(nèi)容以便形成對文本的大致判斷.關(guān)鍵詞是表達一段文本核心內(nèi)容的最小單元[1],提取關(guān)鍵詞能快速地掌握一篇文本的主題.高效、準(zhǔn)確、快速地提取關(guān)鍵詞,有助于滿足人們對信息質(zhì)量的核心要求.提高關(guān)鍵詞自動提取的效果是當(dāng)前研究的一個重要課題.
主流的文本關(guān)鍵詞提取分為有監(jiān)督提取和無監(jiān)督提取[2].有監(jiān)督的關(guān)鍵詞提取技術(shù)需要事先標(biāo)注語料,利用模型訓(xùn)練語料,預(yù)處理代價較高[3].因此,本文主要討論無監(jiān)督的關(guān)鍵詞提取方法.無監(jiān)督式的關(guān)鍵詞提取算法又稱為自動關(guān)鍵詞提取算法,自動地從文本中提取出具有代表性的詞或者短語,方便概括文本的主題.傳統(tǒng)的自動關(guān)鍵詞提取有3種:1)基于主題的方法.基于主題的關(guān)鍵詞提取方法從文章的全局出發(fā),該方法認(rèn)為文章都是由主題和與主題相關(guān)的詞或短語組成,具有代表性的方法為LDA[4];2)基于詞圖方法.該種方法通過一定的算法描述詞語間的關(guān)系并以此來判斷詞語在文本中的重要程度,例如TextRank[5];3)基于統(tǒng)計的方法.該方法通過計算詞語的統(tǒng)計學(xué)特征從候選詞中選出幾個較為重要的詞作為關(guān)鍵詞,具有代表性的方法為TF-IDF[6].此外,一些研究將這些方法融合取得了較好的成果,如劉嘯劍等融合圖和LDA主題模型,先用LDA計算詞語之間的相似性,以此為權(quán)重構(gòu)建無向圖[7].
目前,無監(jiān)督式的短文本關(guān)鍵詞提取算法大都采用上述無監(jiān)督式關(guān)鍵詞提取的3種算法.例如,Kim等利用n-gram LDA,通過分析推特文本,挖掘用戶對埃博拉病毒的情緒[8].也有一些學(xué)者將這些方法相結(jié)合,例如Tu和Huang將TextRank與TF-IDF結(jié)合,先通過計算微博的每個詞的TF-IDF值,再利用該值作為TextRank的權(quán)重提取關(guān)鍵詞[9].但這些方法都在固定的短文本語料進行建模[10],關(guān)鍵詞提取效果受語料庫的量級與質(zhì)量影響,通常需要較大規(guī)模、高質(zhì)量的語料訓(xùn)練.然而短文本實時性較強、數(shù)據(jù)更新快、表達隨意,且具有稀疏性、不平衡的特點[11],傳統(tǒng)的短文本自動關(guān)鍵詞提取算法靈活性與適應(yīng)性較弱,不能較好地抽取短文本關(guān)鍵詞.
快速自動關(guān)鍵詞提取算法——RAKE算法在英文短文本提取上有較為優(yōu)異的表現(xiàn),在單一的短文本中即可提取關(guān)鍵詞[12].該算法的核心思想是通過英文的空格進行英文的分詞,再通過構(gòu)建共現(xiàn)矩陣提取關(guān)鍵詞短語,并且傾向于較長的英文單詞.該方法簡單高效,無需大量的語料庫支持,可提取出文本關(guān)鍵短語.Haque將RAKE算法應(yīng)用于孟加拉語[13];Siddiqi和Sharan根據(jù)印地語的特征,提出了SD-RAKE方法,有效地將RAKE算法應(yīng)用于印地語文本的關(guān)鍵詞提取中[14].但該算法以統(tǒng)計學(xué)為基礎(chǔ),僅以共現(xiàn)頻率計算某詞的特征值,而中文詞語之間的關(guān)系較為復(fù)雜,句式繁多,若該方法應(yīng)用于中文短文本關(guān)鍵詞提取中,則易忽略了詞語之間語義的關(guān)系.此外,由于中文中存在較多的歧義詞,句子較長,詞與詞之間不是通過空格分割,而RAKE算法僅以停用詞和空格進行分詞,若某詞未在停用詞表中出現(xiàn)則判定為有用詞,RAKE算法的分詞效果不佳,因此將RAKE算法應(yīng)用在中文短文本中容易出現(xiàn)提取出的關(guān)鍵詞組過長的問題.
針對RAKE算法在中文短文本關(guān)鍵詞提取方面的不足,本文基于RAKE算法提出了新的短文本關(guān)鍵詞提取方法.本文方法首先根據(jù)詞語間距與句法關(guān)系頻次、語境權(quán)重計算每個詞的特征值,若短語過長,則采用窗口輸出方法使短語按語法規(guī)則輸出.
綜上所述,本文方法不僅不受語料庫量級的影響,也可以較好地解決RAKE算法未考慮詞語語義的問題,可控制中文關(guān)鍵詞的長度,短文本關(guān)鍵詞提取效果較其它的關(guān)鍵詞提取算法更優(yōu).
RAKE算法共5個步驟,其流程如圖1所示.
該算法首先對句子進行分詞,分詞后去除停用詞,根據(jù)停用詞劃分短語;之后計算每一個詞在短語的共現(xiàn)詞數(shù),并構(gòu)建詞共現(xiàn)矩陣;共現(xiàn)矩陣的每一列的值即為該詞的度deg,每個詞在文本中出現(xiàn)的次數(shù)即為頻率freq,得分score為度deg與頻率freq的商,deg越大,則該詞更重要;最后按照得分的大小值降序輸出該詞所在的短語.
圖1 RAKE算法流程Fig.1 Process of RAKE
例如“系統(tǒng)有聲音,但系統(tǒng)托盤的音量小喇叭圖標(biāo)不見了”,經(jīng)過分詞、去除停用詞處理后得到的詞集Wt={系統(tǒng),聲音,托盤,音量,小喇叭,圖標(biāo),不見},短語集DP={系統(tǒng),聲音,系統(tǒng)托盤,音量小喇叭圖標(biāo)不見},詞共現(xiàn)矩陣如表1.
表1 RAKE算法共現(xiàn)矩陣Table1 RAKE algorithm co-occurrence matrix
每一個詞的度為deg={“系統(tǒng)”:2 ,“聲音”:1,“托盤”:1;“音量”:3;“小喇叭”:3,“圖標(biāo)”:3,“不見”:3},頻率freq={“系統(tǒng)”:2,“聲音”:1,“托盤”:1;“音量”:1;“小喇叭”:1,“圖標(biāo)”:1,“不見”:1},score={“系統(tǒng)”:1,“聲音”:1,“托盤”:1;“音量”:1;“小喇叭”:3,“圖標(biāo)”:3,“不見”:3},輸出結(jié)果為{音量小喇叭圖標(biāo)不見了,系統(tǒng)托盤,系統(tǒng),聲音}.
本文根據(jù)RAKE算法的核心思想,對RAKE算法的文本預(yù)處理、共現(xiàn)矩陣構(gòu)造以及過長關(guān)鍵詞過濾進行改進.此方法包含預(yù)處理、候選關(guān)鍵詞提取、窗口輸出3大部分,算法流程如圖2所示.
圖2 改進RAKE算法流程Fig.2 Process of improved RAKE
預(yù)處理共包含3步.
第1步.對于給定的短文本Dt,根據(jù)標(biāo)點符號對短文本進行分句,得到分句集Ds;
第2步.利用依存句法分析工具對Ds進行依存句法分析,得每兩詞之間的依存句法關(guān)系集Dr;
第3步.將Ds的每個子集進行分詞,引入停用詞表,刪除詞表內(nèi)的單詞去重后得詞集Dw.
候選關(guān)鍵詞的提取通過計算詞間關(guān)系權(quán)重,并以計算后的權(quán)重為依據(jù)構(gòu)建共現(xiàn)矩陣,計算每個詞的度,最后計算每個詞的語境特征值,降序輸出該候選關(guān)鍵詞.
3.2.1 改進的度計算公式
RAKE算法以兩詞在短語中的共現(xiàn)次數(shù)描述詞語間的關(guān)系,本文認(rèn)為詞語之間的關(guān)系除去共現(xiàn)關(guān)系之外,還與兩詞之間的距離和詞語之間的句法關(guān)系有關(guān).為此,本文引入詞項距離公式與詞間關(guān)系權(quán)重公式改變詞ti與詞tj間度degij的計算方法.
1)詞項距離公式
詞項間的距離能一定程度地反映出兩個詞項之間的關(guān)系,詞項距離越遠表示詞項與詞項之間的聯(lián)系越不密切.參考文獻[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之間間隔的詞數(shù).例如“但系統(tǒng)托盤的音量小喇叭圖標(biāo)不見了”,經(jīng)過3.1節(jié)預(yù)處理后得到ds={系統(tǒng)托盤,音量小喇叭圖標(biāo)不見},則“音量”與“圖標(biāo)”之間的距離為2.
2)詞間關(guān)系權(quán)重
詞項間的關(guān)系不僅需要考慮詞項間的距離關(guān)系,更需要考慮詞項間的語義關(guān)系.句法關(guān)系可以一定程度反映詞項間的語義關(guān)系,為體現(xiàn)詞項間的語義相關(guān)度,參考文獻[16]給出詞項間的句法權(quán)重公式(2).
(2)
參考文獻[16]認(rèn)為兩詞之間的句法權(quán)重與句法分析發(fā)生頻次與兩詞項間的距離有關(guān),但由于本文方法經(jīng)過分句處理,句子較短,兩詞項之間發(fā)生多次句法關(guān)系的概率較小,因此,在公式(2)的基礎(chǔ)上本文給出改進的句法關(guān)系公式(3).
(3)
3)共現(xiàn)頻率
共現(xiàn)頻率表示關(guān)鍵詞在短語內(nèi)的共同出現(xiàn)的頻率,用f表示.例如“新型物理方法研究物理”,則“物理”與“研究”的共現(xiàn)次數(shù)為2.綜合公式(1)、公式(3)和共現(xiàn)頻率f的定義,給出詞i與詞j的共現(xiàn)度degij,如公式(4)所示.
(4)
當(dāng)詞語出現(xiàn)在同一個短語內(nèi)時,則兩詞的權(quán)重為ti和tj的詞項距離、詞間關(guān)系權(quán)重與共現(xiàn)次數(shù)f之和;若兩詞項在同一句子內(nèi),但不在同一短語內(nèi),則為詞項距離權(quán)重;若不在一個句子內(nèi),度為0.
3.2.2 構(gòu)建共現(xiàn)矩陣
詞共現(xiàn)矩陣是詞共現(xiàn)模型的量化,詞共現(xiàn)矩陣可以直觀地表示兩個詞之間共同出現(xiàn)的頻率[17].而本文所構(gòu)建的詞共現(xiàn)矩陣基于3.2.1節(jié)計算得出的兩詞間度degij,計算每一個詞的總的度degi,算法描述如下.
第1步.接收預(yù)處理后的分句集Ds和依存句法關(guān)系集合Dr、分句集Ds、詞集Dw.
第2步.根據(jù)詞集Dw中詞的個數(shù)構(gòu)建共現(xiàn)矩陣,將矩陣的所有值設(shè)成0.
第3步.遍歷分句集Ds,計算分句集中每一個詞出現(xiàn)的概率,對角線的權(quán)重即為詞ti在Ds中出現(xiàn)的次數(shù).
第4步.計算詞ti與tj所有分句集Ds中出現(xiàn)的次頻率f.
第5步.計算詞ti與tj所有詞在Ds中的每一個元素ds中的距離,計算詞項距離權(quán)重cords(i,j).
第6步.計算詞ti、ti與tj在句法關(guān)系集合Dr中出現(xiàn)的次數(shù)count2和count3,計算兩詞在Ps中的每一個元素的距離distPSm(i,j),計算cords(i,j).
第7步.根據(jù)公式(4)計算degij.
第8步.重復(fù)第4步計算下一個詞與該詞的度degi.
第9步.每一行遍歷完進行列相加操作,直至遍歷完每一行.
3.2.3 計算語境特征值
依據(jù)特征值的大小判斷某詞語否為關(guān)鍵詞,特征值越大,則為關(guān)鍵詞的概率更大.本文通過計算每一個詞在短語中的語境信息熵計算該詞的特征值.
1)語境
語境是表示一句話所表示的外部環(huán)境特征,包括上下文、時間、空間、情景等.語境在一段文本中,可以是一句話,也可以是一個句法關(guān)系、一個短語.本文的語境是一個短語,而語境中的核心詞是文本的關(guān)鍵詞.
2)語境特征值
參考文獻[18]提出的語境模型包含背景、參與者、交際行為及其它行為,認(rèn)為語境的本質(zhì)是一個樹結(jié)構(gòu)偶,語境中的核心詞是獨立的,其它詞依附于核心詞,核心詞包含了最多的信息.基于此觀點,參考文獻[18]中語境熵值的計算方法,提出一種基于短文本的語境核心詞算法計算每個詞的語境特征值.首先,根據(jù)公式(5)計算每一個詞在短句中的信息比重;再次,利用公式(6)求出每個詞在文章中的平均語境特征值,度越大,其中degi為3.2.2節(jié)提出的每個詞ti總的度,freqi為詞ti在短語中出現(xiàn)的頻率,則包含的語境信息越多.按照語境特征值的大小對候選詞進行降序排序,形成詞集Dw.之后,按序輸出Dw每一個詞所在的短語,形成短語集Dp.
(5)
H(wordi)=Fwilog(Fwi)
(6)
由于RAKE算法輸出的短文本關(guān)鍵詞過長,本文采用設(shè)置窗口的方法控制輸出的關(guān)鍵詞短語的長度,算法描述如下.
第1步.輸入詞集Dw與短語集Dp.
第2步.對詞集Dw中的每一個詞進行詞性判定.
第3步.遍歷詞集Dw中的每一個詞.對于詞集Dw中的名詞wordi:
1.在短語集Dp中按照窗口n的大小遍歷每一個短語.
2.若窗口內(nèi)包含詞wordi,則該短語為候選關(guān)鍵短語.
3.計算每一個候選關(guān)鍵短語在Dp中出現(xiàn)的詞數(shù)Count.
4.Count最大的即為wordi所對應(yīng)的關(guān)鍵詞keywordi.
第4步.keywordi中若包含多個名詞,則在Dw中刪除keywordi中包含的名詞.
第5步.逐一輸出關(guān)鍵短語集.
本文實驗在中文數(shù)據(jù)集中測試.學(xué)術(shù)文獻摘要作為重要的短文本類別,表達形式更為規(guī)范,故本文在知網(wǎng)知識檢索(1)http://search.cnki.net輸入“計算機”、“醫(yī)學(xué)”、“物理”、“數(shù)學(xué)”、“文學(xué)”、“英語”作為關(guān)鍵詞,收集檢索結(jié)果前1500頁學(xué)術(shù)期刊的相關(guān)文獻摘要與關(guān)鍵詞,去重以及刪除空文獻資源后共得到11128篇期刊摘要和45907個關(guān)鍵詞,摘要的平均字?jǐn)?shù)在200字內(nèi),每篇文章設(shè)置的關(guān)鍵詞為標(biāo)注關(guān)鍵詞,平均每篇數(shù)據(jù)集的標(biāo)注關(guān)鍵詞為4.1253個詞或短語.數(shù)據(jù)集描述見表2.因本方法需引入中文停用詞,本文融合哈工大停用詞表、百度停用詞表、四川大學(xué)機器智能實驗室停用詞庫,去重后應(yīng)用于文本預(yù)處理中.
表2 數(shù)據(jù)集Table 2 Dataset
本部分采用準(zhǔn)確率P、召回率R和F1值對改進的RAKE算法進行性能評估,公式描述如公式(7)-公式(9):
(7)
(8)
(9)
sumright為均在人工提取集和算法提取集中詞的總數(shù),summanual為人工提取關(guān)鍵詞的總數(shù),sumextract為算法提取關(guān)鍵詞的總數(shù),F(xiàn)1為P與R的調(diào)和平均值.算法在不同文章中提取出的關(guān)鍵詞的個數(shù)不同,因此,本文使用F1值作為主要的評價指標(biāo).
3.3節(jié)窗口輸出算法中涉及關(guān)鍵詞詞長n的判斷,由于詞長的確定影響算法的性能,因此需先確定最優(yōu)參數(shù).
圖3為在數(shù)據(jù)集中不同的詞長n中F1值的變化情況.可以看出,當(dāng)n設(shè)置為2時,本文方法的F1值達到最高,為19.04%.受分詞的效果的影響,在n=5時,F(xiàn)1值略大于n=4時的取值.
圖3 n不同取值時的F1值Fig.3 F1 at different values of n
為驗證在不同類型短文中n的最優(yōu)取值使F1值達最高,本文在數(shù)據(jù)集中不同類別的子數(shù)據(jù)集中進行實驗,實驗結(jié)果如圖4所示.由圖4可知,在不同的 數(shù)據(jù)集中,雖n=1與n=2時F1值的變化不大,n=2時,4個子數(shù)據(jù)集中F1值最高.同時也說明本文方法在不同的數(shù)據(jù)集中的效果均無太大差異,具有普適性.
圖4 子集中n取不同值時的F1值Fig.4 F1 for different values of n in the subset
為測試本文方法在短文本關(guān)鍵詞提取方面的性能,本部分實驗首先與基礎(chǔ)RAKE算法進行對比:首先驗證本文兩處改進對RAKE算法的性能提升,進行縱向?qū)Ρ?;之后再將本文方法與不同的關(guān)鍵詞提取方法進行對比,進行橫向?qū)Ρ?
4.4.1 改進性能測評
為驗證本文兩處對于RAKE算法改進的合理性,本次實驗首先測試原始RAKE算法在數(shù)據(jù)集中的效果;其次測試改進度計算公式后的RAKE算法,即3.2節(jié)所述方法的效果;最后測試既改進度計算公式又增加窗口過濾算法后的RAKE算法的結(jié)果,實驗結(jié)果如表3.可知,中文 RAKE算法的提取效果不好,但改進共現(xiàn)矩陣后的RAKE召回率明顯提升,這是因為提取的關(guān)鍵詞正確度提高,但P值較小的原因是提取的中文關(guān)鍵詞結(jié)果較多.當(dāng)加入窗口輸出算法后,因符合關(guān)鍵詞短語語言特征,算法的召回率有較大的提升,同時準(zhǔn)確率也有所提升.
表3 改進RAKE算法的效果Table 3 Effect of the improved RAKE
4.4.2 不同方法對比
自動關(guān)鍵詞提取算法有兩種典型代表,第1種是基于統(tǒng)計的關(guān)鍵詞提取方法TF-IDF,第2種是基于圖的關(guān)鍵詞提取方法TextRank,本文方法與TF-IDF、TextRank算法和原始的RAKE算法進行對比.
表4為在中文語料庫下,當(dāng)候選關(guān)鍵詞長度n設(shè)置為2時,本文方法與其它方法P值、R值與F1值的對比結(jié)果.較其它方法,準(zhǔn)確率P提升了1.55%-8.36%,召回率R提升了4.28%-16.38%,F(xiàn)1值提升了2.56%-11.78%.可見本方法在中文短文本關(guān)鍵詞提取的效果優(yōu)于其它方法.
表4 不同關(guān)鍵詞提取算法結(jié)果Table 4 Result of different keyword extraction algorithms
本文方法在考慮詞間關(guān)系與輸出長度規(guī)則后,對于短文本的提升效果較好.原因在于兩點:1)詞語之間存在著依存關(guān)系,而其它3種方法并未考慮到詞語間的依存句法關(guān)系;2)現(xiàn)在中文短文本的關(guān)鍵詞通常是以短語形式存在的,而RAKE算法輸出過長,TF-IDF和TextRank輸出的關(guān)鍵詞卻為單個詞語.
本文針對RAKE算法在中文短文本關(guān)鍵詞提取中未考慮詞間語義關(guān)系及關(guān)鍵詞過長的特點,提出一種改進的RAKE關(guān)鍵詞提取方法提高關(guān)鍵詞提取效果.本文方法結(jié)合RAKE算法的基本思想,利用詞項距離公式、詞間關(guān)系權(quán)重公式、共現(xiàn)頻率公式量化每一詞項間的關(guān)系,后計算語境信息熵得出候選關(guān)鍵詞,若候選關(guān)鍵詞詞長過長,則根據(jù)窗口輸出算法輸出短語.在中文學(xué)術(shù)摘要短文本數(shù)據(jù)集中的實驗表明,本文方法對中文短文本關(guān)鍵詞提取是可行和有效的,提取效果較好.
本文需構(gòu)建共現(xiàn)矩陣,時間復(fù)雜度較高,容易造成數(shù)據(jù)維度較大的情況.因此,本文的下一步工作是降低時間復(fù)雜度,使算法更加的高效.