腾讯在信息流内容理解技术上的解决方案
作者:weidongguo,騰訊 PCG 應(yīng)用研究員。
目前信息流推薦中使用的內(nèi)容理解技術(shù),主要有兩部分構(gòu)成:1、門戶時代和搜索時代遺留的技術(shù)積累:分類、關(guān)鍵詞以及知識圖譜相關(guān)技術(shù);2、深度學(xué)習(xí)帶來的技術(shù)福利:embedding。但是分類對于興趣點(diǎn)刻畫太粗,實(shí)體又容易引起推薦多樣性問題,而 embedding 技術(shù)又面臨難以解釋的問題。本文主要介紹在信息流推薦中,PCG 是如何做內(nèi)容理解克服上述問題的。
項目背景
內(nèi)容理解技術(shù)演進(jìn)
門戶時代:1995~2002 年,主要代表公司:Yahoo、網(wǎng)易、搜狐、騰訊。互聯(lián)網(wǎng)初期,因為數(shù)據(jù)較少,因此需要一個內(nèi)容聚合的地方,人們才能夠快速的找到信息。因此,門戶通過“內(nèi)容類型”對內(nèi)容進(jìn)行整理,然后以頻道頁形式滿足用戶需求。因為數(shù)據(jù)少,初期由人工對新聞進(jìn)行分類。隨著數(shù)據(jù)的增多,靠人工分類已經(jīng)變得不現(xiàn)實(shí),因此各大公司紛紛引入分類技術(shù),自動化文本分類。此后,文本分類技術(shù)發(fā)展迅速。
搜索/社交時代:2003 年~至今,主要代表公司:搜狗、騰訊、Google、百度。隨著網(wǎng)絡(luò)的普及,數(shù)據(jù)的數(shù)量和類型的豐富,門戶網(wǎng)站已經(jīng)不能夠承載信息分發(fā)的任務(wù)。于是,一種新的信息分發(fā)技術(shù)誕生——搜索。搜索除了需要分類信息以外,還需要精確知道文章是
“關(guān)于什么的”,關(guān)鍵詞技術(shù)很好的解決了這個需求,于是也成為那個時期的研究熱點(diǎn)。但是關(guān)鍵詞技術(shù)有一個問題沒辦法克服:實(shí)體歧義問題
( 如李白,究竟用戶是找詩人李白,還是王者榮耀英雄李白 )。2012 年 Google 提出知識圖譜概念,可以用于解決上述的實(shí)體歧義問題,實(shí)體鏈指的問題也有了比較大的進(jìn)展。智能時代:2012 年~至今,主要代表公司:今日頭條、出門問問等。使用 2012 年來作為智能時代的開始,主要是這一年頭條成立。頭條定義了一種新的信息分發(fā)形式——個性化推薦。雖然個性化推薦技術(shù)早有研究,但是對于信息分發(fā)這個任務(wù)有不可或缺的推動作用。
但是在信息推薦中,我們?nèi)匀辉谑褂梅诸悺㈥P(guān)鍵詞和實(shí)體等傳統(tǒng)的內(nèi)容理解方法,那到底在智能時代下是否需要新的內(nèi)容理解方案呢?
推薦和搜索的區(qū)別
推薦和搜索非常相似,都是根據(jù)已有的輸入,返回跟輸入相關(guān)的文章,但是對于內(nèi)容理解的要求區(qū)別較大,下面仔細(xì)分析下原因:
搜索是給定一個 query 后,預(yù)測 doc 被點(diǎn)擊的概率進(jìn)行排序。大致的處理流程如下:首先對 query 分詞,得到 < term,weight\> 的一個列表 ( 去除停用詞等不重要的詞 ),然后根據(jù)每一個 term 拉倒排索引 document list 做召回,再對召回的所有文章取并集,最后做整體的排序。注意:這里排序的條件是所有 term 的交集 ( 條件概率標(biāo)紅部分 )。
推薦是給定一個 user 后,預(yù)測 doc 被點(diǎn)擊的概率進(jìn)行排序。大致的處理流程如下:首先查詢 user 的用戶畫像,得到 <term, weight> 的一個興趣點(diǎn)列表,然后根據(jù)每一個 term 拉倒排索引 document list 做召回,再對召回的所有文章取并集,最后做整體的排序。注意:這里排序的條件跟搜索是不同的,排序的條件是 term 的并集 ( 條件概率標(biāo)紅部分 )。例如用戶閱讀了王**馬*離婚的新聞,會把 “王**”、“馬*”作為兩個興趣點(diǎn)積累到用戶畫像中,而對新的文章排序時候,實(shí)際上已經(jīng)丟失了 “王**”和 “馬*” 興趣點(diǎn)是同一篇文章同時積累的這個信息。
通過上述分析,我們可以得到這樣的結(jié)論:搜索經(jīng)過召回之后,排序有完整的上下文信息;但是在推薦中由于經(jīng)過了用戶畫像,使用傳統(tǒng)的內(nèi)容理解方案時,排序會丟失用戶閱讀的上下文信息。因此,推薦對于內(nèi)容理解需要保留完整的上下文,即把“王**馬*離婚” 當(dāng)做一個完整的興趣點(diǎn),而不僅僅像搜索一樣分別保留 “王**” 和“馬*”。
用戶為什么會消費(fèi)
傳統(tǒng)的內(nèi)容理解僅僅解決了文章是什么的問題,但是對于用戶 “為什么會消費(fèi)”卻沒有考慮。舉個例子來說,如果我們的一個朋友看了一款 XC60 的汽車,我們會給他推薦什么內(nèi)容呢?我們一定不會不停的推薦 XC60,而是會猜測朋友可能是喜歡沃爾沃這個品牌,比較看重安全性,或者對于空間有一定要求的 SUV。因此,如果要做好一個推薦系統(tǒng),內(nèi)容理解同樣也需要相應(yīng)的能力,挖掘用戶真實(shí)消費(fèi)意圖。
傳統(tǒng) NLP 技術(shù)缺陷
以上是整個項目的背景,我們總結(jié)一下:
分類:人工預(yù)定義,量級千規(guī)模;優(yōu)點(diǎn):結(jié)果可控性高,人工可以參與運(yùn)營;缺點(diǎn):粒度太粗,難以刻畫用戶粒度的興趣點(diǎn),推薦不精準(zhǔn);
關(guān)鍵詞:規(guī)模龐大,量級可達(dá)千萬;優(yōu)點(diǎn):技術(shù)成熟;缺點(diǎn):絕大多數(shù)詞不能反映用戶興趣,需要配合興趣白名單一起使用,不能解決歧義的問題;
實(shí)體詞:常見實(shí)體百萬量級;優(yōu)點(diǎn):精準(zhǔn)刻畫用戶興趣,結(jié)果可控性高;缺點(diǎn):推薦內(nèi)容單一,容易造成信息繭房;
LDA:量級千規(guī)模,優(yōu)點(diǎn):技術(shù)成熟,可以人工預(yù)先選擇出有意義的類簇;缺點(diǎn):規(guī)模和分類相當(dāng),粒度太粗,與分類問題相同;
Embedding:量級不受限制;優(yōu)點(diǎn):研究熱點(diǎn),有成熟技術(shù);缺點(diǎn):難以解釋。
個性化推薦需求:推薦系統(tǒng)需要積累用戶模型,因此需要保留完整的上下文,語義粒度要完整;不同的人消費(fèi)同一篇文章背后原因可能不同,因此需要有一定的推理能力。
因此,傳統(tǒng)的內(nèi)容理解方案并不能很好的滿足個性化推薦的需求。個性化推薦不僅需要傳統(tǒng)的內(nèi)容理解方式,還需要一種能夠有完整上下文,并且具有推理用戶真實(shí)消費(fèi)意圖的能力。
興趣圖譜
興趣點(diǎn)圖譜(AG)概貌
根據(jù)上述分析,我們提出了興趣點(diǎn)圖譜,用于解決上述個性化推薦中遇到的問題。興趣點(diǎn)圖譜由四層組成:分類層、概念層、實(shí)體詞和事件層。下面分別介紹各層的內(nèi)容:
分類層,一般是由 PM 建設(shè),是一個嚴(yán)格樹狀的結(jié)構(gòu),一般在 1000 左右個節(jié)點(diǎn),主要解決人工運(yùn)營的需求;
概念層:有相同屬性的一類實(shí)體稱之為概念,例如老年人專用手機(jī)、省油耐用車等,推理用戶消費(fèi)的真實(shí)意圖;
實(shí)體層:知識圖譜中的實(shí)體,如:劉德華,華為 P10 等,負(fù)責(zé)一般興趣點(diǎn)的召回;
事件層:用來刻畫某一個事件,例如:王**離婚、三星手機(jī)爆炸等,事件層精準(zhǔn)刻畫文章內(nèi)容。
下面介紹如何構(gòu)造興趣點(diǎn)圖譜。
概念挖掘
概念本質(zhì)是一種短語,其實(shí)短語挖掘的論文非常多,像韓家煒老師團(tuán)隊就有很多相關(guān)的論文,但是概念有自己的獨(dú)特性:
沒有訓(xùn)練樣本,并且人工難以標(biāo)注。因此只能通過弱監(jiān)督方法解決冷啟動的問題,然后使用監(jiān)督方式提升覆蓋。
粒度問題,比如 “明星” 是一個概念,但是太泛,不能精準(zhǔn)刻畫用戶興趣,但是“身材好的女明星” 就很合理,那如何描述粒度呢?使用 UGC 數(shù)據(jù),用戶真實(shí)表達(dá)需求。
因此,具體挖掘時,我們使用了搜索數(shù)據(jù),通過用戶的點(diǎn)擊行為進(jìn)行半監(jiān)督算法的學(xué)習(xí)。具體算法如上圖所示:挖掘概念使用的是搜索數(shù)據(jù),每一個概念都有多個點(diǎn)擊的網(wǎng)頁,對網(wǎng)頁進(jìn)行實(shí)體抽取,然后統(tǒng)計實(shí)體和概念的共現(xiàn)頻次就可以獲得較為準(zhǔn)確的上下位關(guān)系,我們在
KDD 的?paper?中有詳細(xì)的介紹。
熱門事件挖掘
事件指的是熱門事件。如果一個事件比較熱門,網(wǎng)友就會有了解需求,會通過搜索引擎來查詢事件,因此我們使用
query 作為熱門事件挖掘的來源。
一個比較常見的方法是根據(jù)事件搜索量變化趨勢判斷,常規(guī)的做法是 BRD ( Burst Region Detection ),判斷時間序列上是否有爆發(fā)點(diǎn)。但是 BRD 會遇到一些歸一化,甚至多 point 的問題,于是我們采用了上圖的方式克服上述問題:
熱門識別:時序分析,識別熱門 query。首先定義一個熱門事件的趨勢模板;然后對第一步預(yù)處理后的時序數(shù)據(jù)與熱門模板進(jìn)行相似度計算,如果相似度很高,說明趨勢一致,則為熱門事件,否則就是非熱門。相似度計算的方式最早用的距離是歐拉距離,但是由于歐拉距離需要嚴(yán)格的時序?qū)R,會造成一些 bad case,因此改用 DTW 算法。
話題檢測:同一個事件會有多種表述方法,對應(yīng)多個 query,因此需要把相同事件的 query 聚類到一起,形成話題。
事件識別&命名:熱門的話題中往往會伴隨一些非事件型的話題,如熱門美劇更新時,會出現(xiàn)一個熱度高潮,上述方法會混入一些非事件,因此我們需要對熱門的話題做一個分類。一個非常有效的特征是 url 中的一些單詞,會很有區(qū)分性。
關(guān)聯(lián)關(guān)系
個性化推薦系統(tǒng)中除了要滿足用戶當(dāng)前興趣以外,還需要探索到用戶未知的潛在興趣點(diǎn),擴(kuò)展用戶閱讀視野。因此需要對節(jié)點(diǎn)計算關(guān)聯(lián)關(guān)系。目前我們僅針對實(shí)體做了關(guān)聯(lián)關(guān)系的計算。
大家很容易想到,如果兩個實(shí)體經(jīng)常會在同一篇文檔中出現(xiàn),應(yīng)該就是高關(guān)聯(lián)的;或者用戶經(jīng)常連續(xù)搜索,即搜完“劉德華”,然后會馬上搜索“朱麗倩”,應(yīng)該也是高關(guān)聯(lián)的。確實(shí)這種直覺是正確的。雖然這種方法準(zhǔn)確率很高,但是會遇到一些問題:沒有共現(xiàn)過的,會被認(rèn)為沒有任何的關(guān)系;對于共現(xiàn)少的 pair 對,關(guān)系的密切度計算誤差也會比較大。
因此,需要通過實(shí)體向量化的形式克服上述問題。上述的共現(xiàn)數(shù)據(jù)可以作為正例,負(fù)樣本采用同類實(shí)體隨機(jī)負(fù)采樣,正負(fù)樣本比例 1:3,通過 pair wise 的 loss 進(jìn)行訓(xùn)練,得到每個實(shí)體的 embedding,然后計算任意兩個實(shí)體的關(guān)聯(lián)度。
內(nèi)容理解
文本分類
主題分類層是 PM 整理的,但是 PM 整理的過程中可能會存在一些認(rèn)知偏差。可以使用用戶的點(diǎn)擊行為對內(nèi)容進(jìn)行聚類,聚完類之后讓 PM 去標(biāo)注,從而總結(jié)出一些更適合的類別用于描述用戶的興趣。
具體分類的方法,其實(shí)比較容易想到,分別使用作者、標(biāo)題和正文三部分信息提取語義信息,然后合并到一起做 softmax 分類。這里為了線上效率沒有使用很復(fù)雜的模型,但是線上效果還是不錯的。
關(guān)鍵詞抽取
我們使用了比較傳統(tǒng)的關(guān)鍵詞提取思路,利用傳統(tǒng)特征工程 + GBRank 算法排序。在實(shí)際中會遇到這樣的問題,如示例,Twitter 出現(xiàn)在 title 中的實(shí)體,傳統(tǒng)的方式會把 Twitter 分?jǐn)?shù)計算的很高,但是這篇文章中卻不是重點(diǎn),重點(diǎn)是兩支 LOL 戰(zhàn)隊的罵戰(zhàn)。于是我們在 BGRank 之后,加了 re-rank 層,為所有的候選詞做一個重排序。詞之間邊關(guān)系使用關(guān)聯(lián)關(guān)系 embedding 計算相似度得到。
語義匹配
對于概念和事件類型的標(biāo)簽,原文中可能并不會出現(xiàn),用抽取的方式就沒有辦法解決。我們采用召回+排序的方式解決。召回的邏輯分為關(guān)系召回和語義召回,其中關(guān)系召回會用到興趣點(diǎn)圖譜中的關(guān)系數(shù)據(jù),召回 1-hop 內(nèi)的節(jié)點(diǎn)作為候選,語義召回通過語義向量召回與 title 近鄰的節(jié)點(diǎn)作為候選,然后用交互匹配的方式進(jìn)行排序。如果 1-hop 內(nèi)的節(jié)點(diǎn)數(shù)量太多,排序耗時會非常大,因此這里采用粗糙集的方式進(jìn)行候選的粗排,縮小候選集合再進(jìn)行排序。
總結(jié)
本文詳細(xì)分析了在信息流推薦中,傳統(tǒng) NLP 做內(nèi)容理解時的局限性,以及新的要求。我們通過對實(shí)際用戶行為的分析,總結(jié)了一套基于?興趣點(diǎn)圖譜 的內(nèi)容理解方案,并且在信息流的場景下應(yīng),取得了不錯的效果提升。
總結(jié)
以上是生活随笔為你收集整理的腾讯在信息流内容理解技术上的解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 由STGW下载慢问题引发的网络传输学习之
- 下一篇: 一起 goroutine 泄漏问题的排查