基于LUCENE實(shí)現(xiàn)自己的推薦引擎
![](http://image.woshipm.com/wp-files/img/67.jpg)
采用基于數(shù)據(jù)挖掘的算法來(lái)實(shí)現(xiàn)推薦引擎是各大電子商務(wù)網(wǎng)站、SNS社區(qū)最為常用的方法,推薦引擎常用的Content-Based推薦算法及協(xié)同過(guò)濾算法(Item-Based、User-based在電子商務(wù)推薦系統(tǒng)入門(mén)v2.0、電子商務(wù)推薦系統(tǒng)入門(mén)基礎(chǔ)中已經(jīng)有所闡述。但從實(shí)際應(yīng)用來(lái)看,對(duì)于大部分中小型企業(yè)來(lái)說(shuō),要在電子商務(wù)系統(tǒng)完整采用以上算法有很大的難度。
1、常用推薦引擎算法問(wèn)題
1)、相對(duì)成熟、完整、現(xiàn)成的開(kāi)源解決方案較少
粗略分來(lái),目前與數(shù)據(jù)挖掘及推薦引擎相關(guān)的開(kāi)源項(xiàng)目主要有如下幾類(lèi):
數(shù)據(jù)挖掘相關(guān):主要包括Weka、R-Project、Knime、RapidMiner、Orange 等
文本挖掘相關(guān):主要包括OpenNLP、LingPipe、FreeLing、GATE 等,具體可以參考LingPipe’s Competition
推薦引擎相關(guān):主要包括Apache Mahout、Duine framework、Singular Value Decomposition (SVD) ,其他包可以參考Open Source Collaborative Filtering Written in Java
搜索引擎相關(guān):Lucene、Solr、Sphinx、Hibernate Search等
2)、常用推薦引擎算法相對(duì)復(fù)雜,入門(mén)門(mén)檻較低
3)、常用推薦引擎算法性能較低,并不適合海量數(shù)據(jù)挖掘
以上這些包或算法,除了Lucene/Sor相對(duì)成熟外,大部分都還處于學(xué)術(shù)研究使用,并不能直接應(yīng)用于互聯(lián)網(wǎng)大規(guī)模的數(shù)據(jù)挖掘及推薦引擎引擎使用。
2、采用Lucene實(shí)現(xiàn)推薦引擎的優(yōu)勢(shì)
對(duì)很多眾多的中小型網(wǎng)站而言,由于開(kāi)發(fā)能力有限,如果有能夠集成了搜索、推薦一體化的解決方案,這樣的方案肯定大受歡迎。采用Lucene來(lái)實(shí)現(xiàn)推薦引擎具有如下優(yōu)勢(shì):
1)、Lucene 入門(mén)門(mén)檻較低,大部分網(wǎng)站的站內(nèi)搜索都采用了Lucene
2)、相對(duì)于協(xié)同過(guò)濾算法,Lucene性能較高
3)、Lucene對(duì)Text Mining、相似度計(jì)算等相關(guān)算法有很多現(xiàn)成方案
在開(kāi)源的項(xiàng)目中,Mahout或者Duine Framework用于推薦引擎是相對(duì)完整的方案,尤其是Mahout 核心利用了Lucene,因此其架構(gòu)很值得借鑒。只不過(guò)Mahout目前功能還不是很完整,直接用其實(shí)現(xiàn)電子商務(wù)網(wǎng)站的推薦引擎尚不是很成熟。只不過(guò)從Mahout實(shí)現(xiàn)可以看出采用Lucene實(shí)現(xiàn)推薦引擎是一種可行方案。
3、采用Lucene實(shí)現(xiàn)推薦引擎需要解決的核心問(wèn)題
Lucene擅長(zhǎng)Text Mining較為擅長(zhǎng),Lucene在contrib包中提供了MoreLikeThis功能,可以較為容易實(shí)現(xiàn)Content-Based的推薦,但對(duì)于涉及用戶協(xié)同過(guò)濾行為的結(jié)果(所謂的Relevance Feedback),Lucene目前并沒(méi)有好的解決方案。需要在Lucene中內(nèi)容相似算法中加入用戶協(xié)同過(guò)濾行為對(duì)因素,將用戶協(xié)同過(guò)濾行為結(jié)果轉(zhuǎn)化為L(zhǎng)ucene所支持的模型。
4、推薦引擎的數(shù)據(jù)源
電子商務(wù)網(wǎng)站與推薦引擎相關(guān)典型的行為:
- 購(gòu)買(mǎi)本商品的顧客還買(mǎi)過(guò)
- 瀏覽本商品的顧客還看過(guò)
- 瀏覽更多類(lèi)似商品
- 喜歡此商品的人還喜歡
- 用戶對(duì)此商品的平均打分
因此基于Lucene實(shí)現(xiàn)推薦引擎主要要處理如下兩大類(lèi)的數(shù)據(jù)
1)、內(nèi)容相似度
例如:商品名稱(chēng)、作者/譯者/制造商、商品類(lèi)別、簡(jiǎn)介、評(píng)論、用戶標(biāo)簽、系統(tǒng)標(biāo)簽
2)、用戶協(xié)同行為相似度
例如:打標(biāo)簽、購(gòu)買(mǎi)商品、點(diǎn)擊流、搜索、推薦、收藏、打分、寫(xiě)評(píng)論、問(wèn)答、頁(yè)面停留時(shí)間、所在群組等等
5、實(shí)現(xiàn)方案
5.1、內(nèi)容相似度
基于Lucene MoreLikeThis實(shí)現(xiàn)即可。
5.1、對(duì)用戶協(xié)同行為的處理
1)、用戶每一次協(xié)同行為都使用lucene來(lái)進(jìn)行索引,每次行為一條記錄
2)、索引記錄中包含如下重要信息:
商品名、商品id、商品類(lèi)別、商品簡(jiǎn)介、標(biāo)簽等重要特征值、用戶關(guān)聯(lián)行為的其他商品的特征元素、商品縮略圖地址、協(xié)同行為類(lèi)型(購(gòu)買(mǎi)、點(diǎn)擊、收藏、評(píng)分等)、Boost值(各協(xié)同行為在setBoost時(shí)候的權(quán)重值)
3)、對(duì)評(píng)分、收藏、點(diǎn)擊等協(xié)同行為以商品特征值(標(biāo)簽、標(biāo)題、概要信息)來(lái)表征
4)、不同的協(xié)同行為類(lèi)型(例如購(gòu)買(mǎi)、評(píng)分、點(diǎn)擊)設(shè)置不同的值setBoost
5)、搜索時(shí)候采用Lucene MoreLikeThis算法,將用戶協(xié)同轉(zhuǎn)化為內(nèi)容相似度
以上方案只是基于Lucene來(lái)實(shí)現(xiàn)推薦引擎最為簡(jiǎn)單的實(shí)現(xiàn)方案,方案的準(zhǔn)確度及細(xì)化方案以后再細(xì)說(shuō)。
更為精細(xì)的實(shí)現(xiàn),可以參考Mahout的算法實(shí)現(xiàn)來(lái)優(yōu)化。
來(lái)源:http://www.yeeach.com
- 目前還沒(méi)評(píng)論,等你發(fā)揮!