蔣慶朝,徐碩,陳孟婕,王立華
(中國(guó)水產(chǎn)科學(xué)研究院漁業(yè)工程研究所,北京100141)
隨著人類進(jìn)入信息化時(shí)代,互聯(lián)網(wǎng)上積累的數(shù)據(jù)越來(lái)越多,如何在信息過(guò)載的環(huán)境下對(duì)數(shù)據(jù)進(jìn)行分發(fā),已經(jīng)成為研究人員亟需解決的重要課題。早期,出現(xiàn)了兩種有效的解決方法,分別是分類目錄和搜索引擎。這兩種方法都是主動(dòng)檢索信息,當(dāng)用戶無(wú)法找到準(zhǔn)確描述的關(guān)鍵詞,甚至不了解自己的需求時(shí),就難以從海量數(shù)據(jù)中搜集信息。解決這一難題的關(guān)鍵就是推薦,根據(jù)用戶的興趣和需求主動(dòng)進(jìn)行信息分發(fā)[1]。目前,包括搜索引擎在內(nèi)的網(wǎng)站都研發(fā)了各自的推薦系統(tǒng),實(shí)現(xiàn)了個(gè)性化推薦[2]。
常用的推薦算法有協(xié)同過(guò)濾推薦[3]、內(nèi)容推薦[4]、基于知識(shí)的推薦以及其他混合推薦算法[5-6]。其中,協(xié)同過(guò)濾是從海量數(shù)據(jù)中找到和目標(biāo)用戶最相似的鄰居用戶,通過(guò)共用其他人的經(jīng)驗(yàn),發(fā)現(xiàn)潛在興趣,實(shí)現(xiàn)個(gè)性化推薦[7-8]。但是矩陣稀疏性問(wèn)題影響了協(xié)同過(guò)濾推薦的準(zhǔn)確性,研究人員開(kāi)始把重點(diǎn)轉(zhuǎn)移到如何解決矩陣稀疏性問(wèn)題上[9]。內(nèi)容推薦結(jié)果穩(wěn)定性強(qiáng),但是物品特征的權(quán)值分配困難,選取方法不同也會(huì)對(duì)推薦結(jié)果產(chǎn)生不同的影響[10]?;谥R(shí)的推薦是一種推理技術(shù),對(duì)特定領(lǐng)域制定不同的規(guī)則來(lái)實(shí)現(xiàn)推理?;旌贤扑]算法則是通過(guò)不同的組合方式,使用不同的推薦算法,彌補(bǔ)各自的缺陷[11-12]。
針對(duì)內(nèi)容推薦主題過(guò)于集中,融合程度較低,特征權(quán)值分配困難的問(wèn)題,本文提出一種基于主題詞頻共現(xiàn)的方法,利用不同主題詞組在文章中的共現(xiàn)頻率,挖掘出包含多種主題的文章,從而提高推薦結(jié)果的準(zhǔn)確性和全面性。
本文提出的是一種針對(duì)漁業(yè)科學(xué)數(shù)據(jù)的推薦方法。每一條數(shù)據(jù)都可以看作一篇文章。由于數(shù)據(jù)沒(méi)有關(guān)鍵詞,需要提取每條數(shù)據(jù)的主題。首先,對(duì)文章進(jìn)行分詞,獲得詞的權(quán)重,提取出關(guān)鍵詞。然后,計(jì)算關(guān)鍵詞組在數(shù)據(jù)中的共現(xiàn)頻率,為用戶進(jìn)行推薦。
本文分詞采用的是隱馬爾可夫模型,它是一種統(tǒng)計(jì)機(jī)器學(xué)習(xí)模型[13]。通常用來(lái)描述一個(gè)含有未知參數(shù)的馬爾科夫鏈隨機(jī)生成觀測(cè)序列的過(guò)程。在模型中有兩種序列,其一是狀態(tài)序列,它是不能被觀察的隱藏狀態(tài);其二是觀測(cè)序列,可以通過(guò)直接觀察而得到。模型要解決的問(wèn)題就是在給定觀測(cè)序列的情況下,求對(duì)應(yīng)的隱藏序列[14]。
通常,用五個(gè)元素來(lái)描述隱馬爾可夫模型,2 個(gè)序列和3 個(gè)概率矩陣[15]。分別是隱含序列T,可觀測(cè)序列O,初始狀態(tài)概率矩陣π,隱含狀態(tài)轉(zhuǎn)移概率矩陣A,觀測(cè)狀態(tài)轉(zhuǎn)移概率矩陣B。分詞要解決的是預(yù)測(cè)問(wèn)題,即在給定模型λ=(A,B,π)和觀測(cè)序列O,計(jì)算使P(O|λ)最大的狀態(tài)序列T。
在分詞過(guò)程中,給定的中文文本信息可以看作觀測(cè)序列,而文本中每個(gè)字的狀態(tài)是隱藏序列。每個(gè)字的狀態(tài)可能有4 個(gè)值,即狀態(tài)值集合{B,M,E,S}。不同的狀態(tài)代表了這個(gè)字在詞中的位置。B 代表這個(gè)字位于詞的起始位置,M 代表了詞的中間字,E 代表的是詞的末尾,S 表示這個(gè)字單獨(dú)成詞。觀察值集合是所有漢字組成的集合。通過(guò)維特比算法,把輸入的觀測(cè)序列轉(zhuǎn)換成狀態(tài)序列,就可以獲得分詞的結(jié)果。
假設(shè)給定的觀察序列O 為{O1, O2, O3…OT},以及模型λ=(A,B,π),維特比變量δt(i)是在時(shí)刻t 時(shí),隱馬爾可夫鏈沿著某一條路徑達(dá)到狀態(tài)Ti,并且輸出觀察序列的最大概率。
其中,i 的取值范圍為1,2,3,4,對(duì)應(yīng)不同的狀態(tài)。t+1 時(shí)刻到達(dá)狀態(tài)Tj的最優(yōu)路徑概率為:
a 和b 分別是隱含狀態(tài)轉(zhuǎn)移概率矩陣和觀測(cè)狀態(tài)轉(zhuǎn)移概率矩陣。
由上式可知初始狀態(tài)的概率,對(duì)公式δt,δt+1進(jìn)行遞推,最終獲得全局的最優(yōu)路徑,然后反向推導(dǎo)出最優(yōu)的隱藏狀態(tài)序列,完成分詞。
從文章中找到代表這篇文章主題的關(guān)鍵詞的方法就是主題提取。本文采用的是TF-IDF,詞頻-逆文檔頻率算法。它是一種常用的統(tǒng)計(jì)方法,用來(lái)評(píng)價(jià)一個(gè)詞對(duì)一個(gè)文檔的重要性[16]。
TF 是詞條在一篇文章中出現(xiàn)的頻率。但是由于不同的文章長(zhǎng)度不一,對(duì)詞頻會(huì)產(chǎn)生影響。因此,要對(duì)頻率歸一化處理,防止偏向篇幅較長(zhǎng)的文章。
t 是指定的詞條,|D|是該文檔中總詞數(shù)。
IDF 是逆向文件頻率。如果包含詞條t 的文章數(shù)量越少,說(shuō)明此詞條具有良好的區(qū)分文章類別的能力。
其中,N 代表數(shù)據(jù)集,f(Di,t)是一個(gè)函數(shù),表示文章是否包含詞條t,如果包含,函數(shù)結(jié)果為1,否則為0。
一個(gè)詞的TF-IDF 值就是TF*IDF。這個(gè)詞的重要性與其出現(xiàn)在文章中的次數(shù)成正比,與它出現(xiàn)在文章集合中的頻率成反比[17]。TF-IDF 值越大,預(yù)測(cè)文章主題的能力越強(qiáng)。
分詞結(jié)果集中包含許多停用詞,這是沒(méi)有實(shí)際含義的功能詞。在使用TF-IDF 計(jì)算之前,先從分詞結(jié)果中剔除停用詞。目前網(wǎng)上有不少停用詞表,本文實(shí)驗(yàn)采用的是哈工大停用詞表。通過(guò)與停用詞表進(jìn)行對(duì)比,刪除分詞結(jié)果中的停用詞。
共現(xiàn)是文本特征信息共同出現(xiàn)的現(xiàn)象,漁業(yè)科學(xué)數(shù)據(jù)推薦研究的就是關(guān)鍵詞共現(xiàn)現(xiàn)象。通常,共現(xiàn)分析方法是利用關(guān)鍵詞組在同一篇文檔中出現(xiàn)的情況,確定關(guān)鍵詞之間的關(guān)系。同一文檔中關(guān)鍵詞組出現(xiàn)次數(shù)越多,就認(rèn)為關(guān)鍵詞組的關(guān)系越緊密[18]。
在本文探索的基于關(guān)鍵詞共現(xiàn)的推薦方法中,首先假定關(guān)鍵詞組之間在詞意上相互關(guān)聯(lián),即存在內(nèi)在聯(lián)系的詞對(duì)具有更高的概率出現(xiàn)在同一篇文章中的同一段落甚至同一語(yǔ)句中[19]。然后統(tǒng)計(jì)關(guān)鍵詞組在同一篇文章中出現(xiàn)的次數(shù),即共現(xiàn)次數(shù)C。共現(xiàn)次數(shù)越多,則這篇文章的主題與關(guān)鍵詞組的聯(lián)系越緊密,用戶就越有可能感興趣。傳統(tǒng)的共現(xiàn)分析方法忽略了詞對(duì)權(quán)重值的設(shè)計(jì),以及關(guān)鍵詞在數(shù)據(jù)集中出現(xiàn)頻率的影響。因此,在實(shí)驗(yàn)中,以包含關(guān)鍵詞的文章在數(shù)據(jù)集中的比例作為影響權(quán)值的因素。
Pi是關(guān)鍵詞的權(quán)重。|D|是集合中文章的數(shù)量,|di|是包含了該關(guān)鍵詞的文章數(shù)量。每篇文章的推薦程度指數(shù)可以表示成:
S 是對(duì)應(yīng)文章的推薦指數(shù),n 是詞組中關(guān)鍵詞的數(shù)量,C 是關(guān)鍵詞組在該文章中的共現(xiàn)頻率??梢钥闯?,越是廣泛出現(xiàn)的關(guān)鍵詞,對(duì)文章推薦指數(shù)的影響越低。最后,按照推薦程度的高低為用戶進(jìn)行推薦。
實(shí)驗(yàn)數(shù)據(jù)來(lái)自國(guó)家農(nóng)業(yè)科學(xué)數(shù)據(jù)中心-漁業(yè)數(shù)據(jù)分中心。通過(guò)對(duì)用戶行為的分析,獲取用戶近期訪問(wèn)次數(shù)較多的數(shù)據(jù)。然后對(duì)這些文章進(jìn)行分詞,提取關(guān)鍵詞。只有TF-IDF 權(quán)重大于一定閾值的詞才作為文章的關(guān)鍵詞,并且每篇文章只提取5 個(gè)關(guān)鍵詞。從集合中刪除重復(fù)的關(guān)鍵詞,可以認(rèn)為,這個(gè)集合中的詞都是用戶感興趣的領(lǐng)域。把這些關(guān)鍵詞兩兩進(jìn)行組合,作為一個(gè)關(guān)鍵詞組進(jìn)行共現(xiàn)頻率分析。根據(jù)推薦程度公式,關(guān)鍵詞組在文章中的共現(xiàn)頻率越高,和文章主題的關(guān)系就越緊密,推薦程度就越高。而在數(shù)據(jù)集中出現(xiàn)的頻率越少,該類主題的文章就越少,推薦價(jià)值也越高。對(duì)于每個(gè)關(guān)鍵詞組,文章都會(huì)有一個(gè)相應(yīng)的推薦分?jǐn)?shù),取最高值作為文章的推薦分?jǐn)?shù)。最后,為用戶推薦分?jǐn)?shù)較高的數(shù)據(jù)。
實(shí)驗(yàn)中有2 個(gè)參數(shù)來(lái)評(píng)價(jià)算法的性能,即推薦的準(zhǔn)確率P 和擊中率R。準(zhǔn)確率P 是成功推薦給用戶的數(shù)據(jù)在推薦數(shù)據(jù)中的比例,而擊中率R 則是成功推薦的數(shù)據(jù)占用戶瀏覽數(shù)據(jù)的比重。計(jì)算公式為:
Nr是推薦列表中用戶點(diǎn)擊的數(shù)據(jù),N 代表推薦給用戶的數(shù)據(jù)量,M 代表推薦期間用戶訪問(wèn)的數(shù)據(jù)量。
本文研究中對(duì)比分析了基于主題詞頻共現(xiàn)與另外3 種算法,分別是:基于用戶的協(xié)同過(guò)濾算法、基于內(nèi)容的推薦、基于統(tǒng)計(jì)的推薦。表1 是給用戶的推薦列表長(zhǎng)度為10 時(shí),4 種算法的準(zhǔn)確率和擊中率。可以看出基于主題詞頻共現(xiàn)的方法在推薦效果上優(yōu)于協(xié)同過(guò)濾、內(nèi)容推薦和統(tǒng)計(jì)等算法。當(dāng)推薦列表長(zhǎng)度N 改變時(shí),4 種推薦算法的準(zhǔn)確率和擊中率也隨之改變。N 取值范圍從8 到11 時(shí),推薦準(zhǔn)確率變化趨勢(shì)降低,而擊中率的變化趨勢(shì)是升高。對(duì)推薦列表進(jìn)行分析,發(fā)現(xiàn)排序較前的推薦分?jǐn)?shù)較高,用戶點(diǎn)擊的比率較高。但隨著列表的增加,評(píng)分較低的數(shù)據(jù)也加入了推薦,這些數(shù)據(jù)被用戶采納的比例較低,使得最終的準(zhǔn)確率呈現(xiàn)下降的趨勢(shì)。推薦擊中率的提升則是由于用戶一段時(shí)間內(nèi)訪問(wèn)的數(shù)據(jù)量不變,隨著列表的增加,推薦點(diǎn)擊率的增加。
表1 N=10 時(shí)4 種推薦算法結(jié)果對(duì)比
圖1 推薦準(zhǔn)確率隨推薦數(shù)量變化
圖2 推薦擊中率隨推薦數(shù)量變化
從圖1 和圖2 中可以看出,基于主題詞頻共現(xiàn)的漁業(yè)科學(xué)數(shù)據(jù)推薦效果相對(duì)于其他3 種算法的準(zhǔn)確率較高。其中,基于統(tǒng)計(jì)的方法準(zhǔn)確率和擊中率最低。實(shí)驗(yàn)使用的是基于人口統(tǒng)計(jì)學(xué)的推薦[20],這種算法適用領(lǐng)域較廣,但是獲取的信息粗糙,對(duì)于一些特殊的領(lǐng)域如漁業(yè)科學(xué)數(shù)據(jù),僅基于用戶信息識(shí)別的效果較差,推薦效果難以提升?;趦?nèi)容的推薦方法核心思想則是利用元數(shù)據(jù)發(fā)現(xiàn)漁業(yè)科學(xué)數(shù)據(jù)之間的相關(guān)性,然后根據(jù)用戶的瀏覽歷史,發(fā)掘出用戶的偏好特征,推薦給與用戶偏好相似的數(shù)據(jù)。這種方法適合有大量標(biāo)簽數(shù)據(jù)更新的領(lǐng)域,如資訊新聞?lì)怺21]。在漁業(yè)科學(xué)數(shù)據(jù)領(lǐng)域推薦上,會(huì)出現(xiàn)推薦范圍狹窄,新穎性不強(qiáng)的問(wèn)題,即為用戶推薦的數(shù)據(jù)過(guò)于集中,無(wú)法發(fā)掘用戶潛在的興趣。而且在多次對(duì)比實(shí)驗(yàn)中,效果都低于協(xié)同過(guò)濾的方法?;谟脩舻膮f(xié)同過(guò)濾算法采用的是最鄰近技術(shù),利用用戶的歷史偏好數(shù)據(jù)計(jì)算用戶之間的相似度,然后采用目標(biāo)用戶的鄰居用戶的數(shù)據(jù)進(jìn)行推薦。推薦的數(shù)據(jù)與用戶之間可能完全不相關(guān),因此可以發(fā)掘出潛在的興趣點(diǎn),推薦的結(jié)果更全面,準(zhǔn)確率也更高。漁業(yè)科學(xué)數(shù)據(jù)是一個(gè)獨(dú)立的領(lǐng)域,專業(yè)性較強(qiáng),用戶的興趣也相對(duì)持久穩(wěn)定,推薦結(jié)果變化也小。在推薦列表長(zhǎng)度逐漸增加時(shí),與基于內(nèi)容的推薦結(jié)果重合度也越來(lái)越高,所以當(dāng)N=11 時(shí),兩種方法的準(zhǔn)確率與擊中率也越來(lái)越接近。
基于主題詞頻共現(xiàn)的方法是對(duì)內(nèi)容推薦算法的改進(jìn),以共現(xiàn)頻率的計(jì)算取代相似度的計(jì)算對(duì)文章進(jìn)行評(píng)分。結(jié)果中不但包含了內(nèi)容推薦評(píng)分高的數(shù)據(jù),還發(fā)掘了一些關(guān)鍵詞權(quán)重不高但是在數(shù)據(jù)集中稀有的數(shù)據(jù)。這些數(shù)據(jù)的評(píng)分在共現(xiàn)頻率分析時(shí)獲得提高。因此,本文提出的方法在推薦準(zhǔn)確率和擊中率上要高于內(nèi)容推薦和協(xié)同過(guò)濾,解決了推薦結(jié)果過(guò)于集中和用戶數(shù)據(jù)稀疏的問(wèn)題。
本文使用基于主題詞頻共現(xiàn)的分析方法,從漁業(yè)科學(xué)數(shù)據(jù)中提取特征關(guān)鍵詞,提出了新的科學(xué)數(shù)據(jù)領(lǐng)域的推薦算法。通過(guò)對(duì)比實(shí)驗(yàn)分析協(xié)同過(guò)濾、內(nèi)容推薦算法、統(tǒng)計(jì)方法與本文提出方法的推薦結(jié)果,表明基于主題詞頻共現(xiàn)的漁業(yè)科學(xué)數(shù)據(jù)推薦具有較高的準(zhǔn)確率和擊中率。而且,該方法具有可擴(kuò)展性,可以應(yīng)用在其他數(shù)據(jù)領(lǐng)域中,下一步研究工作將會(huì)在漁業(yè)新聞資訊類領(lǐng)域展開(kāi)。