騰訊信息流熱點(diǎn)挖掘技術(shù)實(shí)踐
分享嘉賓:羅錦文 騰訊 研究員
編輯整理:Jane Zhang
出品平臺(tái):DataFunTalk
-
項(xiàng)目背景
-
相關(guān)研究方法
-
熱點(diǎn)計(jì)算框架
-
熱點(diǎn)挖掘
-
熱點(diǎn)應(yīng)用
項(xiàng)目背景
1. 熱點(diǎn)應(yīng)用場(chǎng)景
當(dāng)前各大資訊類的產(chǎn)品都在顯著的版面上展示和推薦熱點(diǎn)相關(guān)內(nèi)容,針對(duì)熱點(diǎn)內(nèi)容的推薦和呈現(xiàn)也變得非常多元化,比如:微博有微博熱搜榜;知乎通過事件討論的形式運(yùn)營熱點(diǎn);百度有歷史悠久的百度熱搜榜;頭條通過興趣推薦的方式做熱點(diǎn)分發(fā)頻道,騰訊在對(duì)大事件做脈絡(luò)運(yùn)營。當(dāng)前各大產(chǎn)品都對(duì)熱點(diǎn)進(jìn)行了大量的投入,我們基于騰訊看點(diǎn)豐富的視頻數(shù)據(jù),深挖用戶的興趣內(nèi)容,接下來看下我們?cè)隍v訊看點(diǎn)的推薦頻道頁。
2. 熱點(diǎn)核心推薦問題
這里對(duì)騰訊看點(diǎn)進(jìn)行問題的分析,當(dāng)前基于熱點(diǎn)的問題存在以下幾個(gè)問題:
-
及時(shí)性。熱點(diǎn)挖掘需要及時(shí)監(jiān)控全網(wǎng)站點(diǎn),以科比去世為例,及時(shí)發(fā)現(xiàn)這一事件,并挖掘出來對(duì)應(yīng)報(bào)道,才能有效幫助熱點(diǎn)進(jìn)行推薦和分發(fā)。
-
全面性問題。不同站點(diǎn)對(duì)熱點(diǎn)的呈現(xiàn)不同,需要將事件榜單、話題榜單和對(duì)應(yīng)的多種報(bào)道合理組織起來。比如,當(dāng)一篇"南寧-工廠發(fā)生火災(zāi)"文章入庫后,熱點(diǎn)挖掘能否判斷已有的挖掘結(jié)果與之對(duì)應(yīng),才能更好地進(jìn)行推薦。
-
熱度合理性問題。熱度值是熱度的重要特征,不同的數(shù)據(jù)源的事件熱度各有不同,比如微博熱搜榜當(dāng)時(shí)有"錢峰又胖了"的話題,排在微博熱搜榜很高的位置上,但是由于不同媒體的受眾不同,在看點(diǎn)這邊就很少有文章報(bào)道或者有用戶去閱讀。
-
熱點(diǎn)分發(fā)的問題。熱點(diǎn)文章和視頻都有冷啟動(dòng)的問題,如在北京朝陽疫情定為高風(fēng)險(xiǎn)時(shí),大部分是根據(jù)興趣點(diǎn)推薦的,最近一段時(shí)間大家的用戶畫像中提出來"疫情"這個(gè)特征,如果基于疫情進(jìn)行下發(fā),非北京地區(qū)的用戶不關(guān)注這個(gè)文章,這會(huì)降低系統(tǒng)的分發(fā)效率。因此要進(jìn)行泛化,比如泛化到"北京疫情"這樣的話題,來做用戶分發(fā),以此解決這篇文章冷啟動(dòng)的問題。
接下來能看到熱點(diǎn)推薦有沒有從事件推薦的角度來理解文章。有沒有從事件的角度來理解文章,是提升熱點(diǎn)推薦效果需要重點(diǎn)討論的點(diǎn)。帶著這幾個(gè)問題,來看看傳統(tǒng)的相關(guān)研究是怎么解決這個(gè)問題的。
1. 事件抽取
任務(wù)定義:
作為信息抽取的一個(gè)重要任務(wù),事件抽取是從一個(gè)無結(jié)構(gòu)化的文本中自動(dòng)抽取出來結(jié)構(gòu)化的知識(shí)。以ACE任務(wù)為例,事件抽取可以分為事件檢測(cè)和事件要素提取。事件檢測(cè)是識(shí)別句子中的觸發(fā)詞trigger,這個(gè)詞是描述時(shí)間的核心動(dòng)作,然后根據(jù)預(yù)先定義好的框架,進(jìn)行事件類型分類,因此事件分類是一個(gè)封閉集合。我是科比的粉絲,專門研究過科比不幸遇難時(shí)的相關(guān)報(bào)道,以科比去世為例,這里"凌晨四點(diǎn),NBA球星科比布萊恩墜機(jī)身亡",可以識(shí)別出trigger詞為"身亡",事件類型分類為die – 死亡事件類型,對(duì)應(yīng)的事件要素是:event frame,包括:施害者、受害者、事件、地點(diǎn)等。通過事件提取的方式,能提到時(shí)間是"凌晨四點(diǎn)",受害者是"科比·布萊恩",把受害者和時(shí)間對(duì)應(yīng)起來。這就是一個(gè)比較完整的事件抽取過程。
問題點(diǎn):
可以看到事件抽取任務(wù),是針對(duì)原子事件,通常是不可再分的,如通常提及的"新冠疫情爆發(fā)","南方洪水成災(zāi)",這是有很多子事件的,不能通過事件抽取挖掘出來,同時(shí)事件框架要提前定義好,但是事件類型有限,難以覆蓋新涌現(xiàn)出來的事件,因此只將事件抽取作為一個(gè)重要的特征抽取工具。
2. 話題檢測(cè)與追蹤 ( TDT )
接下來的任務(wù)和熱點(diǎn)挖掘更相關(guān),就是話題檢測(cè)與追蹤中的TDT任務(wù),這個(gè)任務(wù)有20多年的歷史了,定義的是處理新聞報(bào)道的系統(tǒng)。輸入可以是固定的文章或者流式數(shù)據(jù),結(jié)果是以聚類的方式將文檔組織起來的話題。
話題檢測(cè):檢測(cè)和組織系統(tǒng)中未預(yù)先設(shè)定的話題,也就是新話題的發(fā)現(xiàn)。
事件追蹤:新到達(dá)系統(tǒng)的報(bào)道是否是已知話題的后續(xù)報(bào)道,也就是把新到達(dá)的文章和已有話題算相似度。
通常研究方法分為2類:
-
第一類算法是尋找TDT任務(wù)中的新的聚類算法,或?qū)σ延芯垲愃惴ǖ母脑?,常用的算法有:k-means、DBSCAN、層次聚類;
-
第二類算法是挖掘新的聚類特征來提高TDT任務(wù)的計(jì)算效果,如使用文本的語義特征、分類特征、實(shí)體特征、上面事件抽取提到的特征,和任務(wù)結(jié)合起來,計(jì)算更準(zhǔn)確的相似度。當(dāng)然TDT也有很多別的子任務(wù),大家有興趣可以去看一下。
突發(fā)事件監(jiān)測(cè):TDT為我們處理海量數(shù)據(jù)提供了很多新的解決思路,之后衍生出來了突發(fā)事件檢測(cè)任務(wù),值得關(guān)注。突發(fā)特征指的是伴隨著事件的發(fā)生,若干與該事件密切相關(guān)的特征出現(xiàn)反?,F(xiàn)象,比如文檔、詞語的爆發(fā),比如南方下暴雨,暴雨這個(gè)詞就會(huì)比去年或者前幾個(gè)月的時(shí)序有明顯的不同,最近是一個(gè)顯著爆發(fā)的特征。我們可以通過檢測(cè)突發(fā)特征來發(fā)現(xiàn)事件,這類研究目標(biāo)與TDT任務(wù)不同,不再局限于傳統(tǒng)的新聞報(bào)道,可以針對(duì)多類型的數(shù)據(jù),比如微博、搜索、視頻數(shù)據(jù),受此輸入的影響,我們將時(shí)序分析方法和話題聚類相結(jié)合,來提升熱點(diǎn)挖掘的效果,以上方法都能很好地指導(dǎo)我們進(jìn)行熱點(diǎn)挖掘的工作。
接下來針對(duì)騰訊海量的數(shù)據(jù)和數(shù)據(jù)類型多的特點(diǎn),提出了我們自己的熱點(diǎn)計(jì)算框架,下面簡單介紹。
1. 總框架
整體分兩部分:離線挖掘和在線理解,離線挖掘內(nèi)容非常豐富,著重講這塊。
離線挖掘流程:先是資源引入,有3個(gè)不同的端,騰訊看點(diǎn)瀏覽器、qq瀏覽器、qq里的騰訊看點(diǎn)頻道,接入豐富的數(shù)據(jù)之后,通過話題抽取,來提取熱點(diǎn)特征,進(jìn)行話題融合,把挖掘到的結(jié)果聚類成話題,再把話題拆分成對(duì)應(yīng)的事件。
為什么先做話題聚類,再做事件拆分呢?
還以科比去世為例。當(dāng)時(shí)描述這個(gè)話題,一部分報(bào)道的是"科比意外身亡",另一部分報(bào)道"科比妻子悲痛欲絕",以及"明星悼念科比"。當(dāng)事件在凌晨剛發(fā)生的時(shí)候,只有一個(gè)媒體和幾家論壇報(bào)道了這個(gè)事情,算法比較難把主要描述"明星悼念科比"和"科比意外身亡"的文章拆成兩個(gè),看做一個(gè)更加合理,文章增加一兩個(gè)小時(shí)后,很多媒體從不同的角度描述這個(gè)事件,文章的豐富程度足以支撐我們把這個(gè)話題拆封成合理的較細(xì)的粒度,這個(gè)細(xì)分是比較符合用戶興趣的,比如女性用戶更加關(guān)心科比妻子的情況,而對(duì)一些外國明星悼念科比不那么感興趣,因此能夠以更加有針對(duì)性的事件的粒度推薦,提升熱點(diǎn)推薦的效果。
詳細(xì)流程:
① 熱點(diǎn)挖掘 熱點(diǎn)挖掘是為了滿足全面性、及時(shí)性的要求,把熱點(diǎn)挖掘拆為定時(shí)任務(wù)和流式任務(wù)。- 定時(shí)任務(wù):主要是搜索點(diǎn)擊的特征、搜索詞文章中的關(guān)鍵詞的時(shí)序特征,與文章內(nèi)容聚類的方式結(jié)合,把描述相近資源的文章聚合在一起,以話題形式組織起來。
- 流式任務(wù):將入庫的文章,及時(shí)通過事件判斷過濾掉非事件內(nèi)容,提升計(jì)算流程的時(shí)效性。
為什么要做話題庫和事件庫?
以近期的"暴雨資訊"為例,用戶感興趣的是"安徽特發(fā)特大暴雨"的事件內(nèi)容,而非提及暴雨的文章 ( 比如"日本暴雨導(dǎo)致山洪爆發(fā)" ),我們需要把不同的數(shù)據(jù)源以話題庫的形式組織起來,幫助熱點(diǎn)推薦以跳出關(guān)鍵詞 ( "暴雨" ) 推薦的限制,為用戶提供更加符合其興趣的內(nèi)容。有了熱點(diǎn)計(jì)算框架后,我們看看在應(yīng)用場(chǎng)景上如何落地。
1. QueryLog熱點(diǎn)挖掘
第一個(gè)是基于query的熱點(diǎn)挖掘。
① 預(yù)處理:構(gòu)造Query時(shí)序數(shù)據(jù)
基于這樣的假設(shè):如果熱點(diǎn)熱門,用戶有了解詳細(xì)內(nèi)容的需求。會(huì)通過query去搜索事件詳情,因此我們以query為數(shù)據(jù)來源,這是一個(gè)顯而易見的事情。如南寧發(fā)生火災(zāi),用戶會(huì)搜索南寧工廠,了解具體的傷亡情況。用戶的搜索多種多樣,基于突發(fā)熱點(diǎn)能檢測(cè)的方式,常見的是根據(jù)搜索詞構(gòu)建時(shí)間序列,使用BRD算法計(jì)算突發(fā)性,突發(fā)性需要進(jìn)行分段處理、斜率檢測(cè)、需要做分段設(shè)計(jì),難以維護(hù)。我們構(gòu)造了query熱點(diǎn)計(jì)算流程來解決這個(gè)問題。
② 熱門識(shí)別:時(shí)序分析,識(shí)別熱門Query
首先是構(gòu)造這個(gè)時(shí)序之后,通過時(shí)間序列分析來識(shí)別熱門query,具體做法:定義一個(gè)熱門query的趨勢(shì)模板,前面幾天平滑,最近有一個(gè)上升的趨勢(shì);或者小幅度上升,近期然后突然下降、熱度減退的模板,這樣計(jì)算事件的相似度,如果符合,就認(rèn)為是熱門的query,否則就不是。
相似度計(jì)算最開始是使用歐拉距離,需要把時(shí)間軸上的兩個(gè)點(diǎn)做嚴(yán)格對(duì)齊。雖然趨勢(shì)一致,但是歐拉對(duì)齊會(huì)導(dǎo)致相似度計(jì)算值較低,會(huì)帶來bad case,后來使用DTW ( 動(dòng)態(tài)時(shí)間規(guī)劃 ) 算法,使用動(dòng)態(tài)規(guī)劃的方式來對(duì)齊時(shí)間序列,能更好捕捉趨勢(shì)相似的情況。
③?話題檢測(cè):相似Query聚類,形成話題
挖掘到熱門query之后,可以發(fā)現(xiàn)用戶的搜索比較隨意,同一個(gè)事件的描述也是多種多樣,對(duì)應(yīng)多個(gè)query,所以需要把相同事件的query聚集起來,構(gòu)造一個(gè)話題,與TDT中的無監(jiān)督有所不同,搜索可以使用點(diǎn)擊二部圖的方式,以不同的query 可以點(diǎn)到同一個(gè)標(biāo)題時(shí),認(rèn)為這兩個(gè)query相似,結(jié)合語義特征,比如"吳亦凡女友"和"吳亦凡戀情",語義比較相似;還有實(shí)體特征,"科比退役""姚明退役",雖然兩個(gè)都帶有"退役",看起來字面相似度較高,但是"科比"和"姚明"在事件中是不同的主題,可以對(duì)相似度降權(quán)。最后對(duì)相似度的綜合得到更好地query相似度量,得到話題聚類結(jié)構(gòu)。這里可以看到將query到話題的聚類。
最后,我們可以看到用戶行為的話題檢測(cè),可以幫我們有效度量話題的消費(fèi)熱度。為什么是消費(fèi)熱度呢?是因?yàn)橛脩舴侵鲃?dòng)搜索內(nèi)容,表示用戶有主動(dòng)的消費(fèi)意愿,所以是消費(fèi)熱度。這也是非常有效的話題度量方式。
④ 事件識(shí)別
在話題檢測(cè)之前,當(dāng)話題達(dá)到可拆分時(shí),我們會(huì)對(duì)事件做拆分。常見的話題會(huì)伴隨非事件的話題,比如熱門美劇更新時(shí),會(huì)出現(xiàn)熱度突發(fā),這樣會(huì)混合這些query,因此基于監(jiān)督做事件分類。比如詞特征、點(diǎn)擊信息,把"下載"去掉,url中的站點(diǎn)信息、域名信息加入進(jìn)去,train一個(gè)分類器,可以有效識(shí)別出來哪些是事件、哪些是非事件。
事件命名,組里的同學(xué)在之前通過詞法分析工具的基礎(chǔ)上,提取了一個(gè)新的事件命名方式,基于query 和title構(gòu)造圖模型,來挖掘事件concept和event的命名。這是之前話題挖掘的延續(xù),這個(gè)任務(wù)已經(jīng)發(fā)表在SIGMOD 2020上,大家有興趣可以做詳細(xì)閱讀。當(dāng)前挖掘效果每天新增100+事件,準(zhǔn)確率人工評(píng)估95+??梢钥吹綄?duì)當(dāng)前的挖掘效果,在傳統(tǒng)上的提升。
2. 資訊文章熱點(diǎn)挖掘
作為信息流服務(wù)的團(tuán)隊(duì),每天打交道最多的是海量數(shù)據(jù)。當(dāng)熱門發(fā)生時(shí),自媒體作者會(huì)主動(dòng)跟進(jìn)熱點(diǎn),創(chuàng)作文章跟進(jìn)這些內(nèi)容,比如當(dāng)科比去世的一個(gè)小時(shí)后,即便是凌晨四點(diǎn),作者也會(huì)也及時(shí)更新做報(bào)道。
挖掘主要是采用聚類的方式,離線的方式是將文章的數(shù)據(jù)按照固定發(fā)布時(shí)間做切分,通過batch learning對(duì)文章進(jìn)行聚類,k-means、層次聚類這些方法會(huì)忽略這樣的問題:每天有很多如描述劉德華過往文章,如果直接套用聚類算法會(huì)挖掘出來并非熱點(diǎn),會(huì)影響用戶體驗(yàn)。熱點(diǎn)文章包含時(shí)效性,如果直接套用聚類,沒考慮時(shí)效性。傳統(tǒng)的突發(fā)事件檢測(cè)Graph event detection是基于二項(xiàng)分布或者傅里葉變化的方法發(fā)現(xiàn)突發(fā)次,這些突發(fā)次會(huì)持續(xù)一段時(shí)間的增長,而非突發(fā)的一個(gè)尖點(diǎn)。并且基于詞粒度的挖掘會(huì)帶來很多bad case,NLP同學(xué)都會(huì)發(fā)現(xiàn)這樣的問題。切詞的粒度不可控。
基于這些問題,提出了新的挖掘方式:基于關(guān)鍵詞和動(dòng)態(tài)時(shí)間規(guī)劃的方法來進(jìn)行事件挖掘。
我們這里使用的處理方式:
① 預(yù)處理及熱門識(shí)別
關(guān)鍵詞描述文章主體,借助組內(nèi)篇章理解的能力,將文章特征轉(zhuǎn)換為關(guān)鍵詞特征,與query挖掘相似,將關(guān)鍵詞在文章庫中出現(xiàn)的頻次,構(gòu)造時(shí)間序列,再用DTW算法與固定的模板做匹配,得到挖掘到的熱門關(guān)鍵詞。比如暴雨,或者前段時(shí)間北京6月份疫情,三文魚突然熱起來,通過這種方式挖掘出來"三文魚"熱門關(guān)鍵詞,能召回很多描述新發(fā)地疫情相關(guān)的文章。當(dāng)時(shí)召回的文章的acc和 recall都很高。接下來回到暴雨,通過暴雨召回所有和暴雨相關(guān)的文章,再構(gòu)造熱門關(guān)鍵詞的實(shí)體特征,包括抽取的地點(diǎn),安徽、合肥,加入實(shí)體特征,再用語言模型提取title的特征,計(jì)算相似度,3個(gè)相似度綜合得到文章自底向下的層次聚類,從而得把南方暴雨聚成一個(gè)話題。而之前提到的"日本山洪爆發(fā)",雖然提到了暴雨,相似度較低,會(huì)聚類為一個(gè)孤立的點(diǎn),可以過濾掉。
② 話題檢測(cè)
在這之后,同樣是聚類,得到的話題是自媒體創(chuàng)作的文章。自媒體作者可以認(rèn)為是專家用戶,他們創(chuàng)作文章的數(shù)量,可度量話題熱度,定義為生產(chǎn)熱度。
③ 事件拆分
然后做事件拆分,以"江西洪澇致699萬人受災(zāi)"和"重慶暴雨成災(zāi)"兩個(gè)事件為例,基于看點(diǎn)的數(shù)據(jù)分布,作為一個(gè)觸發(fā)詞發(fā)現(xiàn)和元素抽取任務(wù),就可以得到受災(zāi)和成災(zāi)的trigger相似,但argument不相似,這樣可以把話題合理拆分成兩個(gè)不同的時(shí)間,拆分為時(shí)間后,通過rank,可以把聚類為相似度較高的標(biāo)題抽出來,然后基于seq2seq + attention的方式,形成可以展示的事件名稱,從而得到合理的拆分和事件命名。
④ 熱度計(jì)算
還可以得到事件庫,可以query挖掘得到的消費(fèi)熱度,基于咨詢得到的生產(chǎn)熱度,基于全網(wǎng)的監(jiān)控的全網(wǎng)熱度,綜合起來,對(duì)挖掘到的熱門文章,進(jìn)行合理的熱度,幫助推薦系統(tǒng)做推薦,提供更好的熱度特征。
通過熱點(diǎn)挖掘算法,得到更加滿足用戶興趣的話題集合、事件集合和對(duì)應(yīng)的熱度。
接下來看在熱點(diǎn)推薦場(chǎng)景下如何應(yīng)用起來。
1. 圖文熱點(diǎn)應(yīng)用
圖文熱點(diǎn)應(yīng)用。資訊庫是流式文章入庫,在線理解借助語義匹配模型,將新入庫的文章和已有的事件庫關(guān)聯(lián)起來,使用的是雙塔結(jié)構(gòu)和MatchPyramid模型結(jié)合,將文章標(biāo)題和事件的名稱的BOW特征,計(jì)算語義相關(guān)度,而MatchPyramid模型則構(gòu)造事件詞與文章內(nèi)容的交互矩陣,比如事件名稱包含6個(gè)詞,文章選擇前300個(gè)詞,是300維,得到6*300的矩陣,做卷積計(jì)算,得到一個(gè)相似度量,將這兩個(gè)做線性融合,得到顯性匹配的分。這樣也可以把在線文章進(jìn)入事件庫,賦上 事件標(biāo)簽、話題標(biāo)簽、綜合熱度,給推薦系統(tǒng)使用。在事件匹配的準(zhǔn)確率上,也達(dá)到了較高的標(biāo)準(zhǔn),事件覆蓋效果也比較好。
這不僅可以用在圖文挖掘上,也可以用在視頻、小視頻熱點(diǎn)挖掘中。
2. 視頻&小視頻熱點(diǎn)
視頻&小視頻熱中的應(yīng)用,主要是基于熱點(diǎn)挖掘得到的文本信息,將圖文計(jì)算的熱點(diǎn)傳遞給視頻和小視頻,怎么做的呢?視頻能夠準(zhǔn)確打出影視綜合明星tag,通過已挖掘好的熱門詞庫,可以篩選出來近期熱門的影視明星類的視頻和小視頻。我們還會(huì)解決這樣的問題,比如快樂大本營已經(jīng)播了很多年,經(jīng)常出現(xiàn)老片段新發(fā),或者明星自制的明星短劇,需要借助視頻關(guān)鍵詞、作者的信息、人工標(biāo)簽,過濾掉非熱門視頻,得到熱門視頻的候選。另一個(gè)是基于新聞報(bào)道的視頻,人工不知道事件的前提下,直接打事件標(biāo)簽很困難,需要借助已經(jīng)挖掘到的事件庫,和視頻標(biāo)題做匹配,匹配近期的熱門事件的視頻和小視頻,如"科比墜機(jī)",可以匹配到"科比去世","科比墜機(jī)身亡事件",得到這些標(biāo)題后,進(jìn)入熱門視頻庫中,幫助推薦系統(tǒng)給用戶推薦更加熱門的視頻和小視頻。
羅錦文
騰訊 |?研究員
本科畢業(yè)于蘭州大學(xué),研究生畢業(yè)于北京大學(xué)。2016年阿里實(shí)習(xí),然后2017下半年轉(zhuǎn)戰(zhàn)百度實(shí)習(xí),于18年加入騰訊正式工作,負(fù)責(zé)新NLP新熱內(nèi)容挖掘和詞法分析相關(guān)工作。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!