我有一個由Lucene索引的文章數據庫,按用戶的標籤和mahout分類。文章將有一定的分數來標記(用戶可以同意或不同意標籤,由mahout發現的標籤將被視爲與用戶相同)。使用Mahout進行全文個性化搜索
我想從配置文件和交互歷史記錄中找出用戶的興趣(可能對某個標籤感興趣)。
如何儲存用戶的興趣?
如何使用用戶的興趣對搜索結果進行排序或篩選?
我的方法可行嗎?可行?可擴展的?
我可以使用什麼樣的技術和算法?請建議!
我有一個由Lucene索引的文章數據庫,按用戶的標籤和mahout分類。文章將有一定的分數來標記(用戶可以同意或不同意標籤,由mahout發現的標籤將被視爲與用戶相同)。使用Mahout進行全文個性化搜索
我想從配置文件和交互歷史記錄中找出用戶的興趣(可能對某個標籤感興趣)。
如何儲存用戶的興趣?
如何使用用戶的興趣對搜索結果進行排序或篩選?
我的方法可行嗎?可行?可擴展的?
我可以使用什麼樣的技術和算法?請建議!
這聽起來很像搜索問題,而不是推薦問題。您主要根據標籤對搜索結果進行排序和過濾。因此,我認爲Lucene通常是部署的工具,而不是Mahout。 (雖然使用Mahout分類器學習標籤是非常正確的。)
如果你真的想把這想象成推薦問題,我可能會說你的項目是標籤。任何時候你與一個標籤進行交互,如查看一個標籤爲X,Y和Z的頁面,那表明你對「項目」X,Y和Z更感興趣。然後推薦人的問題是建議新的標籤利益。
您可以嘗試使用與標記交互的簡單計數作爲數字「評級」,但我認爲這不會在推薦程序上下文中產生很好的結果。使用計數記錄更好,但仍然感覺錯誤。您可以忽略交互計數,只使用用戶和標記曾經交互過的事實,或者不使用「布爾首選項」。
與我所知最匹配的推薦算法模型是您在ParallelALSFactorizationJob中看到的交替最小二乘模型。我不知道這對你是否可用,但如果你有時間和傾向,那就是我要調查的算法。它的輸入更像是一種「互動力量」,而不是一種評級,它會這樣對待,這就是你在這裏所得到的。
很多時候,讓用戶明確地說出他們感興趣的標籤是很容易的。例如,這就是堆棧溢出。如果標籤是他們感興趣的標籤,您可以將分數提高一些。
如果您想要做更隱含的事情,Mahout推薦使用FAQ。
感謝您的回答。我建議您提出新的感興趣的標籤。但是有沒有算法接受用戶的文章和興趣分類作爲輸入來輸出一些有意義的信息來對搜索結果進行排序和過濾? – 2012-03-13 02:58:41
如果您知道文章中包含哪些標籤以及與用戶一起使用哪些標籤,這是一個簡單的搜索問題。返回與給定用戶重疊最多的項目。你可以使用對數似然相似性度量,也許這就是Mahout。 – 2012-03-13 11:27:08