騰訊信息流內容理解技術實踐

導讀:目前信息流推薦中使用的內容理解技術,主要有兩部分構成:1. 門戶時代和搜索時代遺留的技術積累:分類、關鍵詞以及知識圖譜相關技術;2. 深度學習帶來的技術福利:embedding。但是分類對於興趣點刻畫太粗,實體又容易引起推薦多樣性問題,而 embedding 技術又面臨難以解釋的問題。這次主要介紹在信息流推薦中,騰訊是如何做內容理解克服上述問題的。主要包括:

  • 項目背景
  • 興趣圖譜
  • 內容理解
  • 線上效果

項目背景

1. 內容理解技術演進

① 門戶時代:1995~2002年,主要代表公司:Yahoo、網易、搜狐、騰訊。互聯網初期,因爲數據較少,因此需要一個內容聚合的地方,人們才能夠快速的找到信息。因此,門戶通過 “內容類型” 對內容進行整理,然後以頻道頁形式滿足用戶需求。因爲數據少,初期由人工對新聞進行分類。隨着數據的增多,靠人工分類已經變得不現實,因此各大公司紛紛引入分類技術,自動化文本分類。此後,文本分類技術發展迅速。

② 搜索/社交時代:2003年~至今,主要代表公司:搜狗、騰訊、Google、百度。隨着網絡的普及,數據的數量和類型的豐富,門戶網站已經不能夠承載信息分發的任務。於是,一種新的信息分發技術誕生——搜索。搜索除了需要分類信息以外,還需要精確知道文章是 “關於什麼的”,關鍵詞技術很好的解決了這個需求,於是也成爲那個時期的研究熱點。但是關鍵詞技術有一個問題沒辦法克服:實體歧義問題 ( 如李白,究竟用戶是找詩人李白,還是王者榮耀英雄李白 )。2012年 Google 提出知識圖譜概念,可以用於解決上述的實體歧義問題,實體鏈指的問題也有了比較大的進展。

③ 智能時代:2012年~至今,主要代表公司:今日頭條、出門問問等。使用2012年來作爲智能時代的開始,主要是這一年頭條成立。頭條定義了一種新的信息分發形式——個性化推薦。雖然個性化推薦技術早有研究,但是對於信息分發這個任務有不可或缺的推動作用。

但是在信息推薦中,我們仍然在使用分類、關鍵詞和實體等傳統的內容理解方法,那到底在智能時代下是否需要新的內容理解方案呢?

2. 推薦和搜索的區別

推薦和搜索非常相似,都是根據已有的輸入,返回跟輸入相關的文章,但是對於內容理解的要求區別較大,下面仔細分析下原因:

搜索是給定一個 query 後,預測 doc 被點擊的概率進行排序。大致的處理流程如下:首先對 query 分詞,得到 < term, weight> 的一個列表 ( 去除停用詞等不重要的詞 ),然後根據每一個 term 拉倒排索引 document list 做召回,再對召回的所有文章取並集,最後做整體的排序。注意:這裏排序的條件是所有 term 的交集( 條件概率標紅部分 )。

推薦是給定一個 user 後,預測 doc 被點擊的概率進行排序。大致的處理流程如下:首先查詢 user 的用戶畫像,得到 < term, weight > 的一個興趣點列表,然後根據每一個 term 拉倒排索引 document list 做召回,再對召回的所有文章取並集,最後做整體的排序。注意:這裏排序的條件跟搜索是不同的,排序的條件是 term 的並集 ( 條件概率標紅部分 )。例如用戶閱讀了王寶強馬蓉離婚的新聞,會把 “王寶強”、“馬蓉” 作爲兩個興趣點積累到用戶畫像中,而對新的文章排序時候,實際上已經丟失了 “王寶強” 和 “馬蓉” 興趣點是同一篇文章同時積累的這個信息。

通過上述分析,我們可以得到這樣的結論:搜索經過召回之後,排序有完整的上下文信息;但是在推薦中由於經過了用戶畫像,使用傳統的內容理解方案時,排序會丟失用戶閱讀的上下文信息。因此,推薦對於內容理解需要保留完整的上下文,即把 “王寶強馬蓉離婚” 當做一個完整的興趣點,而不僅僅像搜索一樣分別保留 “王寶強” 和 “馬蓉”。

3. 用戶爲什麼會消費

傳統的內容理解僅僅解決了文章是什麼的問題,但是對於用戶 "爲什麼會消費" 卻沒有考慮。舉個例子來說,如果我們的一個朋友看了一款 XC60 的汽車,我們會給他推薦什麼內容呢?我們一定不會不停的推薦 XC60,而是會猜測朋友可能是喜歡沃爾沃這個品牌,比較看重安全性,或者對於空間有一定要求的 SUV。因此,如果要做好一個推薦系統,內容理解同樣也需要相應的能力,挖掘用戶真實消費意圖。

4. 傳統的 NLP 的技術缺陷

以上是整個項目的背景,我們總結一下。傳統 NLP 技術存在缺陷:

  • 分類:人工預定義,量級千規模;優點:結果可控性高,人工可以參與運營;缺點:粒度太粗,難以刻畫用戶粒度的興趣點,推薦不精準;
  • 關鍵詞:規模龐大,量級可達千萬;優點:技術成熟;缺點:絕大多數詞不能反映用戶興趣,需要配合興趣白名單一起使用,不能解決歧義的問題;
  • 實體詞:常見實體百萬量級;優點:精準刻畫用戶興趣,結果可控性高;缺點:推薦內容單一,容易造成信息繭房;
  • LDA:量級千規模,優點:技術成熟,可以人工預先選擇出有意義的類簇;缺點:規模和分類相當,粒度太粗,與分類問題相同;
  • Embedding:量級不受限制;優點:研究熱點,有成熟技術;缺點:難以解釋。

個性化推薦需求:

  • 推薦系統需要積累用戶模型,因此需要保留完整的上下文,語義粒度要完整;
  • 不同的人消費同一篇文章背後原因可能不同,因此需要有一定的推理能力。

因此,傳統的內容理解方案並不能很好的滿足個性化推薦的需求。個性化推薦不僅需要傳統的內容理解方式,還需要一種能夠有完整上下文,並且具有推理用戶真實消費意圖的能力。

興趣圖譜

1. 興趣點圖譜

根據上述分析,我們提出了興趣點圖譜,用於解決上述個性化推薦中遇到的問題。興趣點圖譜由四層組成:分別爲:分類層、概念層、實體詞和事件層。下面分別介紹各層的內容:

  • 分類層,一般是由 PM 建設,是一個嚴格樹狀的結構,一般在1000左右個節點;
  • 概念層:有相同屬性的一類實體稱之爲概念,例如老年人專用手機、省油耐用車等;
  • 實體層:知識圖譜中的實體,如:劉德華,華爲 P10 等;
  • 事件層:用來刻畫某一個事件,例如:王寶強離婚、三星手機爆炸等。

分類層主要解決人工運營的需求;概念層推理用戶消費的真實意圖;實體層負責一般興趣點的召回;事件層精準刻畫文章內容。下面介紹如何構造興趣點圖譜。

2. 概念挖掘

概念本質是一種短語,其實短語挖掘的論文非常多,像韓家煒老師團隊就有很多相關的論文,但是概念有自己的獨特性:

① 沒有訓練樣本,並且人工難以標註。因此只能通過弱監督方法解決冷啓動的問題,然後使用監督方式提升覆蓋。

② 粒度問題。比如 “明星” 是一個概念,但是太泛,不能精準刻畫用戶興趣,但是 “身材好的女明星” 就很合理,那如何描述粒度呢?使用 UGC 數據,用戶真實表達需求。

因此,具體挖掘時,我們使用了搜索數據,通過用戶的點擊行爲進行半監督算法的學習。具體算法如上圖所示:

挖掘概念使用的是搜索數據,每一個概念都有多個點擊的網頁,對網頁進行實體抽取,然後統計實體和概念的共現頻次就可以獲得較爲準確的上下位關係,我們在 KDD 的 paper 中有詳細的介紹,這裏就不再重複。

3. 熱門事件挖掘

事件指的是熱門事件。如果一個事件比較熱門,網友就會有了解需求,會通過搜索引擎來查詢事件,因此我們使用 query 作爲熱門事件挖掘的來源。

一個比較常見的方法是根據事件搜索量變化趨勢判斷,常規的做法是 BRD ( Burst Region Detection ),判斷時間序列上是否有爆發點。但是 BRD 會遇到一些歸一化,甚至多 point 的問題,於是我們採用了上圖的方式克服上述問題:

  • 熱門識別:時序分析,識別熱門 query。首先定義一個熱門事件的趨勢模板;然後對第一步預處理後的時序數據與熱門模板進行相似度計算,如果相似度很高,說明趨勢一致,則爲熱門事件,否則就是非熱門。相似度計算的方式最早用的距離是歐拉距離,但是由於歐拉距離需要嚴格的時序對齊,會造成一些 bad case,因此改用 DTW 算法。
  • 話題檢測:同一個事件會有多種表述方法,對應多個 query,因此需要把相同事件的 query 聚類到一起,形成話題。
  • 事件識別&命名:熱門的話題中往往會伴隨一些非事件型的話題,如熱門美劇更新時,會出現一個熱度高潮,上述方法會混入一些非事件,因此我們需要對熱門的話題做一個分類。一個非常有效的特徵是 url 中的一些單詞,會很有區分性。

4. 關聯關係

個性化推薦系統中除了要滿足用戶當前興趣以外,還需要探索到用戶未知的潛在興趣點,擴展用戶閱讀視野。因此需要對節點計算關聯關係。目前我們僅針對實體做了關聯關係的計算。

大家很容易想到,如果兩個實體經常會在同一篇文檔中出現,應該就是高關聯的;或者用戶經常連續搜索,即搜完 “劉德華”,然後會馬上搜索 “朱麗倩”,應該也是高關聯的。確實這種直覺是正確的。雖然這種方法準確率很高,但是會遇到一些問題:沒有共現過的,會被認爲沒有任何的關係;對於共現少的 pair 對,關係的密切度計算誤差也會比較大。

因此,需要通過實體向量化的形式克服上述問題。上述的共現數據可以作爲正例,負樣本採用同類實體隨機負採樣,正負樣本比例1:3,通過 pair wise 的 loss 進行訓練,得到每個實體的 embedding,然後計算任意兩個實體的關聯度。

內容理解

1. 文本分類

主題分類層是 PM 整理的,但是 PM 整理的過程中可能會存在一些認知偏差。可以使用用戶的點擊行爲對內容進行聚類,聚完類之後讓 PM 去標註,從而總結出一些更適合的類別用於描述用戶的興趣。

2. 關鍵詞抽取

我們使用了比較傳統的關鍵詞提取思路,利用傳統特徵工程 + GBRank 算法排序。在實際中會遇到這樣的問題,如示例,Twitter 出現在 title 中的實體,傳統的方式會把 Twitter 分數計算的很高,但是這篇文章中卻不是重點,重點是兩支 LOL 戰隊的罵戰。於是我們在 BGRank 之後,加了 re-rank 層,爲所有的候選詞做一個重排序。詞之間邊關係使用關聯關係 embedding 計算相似度得到。

3. 語義匹配

對於概念和事件類型的標籤,原文中可能並不會出現,用抽取的方式就沒有辦法解決。我們採用召回+排序的方式解決。召回的邏輯分爲關係召回和語義召回,其中關係召回會用到興趣點圖譜中的關係數據,召回 1-hop 內的節點作爲候選,語義召回通過語義向量召回與 title 近鄰的節點作爲候選,然後用交互匹配的方式進行排序。如果 1-hop 內的節點數量太多,排序耗時會非常大,因此這裏採用粗糙集的方式進行候選的粗排,縮小候選集合再進行排序。

線上效果

實驗部分,baseline 是僅用傳統的實體和分類標籤,而實驗組除了實體和分類以外,同時使用概念和事件類型的興趣點,最後線上效果提升明顯。

今天的分享就到這裏,謝謝大家。

作者介紹

郭偉東

騰訊 | 高級研究員

本文來自 DataFun 社區

原文鏈接

https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247495622&idx=1&sn=3d229e34dfe061b61bb47b4677def6a0&chksm=fbd75daacca0d4bc83d02b78b7d7c8485521eba07a03553db52ba039f3d948835f3d750a301e&scene=27#wechat_redirect

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章