邱煜炎
(蚌埠醫(yī)學(xué)院 圖文信息中心,安徽 蚌埠233000)
機(jī)構(gòu)知識(shí)庫(kù)(Institutional Repository)又稱(chēng)機(jī)構(gòu)庫(kù)、機(jī)構(gòu)倉(cāng)儲(chǔ)、機(jī)構(gòu)典藏等,是指大學(xué)或研究機(jī)構(gòu)通過(guò)網(wǎng)絡(luò)來(lái)收集、保存、管理、檢索和利用其知識(shí)資源的數(shù)據(jù)庫(kù)群。[1]隨著開(kāi)放存取運(yùn)動(dòng)的發(fā)展,機(jī)構(gòu)知識(shí)庫(kù)已經(jīng)成為促進(jìn)科技信息共享、提升機(jī)構(gòu)知識(shí)管理和利用的重要力量,已經(jīng)被全球?qū)W術(shù)界廣泛接受并形成普遍共識(shí)。[2]
在國(guó)內(nèi),大型的機(jī)構(gòu)知識(shí)庫(kù)由于知識(shí)規(guī)模量大、分類(lèi)詳細(xì)、檢索便捷,因此普及率較高[3];而對(duì)于單位自建的機(jī)構(gòu)知識(shí)庫(kù),如果不能精確地推送用戶(hù)感興趣的信息,將很難建立穩(wěn)定的用戶(hù)群體。因此,為用戶(hù)提供個(gè)性化精準(zhǔn)實(shí)時(shí)的知識(shí)推送服務(wù)是提升機(jī)構(gòu)知識(shí)庫(kù)利用率的有效方法。
針對(duì)機(jī)構(gòu)知識(shí)庫(kù)的個(gè)性化推薦研究,國(guó)內(nèi)學(xué)者主要集中在系統(tǒng)設(shè)計(jì)和算法模型兩方面。曹畋[4]針對(duì)中小型機(jī)構(gòu)知識(shí)庫(kù)的特點(diǎn),提出一種綜合性的智能推薦系統(tǒng),通過(guò)分析用戶(hù)行為數(shù)據(jù)對(duì)用戶(hù)可能的偏好或有價(jià)值信息進(jìn)行預(yù)測(cè)推薦。姜?jiǎng)P曦[5]利用占機(jī)構(gòu)知識(shí)資源較大比重的隱性知識(shí),針對(duì)用戶(hù)隱性偏好構(gòu)建基于社會(huì)網(wǎng)絡(luò)模型的專(zhuān)家推薦系統(tǒng)。卞藝杰等[6]針對(duì)機(jī)構(gòu)知識(shí)庫(kù)資源推薦準(zhǔn)確率低的問(wèn)題,提出基于機(jī)構(gòu)知識(shí)庫(kù)用戶(hù)模型隱性信息和顯性信息的興趣權(quán)重計(jì)算公式,提出了個(gè)性化推薦的總體架構(gòu)。
綜上所述,國(guó)內(nèi)學(xué)者對(duì)于機(jī)構(gòu)知識(shí)庫(kù)推薦領(lǐng)域的研究都以用戶(hù)興趣建模作為首要切入點(diǎn)。但是,無(wú)論是模型還是算法,數(shù)據(jù)的規(guī)模決定了推薦質(zhì)量的好壞。因此,筆者在前人研究的基礎(chǔ)上,結(jié)合大數(shù)據(jù)數(shù)據(jù)量大、多維度、實(shí)時(shí)性高的特點(diǎn),遵循機(jī)構(gòu)知識(shí)庫(kù)開(kāi)源軟件DSpace的開(kāi)發(fā)原則,引入基于Lambda架構(gòu)的大數(shù)據(jù)平臺(tái)。利用大數(shù)據(jù)Hadoop[7]生態(tài)組件對(duì)用戶(hù)的行為數(shù)據(jù)進(jìn)行采集、匯總、清洗,并融合DSpace業(yè)務(wù)數(shù)據(jù),在統(tǒng)一數(shù)據(jù)源的基礎(chǔ)上,采用本體加權(quán)向量模型,對(duì)用戶(hù)興趣模型進(jìn)行離線訓(xùn)練。此外,在離線推薦的基礎(chǔ)上,利用大數(shù)據(jù)實(shí)時(shí)流技術(shù)對(duì)用戶(hù)的機(jī)構(gòu)知識(shí)庫(kù)在線日志數(shù)據(jù)做實(shí)時(shí)過(guò)濾,獲取用戶(hù)當(dāng)前所需資源信息,融合離線推薦和實(shí)時(shí)推薦結(jié)果,實(shí)現(xiàn)對(duì)用戶(hù)隱式行為進(jìn)行實(shí)時(shí)推薦反饋的功能。
用戶(hù)在機(jī)構(gòu)數(shù)據(jù)庫(kù)使用過(guò)程中,會(huì)產(chǎn)生大量顯式和隱式行為數(shù)據(jù)。其中顯式行為數(shù)據(jù)包括用戶(hù)所屬的專(zhuān)業(yè)領(lǐng)域、輸入的興趣項(xiàng)以及搜索記錄、用戶(hù)對(duì)資源評(píng)價(jià)等;隱式行為數(shù)據(jù)分為點(diǎn)擊記錄、瀏覽記錄以及頁(yè)面駐留時(shí)間等。機(jī)構(gòu)知識(shí)庫(kù)開(kāi)源軟件DSpace無(wú)法獲取用戶(hù)隱式行為日志,并做到有效分析,因此無(wú)法滿(mǎn)足系統(tǒng)實(shí)時(shí)推薦的需求。本文的設(shè)計(jì)思想是通過(guò)對(duì)用戶(hù)顯式和隱式行為進(jìn)行綜合分析,建立用戶(hù)興趣模型庫(kù),將資源文本特征模型與用戶(hù)興趣模型進(jìn)行匹配,從機(jī)構(gòu)知識(shí)庫(kù)中查找出與用戶(hù)模型相匹配的資源。同時(shí),在傳統(tǒng)離線推薦的基礎(chǔ)上,實(shí)時(shí)分析用戶(hù)在線行為,并融合離線推薦模型,及時(shí)反饋針對(duì)用戶(hù)當(dāng)前行為的實(shí)時(shí)推薦列表。
傳統(tǒng)單機(jī)環(huán)境下的推薦系統(tǒng)無(wú)法滿(mǎn)足大數(shù)據(jù)規(guī)模資源的存儲(chǔ)與計(jì)算需求,Hadoop平臺(tái)作為大數(shù)據(jù)技術(shù)的事實(shí)標(biāo)準(zhǔn)能夠處理海量數(shù)據(jù)。Lambda[8]架構(gòu)由Storm項(xiàng)目發(fā)起人Nathan Marz提出,集成了Hadoop、Kafka、Storm、Spark、HBase、Redis等各類(lèi)大數(shù)據(jù)組件,提供了一個(gè)結(jié)合實(shí)時(shí)數(shù)據(jù)和Hadoop預(yù)先計(jì)算的數(shù)據(jù)環(huán)境混合平臺(tái),具有高容錯(cuò)、低延時(shí)和可擴(kuò)展的特點(diǎn),見(jiàn)圖1。
圖1 Lambda架構(gòu)
本文采納了Lambda架構(gòu)的技術(shù)特點(diǎn),設(shè)計(jì)了融合歷史數(shù)據(jù)離線計(jì)算、分布式日志采集、推薦數(shù)據(jù)及時(shí)反饋的機(jī)構(gòu)知識(shí)庫(kù)推薦系統(tǒng),見(jiàn)圖2。
圖2 基于Lambda架構(gòu)的機(jī)構(gòu)知識(shí)庫(kù)實(shí)時(shí)推薦系統(tǒng)
基于Lambda架構(gòu)的機(jī)構(gòu)知識(shí)庫(kù)實(shí)時(shí)推薦系統(tǒng)主要分為三大模塊:數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊和實(shí)時(shí)推薦模塊。
數(shù)據(jù)采集來(lái)自?xún)刹糠謹(jǐn)?shù)據(jù):關(guān)系型數(shù)據(jù)庫(kù)PostgreSQL和日志采集工具Flume。機(jī)構(gòu)知識(shí)庫(kù)軟件DSpace的用戶(hù)服務(wù)接口包括瀏覽、檢索、定制、訂閱、RSS,并將用戶(hù)顯式行為數(shù)據(jù)存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)PostgreSQL中。此外利用分布式日志收集工具Flume,實(shí)現(xiàn)對(duì)用戶(hù)點(diǎn)擊、瀏覽、頁(yè)面有駐留時(shí)間的日志進(jìn)行收集。系統(tǒng)植入在應(yīng)用網(wǎng)關(guān)處的日志監(jiān)控可以實(shí)時(shí)監(jiān)測(cè)日志文件的變化,并根據(jù)偏移量,讀取最新日志信息,然后將日志輸出到 Redis中緩存起來(lái)。
數(shù)據(jù)處理分為離線和在線計(jì)算兩部分。離線計(jì)算采用Spark[9]平臺(tái)構(gòu)建用戶(hù)興趣模型,其主要思路是將用戶(hù)行為數(shù)據(jù)對(duì)應(yīng)的項(xiàng)目所匹配的本體關(guān)鍵詞進(jìn)行提取,根據(jù)不同的行為權(quán)重構(gòu)建用戶(hù)關(guān)鍵詞向量矩陣,以此將最重要的TopN向量作為該用戶(hù)興趣模型。在進(jìn)行離線計(jì)算前,需要將數(shù)據(jù)進(jìn)行匯總,關(guān)系型數(shù)據(jù)庫(kù)PostgreSQL的數(shù)據(jù)可以通過(guò)Sqoop工具加載到分布式數(shù)據(jù)庫(kù)HBase中。而日志緩存數(shù)據(jù)庫(kù)Redis利用消息分發(fā)工具Kafka接入實(shí)時(shí)處理框架Spark Steaming進(jìn)行日志過(guò)濾,抽取出用戶(hù)點(diǎn)擊行為、用戶(hù)瀏覽行為和頁(yè)面駐留時(shí)間數(shù)據(jù),寫(xiě)入HBase數(shù)據(jù)庫(kù)中。
系統(tǒng)實(shí)時(shí)推薦主要對(duì)用戶(hù)行為進(jìn)行及時(shí)響應(yīng)處理。本文針對(duì)用戶(hù)的每次訪問(wèn),可以通過(guò)Spark Streaming實(shí)時(shí)過(guò)濾日志信息,抽出所需要的信息,獲得與該項(xiàng)目相似的前N位資源列表,并與用戶(hù)興趣模型進(jìn)行混合處理,進(jìn)行重新排序,使得機(jī)構(gòu)知識(shí)庫(kù)可以感知用戶(hù)實(shí)時(shí)行為,提高知識(shí)服務(wù)質(zhì)量。
對(duì)于用戶(hù)興趣模型的表示,文獻(xiàn)[10]提出了基于本體的加權(quán)向量表示方法,是指將本體引入向量空間模型中,向量空間的每個(gè)詞都來(lái)自于本體。因此,本文提出基于本體加權(quán)向量模型的用戶(hù)興趣模型 PM (Personal Model),將用戶(hù)偏好表示為一個(gè)二元組特征向量PM={(c1,w1),(c2,w2)...(cn,wn)}。
對(duì)于(ci,wi,bi),i∈[1,n],n 為興趣總量,Ci表示用戶(hù)的某一興趣項(xiàng),即本體中的概念或?qū)嵗Q(chēng);Wi是用戶(hù)興趣的權(quán)重值,值域?yàn)閇0,1],數(shù)值越高,興趣值越大。用戶(hù)興趣模型初始化值全為0。
用戶(hù)對(duì)機(jī)構(gòu)知識(shí)庫(kù)行為數(shù)據(jù)反映出用戶(hù)的興趣偏好程度,合理的行為量化指標(biāo),決定了推薦模型的質(zhì)量。用戶(hù)行為分為顯式行為和隱式行為兩部分,根據(jù)前人研究[6]發(fā)現(xiàn),顯式行為反映了用戶(hù)的主觀興趣表達(dá),是用戶(hù)的長(zhǎng)期興趣偏好。而隱式行為反映的是即時(shí)興趣表達(dá),具有臨時(shí)性、隨意性的特點(diǎn)。因此,顯式行為偏好權(quán)重要高于隱式行為權(quán)重。
(1)在DSpace平臺(tái)中,用戶(hù)選擇若干初始設(shè)定的本體關(guān)鍵詞作為興趣項(xiàng)Ci,說(shuō)明對(duì)這些領(lǐng)域非常感興趣,對(duì)應(yīng)的權(quán)重Wi值為1。
(2)當(dāng)系統(tǒng)獲取到用戶(hù)的搜索關(guān)鍵詞與本體關(guān)鍵詞Ci匹配時(shí),說(shuō)明用戶(hù)對(duì)這一領(lǐng)域表示出了一定興趣,由于搜索具有臨時(shí)性、隨意性特點(diǎn),因此權(quán)重Wi應(yīng)低于用戶(hù)自己設(shè)定的興趣項(xiàng),記為0.6。
(3)在用戶(hù)主動(dòng)上傳知識(shí)資源的過(guò)程中,通過(guò)已提交的關(guān)鍵詞與本體關(guān)鍵詞匹配,說(shuō)明用戶(hù)對(duì)這一領(lǐng)域表示出極大的興趣,對(duì)應(yīng)的權(quán)重Wi值為0.8。
此外,機(jī)構(gòu)知識(shí)庫(kù)資源可以由若干本體概念來(lái)描述,本文以本體概念的前三位關(guān)鍵詞作為資源的主要描述,每個(gè)資源對(duì)應(yīng)關(guān)鍵詞的首尾位置賦予不同的權(quán)重Pj(j∈[1,2,3]),分別是 1.0,0.8,0.6。 用戶(hù)對(duì)資源興趣度記作 Sk(k∈[1,m],m 為資源的個(gè)數(shù)),因此,用戶(hù)通過(guò)興趣度反饋獲取用戶(hù)興趣項(xiàng)權(quán)重值Wi=Sk*Pj。
(4)用戶(hù)對(duì)資源的顯式行為表現(xiàn)在對(duì)資源的評(píng)價(jià)反饋上,評(píng)價(jià)標(biāo)準(zhǔn)分為不關(guān)注、不太關(guān)注、比較關(guān)注和很關(guān)注四個(gè)層次,對(duì)應(yīng)用戶(hù)對(duì)資源的興趣度Si值為0(不關(guān)注)、0.3(不太關(guān)注)、0.6(比較關(guān)注)、1.0(很關(guān)注)。
(5)通過(guò)Lambda平臺(tái)的Flume日志采集軟件,可以獲取用戶(hù)對(duì)資源的隱式行為數(shù)據(jù),主要表現(xiàn)在對(duì)資源的點(diǎn)擊次數(shù)(記為f)和頁(yè)面駐留時(shí)間(記為t)上,由于點(diǎn)擊行為具有一定偶然性,只有當(dāng)駐留頁(yè)面時(shí)間超過(guò)一定閾值t1時(shí),才能反映出用戶(hù)對(duì)該資源表示出一定的興趣。而且在一段時(shí)間t2內(nèi),用戶(hù)如果對(duì)某一資源點(diǎn)擊次數(shù)增加,說(shuō)明用戶(hù)對(duì)此資源表示出極大的興趣。綜上,得公式如下:
上述公式中,t1時(shí)間為60秒,t2時(shí)間為600秒。用戶(hù)對(duì)資源的興趣度隨著點(diǎn)擊量增加呈緩慢遞增趨勢(shì),因此取對(duì)數(shù)函數(shù)作為興趣度與點(diǎn)擊量的正相關(guān)關(guān)系。 此外,為防止點(diǎn)擊率屬性量綱過(guò)大影響模型計(jì)算結(jié)果,做歸一化處理,公式如下[11]:
在完成以上權(quán)值設(shè)定后,系統(tǒng)平臺(tái)通過(guò)離線計(jì)算構(gòu)建用戶(hù)關(guān)鍵詞興趣模型關(guān)系矩陣UK。
其中,矩陣中元素 UiKj(i∈[1,m],j∈[1,n]),表示第i個(gè)用戶(hù)對(duì)第j個(gè)關(guān)鍵詞的興趣程度值。共有m個(gè)用戶(hù)和n個(gè)關(guān)鍵詞。
對(duì)于資源庫(kù)中的資源,通過(guò)本體關(guān)鍵詞標(biāo)注,可以構(gòu)建資源關(guān)鍵詞描述矩陣IK。
其中,矩陣中元素 IiKj(i∈[1,p],j∈[1,n]),表示第 i個(gè)資源由第j個(gè)關(guān)鍵詞描述的重要程度,在這里,關(guān)鍵詞越靠前,權(quán)值越高。
通過(guò)矩陣乘法運(yùn)算UK*(IK)T可以獲取用戶(hù)資源的興趣權(quán)重矩陣UI。
矩陣UiIj表示第i個(gè)用戶(hù)對(duì)第j個(gè)資源的興趣程度,對(duì)UI矩陣按行進(jìn)行排序,即可生成用戶(hù)離線推薦模型。離線模型訓(xùn)練完畢后,將每個(gè)用戶(hù)的推薦列表寫(xiě)入Redis緩存系統(tǒng),優(yōu)化平臺(tái)性能。平臺(tái)根據(jù)用戶(hù)實(shí)時(shí)點(diǎn)擊行為,取得資源ID,利用離線推薦模型取得與之相似的前5個(gè)資源。最后在Redis緩存系統(tǒng)中找到對(duì)應(yīng)用戶(hù)ID的推薦列表,刪除原有的最后5個(gè)資源,將剛剛計(jì)算的5個(gè)資源放入Redis推薦列表隊(duì)首中。
通過(guò)上述離線推薦和實(shí)時(shí)推薦的融合,完成基于Lambda架構(gòu)的機(jī)構(gòu)知識(shí)庫(kù)實(shí)時(shí)推薦模型,達(dá)到及時(shí)響應(yīng)、實(shí)時(shí)反饋的目的。
本文以蚌埠醫(yī)學(xué)院口腔醫(yī)學(xué)機(jī)構(gòu)知識(shí)庫(kù)作為實(shí)驗(yàn)數(shù)據(jù),該資源包含文獻(xiàn)602篇、視頻資源22部、圖片資源85張;用戶(hù)數(shù)391人,其中包括本科生327人、研究生23人、專(zhuān)業(yè)教師13人、附屬醫(yī)院口腔專(zhuān)業(yè)醫(yī)生28人。
本文實(shí)驗(yàn)環(huán)境如下:6臺(tái)Linux服務(wù)器,版本為CentOS6.5;每臺(tái)服務(wù)器配置8核CPU、16GB內(nèi)存和1TB硬盤(pán)。其中3臺(tái)服務(wù)器用來(lái)搭建Lambda平臺(tái),1臺(tái)服務(wù)器用來(lái)進(jìn)行數(shù)據(jù)采集,1臺(tái)服務(wù)器用于數(shù)據(jù)緩存,1臺(tái)服務(wù)器用來(lái)進(jìn)行前端展示。軟件配置如表1所示。
表1 Lambda架構(gòu)軟件配置列表
為了驗(yàn)證用戶(hù)興趣度模型以及推薦系統(tǒng)的有效性,筆者邀請(qǐng)10位不同角色的用戶(hù)進(jìn)行測(cè)評(píng)。利用推薦系統(tǒng)結(jié)合用戶(hù)在線行為,為用戶(hù)推薦20項(xiàng)資源,并對(duì)推薦結(jié)果進(jìn)行打分。采用信息檢索領(lǐng)域廣泛使用的查準(zhǔn)率(precision)來(lái)評(píng)價(jià)實(shí)驗(yàn)效果。結(jié)果如表2所示。
結(jié)果顯示,10位用戶(hù)對(duì)推薦質(zhì)量的總體評(píng)價(jià)不高,均值為39%。而隨著用戶(hù)對(duì)機(jī)構(gòu)知識(shí)庫(kù)使用頻率的上升,推薦質(zhì)量呈一定的上升趨勢(shì)。
本文設(shè)計(jì)和實(shí)現(xiàn)了大數(shù)據(jù)環(huán)境下基于Lambda架構(gòu)的機(jī)構(gòu)知識(shí)庫(kù)在線推薦系統(tǒng),提出了基于用戶(hù)行為的評(píng)分模型,并將隱式行為添加到評(píng)分模型中,優(yōu)化模型結(jié)構(gòu)。實(shí)驗(yàn)證明,隨著用戶(hù)對(duì)機(jī)構(gòu)知識(shí)庫(kù)使用頻率的上升,推薦系統(tǒng)效果提升明顯。鑒于Lambda架構(gòu)獲取的數(shù)據(jù)具有數(shù)據(jù)量大、實(shí)時(shí)性高、多樣性等優(yōu)勢(shì),下一步工作將引入對(duì)資源描述的特征提取算法,而不僅僅依賴(lài)于用戶(hù)設(shè)置的關(guān)鍵詞作為本體特征進(jìn)行提取,設(shè)計(jì)多模型的數(shù)據(jù)處理方式,進(jìn)一步提升推薦效果。
表2 推薦系統(tǒng)評(píng)估結(jié)果