百度NLP | Familia:开源的中文主题模型应用工具包

2017 年 8 月 4 日 机器之心

机器之心专栏

作者:百度NLP


本期百度NLP 专栏介绍了百度开源的中文主题模型应用工具包 Familia。在本文中,作者结合 Familia 汇总主题模型在工业界的一些典型应用案例,方便开发者按图索骥,找到适合自己任务的模型以及该模型的应用方式。


主题模型是文本挖掘的重要工具,近年来在学术界和工业界都获得了非常多的关注。虽然学术界的研究人员提出了多种多样的主题模型来适应不同的场景,这些工作主要集中在「建模」层面,即设计合理的模型来适配各色各样的数据,而指导主题模型在工业场景「落地」的资源和文献却非常稀少。


为了推动主题模型技术在工业界的应用,我们开源了 Familia 工具 (https://github.com/baidu/Familia)。在本文中,我们结合 Familia 汇总主题模型在工业界的一些典型应用案例,方便开发者按图索骥,找到适合自己任务的模型以及该模型的应用方式。希望这里汇总的经验可以帮助开发者跨越「建模」和「落地」之间的鸿沟,使主题模型技术在实际应用中发挥更大的价值。


主题模型概览


在主题模型中,「主题」通常被定义为一系列语义相关的词。Latent Dirichlet Allocation(LDA)是其中最具代表性的模型。下表中给出了 LDA 的部分训练结果。其中,每列词属于一个主题,每个词后面的数值表示该词在主题中的重要程度。



由于 LDA 中采用文档内的 Bag-of-Words 假设,词与词之间的位置信息是被忽略的。在很多工业界场景中,我们往往需要限制某些位置相近的词产生自同一主题,通过 SentenceLDA 能很好地满足这个需求。SentenceLDA 假设同一个句子里的词产生自同一主题,对句子内的词进行了进一步的建模,能捕捉到更加细粒度的共现关系。LDA 产生的主题往往被高频词占据,这种现象导致低频词在实际应用中的作用非常有限。Topical Word Embedding (TWE) 利用 LDA 训练获得的主题为词向量的训练提供补充信息,进而得到词和主题的向量表示。有鉴于向量表示可以较好地建模低频词的语义信息,通过利用词和主题的向量表示,我们可以更好地捕捉每个主题下的低频词的语义信息,提升下游应用的效果。


主题模型在工业界的应用范式可以分为两类:语义表示和语义匹配。我们选取一些成功的应用案例对这两类应用范式加以介绍。


语义表示


主题模型产生的主题分布可看做文档的语义表示,该表示能够用于文档分类、聚类、内容丰富度分析、CTR 预估等多种任务。基于主题模型的文档特征表示可以分为两类,如图 1 所示:一类是经过主题模型降维,得到文档在主题上的多项分布,LDA、SentenceLDA 等模型支持这一类的文档特征表示;另一类是联合使用主题向量和文档主题分布,生成的文档向量表示,TWE 等融合了词向量的主题模型可以支持这一类的文档特征表示。

 


分类


案例 1: 新闻质量分类


新闻 APP 通过各种来源获得到的新闻的质量良莠不齐。在表 2 中列出了一些低质新闻与优质新闻的标题的示例。



为了提升用户体验,我们通常会构建一个分类器来自动过滤低质量的新闻。我们可以人工设计一些传统特征:新闻来源站点、新闻内容长度、图片数量、新闻热度等等。除了这些人工特征,也可利用主题模型来计算每篇新闻的主题分布,作为附加特征与人工特征一起组成新特征集合 (图 2(a))。我们对 7000 篇新闻进行人工标注,新闻质量划分为 0、1、2 共 3 个档位,其中 0 档表示质量最差,2 档表示质量最优。我们采用 Gradient Boost Decision Tree (GBDT) 在 5000 篇新闻上进行训练,并在另外 2000 篇标注新闻数据上做测试。图 2(b) 展示了只使用人工特征和加入主题模型特征上的实验结果。从这些实验结果可以看出,主题分布作为特征扩充可以有效提升分类器的效果。

 


聚类


案例 2: 新闻聚类


文档的主题分布可看做是包含语义信息的一个降维过程,低维的主题分布特征可以用来对文档进行聚类。表 3 中展示了基于主题分布特征进行 K-means 聚类的部分结果。从表中可以看出,新闻的主题分布可以很好的完成聚类任务,在簇 1 中显示的是与房子装修相关的新闻,簇 2 中则是聚集了与股票相关的新闻。每个簇内的新闻都具有很好的语义相关性。


 

内容丰富度


案例 3: 网页内容丰富度


在一些信息检索的场景中,我们需要度量网页内容的丰富度,丰富度以在一定程度上反映网页的质量。通过计算网页的主题分布,我们进一步计算该分布的信息熵,作为衡量网页内容丰富度的指标。信息熵越大,表示网页内容越丰富。网页内容丰富度可以作为一维特征引入到更为复杂的网页排序函数中。


语义匹配


工业界的很多应用都有在语义上衡量本文相似度的需求,我们将这类需求统称为「语义匹配」。根据文本长度的不同,语义匹配可以细分为三类:短文本-短文本语义匹配,短文本-长文本语义匹配和长文本-长文本语义匹配。基于主题模型的语义匹配通常作为经典文本匹配技术的补充,而不是取代传统的文本匹配技术。


短文本-短文本语义匹配


短文本-短文本的语义匹配在工业界的应用场景非常广泛。例如,在网页搜索中,我们需要度量用户查询 (query) 和网页标题 (web page title) 的语义相关性;在 query 推荐中,我们需要度量 query 和其他 query 之间的相似度。这些场景都会用到短文本-短文本的语义匹配。由于主题模型在短文本上的效果不太理想,在短文本-短文本匹配任务中词向量的应用比主题模型更为普遍。简单的任务可以使用 Word2Vec 这种浅层的神经网络模型训练出来的词向量。


比如,query 推荐任务中,我们经常要计算两个 query 的相似度,例如「推荐好看的电影」与「2016年好看的电影」。通过词向量按位累加的方式,得到这两个 query 的向量表示之后,可以利用 Cosine Similarity 来计算两者的相似度。对于较难的短文本-短文本语义匹配任务,则可以考虑引入有监督信号的训练数据并利用 Deep Structured Semantic Model (DSSM) 或 Convolutional Latent Semantic Model (CLSM) 这些更复杂的神经网络模型进行语义相关性的计算。


短文本-长文本语义匹配


短文本-长文本语义匹配的应用场景在工业界非常普遍。例如,在搜索引擎中,我们需要计算一个用户查询(query)和一个网页正文(content)的语义相关度。由于 query 通常较短,而网页 content 较长,因此 query 与 content 的匹配与上文提到的短文本-短文本不同,通常需要使用短文本-长文本语义匹配,以得到更好的匹配效果。在计算相似度的时候,我们规避对短文本直接进行主题映射,而是根据长文本的主题分布,计算该分布生成短文本的概率,作为它们之间的相似度:

 



其中 q 表示 query,c 表示 content,w 表示 q 中的词,表示第 k 个主题。


案例 1:用户查询-广告页面相似度

 


在线广告场景中,我们需要计算用户查询和广告页面的语义相似度。这时可应用 SentenceLDA,将广告页面中各个域的文本视为句子,如图 3 所示(红框内容为句子)。我们首先通过主题模型学习得到广告的主题分布,再使用公式 (1) 计算用户查询和广告页面的语义相似度。该相似度可以作为一维特征,应用在更复杂的排序模型中。在图 4 中,对于 query=“婚庆拍摄”,我们对比了不同特征组合的结果。其中左图为 Baseline,右图则是引入 SentenceLDA 相似度(基于 SentenceLDA 计算 query 与广告页面的相似度)后得到的结果。可以看出,相比于 Baseline,引入新特征后召回的结果更加符合 query 语义,能更好的满足用户需求。

 


案例 2: 文档关键词抽取


在分析文档时,我们往往会抽取一些文档的关键词做标签(tag),这些 tag 在用户画像和推荐任务中扮演着重要角色。从文档中抽取关键词,常用的方法是利用词的 TF 和 IDF 信息,此外,还可利用主题模型,估计一个文档产生单词的概率作为该单词的重要度指标:

 


其中,d 表示文档内容,w 表示词,表示第 k 个主题。但由于常被高频词主导,导致一些语义上重要的低频词难以被选为关键词。为了解决上述问题,我们利用 TWE 训练得到主题和单词的向量表示,再使用公式 (3) 计算每个词与文档主题的相似度作为衡量语义重要度的指标。

 


其中,表示𝑤对应的词向量,表示主题 k 对应的主题向量,并且词向量和主题向量在处于同一个向量空间中。下面一段文字是我们随机从网上取的一个新闻片段,对其进行分词处理以及应用主题模型 LDA 或 TWE 后,然后分别选取公式 (2) 或公式 (3) 计算每个词的重要度。在表 5 中,我们列出了 LDA 和 TWE 模型计算得到的 Top-10 关键词集合 (已去除停用词)。从表中可以看出,采用 TWE 得到的 Top-10 关键词 能更好地体现出新闻的重要信息。


台湾《自由时报》4 月 13 日综合外媒报道称,全美发起拒搭联航运动,并在社群网站上 发酵。居住在美国纽约的网友许柏祥表示,本身是联合航空会员,在得知联航将乘客拖下飞 机后,就向航空公司取消下个月的预订班机,并称「我不想被人打!」许柏祥说, 他完全不能 接受航空公司的处理方式, 而且是对待一名 69 岁的老人。报道称,联航会员「剪卡」风潮也 席卷社群网路,许多网友将自己的联航会员卡剪掉抵制。网友萨赫哈 (Aninda Sadhukhan) 表示,身为联航多年的乘客,在看到影片后, 让他决定不再搭联航,并将会员卡放入碎卡机内。另一名会员布朗 (Phyllis Brown) 表示, 呼吁民众剪掉联航会员卡,并改搭其他航空公司班机,以此抗议联航暴力对待乘客。

 


长文本-长文本语义匹配


通过使用主题模型,我们可以得到两个长文本的主题分布,再通过计算两个多项分布的距离来衡量它们之间的相似度。衡量多项分布的距离可以利用 Hellinger Distance 和 Jensen-Shannon Divergence (JSD)。


案例 3: 新闻个性化推荐


长文本-长文本的语义匹配可用于个性化推荐的任务中。在互联网应用中,当我们积累了用户大量的行为信息后,这些行为信息对应的文本内容可以组合成一篇抽象的「文档」,对该「文档」进行主题映射后获得的主题分布可以作为用户画像。例如,在新闻个性化推荐中,我们可以将用户近期阅读的新闻(或新闻标题)合并成一篇长「文档」,并将该「文档」的主题分布作为表达用户阅读兴趣的用户画像。如图 5 所示,通过计算每篇实时新闻的主题分布与用户画像之间的 Hellinger Distance,可作为向用户推送新闻的选择依据,达到新闻个性化推荐的效果。

 


案例 4: 小说个性化推荐


小说推荐任务是根据用户的历史偏好进行小说推荐,具体场景如图 6(a) 所示。最常见的推荐算法技术为协同过滤,其中矩阵分解是协同过滤算法中常用的技术之一,主要的思想是从评分矩阵(用户对物品的评价等)中分解出用户-特性矩阵,特性-物品矩阵,从而得到用户的偏好和物品的特性,用以预测用户对未接触过的物品的打分情况。基于特征的矩阵分解 (SVDFeature),是一个灵活的推荐框架,允许向模型中增加一些全局特征、用户特征以及物品特征,使得模型在推荐上可以取得更好的效果。考虑到每个用户有一些收藏或者下载的小说,我们可以将这些小说对应的主题分布进行聚合,从而得到用户的主题表示,作为描述用户阅读兴趣的用户画像。通过计算每篇小说的主题分布与用户画像之间的 JSD 距离,可以用来衡量用户对该小说的感兴趣程度。我们将 JSD 评分作为全局特征加入到 SVDFeature 中参与训练,对小说进行排序后推荐给用户。对比传统的 SVDFeature 打分与结合了主题模型策略的 SVDFeature 打分,后者在多个指标上的效果均超过前者,如图 6(b) 所示。

 


案例 5:垂类新闻 CTR 预估


新闻推荐服务涉及多个垂类新闻方向,如体育、汽车、娱乐等。在这些方向上,我们往往需要做更精细的个性化推荐。为了实现这个目的,我们需要在垂类新闻数据的基础上,训练针对该垂类的主题模型。对于某个用户而言,我们把该用户历史上点击的新闻拼接成一篇文档,基于垂类主题模型做主题推断,获得文档的主题分布作为该用户的画像。垂类新闻的 CTR 预估模型利用的特征可以分为三类:新闻-用户相似度特征 (语义匹配范式),新闻主题特征 (语义表示范式) 和其他常规的统计特征。新闻-用户相似度特征指的是利用长文本-长文本语义匹配的方式计算的新闻和用户画像的相似度。新闻主题特征是该新闻的主题分布。常规的统计特征包括时间,新闻源,点击率等等。在工业界应用中,用户模型数据空间较大,会存在垂类主题分布的压缩需求,可以考虑根据 CTR 预估模型的权重进行删减和重训。上述方案在垂类新闻推荐上取得了很好的效果提升。


总结


在本文中,我们介绍了主题模型在工业界的应用范式,并结合一些案例加以讲解,希望对主题模型技术在工业界的有效「落地」起到一定的指导作用。我们会逐步开源更多垂类主题模型工具,满足不同场景的应用需求,同时,我们也将公开更多的应用案例与方法经验,供读者参考讨论。我们期望广大的开发者和研究人员将主题模型应用于更多的场景中,挖掘主题模型的应用潜力。我们乐于与大家进行深入的交流,推动主题模型的技术进一步发展与应用创新。 


百度NLP往期专栏内容:




「百度NLP」专栏主要关注百度自然语言处理技术发展进程,报道前沿资讯和动态,分享技术专家的行业解读与深度思考。




本文为机器之心专栏,转载请联系本公众号获得授权

✄------------------------------------------------

加入机器之心(全职记者/实习生):hr@jiqizhixin.com

投稿或寻求报道:editor@jiqizhixin.com

广告&商务合作:bd@jiqizhixin.com

登录查看更多
2

相关内容

主题模型,顾名思义,就是对文字中隐含主题的一种建模方法。“苹果”这个词的背后既包含是苹果公司这样一个主题,也包括了水果的主题。   在这里,我们先定义一下主题究竟是什么。主题就是一个概念、一个方面。它表现为一系列相关的词语。比如一个文章如果涉及到“百度”这个主题,那么“中文搜索”、“李彦宏”等词语就会以较高的频率出现,而如果涉及到“IBM”这个主题,那么“笔记本”等就会出现的很频繁。如果用数学来描述一下的话,主题就是词汇表上词语的条件概率分布 。与主题关系越密切的词语,它的条件概率越大,反之则越小。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【复旦大学-SP2020】NLP语言模型隐私泄漏风险
专知会员服务
24+阅读 · 2020年4月20日
注意力图神经网络的多标签文本分类
专知会员服务
111+阅读 · 2020年3月28日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
57+阅读 · 2020年1月3日
【论文推荐】文本分析应用的NLP特征推荐
专知会员服务
33+阅读 · 2019年12月8日
知识图谱更新技术研究及其应用,复旦大学硕士论文
专知会员服务
103+阅读 · 2019年11月4日
一文读懂最强中文NLP预训练模型ERNIE
AINLP
25+阅读 · 2019年10月22日
深度学习在文本分类中的应用
AI研习社
13+阅读 · 2018年1月7日
LibRec 每周算法:LDA主题模型
LibRec智能推荐
29+阅读 · 2017年12月4日
专栏 | 技术干货:一文详解LDA主题模型
机器之心
28+阅读 · 2017年12月1日
最全面的百度NLP自然语言处理技术解析
InfoQ
7+阅读 · 2017年11月12日
详解基于朴素贝叶斯的情感分析及Python实现
AI研习社
9+阅读 · 2017年7月12日
基于LDA的主题模型实践(一)
机器学习深度学习实战原创交流
20+阅读 · 2015年9月9日
Arxiv
3+阅读 · 2019年3月1日
Arxiv
14+阅读 · 2018年5月15日
Arxiv
3+阅读 · 2017年12月18日
Arxiv
23+阅读 · 2017年3月9日
VIP会员
相关VIP内容
【复旦大学-SP2020】NLP语言模型隐私泄漏风险
专知会员服务
24+阅读 · 2020年4月20日
注意力图神经网络的多标签文本分类
专知会员服务
111+阅读 · 2020年3月28日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
57+阅读 · 2020年1月3日
【论文推荐】文本分析应用的NLP特征推荐
专知会员服务
33+阅读 · 2019年12月8日
知识图谱更新技术研究及其应用,复旦大学硕士论文
专知会员服务
103+阅读 · 2019年11月4日
相关资讯
一文读懂最强中文NLP预训练模型ERNIE
AINLP
25+阅读 · 2019年10月22日
深度学习在文本分类中的应用
AI研习社
13+阅读 · 2018年1月7日
LibRec 每周算法:LDA主题模型
LibRec智能推荐
29+阅读 · 2017年12月4日
专栏 | 技术干货:一文详解LDA主题模型
机器之心
28+阅读 · 2017年12月1日
最全面的百度NLP自然语言处理技术解析
InfoQ
7+阅读 · 2017年11月12日
详解基于朴素贝叶斯的情感分析及Python实现
AI研习社
9+阅读 · 2017年7月12日
基于LDA的主题模型实践(一)
机器学习深度学习实战原创交流
20+阅读 · 2015年9月9日
Top
微信扫码咨询专知VIP会员