QQ看點日報內容優化——基于BERT的熱點召回系統

1 評論 10670 瀏覽 41 收藏 14 分鐘

基于BERT搭建了看點日報熱點召回系統,大大提升了看點日報熱點內容量等核心指標,本文將會詳解看點日報熱點召回系統的總體框架及核心方法。

一、業務背景

看點日報旨在為用戶提供新熱、優質的文章,對熱點事件及文章的及時捕捉有著非常強的需求,從海量文章中人工發現熱點文章無疑是巨大的運營成本,所以自動發掘熱點文章是必要的需求。

而發掘熱點事件的時效性、熱點事件的覆蓋度、文章聚合成事件的效果、熱點事件召回文章的召準率、熱點文章的質量等是熱點召回系統的核心指標。

我們通過高頻實時爬取大量互聯網數據,以及基于BERT模型進行熱點事件聚類及文章標題匹配等方式,有效提升我們熱點文章召回系統的各項核心指標。

  • 在熱點文章召回量方面,每天召回熱點文章的數量從1K+上升到1W+。每天看點內被啟用的文章數量為8W左右,其中有超過10%的文章會被我們的熱點系統召回作為熱點文章。
  • 在召準情況方面,在找最match標題的測試中,我們基于BERT模型準確率高達98.4%,能召回看點中被啟用文章的熱點事件比例也高達93.5%。

二、Why BERT?

在應用BERT之前,我們實現了一版BiLSTM-DSSM的模型,但由于準確率不夠高被棄用。

在找最match的標題測試中,BERT與BiLSTM-DSSM的效果對比如下:

QQ看點日報內容優化——基于BERT的熱點召回系統

BERT的原理在網上已經有很多詳細的資料,這里就不再重復,本小節簡單描述BERT有哪些強大的優勢使它能比LSTM等其它模型強大。

優勢1

BERT采用pre-train+fine-turning的訓練模式,基于超大量語料進行pre-train,在pre-train過程BERT已經能學好單詞、句法、語義等特征,具體任務只需用較少量的數據進行fine-truning。

像我們的任務需要標注語料進行訓練,提供超大量的標注數據是難以實現的,而使用BERT則能以較少量的標注數據完成好我們的訓練任務。

優勢2

BERT是雙向語言模型,擁有上下文信息。相比GPT(單向語言模型)和ELMO(粗暴的雙向語言模型,前向和后向簡單相加),BERT有得天獨厚的優勢。

QQ看點日報內容優化——基于BERT的熱點召回系統

優勢3

BERT采用Transformer作為特征提取器,在Transformer誕生之前,RNN占據著NLP領域的主導地位。而相比RNN系列的特征提取器,Transformer具有兩點優勢:RNN不可并行,BERT可并行;RNN很難捕捉長序列的依賴關系,Transformer可以。

RNN結構如下,從h[t-1]到h[t]經過激活函數,變化極大,在距離較遠的傳遞過程會產生梯度消失和梯度爆炸。

QQ看點日報內容優化——基于BERT的熱點召回系統

為了解決這一問題,又提出LSTM等RNN的變種,其結構如下。

從下面公式中可以看出,細胞狀態從C[t-1]到C[t]只經過線性的變化,不會馬上有很大的變化。但當C[x]與C[y]相距很遠時,C[x]與C[y]也很可能變得完全不相關,C[x]的變化可能不會對C[y]有太大影響,從而丟失很遠的信息。

QQ看點日報內容優化——基于BERT的熱點召回系統

而Transformer每個位置都公平地相互做self attention,self attention中任意位置之間進行比較,長度都只有1,因此無論序列多長都不會出現信息丟失的現象。

QQ看點日報內容優化——基于BERT的熱點召回系統

基于self attention的Transformer是更強的序列特征提取器,self attention=探索序列內部的關系,對每個位置提取q、k、v向量,通過Attention公式計算當前位置對其他位置的關注程度。

QQ看點日報內容優化——基于BERT的熱點召回系統

三、模型訓練

keyterm-aware masking

我們的BERT模型是12層Transformer的中文字模型,為了能更好適應業務數據,我們先以看點內的標題和爬取的新聞標題數據讓BERT模型進行自監督學習。

具體做法是mask一些詞語并讓bert預測,一些如流量明星、游戲、動漫等看點中高頻出現的tag,會以更大的概率被mask掉。先基于業務語料的自監督學習讓BERT更熟悉業務數據,再進行語義匹配的fine-turning。

fine-turning

BERT針對語義匹配問題,最常見的網絡結構如下圖所示,直接輸入句子pair,判斷pair中的兩個句子是否匹配。

QQ看點日報內容優化——基于BERT的熱點召回系統

但這種網絡結構不利于我們的業務使用,因為每新發現一個熱點事件話題,就得用此話題與所有的文章標題組成標題pair再輸入到BERT里預測是否屬于同一個事件。

看點內一天被啟用的文章量在8w左右,這無疑需要很長的時間去計算,會嚴重影響熱點文章的時效性。為了提高性能,我們采用了DSSM(深度語義匹配模型)的網絡結構,如下圖所示,DSSM的表示層為BERT模型。

QQ看點日報內容優化——基于BERT的熱點召回系統

這種DSSM網絡結構的優勢在于,BERT可將單個標題進行向量化處理,而不是處理標題pair。這樣我們能預先計算BERT標題向量并存儲到內存數據庫,線上文章召回時可直接讀取BERT標題向量進行匹配。

四、數據構造

難點

  • 需要標注數據規模大,且標注難度大
  • 訓練數據需要切合業務,同時保證多樣性

第一期訓練數據:自動構建數據集+公開數據集

標注數據問題是NLP模型訓練的一個難題,對我們的任務來說也是非常難解決的問題。

我們的模型訓練需要大量標注數據,需標注標題pair是否同屬于一個事件。大規模數據進行人工標注的難度非常的大,成本極高,所以在第一期的訓練數據中我們應用自動構建數據集的方法。

我們自動構建的數據格式為‘title1 tiltle2’的標題pair,title1是互聯網上爬取回來的標題,title2是看點中的文章標題,所有標題pair都是正樣本。訓練時采用多分類的方法,當前標題pair作為正樣本,當前title1與其余標題pair中隨機找255個title2組成255個標題pair作為負樣本。

訓練數據采用關鍵詞匹配的方式自動產生,具體產生方法如下:

  • 識別標題中的關鍵詞,并計算關鍵詞的權重。
  • 用爬取回來的標題與看點內的文章標題做關鍵詞匹配,相似度計算如下:

QQ看點日報內容優化——基于BERT的熱點召回系統

  • 當一對標題相似度超過一定閾值時,認為這對標題對可作為正樣本。同時保證每個爬取的標題只產生一個正樣本數據,并且保證正樣本中的爬取的標題與看點中的標題不完全相同。

為了保證訓練數據都為正樣本,閾值會設得比較高,經測試驗證用此方法產生的正樣本正確率能達到98%以上。

訓練訓練數據中還加入了LCQMC和BQ等中文語義匹配的公開數據集,擴展訓練數據的規模和提升詞語、句式的多樣性。

第二期訓練數據:自動構建數據集+公開數據集+人工標注數據集

基于第一期訓練數據訓練得到第一期BERT模型,我們也得到了第一期的事件話題召回熱點文章的結果,并將第一期的結果直接投放到熱點選文中使用。感謝看點日報運營團隊在熱點選文同時,給我們標注事件話題與文章標題是否匹配的數據。

人工標注數據對我們十分珍貴,為了更加充分利用人工標注的數據,我們采用半自動的方式去增加人工標注的數據。對標注正確的數據通過同義詞互換等方法,多產生出幾份類似的數據。針對標注為錯誤數據,人工構造關于該事件話題或文章標題的幾份正樣本,并且會結合人工標注錯誤的數據做多分類訓練。

人工標注的數據及其衍生的數據和第一期訓練數據結合作為第二期訓練數據,重新訓練BERT模型。

五、總體框架

QQ看點日報內容優化——基于BERT的熱點召回系統

上圖為看點日報熱點召回系統的總體架構,為了保障熱點召回系統的時效性,每個模塊都會每隔10分鐘重新計算并更新數據。

六、系統介紹

下圖為看點日報熱點召回系統的界面展示,系統根據熱度值從高到低的形式地展示熱點榜單,并對事件做分類,且提供分類篩選功能,能及時并清晰呈現全局及每個分類最熱的事件,系統實時發現熱點事件的數量高達600+。通過點擊事件,可索引到相關文章。

QQ看點日報內容優化——基于BERT的熱點召回系統

QQ看點日報內容優化——基于BERT的熱點召回系統

七、總結與展望

看點日報熱點召回系統基于BERT模型與大量實時爬蟲數據,已能在發掘熱點事件的時效性、熱點事件的覆蓋度、文章聚合成事件的效果、熱點事件召回文章的召準率、熱點文章的質量等方面有不錯的表現。

熱點召回系統衍生的BERT向量具有深度語義特性,能做到無關鍵詞相同的情況下match同一個事件的標題。已經應用到看點日報的多樣性,并使看點日報多樣性得到很大提升。后續還計劃應用到看點日報的曝光去重,專題文章推薦等其他模塊。

目前熱點召回系統仍在繼續優化,包括數據構造、模型、事件聚類和文章召回的策略,以及熱度值的計算方式等各方面。

目前,該熱點召回系統主要是為看點日報提供熱點文章,期望日后能為更多產品提供熱點內容。

 

作者:顏銳榮,騰訊信息流平臺產品部開發二組員工;公眾號:騰訊大講堂(ID:TX_DJT)

原文鏈接:https://mp.weixin.qq.com/s/Zv8DGNBGzWvYMcPWuaFLCg

本文由 @騰訊大講堂 授權發布于人人都是產品經理,未經許可,禁止轉載

題圖來自騰訊看點官網

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 請問如何通過標題生成‘高以翔去世’這種話題?用的是什么模型或者算法,全文都沒有提及,難道是人工提取的嗎?

    來自遼寧 回復