汪貽杰 沙夢(mèng)釩 趙 鵬 周建平
(1.安徽工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院;2.中鋼集團(tuán)馬鞍山礦山研究總院股份有限公司)
礦業(yè)類(lèi)期刊文獻(xiàn)不僅凝練了重要的行業(yè)知識(shí),更是礦山知識(shí)類(lèi)網(wǎng)站的一個(gè)重要組成部分。在期刊文獻(xiàn)內(nèi),一篇論文包含很多專(zhuān)業(yè)信息,如論文的標(biāo)題、摘要、關(guān)鍵詞、正文和作者等,如何根據(jù)這些專(zhuān)業(yè)信息實(shí)現(xiàn)高效快速的論文推薦是目前礦山知識(shí)類(lèi)網(wǎng)站面臨的一個(gè)重要課題[1]。
對(duì)于文本推薦和數(shù)據(jù)倉(cāng)庫(kù)技術(shù)在知識(shí)類(lèi)相關(guān)領(lǐng)域的應(yīng)用,在行業(yè)內(nèi)有著廣泛關(guān)注與研究。在基于論文數(shù)據(jù)分析的專(zhuān)家推薦方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)中,孫圣力等[2]提出了基于文本相似度、貢獻(xiàn)率及復(fù)合影響因子算出的各論文作者的推薦分?jǐn)?shù)并進(jìn)行推薦,但未考慮到在大規(guī)模論文數(shù)據(jù)下的專(zhuān)家推薦方法計(jì)算時(shí)間長(zhǎng)且新的推薦存在的冷啟動(dòng)問(wèn)題。在基于Spark的電影推薦系統(tǒng)中,朱本瑞[3]實(shí)現(xiàn)了對(duì)電影數(shù)據(jù)的Spark離線推薦和Spark Streaming的實(shí)時(shí)推薦,并將結(jié)果存儲(chǔ)到Redis、Elasticsearch、MongoDB中,但未考慮將中間臨時(shí)計(jì)算結(jié)果保存到Hive中,以節(jié)省中間臨時(shí)計(jì)算時(shí)間。
通過(guò)深入系統(tǒng)的研究,提出了基于數(shù)據(jù)倉(cāng)庫(kù)實(shí)現(xiàn)的離線計(jì)算論文推薦方法。首先由維度建模搭建一個(gè)數(shù)據(jù)倉(cāng)庫(kù),設(shè)立論文推薦主題庫(kù);然后,將論文特征數(shù)據(jù)集分詞預(yù)處理后加載到HDFS中,在HDFS中使用Hive計(jì)算推薦結(jié)果,將結(jié)果保存在論文推薦主題庫(kù)中;最后,在前端礦山知識(shí)類(lèi)網(wǎng)站中實(shí)現(xiàn)可視化展示。
在設(shè)計(jì)中,數(shù)據(jù)倉(cāng)庫(kù)體系主要分成原始數(shù)據(jù)層、明細(xì)數(shù)據(jù)層、數(shù)據(jù)匯總層、應(yīng)用數(shù)據(jù)層4層。在分層體系中,原始數(shù)據(jù)層用于存儲(chǔ)預(yù)處理的數(shù)據(jù)集;明細(xì)數(shù)據(jù)層用于將原始數(shù)據(jù)層的結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換并清洗維度缺項(xiàng),轉(zhuǎn)換為結(jié)構(gòu)化數(shù)據(jù);數(shù)據(jù)匯總層用于對(duì)明細(xì)數(shù)據(jù)層提取特征構(gòu)造維度-權(quán)重矩陣;應(yīng)用數(shù)據(jù)層用于聚合維度權(quán)重矩陣在主題表中,并用于指標(biāo)統(tǒng)計(jì)、計(jì)算及數(shù)據(jù)挖掘等。該數(shù)據(jù)倉(cāng)庫(kù)分層體系結(jié)構(gòu)的目的在于將數(shù)據(jù)量巨大的原始論文,通過(guò)數(shù)據(jù)倉(cāng)庫(kù)分層架構(gòu)思想,將數(shù)據(jù)存儲(chǔ)在不同分層中,將結(jié)果數(shù)據(jù)與中間數(shù)據(jù)分開(kāi),減少跨層調(diào)用。同時(shí),將計(jì)算過(guò)程中產(chǎn)生的中間臨時(shí)計(jì)算保存在數(shù)據(jù)倉(cāng)庫(kù)中,極大地減少了重復(fù)計(jì)算。
數(shù)據(jù)倉(cāng)庫(kù)模型設(shè)計(jì)是面向主題的,因此在設(shè)計(jì)數(shù)據(jù)倉(cāng)庫(kù)維度模型前要先確定分析主題[4]。分析主題的選擇是根據(jù)業(yè)務(wù)的實(shí)際需求分析而定的,且根據(jù)主題相關(guān)的分析結(jié)果可為相關(guān)人員或用戶提供決策支持[5]。在此選擇其中的論文為主題進(jìn)行分析介紹。一篇論文主要包含標(biāo)題、摘要、關(guān)鍵詞、正文、作者等,本文主要圍繞論文特征維度對(duì)論文進(jìn)行數(shù)據(jù)分析,設(shè)計(jì)構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)論文推薦主題庫(kù)。
維度表是描述分析主題的角度,選擇分析的維度要能從數(shù)據(jù)源中直接得到,且有利于對(duì)所選主題的分析。采用星型模型設(shè)計(jì)的維度表主要由事實(shí)表和維度表組成,每個(gè)維度表都有一個(gè)維度值作為主鍵,所有這些維度表的主鍵結(jié)合成事實(shí)表的主鍵。在維度表的建立過(guò)程中,維度值必須唯一,且每個(gè)維度代表對(duì)一個(gè)分析主題不同角度的描述[6]。根據(jù)分析主題、論文推薦主題庫(kù)的設(shè)計(jì),這里建立了標(biāo)題、摘要、關(guān)鍵詞3個(gè)維度。
這些維度表中的數(shù)據(jù)是由原始數(shù)據(jù)層和明細(xì)數(shù)據(jù)層加載到匯總數(shù)據(jù)層,并在DWS中存儲(chǔ)。在DWS層中,通過(guò)對(duì)加載數(shù)據(jù)中標(biāo)題、摘要、關(guān)鍵詞等特征元素提取,并分別構(gòu)造維度-權(quán)重矩陣得到分析主題的3個(gè)維度。以標(biāo)題-論文權(quán)重矩陣t_p為例,對(duì)于t_p矩陣的每個(gè)元素f pt表示標(biāo)題標(biāo)簽t在論文p中的權(quán)重,計(jì)算公式為
式中,N?pt為論文p中包含標(biāo)題標(biāo)簽t的個(gè)數(shù),N pt為論文p中的標(biāo)題標(biāo)簽數(shù);N為總的論文數(shù);而Nt是包含標(biāo)題t的論文數(shù)量。
通過(guò)構(gòu)造出的標(biāo)題維度-權(quán)重矩陣、關(guān)鍵詞維度-權(quán)重矩陣、摘要維度-權(quán)重矩陣,對(duì)論文主題進(jìn)行3個(gè)不同角度的分析,對(duì)論文主題進(jìn)行更精確的描述。
通過(guò)論文主題下的多個(gè)特征維度的聚合和匯總,完成對(duì)主題下的指標(biāo)計(jì)算。這里計(jì)算的指標(biāo)是論文推薦主題庫(kù)下論文數(shù)據(jù)之間的相似度,通過(guò)計(jì)算不同論文對(duì)象標(biāo)簽間的相似度,并對(duì)不同文本部分的標(biāo)簽進(jìn)行加權(quán)后得到總的論文對(duì)象間的相似度。主題庫(kù)主題中所有論文數(shù)據(jù)對(duì)象都進(jìn)行相似度計(jì)算,匯總得到相似度推薦指標(biāo)。計(jì)算中,特征維度間的相似度采用的是余弦相似度,計(jì)算公式如式(2)。pi、p j表示不同的向量元素,p()i、p(j)表示向量pi、pj的分量。p()i、p(j)2個(gè)向量分量的點(diǎn)積除以pi、pj2個(gè)向量的模長(zhǎng),得到了pi、pj2個(gè)向量的余弦相似度sin(pi、pj),余弦相似度值越大,則表示2個(gè)向量的相似度越高。
期刊論文數(shù)據(jù)倉(cāng)庫(kù)流程設(shè)計(jì)見(jiàn)圖1,步驟如下。
(1)數(shù)據(jù)預(yù)處理。從MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)源中獲取數(shù)據(jù)表中的數(shù)據(jù),對(duì)獲取的數(shù)據(jù)進(jìn)行分詞預(yù)處理,將分完詞的數(shù)據(jù)發(fā)送到Kafka集群中的Paper主題中。
(2)數(shù)據(jù)存儲(chǔ)。使用Flume的Sink配置Kafka_File_HDFS的腳本配置文件,將Kafka的Paper主題中的數(shù)據(jù)采集到HDFS中存儲(chǔ),存儲(chǔ)過(guò)程中按照采集的日期進(jìn)行分區(qū)。
(3)數(shù)據(jù)處理和計(jì)算。對(duì)存儲(chǔ)在HDFS中的預(yù)處理論文特征數(shù)據(jù)采用ETL加載到數(shù)據(jù)倉(cāng)庫(kù)的論文推薦主題庫(kù)中,按照數(shù)據(jù)倉(cāng)庫(kù)論文推薦主題庫(kù)結(jié)構(gòu)設(shè)計(jì)進(jìn)行分層處理,在ODS層存儲(chǔ)論文分詞特征數(shù)據(jù)集,將ODS層中按行拆分格式化并將關(guān)鍵詞為空的數(shù)據(jù)清洗過(guò)濾掉后,轉(zhuǎn)換成標(biāo)題元素、摘要元素、關(guān)鍵詞元素3張?zhí)卣鲾?shù)據(jù)表存入DWD層,并在DWD層將元素轉(zhuǎn)換為(單詞,詞頻),為構(gòu)造維度表做準(zhǔn)備。在數(shù)據(jù)服務(wù)層DWS中加載DWD表中特征數(shù)據(jù)表,構(gòu)造為3張維度表。在ADS應(yīng)用層將DWS層不同維度-權(quán)重矩陣表進(jìn)行聚合,得到論文特征主題表。采用Spark對(duì)應(yīng)用層論文特征主題表中的數(shù)據(jù)計(jì)算相似度指標(biāo),并將指標(biāo)結(jié)果存入論文推薦主題庫(kù)應(yīng)用層推薦表中。
(4)數(shù)據(jù)展示。將應(yīng)用層的推薦結(jié)果采用Spark讀取Hive寫(xiě)入MySQL的方式把推薦結(jié)果寫(xiě)入到MySQL數(shù)據(jù)庫(kù)中,在礦山知識(shí)服務(wù)平臺(tái)的前端網(wǎng)站采用Web API服務(wù)的形式調(diào)用數(shù)據(jù)庫(kù)中數(shù)據(jù)。當(dāng)用戶在線搜索論文時(shí),數(shù)據(jù)庫(kù)中相關(guān)推薦論文將會(huì)推薦給用戶。
對(duì)于推薦指標(biāo)計(jì)算,傳統(tǒng)的基于文本的相似度計(jì)算方法一般都單一統(tǒng)計(jì)文本的關(guān)鍵詞,未考慮到關(guān)鍵特征文本權(quán)值的影響。而關(guān)鍵特征文本往往也是用戶最為看重的,在采用多維度特征融合的離線推薦計(jì)算中,使用加權(quán)的余弦相似度算法對(duì)關(guān)鍵特征維度賦予更高的權(quán)重。如算法偽碼所示,a表示標(biāo)題元素維度特征相似度,b表示關(guān)鍵詞元素維度特征相似度,c表示摘要元素維度特征相似度,d表示論文所述的文獻(xiàn)類(lèi)別特征相似度。將輸入的ob ject和pa per對(duì)象的特征相似度a、b、c的權(quán)重因子分別設(shè)置為0.3,0.55和0.15,d為權(quán)重修正因子,根據(jù)2個(gè)論文對(duì)象文獻(xiàn)類(lèi)別維度的相似度計(jì)算,結(jié)果在0.01≤d≤0.1。由此計(jì)算出core為多特征維度融合加權(quán)下的論文相似度。在初步的過(guò)濾中,core值大于0.1且屬于前50的結(jié)果會(huì)被保留,再次過(guò)濾中,core值大于0.3或前15的結(jié)果會(huì)被保留并進(jìn)行推薦。推薦結(jié)果入庫(kù)匯總保存在ADS層論文推薦表中。
算法為SVM加權(quán)余弦相似度算法,輸入從ADS層讀取表ads_paper,存入paper_list;輸出對(duì)paper_list進(jìn)行廣播,聲明為bd_paper_list。
在試驗(yàn)結(jié)果的評(píng)價(jià)方面,采用準(zhǔn)確率、召回率和F1值進(jìn)行分類(lèi)評(píng)價(jià),計(jì)算公式如下
式中,TP表示指標(biāo)結(jié)果符合匹配的數(shù)據(jù)條數(shù);F P表示指標(biāo)結(jié)果推薦中不符合匹配的數(shù)據(jù)條數(shù);FN表示指標(biāo)結(jié)果中符合匹配未被推薦的數(shù)據(jù)條數(shù)[7];precision準(zhǔn)確率表示分類(lèi)器正確識(shí)別文本的一個(gè)統(tǒng)計(jì)測(cè)量;recall召回率指的是檢索出的相關(guān)文檔數(shù)和庫(kù)中所有相關(guān)文檔數(shù)的比率[8];F1值是衡量分類(lèi)器分類(lèi)準(zhǔn)確性的標(biāo)準(zhǔn),是準(zhǔn)確率和召回率的加權(quán)平均,F(xiàn)1最大值為1,最小值為0。
該試驗(yàn)使用了4臺(tái)虛擬服務(wù)器構(gòu)建集群節(jié)點(diǎn),配置見(jiàn)表1。其中Hadoop001是Hadoop集群和Spark集群的主節(jié)點(diǎn),Hadoop002-Hadoop004為spark的從屬節(jié)點(diǎn),運(yùn)行slave進(jìn)程。Zookeeper集群運(yùn)行在Hadoop002-Hadoop004 3個(gè)節(jié)點(diǎn),Kafka集群運(yùn)行在Hadoop001-Hadoop004節(jié)點(diǎn),Hive、Flume運(yùn)行在Hadoop001節(jié)點(diǎn),這4臺(tái)主機(jī)都為Hadoop的數(shù)據(jù)節(jié)點(diǎn)。本次集群環(huán)境試驗(yàn)中Hadoop的版本為3.1.4,Spark的版本為3.0.0,MySQL版本為5.1.3,Zookeeper版本為3.6.2,Kafka版本為2.11.0,F(xiàn)lume版本為1.7.0,Hive版本為3.0.0。
?
試驗(yàn)采用了203867條論文數(shù)據(jù)作為數(shù)據(jù)集。
為驗(yàn)證SVM加權(quán)余弦相似度算法的有效性,本文與未加權(quán)的余弦相似度方法進(jìn)行對(duì)比。對(duì)試驗(yàn)數(shù)據(jù)集分別采用2種算法計(jì)算相似度。由表2可知,加權(quán)后準(zhǔn)確率提高了約6%,F(xiàn)1值提升了約3%,無(wú)論是準(zhǔn)確率、召回率、F1值,改進(jìn)后的算法指標(biāo)都明顯優(yōu)于原始算法。再隨機(jī)選取5篇搜索論文,統(tǒng)計(jì)推薦論文在2種算法下的相似度值計(jì)算結(jié)果(圖2)。圖2結(jié)果顯示,采用維度融合加權(quán)后,推薦結(jié)果相似度有顯著提升,降低了非核心特征維度-摘要維度的權(quán)重影響,提升了關(guān)鍵特征維度-關(guān)鍵詞維度的權(quán)重影響,使推薦結(jié)果更突出核心關(guān)鍵詞的文本價(jià)值作用,推薦結(jié)果也更符合預(yù)期。
?
(1)隨著期刊融媒體發(fā)展和知識(shí)服務(wù)需求的不斷提高,為用戶提供論文推薦服務(wù)的精準(zhǔn)度成為關(guān)鍵指標(biāo)。為此,設(shè)計(jì)并實(shí)現(xiàn)了融合礦業(yè)期刊論文數(shù)據(jù)和數(shù)據(jù)倉(cāng)庫(kù)技術(shù)的離線期刊論文推薦方法。本研究方法在數(shù)據(jù)倉(cāng)庫(kù)維度建模的基礎(chǔ)上,利用維度融合加權(quán)算法綜合對(duì)期刊論文數(shù)據(jù)進(jìn)行離線計(jì)算并進(jìn)行在線推薦,當(dāng)用戶搜索論文時(shí),能根據(jù)用戶所需快速準(zhǔn)確地提供相關(guān)文獻(xiàn)推薦,提高用戶的使用黏性。目前,該數(shù)據(jù)倉(cāng)庫(kù)模型已上線應(yīng)用,為論文的相關(guān)推薦工作提供技術(shù)支持。
(2)該研究方法在后期工作中會(huì)將論文其他相關(guān)部分納入論文推薦的分析維度中,同時(shí)將引入SparkStreaming、Flink等實(shí)時(shí)在線計(jì)算引擎,實(shí)現(xiàn)對(duì)搜索論文的實(shí)時(shí)在線推薦。