基于BERT搭建了看点日报热点召回系统,大大提升了看点日报热点内容量等核心指标,本文将会详解看点日报热点召回系统的总体框架及核心方法。
一、业务背景
看点日报旨在为用户提供新热、优质的文章,对热点事件及文章的及时捕捉有着非常强的需求,从海量文章中人工发现热点文章无疑是巨大的运营成本,所以自动发掘热点文章是必要的需求。
而发掘热点事件的时效性、热点事件的覆盖度、文章聚合成事件的效果、热点事件召回文章的召准率、热点文章的质量等是热点召回系统的核心指标。
我们通过高频实时爬取大量互联网数据,以及基于BERT模型进行热点事件聚类及文章标题匹配等方式,有效提升我们热点文章召回系统的各项核心指标。
在热点文章召回量方面,每天召回热点文章的数量从1K+上升到1W+。每天看点内被启用的文章数量为8W左右,其中有超过10%的文章会被我们的热点系统召回作为热点文章。
在召准情况方面,在找最match标题的测试中,我们基于BERT模型准确率高达98.4%,能召回看点中被启用文章的热点事件比例也高达93.5%。
二、Why BERT?
在应用BERT之前,我们实现了一版BiLSTM-DSSM的模型,但由于准确率不够高被弃用。
在找最match的标题测试中,BERT与BiLSTM-DSSM的效果对比如下:
BERT的原理在网上已经有很多详细的资料,这里就不再重复,本小节简单描述BERT有哪些强大的优势使它能比LSTM等其它模型强大。
优势1
BERT采用pre-train+fine-turning的训练模式,基于超大量语料进行pre-train,在pre-train过程BERT已经能学好单词、句法、语义等特征,具体任务只需用较少量的数据进行fine-truning。
像我们的任务需要标注语料进行训练,提供超大量的标注数据是难以实现的,而使用BERT则能以较少量的标注数据完成好我们的训练任务。
优势2
BERT是双向语言模型,拥有上下文信息。相比GPT(单向语言模型)和ELMO(粗暴的双向语言模型,前向和后向简单相加),BERT有得天独厚的优势。
优势3
BERT采用Transformer作为特征提取器,在Transformer诞生之前,RNN占据着NLP领域的主导地位。而相比RNN系列的特征提取器,Transformer具有两点优势:RNN不可并行,BERT可并行;RNN很难捕捉长序列的依赖关系,Transformer可以。
RNN结构如下,从h[t-1]到h[t]经过激活函数,变化极大,在距离较远的传递过程会产生梯度消失和梯度爆炸。
为了解决这一问题,又提出LSTM等RNN的变种,其结构如下。
从下面公式中可以看出,细胞状态从C[t-1]到C[t]只经过线性的变化,不会马上有很大的变化。但当C[x]与C[y]相距很远时,C[x]与C[y]也很可能变得完全不相关,C[x]的变化可能不会对C[y]有太大影响,从而丢失很远的信息。
而Transformer每个位置都公平地相互做self attention,self attention中任意位置之间进行比较,长度都只有1,因此无论序列多长都不会出现信息丢失的现象。
基于self attention的Transformer是更强的序列特征提取器,self attention=探索序列内部的关系,对每个位置提取q、k、v向量,通过Attention公式计算当前位置对其他位置的关注程度。
三、模型训练
keyterm-aware masking
我们的BERT模型是12层Transformer的中文字模型,为了能更好适应业务数据,我们先以看点内的标题和爬取的新闻标题数据让BERT模型进行自监督学习。
具体做法是mask一些词语并让bert预测,一些如流量明星、游戏、动漫等看点中高频出现的tag,会以更大的概率被mask掉。先基于业务语料的自监督学习让BERT更熟悉业务数据,再进行语义匹配的fine-turning。
fine-turning
BERT针对语义匹配问题,最常见的网络结构如下图所示,直接输入句子pair,判断pair中的两个句子是否匹配。
但这种网络结构不利于我们的业务使用,因为每新发现一个热点事件话题,就得用此话题与所有的文章标题组成标题pair再输入到BERT里预测是否属于同一个事件。
看点内一天被启用的文章量在8w左右,这无疑需要很长的时间去计算,会严重影响热点文章的时效性。为了提高性能,我们采用了DSSM(深度语义匹配模型)的网络结构,如下图所示,DSSM的表示层为BERT模型。
这种DSSM网络结构的优势在于,BERT可将单个标题进行向量化处理,而不是处理标题pair。这样我们能预先计算BERT标题向量并存储到内存数据库,线上文章召回时可直接读取BERT标题向量进行匹配。
四、数据构造
难点
需要标注数据规模大,且标注难度大
训练数据需要切合业务,同时保证多样性
标注数据问题是NLP模型训练的一个难题,对我们的任务来说也是非常难解决的问题。
我们的模型训练需要大量标注数据,需标注标题pair是否同属于一个事件。大规模数据进行人工标注的难度非常的大,成本极高,所以在第一期的训练数据中我们应用自动构建数据集的方法。
我们自动构建的数据格式为‘title1 tiltle2’的标题pair,title1是互联网上爬取回来的标题,title2是看点中的文章标题,所有标题pair都是正样本。训练时采用多分类的方法,当前标题pair作为正样本,当前title1与其余标题pair中随机找255个title2组成255个标题pair作为负样本。
训练数据采用关键词匹配的方式自动产生,具体产生方法如下:
识别标题中的关键词,并计算关键词的权重。
用爬取回来的标题与看点内的文章标题做关键词匹配,相似度计算如下:
当一对标题相似度超过一定阈值时,认为这对标题对可作为正样本。同时保证每个爬取的标题只产生一个正样本数据,并且保证正样本中的爬取的标题与看点中的标题不完全相同。
为了保证训练数据都为正样本,阈值会设得比较高,经测试验证用此方法产生的正样本正确率能达到98%以上。
训练训练数据中还加入了LCQMC和BQ等中文语义匹配的公开数据集,扩展训练数据的规模和提升词语、句式的多样性。
基于第一期训练数据训练得到第一期BERT模型,我们也得到了第一期的事件话题召回热点文章的结果,并将第一期的结果直接投放到热点选文中使用。感谢看点日报运营团队在热点选文同时,给我们标注事件话题与文章标题是否匹配的数据。
人工标注数据对我们十分珍贵,为了更加充分利用人工标注的数据,我们采用半自动的方式去增加人工标注的数据。对标注正确的数据通过同义词互换等方法,多产生出几份类似的数据。针对标注为错误数据,人工构造关于该事件话题或文章标题的几份正样本,并且会结合人工标注错误的数据做多分类训练。
人工标注的数据及其衍生的数据和第一期训练数据结合作为第二期训练数据,重新训练BERT模型。
五、总体框架
上图为看点日报热点召回系统的总体架构,为了保障热点召回系统的时效性,每个模块都会每隔10分钟重新计算并更新数据。
六、系统介绍
下图为看点日报热点召回系统的界面展示,系统根据热度值从高到低的形式地展示热点榜单,并对事件做分类,且提供分类筛选功能,能及时并清晰呈现全局及每个分类最热的事件,系统实时发现热点事件的数量高达600+。通过点击事件,可索引到相关文章。
七、总结与展望
看点日报热点召回系统基于BERT模型与大量实时爬虫数据,已能在发掘热点事件的时效性、热点事件的覆盖度、文章聚合成事件的效果、热点事件召回文章的召准率、热点文章的质量等方面有不错的表现。
热点召回系统衍生的BERT向量具有深度语义特性,能做到无关键词相同的情况下match同一个事件的标题。已经应用到看点日报的多样性,并使看点日报多样性得到很大提升。后续还计划应用到看点日报的曝光去重,专题文章推荐等其他模块。
目前热点召回系统仍在继续优化,包括数据构造、模型、事件聚类和文章召回的策略,以及热度值的计算方式等各方面。
目前,该热点召回系统主要是为看点日报提供热点文章,期望日后能为更多产品提供热点内容。