如何實現基于內容和用戶畫像的個性化推薦
基于內容和用戶畫像的個性化推薦,有兩個實體:內容和用戶。需要有一個聯系這兩者的東西,即為標簽。內容轉換為標簽即為內容特征化,用戶則稱為用戶特征化。
因此,對于此種推薦,主要分為以下幾個關鍵部分:
- 標簽庫
- 內容特征化
- 用戶特征化
- 隱語義推薦
綜合上面講述的各個部分即可實現一個基于內容和用戶畫像的個性化推薦系統。如下圖所示:
標簽庫
標簽是聯系用戶與物品、內容以及物品、內容之間的紐帶,也是反應用戶興趣的重要數據源。標簽庫的最終用途在于對用戶進行行為、屬性標記。是將其他實體轉換為計算機可以理解的語言關鍵的一步。
標簽庫則是對標簽進行聚合的系統,包括對標簽的管理、更新等。
一般來說,標簽是以層級的形式組織的。可以有一級維度、二級維度等。
標簽的來源主要有:
- 已有內容的標簽
- 網絡抓取流行標簽
- 對運營的內容進行關鍵詞提取
對于內容的關鍵詞提取,使用結巴分詞 + TFIDF即可。此外,也可以使用TextRank來提取內容關鍵詞。
內容特征化
內容特征化即給內容打標簽。目前有兩種方式:
- 人工打標簽
- 機器自動打標簽
針對機器自動打標簽,需要采取機器學習的相關算法來實現,即針對一系列給定的標簽,給內容選取其中匹配度***的幾個標簽。這不同于通常的分類和聚類算法。可以采取使用分詞 + Word2Vec來實現,過程如下:
- 將文本語料進行分詞,以空格,tab隔開都可以,使用結巴分詞。
- 使用word2vec訓練詞的相似度模型。
- 使用tfidf提取內容的關鍵詞A,B,C。
- 遍歷每一個標簽,計算關鍵詞與此標簽的相似度之和。
- 取出TopN相似度***的標簽即為此內容的標簽。(N這里取3)
用戶特征化
用戶特征化即為用戶打標簽。通過用戶的行為日志和一定的模型算法得到用戶的每個標簽的權重。
- 用戶對內容的行為:點擊、不敢興趣、瀏覽
- 對內容發生的行為可以認為對此內容所帶的標簽的行為
- 用戶的興趣是時間衰減的,即離當前時間越遠的興趣比重越低。時間衰減函數使用1/[log(t)+1], t為事件發生的時間距離當前時間的大小
- 要考慮到熱門內容會干預用戶的標簽,需要對熱門內容進行降權。使用click/pv來降低熱門內容的權重
隱語義推薦
有了內容特征和用戶特征,可以使用隱語義模型進行推薦。這里可以使用其簡化形式,以達到實時計算的目的。
用戶對于某一個內容的興趣度(可以認為是CTR):
其中i=1…N是內容具有的標簽,m(ci)指的內容c和標簽i的關聯度(目前都為1),n(ui)指的是用戶u的標簽i的權重值,q©指的是內容c的質量,暫時使用點擊率表示。