深度丨從零搭建推薦體系:概述及標(biāo)簽體系搭建(上)
本文闡述整個(gè)推薦體系從0搭建的全流程,也是最近以來(lái)一直深入研究的成果展現(xiàn)。因原文太長(zhǎng),故此切分成3部分發(fā)送,每天發(fā)送1篇。全文結(jié)構(gòu)為:上篇:第零章概述,第一章標(biāo)簽體系搭建;中篇:第三章用戶體系,第四章項(xiàng)目體系,下篇:第五章推薦體系,第六章評(píng)估體系,第七章全文總結(jié),第八章參考資料。
內(nèi)容相對(duì)全而深入,希望有推薦體系搭建意愿的平臺(tái)或者產(chǎn)品經(jīng)理,能夠給予一定的幫助就好。另,求工作。
0. 概述
隨著信息技術(shù)的迅速發(fā)展和信息內(nèi)容的日益增長(zhǎng),“信息過(guò)載”問(wèn)題愈來(lái)愈嚴(yán)重,愈發(fā)帶來(lái)很大的信息負(fù)擔(dān)。推薦系統(tǒng)可以有效緩解此難題,從而得到推崇并加以廣泛應(yīng)用。
簡(jiǎn)單來(lái)說(shuō):推薦系統(tǒng)是通過(guò)挖掘用戶與項(xiàng)目之間的二元關(guān)系,幫助用戶從大量數(shù)據(jù)中發(fā)現(xiàn)其可能感興趣的項(xiàng)目如網(wǎng)頁(yè)、服務(wù)、商品、人等,并生成個(gè)性化推薦以滿足個(gè)性化需求。目前市場(chǎng)上對(duì)于電子商務(wù)的推薦系統(tǒng)有亞馬遜、阿里巴巴、豆瓣網(wǎng)、當(dāng)當(dāng)網(wǎng)等,信息檢索的有谷歌、雅虎、百度等,以及在其它周邊領(lǐng)域廣泛運(yùn)用如移動(dòng)應(yīng)用、電子旅游、互聯(lián)網(wǎng)廣告等。本文只闡述網(wǎng)頁(yè)內(nèi)容,特制新聞方面的項(xiàng)目體系搭建。
研究者認(rèn)為根據(jù)施拉姆信息選擇公式,人們對(duì)媒體的注意或選擇的可能性(然率)與它能夠提供的報(bào)償(價(jià)值)程度成正比,與人們獲得它的代價(jià)(費(fèi)力)程度成反比。也就是說(shuō):人們?cè)敢庥米钚〉拇鷥r(jià)獲取價(jià)值最大的新聞信息。由此,媒體要從認(rèn)知接收方面,減輕受眾的“費(fèi)力”程度,提升信息或傳媒的價(jià)值,樹立品牌意識(shí),形成規(guī)模效應(yīng);擁有與眾不同的品味和特色,將自己在受眾眼中的“可讀”形象轉(zhuǎn)變成“必讀”形象,從而使用戶對(duì)媒介產(chǎn)品形成強(qiáng)烈的信賴感和依賴感,在受眾心中形成穩(wěn)定的獨(dú)特風(fēng)格。
下圖是一般情況下的推薦系統(tǒng)基本框架(圖片取自網(wǎng)絡(luò)):
從最初的數(shù)據(jù)收集,到最末端的展示階段,中間還經(jīng)過(guò)數(shù)據(jù)處理以及生成環(huán)節(jié),處理大多數(shù)所指提取特征初處理,生成一般是指利用特征來(lái)選取相應(yīng)算法進(jìn)行匹配計(jì)算。數(shù)據(jù)的整個(gè)生命周期如下:
也就是從數(shù)據(jù)獲取,一直到最后的加工輸出,經(jīng)歷的整個(gè)環(huán)節(jié),最終給我們提供相應(yīng)的有效信息,采取相應(yīng)的有效手段,才是數(shù)據(jù)價(jià)值的最終體現(xiàn)。
在正式開始前,對(duì)于數(shù)據(jù)收集的要求也是很高,如果數(shù)據(jù)不準(zhǔn)確或有偏差,很可能之后做的都是徒勞無(wú)功,下表為目前常見(jiàn)的數(shù)據(jù)收集時(shí)常見(jiàn)的問(wèn)題:
對(duì)于新聞內(nèi)容的推薦系統(tǒng),讓人們最順暢獲取到人們想看到的內(nèi)容,從而形成核心競(jìng)爭(zhēng)力。推薦系統(tǒng)的常規(guī)推薦系統(tǒng),一共分為兩條線,第一條線是用戶,第二條線是項(xiàng)目,計(jì)算兩者間的相關(guān)近似值,從而完成推薦。計(jì)算近似值一定有所媒介,這個(gè)媒介就是標(biāo)簽(Tag)系統(tǒng),所以在建設(shè)整個(gè)體系之前,最優(yōu)先需要建設(shè)的就是標(biāo)簽系統(tǒng),其次是用戶體系,也就是用戶模型,我們?cè)诟兄脩粑ㄒ坏耐緩骄褪峭ㄟ^(guò)用戶操作,換言之既用戶行為,所以相對(duì)用戶行為微妙的變化,要求我們的用戶體系是十分敏感的,而最后是項(xiàng)目體系,這里特指新聞內(nèi)容。
下面將從產(chǎn)品層面盡量描述如何搭建推薦體系相關(guān)流程及細(xì)節(jié),整體搭建思路流程如下:
整體相對(duì)比較復(fù)雜,下面將逐一闡述其中細(xì)節(jié)。
1. 標(biāo)簽體系
1.1 搭建流程
要做標(biāo)簽體系,我們要先確定的就是系統(tǒng)結(jié)構(gòu),常規(guī)來(lái)看一般都是講標(biāo)簽隨內(nèi)容或用戶建設(shè)(但是我覺(jué)得那樣是不完整的,在之后獲取不到更加有效有幫助的信息,這也就是為什么我認(rèn)為一定要將標(biāo)簽體系一定要單獨(dú)拎出來(lái)的原因)。
在確定系統(tǒng)結(jié)構(gòu)之后,我們要進(jìn)行相關(guān)的算法選擇,并且大致選定學(xué)習(xí)的范圍和地點(diǎn),以供機(jī)器學(xué)習(xí),至此整個(gè)標(biāo)簽體系的搭建流程就此完畢。隨著不斷的內(nèi)容填充進(jìn)來(lái),要有相應(yīng)的標(biāo)簽不斷補(bǔ)充進(jìn)來(lái)。這是一個(gè)長(zhǎng)期的過(guò)程,并且也需要及時(shí)依據(jù)用戶反饋修正算法,實(shí)時(shí)調(diào)整,并非一日之功。
1.2 二維化結(jié)構(gòu)
常規(guī)網(wǎng)絡(luò)的標(biāo)簽是隨用戶和內(nèi)容添加的,但是會(huì)有局限性,也就是標(biāo)簽體系較難或無(wú)法透徹追查其它相關(guān)聯(lián)內(nèi)容。實(shí)際上標(biāo)簽體系的核心價(jià)值,體現(xiàn)在相應(yīng)建立起信息和人、人與人之間的關(guān)聯(lián)。所以我在思考:如何能夠進(jìn)行最深入的追查最深處的關(guān)聯(lián)?有一個(gè)常規(guī)方案就是單獨(dú)建立標(biāo)簽體系,將標(biāo)簽平鋪于系統(tǒng)中,也就是二維化。通過(guò)機(jī)器學(xué)習(xí),建立標(biāo)簽的基本聯(lián)系網(wǎng)絡(luò),之后貼合于用戶與內(nèi)容中即可。無(wú)立體結(jié)構(gòu)的上下層級(jí)展示,好處是可以避免了一維化的后果。換句話說(shuō)如果有層級(jí),那么不可避免的就會(huì)變成一級(jí)、二級(jí)。
簡(jiǎn)單來(lái)說(shuō):與某標(biāo)簽周遭相關(guān)聯(lián)的一切標(biāo)簽均展示;那周遭的標(biāo)簽還會(huì)又有標(biāo)簽,再展示;也就變成無(wú)窮盡的立體結(jié)構(gòu)化的標(biāo)簽網(wǎng)絡(luò),也就是價(jià)值基礎(chǔ)。最終價(jià)值的輸出還要結(jié)合其它的相關(guān)行為、操作、用戶物理屬性、內(nèi)容載體以及效果評(píng)定等因素綜合考量。
1.3 機(jī)器學(xué)習(xí)
常規(guī)機(jī)器訓(xùn)練流程是:先確定方法→訓(xùn)練集→特征選取→訓(xùn)練→分類器;分類:新樣本→特征選取→分類→判決。
所以最開始我們就要確定機(jī)器學(xué)習(xí)的方法。方法有許多種,需要具體根據(jù)情況來(lái)具體確定。下面僅以產(chǎn)品角度羅列常見(jiàn)經(jīng)典的機(jī)器學(xué)習(xí)方法、特點(diǎn)、利弊等。以供數(shù)據(jù)工程師進(jìn)行選擇、對(duì)比,輔助做出最優(yōu)選擇,以供參考。
方法當(dāng)中,首先分為兩個(gè)大類別:監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)。監(jiān)督學(xué)習(xí)又稱為分類或者歸納學(xué)習(xí)。幾乎適用于所有領(lǐng)域,包括內(nèi)容處理。常見(jiàn)算法有決策樹、貝葉斯模型、KNN、SVM等。
與這一方式相對(duì)的是非監(jiān)督學(xué)習(xí),在這種方式中,所有的類屬性都是未知的,從零開始摸索,算法需要根據(jù)數(shù)據(jù)集的特征自動(dòng)產(chǎn)生類屬性。其中算法中用于進(jìn)行學(xué)習(xí)的數(shù)據(jù)集叫做訓(xùn)練數(shù)據(jù)集:當(dāng)使用學(xué)習(xí)算法用訓(xùn)練數(shù)據(jù)集學(xué)習(xí)得到一個(gè)模型以后,我們使用測(cè)試數(shù)據(jù)集來(lái)評(píng)測(cè)這個(gè)模型的精準(zhǔn)度。常見(jiàn)的有聚類、特征矩陣。下表為常規(guī)推薦算法的分類,一共是三類:分類算法、關(guān)聯(lián)規(guī)則和聚類,依據(jù)不同場(chǎng)景選擇不同算法進(jìn)行調(diào)整即可。表格后面列出最常用算法的利弊以及用人話描述的算法原理,以供產(chǎn)品同事參考。
樸素貝葉斯:
對(duì)于給出的待分類項(xiàng),求解在此項(xiàng)出現(xiàn)的條件下各個(gè)類別出現(xiàn)的概率;哪個(gè)最大,就認(rèn)為此待分類項(xiàng)屬于哪個(gè)類別。非常好理解,單純的概率問(wèn)題。
優(yōu)點(diǎn):算法十分穩(wěn)定,并且對(duì)數(shù)據(jù)參數(shù)無(wú)要求;運(yùn)用較為簡(jiǎn)單。
缺點(diǎn):在屬性個(gè)數(shù)比較多或者屬性之間相關(guān)性較大時(shí)效率不理想,并且重前期數(shù)據(jù)格式,需要知道先驗(yàn)概率,存在一定錯(cuò)誤率。但是結(jié)合聚類算法,可以一定程度解決屬性個(gè)數(shù)問(wèn)題。
使用場(chǎng)景:常見(jiàn)于垃圾郵件分類場(chǎng)景。
決策樹:
哈利波特中的分院帽應(yīng)用的是個(gè)非常典型的決策樹模型:帽子往學(xué)生頭上一扣,讀取學(xué)生的顯著特征,然后分到某個(gè)類別里。所以你看,哈利波特一開始表現(xiàn)出來(lái)的特征都是格蘭芬多的特征,分院帽讀取數(shù)據(jù)時(shí)候發(fā)現(xiàn)這個(gè)人有兩類顯著特征,于是猶豫不決,最后還是波特自己提出了要求,這就證明應(yīng)用模型時(shí)的人工干預(yù)必不可少。
優(yōu)點(diǎn):決策樹較為通俗易懂,并且對(duì)數(shù)據(jù)格式不敏感,較為聰明;易于通過(guò)靜態(tài)測(cè)試測(cè)量模型可信度,善于短時(shí)間處理大量數(shù)據(jù)源,對(duì)屬性數(shù)量兼容性好,有很好的擴(kuò)展性。
缺點(diǎn):對(duì)樣本數(shù)量不一致的數(shù)據(jù),結(jié)果有偏向,處理缺失數(shù)據(jù)時(shí)候會(huì)有困難,并且有過(guò)度擬合現(xiàn)象,容易忽略數(shù)據(jù)集中屬性之間的相關(guān)性。
使用場(chǎng)景:可結(jié)合隨機(jī)森林算法,減少相應(yīng)過(guò)度擬合現(xiàn)象。常見(jiàn)于用戶行為分析場(chǎng)景。
KNN:
說(shuō)白了就是我們要尋找鄰居,但是為什么要尋找鄰居?如何選取鄰居,選取多少鄰居?怎么樣去尋找我們想要的鄰居,以及如何利用鄰居來(lái)解決分類問(wèn)題這是KNN算法需要解決的幾大問(wèn)題。
為什么我們要尋找鄰居?古話說(shuō)的好:人以類聚,物以群分。要想知道一個(gè)人怎么樣,去看看他的朋友就知道了。我們?nèi)绻袛嘁粋€(gè)樣本點(diǎn)的類別,去看看和它相似的樣本點(diǎn)的類別就行了。
優(yōu)點(diǎn):該算法簡(jiǎn)單有效,重新訓(xùn)練代價(jià)較低,對(duì)于類域有較差或重疊較多的樣本較為適合。同樣適用于樣本量較大的情況。
缺點(diǎn):樣本量較小時(shí)反而有誤差。而且該算法是懶散學(xué)習(xí)方法,不主動(dòng),類別評(píng)分不規(guī)格且輸出可解釋性不高。當(dāng)樣本量不平衡時(shí),有可能導(dǎo)致當(dāng)輸入一個(gè)新樣本時(shí),該樣本的K個(gè)鄰居中大容量類的樣本占多數(shù),并且計(jì)算量較大??梢圆捎脵?quán)值的方法,和該樣本距離小的鄰居權(quán)值大,來(lái)改進(jìn)問(wèn)題,對(duì)于計(jì)算量較大,可以事先對(duì)已知樣本點(diǎn)進(jìn)行剪輯,去除對(duì)分類作用不大的樣本來(lái)優(yōu)化。
使用場(chǎng)景:常見(jiàn)于預(yù)測(cè)價(jià)格場(chǎng)景。
SVM:
說(shuō)到這個(gè)算法之前,先得配一張圖:
這圖啥意思呢?不用管。但是這兩種分法哪種更好呢?從直觀上來(lái)說(shuō),顯然右側(cè)好。也就是分割的間隙越大越好,把兩個(gè)類別的點(diǎn)分得越開越好。就像我們平時(shí)判斷一個(gè)人是男還是女,就是很難出現(xiàn)分錯(cuò)的情況,這就是男、女兩個(gè)類別之間的間隙非常的大導(dǎo)致的,讓我們可以更準(zhǔn)確的進(jìn)行分類。從實(shí)踐的角度來(lái)說(shuō),這樣的效果非常好,錯(cuò)誤率低。
優(yōu)點(diǎn):該算法適用于樣本量較小的情況,可提高泛化性能,可解決高維度問(wèn)題。并且對(duì)線性和非線性問(wèn)題均可解決,可避免神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)選擇和局部極小點(diǎn)問(wèn)題。
缺點(diǎn):對(duì)缺失數(shù)據(jù)較敏感,對(duì)非線性問(wèn)題沒(méi)有通用解決方案,需要選擇核函數(shù)來(lái)處理,算法使用并且極其復(fù)雜。
使用場(chǎng)景:常見(jiàn)于社交網(wǎng)站用戶分類場(chǎng)景。
Ad boosting:
這個(gè)算法說(shuō)實(shí)話我也解釋不清,沒(méi)真正運(yùn)用過(guò),憑自己查資料的理解試著說(shuō)一下。這個(gè)算法核心的思想是整合多個(gè)弱分類器,成為一個(gè)強(qiáng)大的分類器。這時(shí)候,集合分類器出現(xiàn)了。用人話說(shuō)就是三個(gè)臭皮匠賽過(guò)諸葛亮,好理解了吧?識(shí)別一組條件特征概念判斷的正確率比隨機(jī)猜測(cè)略好,但是還不夠,這就是弱分類器;多個(gè)弱分類器的效果疊加起來(lái),就變成一個(gè)強(qiáng)分類器,識(shí)別率就會(huì)很高了。
優(yōu)點(diǎn):該算法精度較高,可用任意方法構(gòu)建子分類器;使用簡(jiǎn)單分類器時(shí)結(jié)果容易理解,且弱分類器構(gòu)造極其簡(jiǎn)單,而且不用做特征篩選,不用擔(dān)心過(guò)度擬合情況。
缺點(diǎn):對(duì)離群值比較敏感。
使用場(chǎng)景:常見(jiàn)于人臉檢測(cè)、目標(biāo)識(shí)別場(chǎng)景。
K-means:
給你一萬(wàn)個(gè)人,分成四群,需要能夠解釋每一群人的突出特征,如果有兩群人的特征很相似,那就要重新分群了;或者有一群人的特征不明顯,那就要增加分群了。好處在于樣本量大的時(shí)候,可以快速分群,但需要在分群后注意每個(gè)群體的可解釋性。
優(yōu)點(diǎn):這個(gè)算法屬于經(jīng)典算法,簡(jiǎn)單快速,對(duì)處理大數(shù)據(jù)集可伸縮,高效。并且在簇密集度高、球狀或團(tuán)狀時(shí),且有明顯于其他簇區(qū)別時(shí),聚類效果好。
缺點(diǎn):但是只有簇平均值被定義情況下才能使用,且對(duì)分類屬性數(shù)據(jù)不適用,并且要求用戶必須事先給出要生成的簇的數(shù)目。對(duì)初始值敏感,不適合發(fā)現(xiàn)非凸面形狀的簇,或者大小差別很大的簇。對(duì)噪聲和孤立數(shù)據(jù)敏感,少量該類數(shù)據(jù)能直接影響平均值。
使用場(chǎng)景:常見(jiàn)于CRM篩選目標(biāo)客戶場(chǎng)景。
神經(jīng)網(wǎng)絡(luò):
這個(gè)算法不想解釋啥,就想放張圖,覺(jué)得不放可惜了。
以上摘要從產(chǎn)品角度來(lái)說(shuō)只要大概心里有數(shù)即可,一般情況下從產(chǎn)品數(shù)據(jù)、應(yīng)用場(chǎng)景等決定。
一般來(lái)看,冷啟動(dòng)期間應(yīng)選擇非監(jiān)督學(xué)習(xí),如聚類;等數(shù)據(jù)豐富之后,轉(zhuǎn)換為監(jiān)督學(xué)習(xí),擇優(yōu)選擇算法方可;但仍需具體問(wèn)題具體分析。更多的還是配合技術(shù)、算法人員來(lái)選擇和實(shí)現(xiàn),詳細(xì)算法和原理、公式等可以到后面附錄1進(jìn)行查看,給予參考。
1.4 學(xué)習(xí)地點(diǎn)
這里我建議從百科類產(chǎn)品進(jìn)行機(jī)器學(xué)習(xí),國(guó)內(nèi)最大的百科就是百度百科了,在國(guó)際上自然還有維基百科。
查了一些相關(guān)方法,發(fā)現(xiàn)從百度百科利用機(jī)器學(xué)習(xí)標(biāo)簽,已經(jīng)有相應(yīng)的案例并且成本相對(duì)不是很大,具體的方法也放在后文中的附錄2中。
文中探究的是微博標(biāo)簽相關(guān)的項(xiàng)目,與本文無(wú)關(guān),但整體思路可借鑒。大致流程為先抓取頁(yè)面下相關(guān)標(biāo)簽內(nèi)容,要注意特殊情況,會(huì)有歧義頁(yè)面;將標(biāo)簽抓取存儲(chǔ)之后通過(guò)算法計(jì)算之間的關(guān)聯(lián)性、權(quán)重分?jǐn)?shù),而后輸出驗(yàn)證。整體的過(guò)程非常簡(jiǎn)單快捷,能在前期非常快速的補(bǔ)充相關(guān)數(shù)據(jù),但是要注意數(shù)據(jù)量的問(wèn)題,很可能導(dǎo)致無(wú)窮,所以收集哪些主要領(lǐng)域,收集多少,是需要我們最開始定義好的,及時(shí)踩剎車。
1.5 輸出展示
這里的展示更多指的還是相應(yīng)的后臺(tái)頁(yè)面,要滿足幾個(gè)條件:其中最基本的一定要滿足可視化的要求,點(diǎn)擊標(biāo)簽以后相應(yīng)的關(guān)聯(lián)標(biāo)簽可形成關(guān)聯(lián)展示;可以選擇展示兩級(jí)或者三級(jí),清晰直觀的看到關(guān)聯(lián)情況。更進(jìn)一步的是點(diǎn)擊后,每個(gè)標(biāo)簽里面的詳細(xì)情況也會(huì)展示出來(lái)。比如說(shuō)標(biāo)簽的歷史類型情況、載體情況、分別的打開情況、受眾用戶群體,所以這也是需要依托于用戶體系的相關(guān)標(biāo)簽結(jié)合之后的產(chǎn)出物。
結(jié)合基本數(shù)據(jù)維度比如昨日新增多少標(biāo)簽、文章類型走向是什么樣的受眾是什么樣的走向,都是屬于基礎(chǔ)數(shù)據(jù)范疇,達(dá)到實(shí)時(shí)監(jiān)控,定位報(bào)警的作用。
1.6 小結(jié)總結(jié)
本節(jié)總體來(lái)說(shuō)闡述了搭建標(biāo)簽體系的整體流程和相關(guān)經(jīng)典算法的展示與利弊分析,并且提供了標(biāo)簽學(xué)習(xí)機(jī)制的思路。下面,將進(jìn)行用戶模型的體系搭建,詳見(jiàn)明日發(fā)布的中篇。
附錄1 常見(jiàn)機(jī)器學(xué)習(xí)方法算法
附錄2 提取百度百科標(biāo)簽建立關(guān)聯(lián)性思路
百度百科介紹
構(gòu)成百度百科的基礎(chǔ)內(nèi)容是詞條。一個(gè)詞條頁(yè)面大致可以分為百科名片、詞條正文、開放分類、相關(guān)詞條、參考資料和擴(kuò)展閱讀這個(gè)幾個(gè)部分,根據(jù)每個(gè)詞條的具體情況,某些部分可以沒(méi)有。
其中,百科名片是詞條的概括性描述;詞條正文是可以由多個(gè)段落組成的對(duì)詞條的詳細(xì)描述;開放分類提供詞條的屬性標(biāo)簽,最多有5個(gè),通常這種標(biāo)簽具有一定的類別信息;相關(guān)詞條是與當(dāng)前詞條聯(lián)系比較緊密的相關(guān)條目,而一般這種聯(lián)系必須是橫向的,例如“喬峰”的相關(guān)詞條可以是“段譽(yù)”、“阿朱”、“虛竹”等,但不可以是“天龍八部”。
盡管在百科的詞條頁(yè)面上,我們只能看到該詞條的開放分類標(biāo)簽;但實(shí)際上在百科內(nèi)部,有一個(gè)具有層次的三層分類體系。第一層具有十二個(gè)大類;每個(gè)大類下面又包含若干個(gè)中類,這就是第二層分類;每個(gè)中類下面又可細(xì)分為若干個(gè)小類。
生成方法
我們將百度百科三層分類體系第三層的小類別作為查詢,在百度百科中將搜索得到該類別下的詞條頁(yè)面。但是通過(guò)這種方式,對(duì)于每一個(gè)小類別,我們最多只能獲取760個(gè)相關(guān)的詞條頁(yè)面,而更多的實(shí)際上可以被劃分為該類別的詞條頁(yè)面,我們獲取不到。
我們搜索“技術(shù)_互聯(lián)網(wǎng)_電子商務(wù)”類別下的頁(yè)面,結(jié)果顯示共有詞條3469個(gè),但是,我們遍歷搜索結(jié)果頁(yè)面,最多只能查看到760個(gè)詞條頁(yè)面。在該方法中,我們需要使用百度百科的三層分類體系例如“技術(shù)_互聯(lián)網(wǎng)_編程”、“生活_娛樂(lè)_影視”作為用戶的標(biāo)簽候選集合。因此,我們可利用的資源便是能夠獲取到的每個(gè)小類別下的最多760個(gè)詞條頁(yè)面。
我們通過(guò)分析用戶發(fā)布的微博,將其最感興趣的百科三層類別作為他的標(biāo)簽。方法的主要思想是:將用戶發(fā)布的每一條微博映射到最相關(guān)的百科詞條頁(yè)面,獲取其類別,通過(guò)一定的投票策略決策出用戶的標(biāo)簽。
下面,具體介紹一下方法中涉及的關(guān)鍵步驟。
百科頁(yè)面獲取與處理
我們按照百度百科提供的開放分類瀏覽頁(yè)面,爬取到所有第三層小類別的查詢URL,形如http://baike.baidu.com/taglist?tag=****,該URL指向的就是該類別標(biāo)簽的搜索頁(yè)面。我們通過(guò)解析該搜索頁(yè)面,下載得到百科開放的760 個(gè)相關(guān)的詞條頁(yè)面。獲取頁(yè)面后,并且按照第三層小類別分類存儲(chǔ)后,我們進(jìn)行正文的提取。詞條頁(yè)面一共有兩種,一種是歧義頁(yè)面,即一個(gè)詞條包含多種義項(xiàng),下圖所示:
一種是非歧義頁(yè)面。我們需要分別對(duì)其做處理:對(duì)于歧義頁(yè)面,將每一個(gè)義項(xiàng)單獨(dú)作為一個(gè)頁(yè)面提取出來(lái)。我們提取百科頁(yè)面的標(biāo)題、百科名片、正文、類別,進(jìn)行分詞等處理后,建立索引,待后續(xù)使用。
搜索與微博相關(guān)的詞條頁(yè)面
給定一條微博,我們需要找到與其相似或者說(shuō)相關(guān)的百科頁(yè)面,以獲取其類別。我們將這個(gè)問(wèn)題轉(zhuǎn)換成為搜索問(wèn)題。從微博中提煉出查詢,從索引過(guò)的百科頁(yè)面中搜索出最相關(guān)的。我們使用Indri 對(duì)詞條頁(yè)面建立索引。Indri 源自Lemur系統(tǒng),是CMU和UMass 聯(lián)合推出的一個(gè)用于語(yǔ)言模型和信息檢索研究的系統(tǒng)。在這之上可以實(shí)現(xiàn)基于語(yǔ)言模型和傳統(tǒng)的向量空間模型等的檢索。Indri早已經(jīng)受到了學(xué)術(shù)界的廣泛歡迎。
我們將分別抽取微博中的名詞、名詞及形容詞的組合構(gòu)成帶有權(quán)重的查詢,其權(quán)重采用TFIDF 計(jì)算得到,構(gòu)造的查詢形如“#weight(0.45巨蟹座0.35性格0.20特點(diǎn))”。用構(gòu)建的查詢,我們搜尋到與該查詢最相關(guān)的詞條頁(yè)面,并獲取其對(duì)應(yīng)的類別。
用戶標(biāo)簽生成
假定有m種具有三層分類的類別標(biāo)簽,我們將其作為用戶的候選標(biāo)簽集合,表示為C={}。
給定某個(gè)用戶u,抽取其發(fā)布的微博文本集合W={},文本數(shù)目為n。我們分別對(duì)其構(gòu)造查詢,得到查詢集合Q={}。對(duì)每一個(gè)查詢q,我們獲取Top N個(gè)結(jié)果,作為該查詢相關(guān)的詞條頁(yè)面。因?yàn)槊總€(gè)詞條可能屬于若干個(gè)類別,因此我們得到的與該查詢(或者說(shuō)其對(duì)應(yīng)的微博)關(guān)聯(lián)的類別可能不止N個(gè)。對(duì)關(guān)聯(lián)的類別中的每一個(gè)類別c,我們計(jì)算其分?jǐn)?shù),如公式。其中, freq(c)指c在該次查詢中出現(xiàn)的頻數(shù),而d是我們?cè)O(shè)置的一個(gè)常數(shù),例如,我們將其設(shè)置為1,則c的分?jǐn)?shù)就是在該次查詢中出現(xiàn)的次數(shù);若將d設(shè)置為該類別關(guān)聯(lián)的詞條頁(yè)面出現(xiàn)在Top N結(jié)果中的具體位置,則說(shuō)明c的分?jǐn)?shù)受到搜索結(jié)果排序的影響,排序越靠前的,對(duì)分?jǐn)?shù)的貢獻(xiàn)越大。
整個(gè)查詢過(guò)程停止后,我們將對(duì)候選標(biāo)簽集合中的每一個(gè)標(biāo)簽c計(jì)算一個(gè)排序分?jǐn)?shù),可以利用這個(gè)算法,其中n 就是指查詢的次數(shù)。我們?nèi)∨判蚯?0 的作為為用戶自動(dòng)生成的標(biāo)簽。
上篇,完。
相關(guān)閱讀:
深度丨從零搭建推薦體系:概述及標(biāo)簽體系搭建(上)
深度丨從零搭建推薦體系:用戶體系、項(xiàng)目體系和推薦體系(中)
深度丨從零搭建推薦體系: 推薦體系和評(píng)估體系(下)
個(gè)性化推薦技術(shù)|產(chǎn)品經(jīng)理和產(chǎn)品運(yùn)營(yíng)的必修課
在談推薦系統(tǒng)之前,請(qǐng)先避免這4個(gè)問(wèn)題
#專欄作家#
吳邢一夫(微信號(hào)mystic326531548),人人都是產(chǎn)品經(jīng)理專欄作家。3年產(chǎn)品經(jīng)理工作經(jīng)驗(yàn),需求、用戶、數(shù)據(jù)有深入研究。歡迎交流想法,拒絕無(wú)意義添加好友。
本文獨(dú)家發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
作者大大您好啊,我是清華的學(xué)生,能不能跟您聊聊,請(qǐng)您來(lái)清華陸向謙創(chuàng)新創(chuàng)業(yè)課上來(lái)聊聊 標(biāo)簽系統(tǒng) 我的微信dy15194612549 請(qǐng)您惠存!謝謝
如LS。。大部分是例舉算法,并不是實(shí)例操作,不過(guò)總結(jié)也可以的。
你好,首先感謝的分享。我仔細(xì)的看了你的文章。不過(guò)你提到的大多都是機(jī)器學(xué)習(xí)的算法,這些是我們都知道的。至于如何針對(duì)特有情況進(jìn)行數(shù)據(jù)整理與數(shù)據(jù)立方的構(gòu)建,我并沒(méi)有看到實(shí)質(zhì)性的論述。包括也沒(méi)有實(shí)質(zhì)性的算法說(shuō)明。算法的精髓在于根據(jù)實(shí)際情況調(diào)參,而不是方法論。所以如果你能針對(duì)特定任務(wù),對(duì)調(diào)參進(jìn)行說(shuō)明這將是更好的。不過(guò)還是感謝的review。
有收獲,但吐個(gè)槽:作者沒(méi)有檢查過(guò)就發(fā)上來(lái)了? 看到錯(cuò)句錯(cuò)詞的我是一個(gè)人嗎 ??
根本不知道怎么用 …怎么破?
太干了~
期待后面幾篇,都是干貨