肖 巍,唐東凱,孫境棋,劉澤豪
(長春工業大學 計算機科學與工程學院,吉林 長春 130012)
?
基于Lucene和協同過濾算法的知識推送
肖 巍,唐東凱,孫境棋,劉澤豪
(長春工業大學 計算機科學與工程學院,吉林 長春 130012)
將Lucene檢索技術、IKAnalyzer分詞器以及Tika文本提取技術相結合進行智能文件檢索及分類。然后根據用戶的檢索結果對文件關鍵字進行權值設置,用戶關注度越高,則關鍵字權值越大。使用協同過濾算法根據用戶查找的內容對用戶關注度高的文件進行推送。
Lucene; IKAnalyzer; Tika; 協同過濾算法
互聯網上的學術論文、期刊文獻、專利數據庫、網絡媒體、社交平臺(微信、微博、博客、論壇)等載體上蘊藏著大量的專家研究成果、學術觀點、工作動態及最新言論等信息。在知識的不斷增加過程中,由于知識的來源不同、用途不同、載體不同等,往往導致知識的時間鏈條錯亂、關聯知識無法有效檢索、各類知識無法綜合運用等問題的出現,伴隨知識的持續積累,這種問題愈發突出。如何能夠在快速有效地檢索出所需知識的同時推送相關知識內容已經成為目前研究的重點。
智能檢索采用Lucene搜索技術、IKAnalyzer分詞器以及Tika文本提取三大技術相結合,提高了檢索精度,節省了檢索時間。Lucene是一個高性能的全文檢索工具[1]。Lucene包含了兩個主要的服務:索引和檢索。
1.1 Tika文本提取
文本索引是Lucene重點構造的一個索引區域,為高性能內容查詢而創建的知識庫,并提供了豐富的API,可以與存儲在索引中的內容交互,但是Lucene在創建索引時無法滿足深入到文件內容中建立文件內容的索引[2-3]。
使用Tika文本提取技術對文件內容進行索引。當一個文件傳到Tika檢測文件類型時,一旦文檔類型是已知的,從解析器庫中選擇合適的解析器解析文件內容,提取文本。通過使用Tika文本提取技術,Lucene就可以對文件里面的內容創建索引,提高了檢索的精度。
1.2 檢索過程
Lucene技術中存在著大量的檢索方式,可以進行精確搜索以及模糊搜索[4-5]。采用Lucene中的BoolenQuery()為整體框架,通過向其中傳入BooleanClause.Occur.MUST,BooleanClause.Occur.SHOULD,BooleanClause.Occur.MUST_NOT等參數,控制搜索結果中是否包含所輸入的關鍵字,同時在BoolenQuery()中嵌入TermQuery()搜索,根據選擇的范圍進行精確搜索,例如文章的標題、作者、內容等。BoolenQuery()中又嵌入了FuzzyQuery(),選擇模糊搜索時,通過調節模糊的程度,自動向FuzzyQuery()中傳遞兩個參數,分別控制搜索關鍵字的至少匹配字數和文字間的間隔,從而實現模糊搜索。在BoolenQuery()中加入了TermRangeQuery(),通過向其中傳入上限及下限兩個數值來控制搜索某一區間的文件,如文件大小、日期等。
1.3 IKAnalyzer分詞器
Lucene中自帶了多種分詞器,但是對于中文來說效果并不是很好[6]。WhitespaceAnalyzer僅僅是去除空格,對字符沒有lowcase化,不支持中文,并且不對生成的詞匯單元進行其他規范化處理;SimpleAnalyzer會去掉數字類型的字符;StopAnalyzer不支持中文?;谏鲜鰡栴},選擇IKAnalyzer分詞器對中文分詞效果比較好。具體如下:
IKAnalyzer分詞器采用了特有的“正向迭代最細粒度切分算法”,具有60萬字/s的高速處理能力;采用了多子處理器分析模式,支持中文等多種分詞處理;支持用戶詞典擴展定義。針對Lucene全文檢索優化的查詢分析器IKQueryParser;采用歧義分析算法優化查詢關鍵字的搜索排列組合,能極大地提高Lucene檢索的準確率。
1.4 知識圖譜
對所有知識進行分類,根據不同分類畫出知識圖譜,如圖1所示。

圖1 知識圖譜
根據用戶的檢索結果對文件關鍵字進行權值設置,用戶關注度越高,則關鍵字權值越大。在用戶檢索某一關鍵字時,先根據知識分類在該領域內判斷,然后再根據關鍵字的用戶關注度進行推送。
協同過濾算法是推送系統領域最著名的算法[7-8]。簡單來說,就是當一個用戶A需要個性化推送時,先找到和他興趣相似的用戶群體G,然后把G關注的、并且A沒有關注過的知識推送給A[9-10]。
可以將該算法分為兩個步驟進行:
1)發現興趣相似用戶。使用余弦相似度計算兩個用戶之間的相似度。設N(u)為用戶u關注的知識集合,N(v)為用戶v關注的知識集合,那么u和v的相似度可以用下式計算:
(1)
假設目前共用4個用戶A、B、C、D;共有5條知識a、b、c、d、e。用戶與知識的關系(用戶關注知識)如下:
A:abc
B:ac
C:be
D:cde
為了能更好地計算用戶之間的相似度,需要建立“知識-用戶”的倒排:
a:AB
b:AC
c:BD
d:AD
e:CD
然后對于每條知識,關注他的用戶兩兩之間相同知識加1。例如關注知識a的用戶有A和B,那么在矩陣中他們兩兩加1,即

計算用戶兩兩之間的相似度,上面的矩陣僅僅代表公式的分子部分。整體矩陣表示為:
計算所有用戶的相似度,找到與目標用戶興趣相似的用戶集合。
2)推薦知識。首先需要從矩陣中找出與目標用戶u最相似的K個用戶,用集合S(u,K)表示,將S中用戶關注的知識全部提取出來,并去除u已經關注的知識。對于每個知識i,用戶u對它感興趣的程度按下式計算:
(2)
式中:rvi——用戶v對i的關注程度。
假設現在要給A推薦知識,選取K(K=3)個相似用戶,相似用戶則是B、C、D,那么他們關注過并且A沒有關注過的知識有c、e,分別計算p(A,c)和p(A,e):
得出用戶A對c和e的關注程度一樣,根據得分排序,找出K個與目標用戶最相似的鄰居。
在這些鄰居關注的知識中,根據鄰居與用戶的遠近程度算出每一條知識的推薦度。根據每一條知識的推薦度高低給目標用戶推送知識。
使用30萬條數據對Lucene+IKanalyzer+Tika和Lucene檢索的準確度和速度進行測試,測試結果見表1。

表1 檢索準確度及速度結果
使用30萬條數據對檢索后進行推送和未經過檢索處理進行推送測試,測試結果見表2。

表2 推送準確度結果 %
實驗結果表明,使用Lucene+IKanalyzer+Tika三種技術比使用Lucene的準確度更高,速度更快。檢索后使用協同過濾算法進行推送比不進行檢索使用協同過濾推送的準確率高。
使用Lucene檢索技術、IKAnalyzer分詞器以及Tika文本提取三種技術相結合的方式進行智能檢索并對文件進行分類,分類后根據用戶的檢索結果對文件關鍵字進行權值設置,用戶關注度越高,則關鍵字權值越大。實驗結果表明,使用三種技術結合比只使用Lucene一種檢索速度更快,準確度更高?;谌N技術結合檢索后的結果,并根據用戶查找的內容和知識的關注度,使用協同過濾算法進行推薦,推薦的結果更滿足用戶的需求。
[1] 李永春,丁華福.Lucene的全文檢索的研究與應用[J].計算機技術與發展,2010,20(2):12-15.
[2] 鄭榕增,林世平.基于Lucene的中文倒排索引技術的研究[J].計算機技術與發展,2010,20(3):80-83.
[3] 王歡,孫瑞志.基于領域本體和Lucene的語義檢索系統研究[J].計算機應用,2010,30(6):1655-1657.
[4] 高文舉,李曉偉,孫春燕,等.基于全文檢索Apache Lucene引擎的原理與流程研究[J].長春工業大學學報:自然科學版,2008,29(4):424-427.
[5] 張俊,李魯群,周熔.基于Lucene的搜索引擎的研究與應用[J].計算機技術與發展,2013,23(6):230-232.
[6] 義天鵬,陳啟安.基于Lucene的中文分析器分詞性能比較研究[J].計算機工程,2012,38(22):279-282.
[7] Zhao X,Niu Z,Chen W. Opinion-based collaborative filtering to solve popularity bias in recommender systems[C]//International Conference on Database and Expert Systems Applications. Springer Berlin Heidelberg,2013:426-433.
[8] Yoshida T,Irie G,Satou T,et al. Improving item recommendation based on social tag ranking[C]//International Conference on Multimedia Modeling. Berlin:Springer Berlin Heidelberg,2012:161-172.
[9] 孫光福,吳樂,劉淇,等.基于時序行為的協同過濾推薦算法[J].軟件學報,2013,24(11):2721-2733.
[10] 劉青文.基于協同過濾的推薦算法研究[D].合肥:中國科技大學,2013.
Knowledge push based on Lucene and collaborative filtering algorithm
XIAO Wei,TANG Dongkai,SUN Jingqi,LIU Zehao
(School of Computer Science & Engineering,Changchun University of Technology,Changchun 130012,China)
Combing Luceneindexing with IKAnalyzer and Tika,intelligent document retrieval and classification is realized. The document keyword weight is setaccording to the classification. The higher the user attention degree,the greater the weight of the keywords. With the collaborative filtering algorithm,the knowledge with more attention will be pushed forward.
Lucene; IKAnalyzer; Tika; collaborative filtering algorithm.
2016-06-20
國家自然科學基金資助項目(61303132)
肖 巍(1980-),女,漢族,吉林長春人,長春工業大學講師,碩士,主要從事數據挖掘與人工智能方向研究,E-mail:xiaowei@ccut.edu.cn.
10.15923/j.cnki.cn22-1382/t.2016.5.18
TP 316
A
1674-1374(2016)05-0503-04