王 潔, 王麗清
(云南大學 信息學院, 昆明 650223)
隨著互聯(lián)網(wǎng)的飛速發(fā)展, 網(wǎng)絡(luò)資源的數(shù)據(jù)量日益龐大. 面對海量的數(shù)據(jù), 如何有效、準確地提高對文章內(nèi)容的檢索效率, 一直是一個研究熱點. 一篇文章的關(guān)鍵詞往往反映了文章的主題, 具有與內(nèi)容高度相關(guān)的代表性. 準確、快速地提取關(guān)鍵詞, 對于信息檢索至關(guān)重要.
近年來, 國內(nèi)外相關(guān)學者在關(guān)鍵詞提取技術(shù)領(lǐng)域開展了大量的研究工作. 其中, TFIDF (Term Frequency-Inverse Document Frequency)算法主要通過對詞頻的計算來判斷提取詞對文章的代表性, 是常用的一種基于統(tǒng)計的提取方法. 但卻存在過度依賴詞頻的問題. 為此, 往往會引入特定因子進行計算以此減少對詞頻的依賴. 例如, 考慮基于詞位置和詞跨度的方法進行TFIDF算法的權(quán)重改進[1,2], 或者利用語義的連貫性, 結(jié)合詞頻和位置特征, 進行加權(quán)[3], 也有引入信息熵的方法[4]. 但這些方法存在一定計算復雜性問題, 或者在文章類型和語料規(guī)模上有一定局限. 也有結(jié)合文章綜合信息和引用新聞類別因子的方法[5,6], 增加了其他特征因子對權(quán)重進行加權(quán), 能一定程度校正詞頻依賴問題.但未考慮關(guān)鍵詞詞性以及關(guān)鍵詞覆蓋度不同所帶來的影響.
針對上述問題, 本文將TFIDF算法和中文語言的特性進行了有效結(jié)合, 通過引入位置因子、詞性因子等多特征值進行權(quán)重的二次計算, 校正詞頻依賴造成的關(guān)鍵詞偏差, 并利用Python完成算法實現(xiàn)驗證. 實驗結(jié)果表明詞性因子和位置因子的引入, 計算簡單、高效, 能夠有效地提高中文關(guān)鍵詞的提取效果, 適于短文章關(guān)鍵詞的提取.
TFIDF算法基本思想是: 利用詞頻(Term Frequency,TF)和逆文檔頻率(Inverse Document Frequency,IDF)相乘, 得到權(quán)重值. 權(quán)重越大, 則該詞為關(guān)鍵詞的概率越高[7]. 根據(jù)TFIDF算法, 詞權(quán)重Wtf(i)的計算公式如下:
式(1)中, tfi=該詞在文章內(nèi)容中出現(xiàn)的次數(shù)/文章總詞數(shù), tfi值表示該詞在文檔中出現(xiàn)的頻率; idfi=log(語料庫文檔總數(shù)/包含該詞的文檔數(shù)), 即: idfi=log(N/dfi),idfi值的大小代表了該詞的類別區(qū)分能力[8].
根據(jù)以上公式可知, 當詞在文檔中出現(xiàn)頻率較高,而在包含該詞的文檔數(shù)中出現(xiàn)頻率較低時, 則該詞根據(jù)TFIDF算法得到的權(quán)重值Wtf就越高, 故該詞可以在一定程度上表示文章的內(nèi)容.
(1)特征分析
位置因子. 分析新聞或信息內(nèi)容的特征可知: 新聞篇幅相對較短, 其標題往往具有概括性. 如果一個詞,在標題中出現(xiàn), 該詞的重要性往往高于其他詞. 詞語出現(xiàn)的位置在一定程度上反映了詞語的重要性[9].
詞性因子. 詞性是一種淺層語言學知識的表示, 根據(jù)漢語詞性可分為實詞和虛詞. 實詞包含: 名詞、動詞、形容詞、數(shù)詞、量詞和代詞. 虛詞包括: 副詞、介詞、連詞、助詞、嘆詞、擬聲詞. 關(guān)鍵詞詞性分布一般是名詞或名詞性短語為主. 其次是動詞, 最后是數(shù)詞、副詞和其他修飾詞等[5]. 考慮詞性特征可以有效避免傳統(tǒng)采用語言學方法的缺陷[10].
(2)加權(quán)方式
TFIDF算法在提取中, 主要依賴詞頻進行權(quán)重計算, 但存在過度依賴詞頻的噪聲. 因此, 可以先利用TFIDF算法完成權(quán)重計算后, 再對每個詞進行位置判斷. 并且, 在考慮標題位置的同時也考慮該詞在正文中的位置. 將同時出現(xiàn)在標題和正文中的詞, 其因子設(shè)置為最高; 只出現(xiàn)在標題中的次之; 而只出現(xiàn)在正文中的因子設(shè)為逐次遞減的不為零的低值.
完成位置特征引入后, 再進一步考慮引入詞性特征. 對提取出來的關(guān)鍵詞進行詞性標注. 按名詞、動詞和其他詞匯的順序從高到低設(shè)置為不為零的值.
最后, 將以上詞頻、標題位置、正文位置和詞性作為多特征因子, 共同引入權(quán)重計算中, 計算出每個特征詞的綜合權(quán)重, 按其排序進而確定關(guān)鍵詞. 這就是本文算法的核心思想.
關(guān)鍵詞的提取流程示意圖如圖1.
圖1 關(guān)鍵詞提取
在關(guān)鍵詞提取前, 首先需要對文本進行分詞和去停用詞等預處理. 分詞是進行中文關(guān)鍵詞提取的第一步, 也是重要的一步. 通過分詞將文本中的每一個句子,按照一定的規(guī)則劃分成有序的詞語片段, 其中標點、詞語、單字均可以劃分. 本文利用Python語言結(jié)合結(jié)巴分詞進行實現(xiàn).
停用詞在文本分析中, 屬于一種冗余數(shù)據(jù), 對文章的主題不具備表達能力, 往往具有高頻、無意義等特點. 例如: “的”、“啊”、“但是”等詞語以及標點符號. 通過去除停用詞, 能消除對關(guān)鍵詞提取的干擾. 在本文中,采用引入對應(yīng)的停用詞表并保存, 再以Python編程調(diào)用完成去除處理.
在Python中, 詞性的標注規(guī)則如表1所示, 名詞均是以n開頭, 動詞以v開頭.
表1 部分結(jié)巴分詞詞性標注
本文提出的權(quán)重計算函數(shù)如下:
其中,Weight(i)為候選詞i的綜合權(quán)重;Wtf(i)為TFIDF提取詞i得到的權(quán)重; 計算方法是:Wtf(i)=tfi*log(N/DFi);Wp(i)為位置因子權(quán)重, 計算方法是: 根據(jù)提取詞在文章中出現(xiàn)位置進行賦值.Wp=3, 出現(xiàn)在標題和正文中;Wp=2, 僅出現(xiàn)在標題中;Wp=1, 僅出現(xiàn)在正文中.Wc(i)為詞性因子權(quán)重, 計算方法是: 根據(jù)提取詞的詞性來進行賦值. 提取詞是名詞性詞匯Wc=3, 動詞性詞匯Wc=2, 其他詞匯Wc=1.
在本文算法中, 在計算詞Wtf(i)權(quán)重的基礎(chǔ)上, 結(jié)合詞性和詞在文中出現(xiàn)的位置, 進行綜合權(quán)重計算并由高到低排序, 從中提取5個詞作為關(guān)鍵詞, 僅提取5個詞的原因是太多不利于檢索, 太少不夠全面. 在此過程中, 詞性和詞在文中出現(xiàn)的位置是權(quán)重計算的重要參數(shù).
本文算法python語言實現(xiàn)如下, 主程序中通過調(diào)用keyword()完成提取:
為完成算法的測試和評價, 測試數(shù)據(jù)采用的是預先提取的中國商務(wù)部日常新聞?wù)Z料庫, 分別采用傳統(tǒng)TFIDF算法和本文所述TFIDF多特征改進算法完成關(guān)鍵詞提取, 然后對結(jié)果進行評價.
在結(jié)果評價中采用準確率P, 召回率R以及F因子完成評價. 準確率是檢索出的相關(guān)文檔數(shù)與檢索出的所有相關(guān)和不相關(guān)文檔總數(shù)的比率, 也叫查準率;檢索出的相關(guān)文檔數(shù)和文檔庫中所有檢索到和未檢索到的文檔總數(shù)的比率, 也叫查全率.F因子是兩者的綜合指標, 當F因子較高時, 則能說明試驗方法比較有效. 計算方法如下所示:
(1) 準確率Precision
準確率P=提取出的正確信息條數(shù)/提取出的信息條數(shù).
(2) 召回率Recall
召回率R=提取出的正確信息條數(shù)/樣本中的信息條數(shù).
(3)F因子F-measure:
F因子=準確率P*召回率R*2/(準確率P+召回率R).
實驗數(shù)據(jù)為預先提取的4000條新聞信息, 從中抽取300條新聞作為測試用例. 300條新聞中包含了100條左右的短新聞, 并進行對應(yīng)的分組. 將300條新聞分別分成20篇、50篇、80篇、100篇和150篇, 目的是希望通過測試數(shù)據(jù)的增加, 驗證本文所述改進算法是否會一直優(yōu)于傳統(tǒng)TFIDF算法.
利用百度搜索引擎進行關(guān)鍵詞檢索, 驗證是否能檢索到對應(yīng)的新聞文章. 最后計算TFIDF算法和改進算法的準確率P, 召回率R,F因子. 計算結(jié)果如表2所示.
表2 兩種算法評價指標對比
為方便觀察實驗結(jié)果的變化, 對兩種算法的準確率(圖2)、召回率(圖3)和F因子(圖4)三項指標分別做圖,如下所示:
根據(jù)表2和圖2~圖4可知: 在新聞篇數(shù)相同的情況下, 準確率P, 召回率R,F因子三項指標結(jié)果均是TFIDF改進算法優(yōu)于原本的單一算法. 證明本文所述TFIDF改進算法在一定程度上能夠有效地提高關(guān)鍵詞提取的準確度. 此外, 通過計算提取關(guān)鍵詞的時間, 發(fā)現(xiàn)改進的TFIDF算法與傳統(tǒng)的TFIDF算法執(zhí)行時間之差在1 ms以內(nèi).
圖2 準確率折線圖結(jié)果
圖3 召回率折線圖結(jié)果
圖4 F因子折線圖結(jié)果
本文對傳統(tǒng)的TFIDF算法進行了改進, 通過在關(guān)鍵詞權(quán)重計算中引入詞的位置因子和詞性因子以降低TFIDF算法依賴詞頻而造成的影響. 同時, 利用Python語言完成了算法實現(xiàn), 并對算法結(jié)果進行了實驗驗證.
實驗結(jié)果表明, 本文所述算法能有效提升關(guān)鍵詞提取的質(zhì)量效果. 但由于測試條件有限, 本文評價標準的計算結(jié)果主要依賴于人工檢索, 在測試語料的多樣性和總體數(shù)量上也有一定局限性. 因此, 下一步將在條件許可時, 在大規(guī)模多樣性測試語料集上進一步驗證和改進算法.