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