2012-10-12 80 views
3

我想創建一個使用關於節目的信息的節目推薦,所以我相信這是基於內容的。我希望有人選擇他們觀看過的節目,並根據他們的內容推薦相似的節目。Mahout基於內容的推薦

目前我的數據文件看起來像這樣

Code   Genre 
1260064148537,NOGENRE 
1260064149243,Drama 
1260064149741,Spoof 
1260064764631,Classical 
12600647412748,HipHopRnB&Dancehall 
126006483593,NOGENRE 
1260065049943,NOGENRE 
12600705429,Sketch 
1260070324431,News 
126007032486,Sport 
... 

我寫我自己的ItemSimilarity找到相似的風格,但我不知道是如何使用的DataModel我的數據,我有一個長和一個字符串,然後如何將其發送給推薦人。我是否必須編寫自己的DataModel?如果是的話,我該怎麼做呢?

回答

4

第一個問題是您是否有任何其他數據將用戶連接到節目。如果你不這樣做,那麼你實際上並沒有推薦問題。這只是一個類似項目的問題。你推薦類似於用戶現在看的東西。

當然,你必須定義相似性。如果你所擁有的只是每個節目的單一標籤,除了說擁有相同標籤的情況下它們是相似的,否則沒有多少可以做。您可以使用ItemSimilarity並迭代所有項目(可能預先計算)來計算與當前項目最相似的內容。

當然,如果您的相似度僅爲0或1,具體取決於它們是否共享標籤,那甚至不是相似性問題。這只是搜索。找到相同類別的東西,你就完成了。

當你有用戶項目數據的時候,推薦人會進入遊戲。您可以使用這種數據來製作ItemSimilarity,然後使用該數據加上用戶項目數據(也可以是查看計數等)來製作推薦人。但我也認爲你必須評估你是否可以獲得更豐富的標籤數據;如果是的話,你當然可以做出更好的相似性指標

(因爲上述原因,您不會使用這個輸入DataModel但我應該注意,您不能使用字符串標識符,它們必須是數字,可以使用帶有一些額外工作的字符串,但它不是這是值得的。)

+0

謝謝肖恩。目前我只使用Genre作爲測試,但最終我會添加更多,如Channel和Director。我會計算相似之處,如果相同類型將相似度加0.5,如果相同通道將0.3加到相似度等等,那麼我可以提出更好的建議。 我唯一需要的用戶信息是如果他們觀看了節目,那麼對於觀看的節目只會是1,或者對於未觀看的節目只有0。 我製作了一個非常粗糙的原型,沒有使用推薦器或數據模型,但是對於我正在使用的大量演出(約38,000)而言,它非常緩慢並且內存密集。 – user1740655

+1

@ user1740655對於這種情況,您可能需要查看使用圖形數據庫推薦的東西 – ulkas

相關問題