Categories
程式開發

騰訊信息流熱點挖掘技術實踐


導讀: 当前各大资讯社交类APP都在显著的版面展示或者推荐热点相关内容,信息流应用能否快速发现热点、引导用户阅读热点,是影响用户体验的重要因素。本次分享主要介绍腾讯在热点挖掘方面的工作。基于搜索数据和自媒体文章,通过时序分析方法和内容聚类相结合的方法挖掘热点,并将热点聚类成事件和话题。用户搜索和媒体生产能够从消费和生产两个方面更加准确的度量热度,事件和话题同时能够辅助用户理解,做到热点的个性化下发,从而提升信息流热点体验。本文主要内容包括:

  • 項目背景
  • 相關研究方法
  • 熱點計算框架
  • 熱點挖掘
  • 熱點應用

01 項目背景

1. 熱點應用場景

騰訊信息流熱點挖掘技術實踐 1

当前各大资讯类的产品都在显著的版面上展示和推荐热点相关内容,针对热点内容的推荐和呈现也变得非常多元化,比如:微博有微博热搜榜;知乎通过事件讨论的形式运营热点;百度有历史悠久的百度热搜榜;头条通过兴趣推荐的方式做热点分发频道,腾讯在对大事件做脉络运营。当前各大产品都对热点进行了大量的投入,我们基于腾讯看点丰富的视频数据,深挖用户的兴趣内容,接下来看下我们在腾讯看点的推荐频道页。

2. 熱點核心推薦問題

騰訊信息流熱點挖掘技術實踐 2

這裡對騰訊看點進行問題的分析,當前基於熱點的問題存在以下幾個問題:

  • 及時性。熱點挖掘需要及時監控全網站點,以科比去世為例,及時發現這一事件,並挖掘出來對應報導,才能有效幫助熱點進行推薦和分發。
  • 全面性問題。不同站點對熱點的呈現不同,需要將事件榜單、話題榜單和對應的多種報導合理組織起來。比如,當一篇”南寧-工廠發生火災”文章入庫後,熱點挖掘能否判斷已有的挖掘結果與之對應,才能更好地進行推薦。
  • 熱度合理性問題。熱度值是熱度的重要特徵,不同的數據源的事件熱度各有不同,比如微博熱搜榜當時有”錢峰又胖了”的話題,排在微博熱搜榜很高的位置上,但是由於不同媒體的受眾不同,在看點這邊就很少有文章報導或者有用戶去閱讀。
  • 熱點分發的問題。熱點文章和視頻都有冷啟動的問題,如在北京朝陽疫情定為高風險時,大部分是根據興趣點推薦的,最近一段時間大家的用戶畫像中提出來”疫情”這個特徵,如果基於疫情進行下發,非北京地區的用戶不關注這個文章,這會降低系統的分發效率。因此要進行泛化,比如泛化到”北京疫情”這樣的話題,來做用戶分發,以此解決這篇文章冷啟動的問題。

接下來能看到熱點推薦有沒有從事件推薦的角度來理解文章。有沒有從事件的角度來理解文章,是提升熱點推薦效果需要重點討論的點。帶著這幾個問題,來看看傳統的相關研究是怎麼解決這個問題的。

02 相關研究方法

1. 事件抽取

騰訊信息流熱點挖掘技術實踐 3

任務定義

作為信息抽取的一個重要任務,事件抽取是從一個無結構化的文本中自動抽取出來結構化的知識。以ACE任務為例,事件抽取可以分為事件檢測和事件要素提取。事件檢測是識別句子中的觸發詞trigger,這個詞是描述時間的核心動作,然後根據預先定義好的框架,進行事件類型分類,因此事件分類是一個封閉集合。我是科比的粉絲,專門研究過科比不幸遇難時的相關報導,以科比去世為例,這裡”凌晨四點,NBA球星科比布萊恩墜機身亡”,可以識別出trigger詞為”身亡”,事件類型分類為die – 死亡事件類型,對應的事件要素是:event frame,包括:施害者、受害者、事件、地點等。通過事件提取的方式,能提到時間是”凌晨四點”,受害者是”科比·布萊恩”,把受害者和時間對應起來。這就是一個比較完整的事件抽取過程。

問題點

可以看到事件抽取任務,是針對原子事件,通常是不可再分的,如通常提及的”新冠疫情爆發”,“南方洪水成災”,這是有很多子事件的,不能通過事件抽取挖掘出來,同時事件框架要提前定義好,但是事件類型有限,難以覆蓋新湧現出來的事件,因此只將事件抽取作為一個重要的特徵抽取工具。

2. 話題檢測與追踪( TDT )

騰訊信息流熱點挖掘技術實踐 4

接下來的任務和熱點挖掘更相關,就是話題檢測與追踪中的TDT任務,這個任務有20多年的歷史了,定義的是處理新聞報導的系統。輸入可以是固定的文章或者流式數據,結果是以聚類的方式將文檔組織起來的話題。

話題檢測: 檢測和組織系統中未預先設定的話題,也就是新話題的發現。

事件追踪: 新到達系統的報導是否是已知話題的後續報導,也就是把新到達的文章和已有話題算相似度。

通常研究方法分為2類:

  • 第一類算法是尋找TDT任務中的新的聚類算法,或對已有聚類算法的改造,常用的算法有:k-means、DBSCAN、層次聚類;
  • 第二類算法是挖掘新的聚類特徵來提高TDT任務的計算效果,如使用文本的語義特徵、分類特徵、實體特徵、上面事件抽取提到的特徵,和任務結合起來,計算更準確的相似度。當然TDT也有很多別的子任務,大家有興趣可以去看一下。

突發事件監測: TDT为我们处理海量数据提供了很多新的解决思路,之后衍生出来了突发事件检测任务,值得关注。突发特征指的是伴随着事件的发生,若干与该事件密切相关的特征出现反常现象,比如文档、词语的爆发,比如南方下暴雨,暴雨这个词就会比去年或者前几个月的时序有明显的不同,最近是一个显著爆发的特征。我们可以通过检测突发特征来发现事件,这类研究目标与TDT任务不同,不再局限于传统的新闻报道,可以针对多类型的数据,比如微博、搜索、视频数据,受此输入的影响,我们将时序分析方法和话题聚类相结合,来提升热点挖掘的效果,以上方法都能很好地指导我们进行热点挖掘的工作。

接下來針對騰訊海量的數據和數據類型多的特點,提出了我們自己的熱點計算框架,下面簡單介紹。

03 熱點計算框架

1. 總框架

騰訊信息流熱點挖掘技術實踐 5

整體分兩部分:離線挖掘和在線理解,離線挖掘內容非常豐富,著重講這塊。

離線挖掘流程:先是資源引入,有3個不同的端,騰訊看點瀏覽器、qq瀏覽器、qq裡的騰訊看點頻道,接入豐富的數據之後,通過話題抽取,來提取熱點特徵,進行話題融合,把挖掘到的結果聚類成話題,再把話題拆分成對應的事件。

為什麼先做話題聚類,再做事件拆分呢?

還以科比去世為例。當時描述這個話題,一部分報導的是”科比意外身亡”,另一部分報導”科比妻子悲痛欲絕”,以及”明星悼念科比”。當事件在凌晨剛發生的時候,只有一個媒體和幾家論壇報導了這個事情,算法比較難把主要描述”明星悼念科比”和”科比意外身亡”的文章拆成兩個,看做一個更加合理,文章增加一兩個小時後,很多媒體從不同的角度描述這個事件,文章的豐富程度足以支撐我們把這個話題拆封成合理的較細的粒度,這個細分是比較符合用戶興趣的,比如女性用戶更加關心科比妻子的情況,而對一些外國明星悼念科比不那麼感興趣,因此能夠以更加有針對性的事件的粒度推薦,提升熱點推薦的效果。

詳細流程

① 熱點挖掘

熱點挖掘是為了滿足全面性、及時性的要求,把熱點挖掘拆為定時任務和流式任務。

  • 定時任務:主要是搜索點擊的特徵、搜索詞文章中的關鍵詞的時序特徵,與文章內容聚類的方式結合,把描述相近資源的文章聚合在一起,以話題形式組織起來。
  • 流式任務:將入庫的文章,及時通過事件判斷過濾掉非事件內容,提升計算流程的時效性。

② 話題融合

經過話題挖掘和實踐挖掘後,進行話題融合。話題是對向上泛化,需要話題解析模塊,將不同輸入來源的熱點信息以特徵提取,與流式處理的融合,組織成話題的粒度;最後通過話題融合模塊,從3個不同的角度定義一個熱度,這樣定好的熱度,更加符合平台用戶的熱度感知,這樣能幫助我們進行熱點推薦。

③ 事件拆分

得到話題後,為了有效組織事件內容,需要對話題進行拆分,通過對事件命名的方式,把事件以簡短的名稱組織起來,得到事件tag,這樣能支持線上使用,如事件榜單、事件脈絡等,事件的核心詞和熱詞進行熱度匹配,把事件統一管理起來服務於熱點相關的應用。

為什麼要做話題庫和事件庫?

以近期的”暴雨資訊”為例,用戶感興趣的是”安徽特發特大暴雨”的事件內容,而非提及暴雨的文章( 比如”日本暴雨導致山洪爆發” ),我們需要把不同的數據源以話題庫的形式組織起來,幫助熱點推薦以跳出關鍵詞( “暴雨” ) 推薦的限制,為用戶提供更加符合其興趣的內容。有了熱點計算框架後,我們看看在應用場景上如何落地。

04 熱點挖掘

1. QueryLog熱點挖掘

騰訊信息流熱點挖掘技術實踐 6

第一個是基於query的熱點挖掘。

① 預處理:構造Query時序數據

基於這樣的假設:如果熱點熱門,用戶有了解詳細內容的需求。會通過query去搜索事件詳情,因此我們以query為數據來源,這是一個顯而易見的事情。如南寧發生火災,用戶會搜索南寧工廠,了解具體的傷亡情況。用戶的搜索多種多樣,基於突發熱點能檢測的方式,常見的是根據搜索詞構建時間序列,使用BRD算法計算突發性,突發性需要進行分段處理、斜率檢測、需要做分段設計,難以維護。我們構造了query熱點計算流程來解決這個問題。

② 熱門識別:時序分析,識別熱門Query

首先是構造這個時序之後,通過時間序列分析來識別熱門query,具體做法:定義一個熱門query的趨勢模板,前面幾天平滑,最近有一個上升的趨勢;或者小幅度上升,近期然後突然下降、熱度減退的模板,這樣計算事件的相似度,如果符合,就認為是熱門的query,否則就不是。

相似度計算最開始是使用歐拉距離,需要把時間軸上的兩個點做嚴格對齊。雖然趨勢一致,但是歐拉對齊會導致相似度計算值較低,會帶來bad case,後來使用DTW ( 動態時間規劃) 算法,使用動態規劃的方式來對齊時間序列,能更好捕捉趨勢相似的情況。

③ 話題檢測:相似Query聚類,形成話題

挖掘到熱門query之後,可以發現用戶的搜索比較隨意,同一個事件的描述也是多種多樣,對應多個query,所以需要把相同事件的query聚集起來,構造一個話題,與TDT中的無監督有所不同,搜索可以使用點擊二部圖的方式,以不同的query 可以點到同一個標題時,認為這兩個query相似,結合語義特徵,比如”吳亦凡女友”和”吳亦凡戀情”,語義比較相似;還有實體特徵,“科比退役”“姚明退役”,雖然兩個都帶有”退役”,看起來字面相似度較高,但是”科比”和”姚明”在事件中是不同的主題,可以對相似度降權。最後對相似度的綜合得到更好地query相似度量,得到話題聚類結構。這裡可以看到將query到話題的聚類。

最後,我們可以看到用戶行為的話題檢測,可以幫我們有效度量話題的消費熱度。為什麼是消費熱度呢?是因為用戶非主動搜索內容,表示用戶有主動的消費意願,所以是消費熱度。這也是非常有效的話題度量方式。

④ 事件識別

在話題檢測之前,當話題達到可拆分時,我們會對事件做拆分。常見的話題會伴隨非事件的話題,比如熱門美劇更新時,會出現熱度突發,這樣會混合這些query,因此基於監督做事件分類。比如詞特徵、點擊信息,把”下載”去掉,url中的站點信息、域名信息加入進去,train一個分類器,可以有效識別出來哪些是事件、哪些是非事件。

事件命名,組裡的同學在之前通過詞法分析工具的基礎上,提取了一個新的事件命名方式,基於query 和title構造圖模型,來挖掘事件concept和event的命名。這是之前話題挖掘的延續,這個任務已經發表在SIGMOD 2020上,大家有興趣可以做詳細閱讀。當前挖掘效果每天新增100+事件,準確率人工評估95+。可以看到對當前的挖掘效果,在傳統上的提升。

2. 資訊文章熱點挖掘

騰訊信息流熱點挖掘技術實踐 7

作為信息流服務的團隊,每天打交道最多的是海量數據。當熱門發生時,自媒體作者會主動跟進熱點,創作文章跟進這些內容,比如當科比去世的一個小時後,即便是凌晨四點,作者也會也及時更新做報導。

挖掘主要是採用聚類的方式,離線的方式是將文章的數據按照固定發佈時間做切分,通過batch learning對文章進行聚類,k-means、層次聚類這些方法會忽略這樣的問題:每天有很多如描述劉德華過往文章,如果直接套用聚類算法會挖掘出來並非熱點,會影響用戶體驗。熱點文章包含時效性,如果直接套用聚類,沒考慮時效性。傳統的突發事件檢測Graph event detection是基於二項分佈或者傅里葉變化的方法發現突發次,這些突發次會持續一段時間的增長,而非突發的一個尖點。並且基於詞粒度的挖掘會帶來很多bad case,NLP同學都會發現這樣的問題。切詞的粒度不可控。

基於這些問題,提出了新的挖掘方式: 基於關鍵詞和動態時間規劃的方法來進行事件挖掘。

我們這裡使用的處理方式:

① 預處理及熱門識別

關鍵詞描述文章主體,借助組內篇章理解的能力,將文章特徵轉換為關鍵詞特徵,與query挖掘相似,將關鍵詞在文章庫中出現的頻次,構造時間序列,再用DTW算法與固定的模板做匹配,得到挖掘到的熱門關鍵詞。比如暴雨,或者前段時間北京6月份疫情,三文魚突然熱起來,通過這種方式挖掘出來”三文魚”熱門關鍵詞,能召回很多描述新發地疫情相關的文章。當時召回的文章的acc和recall都很高。接下來回到暴雨,通過暴雨召回所有和暴雨相關的文章,再構造熱門關鍵詞的實體特徵,包括抽取的地點,安徽、合肥,加入實體特徵,再用語言模型提取title的特徵,計算相似度,3個相似度綜合得到文章自底向下的層次聚類,從而得把南方暴雨聚成一個話題。而之前提到的”日本山洪爆發”,雖然提到了暴雨,相似度較低,會聚類為一個孤立的點,可以過濾掉。

② 話題檢測

在這之後,同樣是聚類,得到的話題是自媒體創作的文章。自媒體作者可以認為是專家用戶,他們創作文章的數量,可度量話題熱度,定義為生產熱度。

③ 事件拆分

然後做事件拆分,以”江西洪澇致699萬人受災”和”重慶暴雨成災”兩個事件為例,基於看點的數據分佈,作為一個觸發詞發現和元素抽取任務,就可以得到受災和成災的trigger相似,但argument不相似,這樣可以把話題合理拆分成兩個不同的時間,拆分為時間後,通過rank,可以把聚類為相似度較高的標題抽出來,然後基於seq2seq + attention的方式,形成可以展示的事件名稱,從而得到合理的拆分和事件命名。

④ 熱度計算

還可以得到事件庫,可以query挖掘得到的消費熱度,基於諮詢得到的生產熱度,基於全網的監控的全網熱度,綜合起來,對挖掘到的熱門文章,進行合理的熱度,幫助推薦系統做推薦,提供更好的熱度特徵。

通過熱點挖掘算法,得到更加滿足用戶興趣的話題集合、事件集合和對應的熱度。

接下來看在熱點推薦場景下如何應用起來。

05 熱點應用

1. 圖文熱點應用

騰訊信息流熱點挖掘技術實踐 8

圖文熱點應用。資訊庫是流式文章入庫,在線理解借助語義匹配模型,將新入庫的文章和已有的事件庫關聯起來,使用的是雙塔結構和MatchPyramid模型結合,將文章標題和事件的名稱的BOW特徵,計算語義相關度,而MatchPyramid模型則構造事件詞與文章內容的交互矩陣,比如事件名稱包含6個詞,文章選擇前300個詞,是300維,得到6*300的矩陣,做卷積計算,得到一個相似度量,將這兩個做線性融合,得到顯性匹配的分。這樣也可以把在線文章進入事件庫,賦上事件標籤、話題標籤、綜合熱度,給推薦系統使用。在事件匹配的準確率上,也達到了較高的標準,事件覆蓋效果也比較好。

這不僅可以用在圖文挖掘上,也可以用在視頻、小視頻熱點挖掘中。

2. 視頻&小視頻熱點

騰訊信息流熱點挖掘技術實踐 9

視頻&小視頻熱中的應用,主要是基於熱點挖掘得到的文本信息,將圖文計算的熱點傳遞給視頻和小視頻,怎麼做的呢?視頻能夠準確打出影視綜合明星tag,通過已挖掘好的熱門詞庫,可以篩選出來近期熱門的影視明星類的視頻和小視頻。我們還會解決這樣的問題,比如快樂大本營已經播了很多年,經常出現老片段新發,或者明星自製的明星短劇,需要藉助視頻關鍵詞、作者的信息、人工標籤,過濾掉非熱門視頻,得到熱門視頻的候選。另一個是基於新聞報導的視頻,人工不知道事件的前提下,直接打事件標籤很困難,需要藉助已經挖掘到的事件庫,和視頻標題做匹配,匹配近期的熱門事件的視頻和小視頻,如”科比墜機”,可以匹配到”科比去世”,“科比墜機身亡事件”,得到這些標題後,進入熱門視頻庫中,幫助推薦系統給用戶推薦更加熱門的視頻和小視頻。

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

作者介紹

羅錦文,騰訊研究員

本科畢業於蘭州大學,研究生畢業於北京大學。 2016年阿里實習,然後2017下半年轉戰百度實習,於18年加入騰訊正式工作,負責新NLP新熱內容挖掘和詞法分析相關工作。

本文來自DataFunTalk

原文鏈接

騰訊信息流熱點挖掘技術實踐