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