邱利茂,劉嘉勇
(1.四川大學(xué)電子信息學(xué)院,成都610065;2.四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,成都610065)
在信息爆炸的時(shí)代,為了快速找到人們想要的文檔,先后出現(xiàn)了門戶網(wǎng)站、分類網(wǎng)站、搜索引擎,這三類產(chǎn)品在很大程度上解決了信息過載問題[1]。其中,搜索引擎使用最為便捷高效,在當(dāng)今被廣泛的使用,國外的搜索引擎如Google、Bing搜索引擎,在國內(nèi)有百度、搜狗等搜索引擎。人們在搜索引擎當(dāng)中輸入關(guān)鍵詞,搜索引擎在短時(shí)間內(nèi)找到和關(guān)鍵詞相關(guān)性最強(qiáng)的網(wǎng)頁,往往這就是用戶期待的結(jié)果。搜索引擎利用關(guān)鍵詞匹配在很大程度上解決了海量數(shù)據(jù)的查找問題,但是搜索引擎最原始的功能是通過關(guān)鍵詞匹配,難以發(fā)現(xiàn)用戶潛在的搜索關(guān)鍵詞[2-3]。例如某位成都科技大學(xué)校友輸入“成都科技大學(xué)”進(jìn)行搜索,但其實(shí)成都科技大學(xué)是四川大學(xué)的前生,因?yàn)樗阉饕娓鶕?jù)關(guān)鍵詞僅僅匹配到和成都科技大學(xué)有關(guān)的文檔,不能通過“成都科技大學(xué)”一詞發(fā)現(xiàn)用戶的潛在和關(guān)鍵詞“四川大學(xué)”相關(guān)的文檔。另外一種情況是用戶并不知道自己要找的文檔的關(guān)鍵詞,例如用戶很想知道和羅斯福總統(tǒng)在第二屆任期搭班的副總統(tǒng)的資料,但是他又只知道羅斯??偨y(tǒng)的名字,如果直接搜索“羅斯?!蹦敲唇^大多數(shù)文檔都不會(huì)包含相應(yīng)副總統(tǒng)的資料。為了解決這個(gè)問題,可以使用關(guān)聯(lián)關(guān)鍵詞推薦技術(shù)。關(guān)聯(lián)關(guān)鍵詞推薦技術(shù)根據(jù)用戶輸入的詞語,推薦與該詞語關(guān)系緊密的關(guān)鍵詞,這些關(guān)鍵詞有很大可能是用戶的潛在興趣點(diǎn),解決了使用搜索引擎中難以發(fā)現(xiàn)用戶潛在興趣點(diǎn)的問題。
崔婉秋[4]等在2016年提出的耦合關(guān)系分析下的Top-k關(guān)鍵字推薦方法,文章通過分析關(guān)系型數(shù)據(jù)中的詞條與用戶初始化查詢所提供的關(guān)鍵詞之間的語義相關(guān)性,為用戶提供語義相關(guān)關(guān)聯(lián)關(guān)鍵詞推薦。但這種方法嚴(yán)重依賴于數(shù)據(jù)庫中存在的體條,并且更新困難,如果關(guān)系型數(shù)據(jù)中存在的詞條數(shù)量不足,或者不是同一個(gè)領(lǐng)域的詞條,將很難做到有效的關(guān)聯(lián)推薦。
溫有奎[5]在2016年針對用戶的搜索詞匹配,以關(guān)聯(lián)關(guān)鍵詞匹配組合的方式進(jìn)行推薦,解決了信息檢索的透明性問題[5],但是推薦的詞匯是系統(tǒng)詞匯庫中的子集,詞匯需要人工維護(hù),詞匯的質(zhì)量和數(shù)據(jù)某種程度上決定了推薦效果的優(yōu)劣。
依靠用戶提供反饋的方法實(shí)現(xiàn)為用戶推薦詞條將增加用戶的使用時(shí)間成本,另外所推薦的關(guān)鍵詞受到用戶行為記錄影響較大,新加入的推薦語料不容易被系統(tǒng)所使用。另外,以關(guān)鍵詞匹配組合方式的推薦方法對原始詞庫的依賴性強(qiáng),針對不同領(lǐng)域需要建立不同的詞庫。為了解決以上不足,本文提出基于文檔詞典的文本關(guān)聯(lián)詞條推薦技術(shù),以用戶輸入的關(guān)鍵詞在語料庫中根據(jù)詞頻向量模型算法檢索出評分最高的N篇文檔,將選出的文檔使用TextRank算法提取出的關(guān)鍵詞反饋給用戶,本技術(shù)不考慮用戶搜索的歷史記錄,根據(jù)語料庫來向用戶推薦關(guān)鍵詞,使得推薦結(jié)果更為客觀,新加入的預(yù)料將有同等被推薦概率,并且更多的語料加入系統(tǒng)將獲得更好的推薦效果。另外本算法對不是針對特定領(lǐng)域的關(guān)鍵詞推薦,選擇不同領(lǐng)域的語料,能夠針對不同領(lǐng)域做關(guān)鍵詞推薦。
本文所設(shè)計(jì)的推薦算法步驟如圖1。算法根據(jù)用戶指定的關(guān)鍵詞做關(guān)聯(lián)關(guān)鍵詞推薦,算法首先使用TF-IDF算法根據(jù)關(guān)鍵詞在語料庫中選取與關(guān)鍵詞相對相關(guān)度高的文檔,然后用TextRank關(guān)鍵詞提取算法對篩選出的文檔提取關(guān)聯(lián)關(guān)鍵詞,最后選取評分最高的N個(gè)關(guān)聯(lián)關(guān)鍵詞推薦給用戶,完成推薦。
圖1 關(guān)鍵詞推薦算法流程圖
在一篇文檔中,一個(gè)詞語在其中的權(quán)重越高,那么可以認(rèn)為這篇文檔與這個(gè)關(guān)鍵詞關(guān)聯(lián)性強(qiáng),本文采用TF-IDF算法根據(jù)關(guān)鍵詞篩選與之關(guān)聯(lián)性強(qiáng)的文檔。TF-IDF的主要思想是在一篇文章中,某個(gè)詞語的重要性與該詞語中出現(xiàn)次數(shù)成正比,同時(shí)與整個(gè)語料庫中出現(xiàn)該詞語的文章數(shù)成負(fù)相關(guān)[6]。TF-IDF中,TF表示詞頻(Term Frequency),表示一個(gè)詞語在給定文檔集中出現(xiàn)的頻率,IDF表示逆向文檔頻率(Inverse Document Frequency),該指標(biāo)評判一個(gè)詞的普遍重要程度。TFIDF值的計(jì)算公式如公式(1):
其中w為待檢索的關(guān)鍵詞,d表示一篇文章,tfw,d表示關(guān)鍵詞w在文檔d中出現(xiàn)的次數(shù),Nd表示文檔d當(dāng)中關(guān)鍵詞總數(shù),N表示文檔集的數(shù)量,dfw表示文檔集中出現(xiàn)過w關(guān)鍵詞的文檔數(shù)量。
從公式中可以看出,針對某一個(gè)文檔集,對于某個(gè)關(guān)鍵詞,如果該關(guān)鍵詞在其中一個(gè)文當(dāng)中出現(xiàn)的次數(shù)多(tfw,d較大),但是含有該詞語文檔數(shù)目較低(dfw較?。?,就可以得到一個(gè)高TF-IDF值的詞語,因此,TFIDF算法有效地過濾了常用詞,并提升了重要詞語的權(quán)重,同時(shí)一個(gè)關(guān)鍵詞在一篇文章當(dāng)中權(quán)重越高,表明該文檔與關(guān)鍵詞的關(guān)聯(lián)性也越強(qiáng)。
本算法中的語料為普通文本文檔,例如新聞文檔。為了根據(jù)用戶的輸入關(guān)鍵詞推薦詞條,首先要在語料庫當(dāng)中篩選出與關(guān)鍵詞相關(guān)的文檔。首先通過TF-IDF算法篩選關(guān)聯(lián)文檔,步驟如下:
①將語料庫中所有文檔做中文分詞處理,并出去文檔當(dāng)中的停用詞,例如“的”、“了”以及標(biāo)點(diǎn)等字符。
②計(jì)算各個(gè)詞語在每篇文檔出現(xiàn)的次數(shù)并統(tǒng)計(jì)得出一篇文檔中詞語總個(gè)數(shù),記為Nd,對于文檔中出現(xiàn)過的詞語,對其在文檔集中出現(xiàn)的次數(shù)增加計(jì)數(shù),記為dfw。
③對于一個(gè)給定輸入的關(guān)鍵詞w0,對每一篇文章采用公式(1)計(jì)算改詞在文檔中的TFIDF值,根據(jù)推薦精度需求,選取TFIDF值最大的前m篇文檔。
通過計(jì)算TFIDF值計(jì)算,篩選出和用戶給定關(guān)鍵詞相關(guān)的文檔,這些從語料庫中篩選出的文檔中很大概率包含了和用戶指定的關(guān)鍵詞的關(guān)聯(lián)詞條。下一步從這些關(guān)聯(lián)性很強(qiáng)的文檔中提取出與給定關(guān)鍵詞關(guān)聯(lián)性強(qiáng)的詞條。
TextRank算法提取文檔關(guān)鍵詞的方法如下:
對于詞語與詞語之間的關(guān)聯(lián),本算法基于這樣的假設(shè):如果文檔當(dāng)中確定了某一主題,那么該文檔當(dāng)中所出現(xiàn)的關(guān)鍵詞與該主題相對關(guān)聯(lián)度較高。在上一節(jié),已經(jīng)通過TF-IDF算法獲取到與關(guān)鍵詞關(guān)聯(lián)緊密的文檔,可以認(rèn)為這些文檔的主題與該關(guān)鍵詞貼近。通過提取這些文檔的關(guān)鍵詞即可找出對應(yīng)的關(guān)聯(lián)關(guān)鍵詞。本文采用TextRank算法和下文的關(guān)鍵詞提取步驟提取文檔關(guān)鍵詞。
TextRank是一種基于圖論的算法,該算法基于谷歌的PageRank算法改造演化而來[7]。PageRank的思想主要是:如果很多網(wǎng)頁同時(shí)指向某一個(gè)網(wǎng)頁,那么被引用的網(wǎng)頁占據(jù)比較重要的位置,如果一個(gè)很重要的網(wǎng)頁引用了另外的一個(gè)網(wǎng)頁,那么另外一個(gè)網(wǎng)頁的權(quán)重也應(yīng)當(dāng)提升[8-9]。TextRank算法將關(guān)鍵詞類比于PageR?ank算法中的網(wǎng)頁,進(jìn)而計(jì)算關(guān)鍵詞權(quán)重。
對于一篇文檔的一個(gè)詞語,定義某個(gè)詞語前一個(gè)詞為該詞前驅(qū),后一個(gè)詞為該詞的后繼。對于一篇文章的詞語來說,TextRank基于兩個(gè)假設(shè):
①數(shù)量假設(shè):在一篇文檔中,如果一個(gè)詞語的前驅(qū)越多,那么這個(gè)詞語也就越重要。
②質(zhì)量假設(shè):在一篇文檔中,擁有高權(quán)值前驅(qū)的詞語將傳遞更多的權(quán)值給后繼詞語。如果一個(gè)詞語權(quán)值越高,則它的后繼詞語的權(quán)值也會(huì)相應(yīng)的提高。
其計(jì)算公式為公式(2):
其中wi表示待計(jì)算的詞語,α表示權(quán)值,取經(jīng)驗(yàn)值0.85,N表示該文檔中擁有的詞語總數(shù)。wj表示后繼為wi的詞語。
關(guān)鍵詞提取的目的是在文檔當(dāng)中自動(dòng)抽取出若干個(gè)能夠表征該文檔的一組關(guān)鍵詞。TextRank算法利用詞語之間的局部位置關(guān)聯(lián)關(guān)系,從文本提取關(guān)鍵詞。計(jì)算一篇文檔的關(guān)鍵詞采用以下步驟:
①把文檔進(jìn)行中文分次,本文采用python開源分詞庫jieba,分詞后,文檔采用向量表示為T=[w1,w2,w3,w4,….,wm]。
②對于每篇文檔中的詞語wi∈T,進(jìn)行詞性標(biāo)注處理,并過濾到停用詞,只保留指定詞性的詞向量,例如在推薦單詞中,一般保留名詞。即D=[c1,c2,c3,c4,….cn],其中 ci∈T 且 n<m。
③構(gòu)建候選關(guān)鍵詞圖G=(V,E),其中V為節(jié)點(diǎn)集合,由D中的關(guān)鍵詞組成。然后根據(jù)關(guān)鍵詞的位置關(guān)系,詞語對應(yīng)點(diǎn)Vi的入邊節(jié)點(diǎn)為該詞的前驅(qū)節(jié)點(diǎn),同理對應(yīng)的出邊出節(jié)點(diǎn)為該詞的后記節(jié)點(diǎn)。
④根據(jù)公式(2)迭代計(jì)算節(jié)點(diǎn)權(quán)重,直到TextRank值收斂。
⑤根據(jù)節(jié)點(diǎn)值的大小,取前N個(gè)關(guān)鍵詞即為所推薦。
通過以上5個(gè)步驟可以從文檔中提取出關(guān)鍵詞。本步驟所使用的文檔為第一節(jié)通過用戶關(guān)鍵詞預(yù)篩選的文檔,從而這個(gè)步驟所得到的文本集和用戶所搜索的關(guān)鍵詞比較相關(guān)。然后將這些文檔合并成為一個(gè)文檔,并通過以上TextRank方法步驟提取這個(gè)組合文檔的關(guān)鍵詞,最終得到給用戶推薦的關(guān)鍵詞。
選用用語更加規(guī)范的文檔作為語料,可以避免語料當(dāng)中的簡寫、新詞等干擾,因此實(shí)驗(yàn)分別采用人民日報(bào)財(cái)經(jīng)版和人民日報(bào)科普版的新聞作為推薦系統(tǒng)的語料。指定200個(gè)待測試關(guān)鍵詞,讓不同的人閱讀這些新聞,結(jié)合自身的知識(shí)針對這200個(gè)關(guān)鍵詞給出對應(yīng)的關(guān)聯(lián)關(guān)鍵詞,對于人工標(biāo)記給出的關(guān)聯(lián)關(guān)鍵詞記為T(u)。最后將200個(gè)待測試關(guān)鍵詞輸入本文的推薦系統(tǒng),推薦系統(tǒng)計(jì)算出的關(guān)聯(lián)關(guān)鍵詞記為R(u),如果推薦系統(tǒng)給出的關(guān)鍵詞在人工給出的關(guān)聯(lián)關(guān)鍵詞庫中記為正確,否則記為錯(cuò)誤。
本文選取張麗穎在2016年提出的基于聚類的關(guān)鍵詞推薦研究[13],作為對比試驗(yàn),以下稱為參考文獻(xiàn)[13]。張麗穎在實(shí)驗(yàn)中通過與用戶交互,讓用戶對一些文檔做人工打分處理,這樣獲得到高價(jià)值的文檔,然后根據(jù)這些文檔做分詞處理,形成文檔-詞項(xiàng)矩陣,然后將其聚類,取對應(yīng)類別的前N個(gè)詞作為推薦。
實(shí)驗(yàn)結(jié)果本文推薦系統(tǒng)的評價(jià)指標(biāo)主要準(zhǔn)確率和召回率,這兩個(gè)指標(biāo)是推薦算法最重要的基礎(chǔ)指標(biāo)[14]。準(zhǔn)確率用于表征系統(tǒng)能夠準(zhǔn)確的向用戶推薦相關(guān)的關(guān)鍵詞的概率,而召回率用于評價(jià)用戶期望的關(guān)鍵詞能夠得到推薦的概率。其中準(zhǔn)確率如公式(3):
其中R(u)為用戶推薦的關(guān)鍵詞列表,T(u)為用戶在測試集上預(yù)期的關(guān)聯(lián)關(guān)鍵詞列表。
召回率計(jì)算公式如公式(4):
其中R(u)為用戶推薦的關(guān)鍵詞列表,T(u)為用戶在測試集上預(yù)期的關(guān)聯(lián)關(guān)鍵詞列表。最終實(shí)驗(yàn)結(jié)果兩項(xiàng)評價(jià)指標(biāo)與參考文獻(xiàn)[13]對比表1:
表1 實(shí)驗(yàn)準(zhǔn)確率與召回率
從表1可以看出,關(guān)聯(lián)關(guān)鍵詞準(zhǔn)確的準(zhǔn)確率相對較低,但是有較高的召回率,這是由于在關(guān)聯(lián)關(guān)鍵詞推薦的場景當(dāng)中,一個(gè)詞語的在不同的場景中關(guān)聯(lián)關(guān)鍵詞有所不同,而在本次實(shí)驗(yàn)中,沒有將近義詞做等同處理,因此準(zhǔn)確率低。但算法有較高的召回率,在本場景的推薦中,用戶不過多關(guān)心推薦是否每個(gè)都是自己想要的,但關(guān)心潛在需要找到的關(guān)聯(lián)關(guān)鍵詞能夠被推薦出來。本算法在準(zhǔn)確率和召回率兩個(gè)指標(biāo)上都有提高,這是因?yàn)橄鄬τ谖墨I(xiàn)[13],本算法不需要人工的對文檔進(jìn)行評分,推薦的結(jié)果更為客觀,而通過用戶評分選出的文檔再做關(guān)聯(lián)關(guān)鍵詞推薦,選出的文檔有限,而且可能用戶評分不客觀,因此準(zhǔn)確率和召回率上不如本算法。
對于推薦算法運(yùn)行速度上,實(shí)現(xiàn)分別選取不同數(shù)量的文檔集,采用VirtualBox虛擬機(jī)將配置調(diào)到相同的配置,對比算法運(yùn)行速度,對比結(jié)果如圖2。
從圖2可以得出,本算法的總體運(yùn)行時(shí)間明顯比參考文獻(xiàn)[13]的運(yùn)行速度要快,而且隨著被推薦的文檔集的數(shù)量增長,本算法的運(yùn)行時(shí)間相對于參考文獻(xiàn)[13]更有優(yōu)勢。這是因?yàn)樾录尤胪扑]語料,文獻(xiàn)[13]會(huì)對所有語料重新做聚類操作,而本算法可以使得在大量的文檔中,只選取與之相關(guān)度最高的前N篇文章做后續(xù)的推薦,雖然會(huì)丟失掉大部分的信息,但是這大部分文檔與要推薦的關(guān)鍵詞關(guān)聯(lián)不大。因此節(jié)約了大量運(yùn)行時(shí)間。
圖2 文檔數(shù)量-算法運(yùn)行時(shí)間圖
本文提出的基于文檔詞典的新聞關(guān)聯(lián)關(guān)鍵詞推薦能夠針對不同領(lǐng)域?yàn)橛脩敉扑]關(guān)聯(lián)關(guān)鍵詞。在語料刪選過程中運(yùn)用TF-IDF算法從語料庫中過濾出與關(guān)鍵詞相關(guān)的文檔,有效地去除了大部分噪聲文檔。然后使用TextRank關(guān)鍵詞提取算法,提取關(guān)鍵詞,即為推薦關(guān)鍵詞。與同類關(guān)聯(lián)關(guān)鍵詞推薦算法相比,本算法在準(zhǔn)確率有大約提高7%,召回率也有所提升。另外本算法在運(yùn)行時(shí)間上也有比較好的表現(xiàn)。因?yàn)楸舅惴ㄔ诘谝浑A段使用TF-IDF算法預(yù)先篩選獲取到關(guān)聯(lián)文檔,所以算法對語料庫要求不嚴(yán)格,不需要人工分類和標(biāo)記等工作,新加入的語料庫可以立即參與推薦,在適用和實(shí)時(shí)性方面都有較好的表現(xiàn)。但由于本算法在處理分詞上采用第三方分詞庫,分詞效果對推薦詞有影響,在分詞上,對不同領(lǐng)域需要做額外分詞的處理,才能取得更好的推薦效果。
參考文獻(xiàn):
[1]Blank I,Rokach L,ShaniG.Leveraging Meta data to Recommend Keywords for Academic Papers[J].Journal of the Association for Information Science&Technology,2016,67(12):n/a-n/a.
[2]ZhangW,Xue GR,XueGR,etal.Advertising Keywords Recommendation for Short-Text Web Pages Using Wikipedia[J].Acm Transactions on Intelligent Systems&Technology,2012,3(2):36.
[3]李歡.個(gè)性化搜索引擎中關(guān)鍵詞推薦專利技術(shù)綜述[J].科技創(chuàng)新與應(yīng)用,2017(5):95-96.
[4]崔婉秋,李昕,孟祥福,等.耦合關(guān)系分析下的Top-k關(guān)鍵字推薦方法[J].小型微型計(jì)算機(jī)系統(tǒng),2016,37(8):1686-1691.
[5]溫有奎.信息檢索系統(tǒng)的關(guān)聯(lián)關(guān)鍵詞推薦研究[J].數(shù)字圖書館論壇,2016(4):11-14.
[6]張瑾.基于改進(jìn)TF-IDF算法的情報(bào)關(guān)鍵詞提取方法[J].情報(bào)雜志,2014(4):153-155.
[7]張莉婧,李業(yè)麗,曾慶濤,等.基于改進(jìn)Text Rank的關(guān)鍵詞抽取算法[J].北京印刷學(xué)院學(xué)報(bào),2016,24(4):51-55.
[8]Nanos A G,James A E,Iqbal R,et al.Content Summarization of Conversation in the Context of Virtual Meetings:An Enhanced Text-Rank Approach[C].IEEE,International Conference on Computer Supported Cooperative Work in Design.IEEE,2017.
[9]Yu S,Su J,LiP,etal.Towards High Performance Text Mining::A Text Rank-based Method for Automatic Text Summarization[J].International Journal of Grid&High Performance Computing,2016,8(2):58-75.
[10]孫明.基于語義的信息檢索與關(guān)聯(lián)推薦關(guān)鍵技術(shù)研究[D].電子科技大學(xué),2015.
[11]謝瑋,沈一,馬永征.基于圖計(jì)算的論文審稿自動(dòng)推薦系統(tǒng)[J].計(jì)算機(jī)應(yīng)用研究,2016,33(3):798-801.
[12]王煦祥.面向問答的問句關(guān)鍵詞提取技術(shù)研究[D].哈爾濱工業(yè)大學(xué),2016.
[13]張麗穎.基于聚類的網(wǎng)絡(luò)輿情熱點(diǎn)關(guān)鍵詞推薦研究[D].華北電力大學(xué)(北京),2016.
[14]朱郁筱,呂琳媛.推薦系統(tǒng)評價(jià)指標(biāo)綜述[J].電子科技大學(xué)學(xué)報(bào),2012,41(2):163-175.