2017 年 7 月 4 日,百度开源了一款主题模型项目,名曰:Familia。
InfoQ 记者第一时间联系到百度 Familia 项目负责人姜迪并对他进行采访,在本文中,他将为我们解析 Familia 项目的技术细节。
什么是 Familia
Familia 开源项目包含文档主题推断工具、语义匹配计算工具以及基于工业级语料训练的三种主题模型:Latent Dirichlet Allocation(LDA)、SentenceLDA 和 Topical Word Embedding(TWE)。
Familia 支持用户以“拿来即用”的方式进行文本分类、文本聚类、个性化推荐等多种场景的调研和应用。考虑到主题模型训练成本较高以及开源主题模型资源有限的现状,我们会陆续开放基于工业级语料训练的多个垂直领域的主题模型,以及这些模型在工业界的典型应用方式,助力主题模型技术的科研和落地。
据姜迪介绍,Familia 主题模型项目是百度研发的贝叶斯网技术的一个重要组成部分,已经支持了百度多个产品,包括搜索、资讯流、贴吧等等。
主题模型在工业界的应用普遍存在如下问题:
- 将主题模型等同于 LDA,忽视众多其他模型和任务本身的数据特点, 暴力使用 LDA,导致应用效果欠佳。
- 现有的大部分主题模型工具往往只专注在“训练”层面,对于获得的模型怎么”落地”到实际应用中却没有很好的支持。
鉴于上述问题,Familia 项目有如下目的:
一是汇总和归纳对工业界价值比较大的主题模型,方便开发者们直接使用;
二是抽象了主题模型在工业界的应用范式,希望对主题模型在工业界的有效“落地”起到一定的指导作用。
主题模型
一般来说,主题模型可以看做是贝叶斯网领域的一个子类,该类模型可以从文本中抽取一些语义相关的词构成主题。学术界也存在一些称为主题模型却不属于贝叶斯网络的工作,但这类工作相对少一些。
姜迪说:“从我们的应用经验来看,主题模型能较好地胜任无监督场景下的语义分析任务。我们从实际工程案例中将主题模型的应用范式抽象为两类: 语义表示和语义匹配。这两个范式都有很多成功的工业应用案例,比如新闻分类、个性化推荐等等,详情在我们开源项目 wiki 页面 ( https://github.com/baidu/Familia/wiki ) 中可以找到。除了这些较为传统的应用范式,我们也在探索主题模型技术在一些新场景比如 Chatbot 上的应用。”
主题模型的训练成本
获得一个高质量的主题模型涉及到很多步骤:数据预清洗、图模型设计、参数估计算法的设计、模型的后期处理。目前大部分研究工作集中在图模型的设计和参数估计算法的设计,关于其他的步骤的讨论和资料相对较少。
在实践中,项目团队发现其他步骤也非常关键,往往决定了主题模型技术是否可以成功地在工业界落地。亿级别的语料、大规模数据处理、并行化高性能计算这些资源对于大多数开发者来说获取和实现成本较高。
于是他们做了这样的决定:“我们直接将训练获取的高质量模型开放给社区,方便开发者以”拿来即用”的方式支持相关的应用。关于获得高质量主题模型各个步骤的代码和文档等资料我们也会陆续开放出来。”
主题模型如何评估效果
据介绍,评估主题模型的效果,学术界往往利用 Perplexity,Likelihood 等量化指标。这些指标在广泛应用的同时,也饱受诟病,很多研究者质疑这些指标并不能有效衡量主题模型的质量。在实际工业应用中,项目团队会更侧重如下两种指标: 一是模型中主题的可解释性,这对于系统的迭代开发和效果分析比较重要;另一个是模型应用后的产品相关指标。
Familia 的优势
目前在工业界有不少优秀的主题模型工具,很多在 github 上已经开源。但是姜迪表示,相对于这些工具而言,Familia 更侧重模型的多样性和对工业落地的支持。百度希望能给开发者除了 LDA 之外的更多选择。并且,他们更为关注模型的实用性,因此抽象了主题模型的应用范式,希望在应用层面推动主题模型技术的发展更进一步。
百度 Familia 项目的文档里是这样写的:一期开放新闻领域主题模型,即将开放网页主题模型,在采访中,姜迪解析了领域的划分规则:Familia 项目的主要目的是服务于产品。所以,开放的领域也是基于产品来划分的,比如新闻类的主题模型可以支持资讯类的产品应用,网页类的主题模型可以支持搜索引擎,由于语料规模和多样性,网页类主题模型具有较为广泛的适用性。
Familia 项目团队还表示,后续会陆续开放针对更多垂直领域的模型,也会根据开发者的反馈调整领域和优先级,希望可以覆盖更全面的产品品类。
Familia 的应用
语义表示
主题模型产生的主题分布可看做文档的语义表示,该表示能够用于文档分类、聚类、内容丰富度分析、CTR 预估等多种任务。基于主题模型的文档特征表示可以分为两类,如图 1 所示:一类是经过主题模型降维,得到文档在主题上的多项分布,LDA、SentenceLDA 等模型支持这一类的文档特征表示;另一类是联合使用主题向量和文档主题分布,生成的文档向量表示,TWE 等融合了词向量的主题模型可以支持这一类的文档特征表示。
分类
案例: 新闻质量分类
对于新闻 APP,其通过各种来源获得到的新闻,质量通常良莠不齐。在表 2 中列出了一些低质新闻与优质新闻的标题的示例。
为了提升用户体验,通常会构建一个分类器来自动过滤低质量的新闻。可以人工设计一些传统特征:新闻来源站点、新闻内容长度、图片数量、新闻热度等等。除了这些人工特征,也可利用主题模型来计算每篇新闻的主题分布,作为附加特征与人工特征一起组成新特征集合 (图 2(a))。
使用人工标注 7000 篇新闻,新闻质量总共划分为 3 个档位,其中 0 档表示质量最差,2 档表示质量最优。我们采用 Gradient Boost Decision Tree (GBDT),分别利用人工特征和主题扩充后的特征集合在 5000 篇新闻上进行训练,并在另外 2000 篇标注新闻数据上做测试。图 2(b) 展示了使用不同特征上的实验结果,在测试数据上的分类准确度。从这些实验结果可以看出,主题分布作为特征扩充可以有效提升分类器的效果。
聚类
案例: 新闻聚类
文档的主题分布可看做是包含语义信息的一个降维过程,这些低维特征可以用来对文档进行聚类。表 3 中展示了基于主题分布和 K-Means 进行聚类的部分结果。从表中可以看出,基于新闻的主题分布,可以很好的完成聚类任务,在簇 1 中显示的是与房子装修相关的新闻,簇 2 中则是聚集了与股票相关的新闻。
内容丰富度
案例: 网页内容丰富度
在一些信息检索的工作中,需要衡量网页内容的丰富度。通过计算网页的主题分布,可以进一步得到该分布的信息熵,作为衡量网页内容丰富度的指标。信息熵越大,表示网页内容越丰富。网页内容丰富度可以作为一维特征引入到更为复杂的网页排序函数中。
语义匹配
工业界的很多应用都有在语义上衡量本文相似度的需求,这类需求统称为“语义匹配”。根据文本长度的不同,语义匹配可以细分为三类:短文本 - 短文本语义匹配,短文本 - 长文本语义匹配和长文本 - 长文本语义匹配。
基于主题模型的语义匹配通常作为经典文本匹配技术的补充,而不是取代传统的文本匹配技术。
短文本 - 短文本语义匹配
短文本 - 短文本的语义匹配在工业界的应用场景非常广泛。例如,在搜索引擎中,需要度量用户查询 (query) 和网页标题 (webpage 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, 表示中的词, 表示第 k 个主题。
案例:用户查询 - 广告页面相似度
在线广告场景中,需要计算用户查询和广告页面的语义相似度。这时可应用 SentenceLDA,将广告页面中各个域的文本视为句子,如图 3 所示(红框内容为句子)。首先通过主题模型学习得到广告的主题分布,再使用公式 (1) 计算用户查询和广告页面的语义相似度。该相似度可以作为一维特征,应用在更复杂的排序模型中。在图 4 中,对于 query=“婚庆拍摄”,研发团队对比了不同特征组合的结果。其中左图为 Baseline,右图则是引入 SentenceLDA 相似度(基于 SentenceLDA 计算 query 与广告页面的相似度)后得到的结果。可以看出,相比于 Baseline,引入新特征后召回的结果更加符合 query 语义,能更好的满足用户需求。
长文本 - 长文本语义匹配
通过使用主题模型,可以得到两个长文本的主题分布,再通过计算两个多项分布的距离作为衡量相似度的指标。衡量多项分布的距离还可以利用 Hellinger Distance 和 Jensen-Shannon Divergence (JSD)。
案例: 新闻个性化推荐
长文本 - 长文本的语义匹配可用于个性化推荐的任务中。在互联网应用中,当积累了用户大量的行为信息后,这些行为信息对应的文本内容可以组合成一篇抽象的“文档”,对该“文档”进行主题映射后获得的主题分布可以作为用户画像。例如,在新闻个性化推荐中,可以将用户近期阅读的新闻(或新闻标题)合并成一篇长“文档”,并将该“文档” 的主题分布作为表达用户阅读兴趣的用户画像。如图 5 所示,通过计算每篇实时新闻的主题分布与用户画像之间的 Hellinger Distance,可作为向用户推送新闻的选择依据,达到新闻个性化推荐的效果。
更多案例请访问: https://github.com/baidu/Familia/wiki
团队的愿景
Familia 开源之后,其他企业和机构将有机会使用项目的模型与代码,可以基于 Familia 做一些工作,姜迪这样说:“中小企业可以直接利用我们的模型和代码来支持基于语义降维和语义匹配的产品,而不用投入大量的人力进行这方面的调研,具体的应用案例可以参照我们 GitHub 上的 wiki 页面 ( https://github.com/baidu/Familia/wiki ),我们希望这些案例可以发挥一定的指导作用。”另外,他补充道,开源的主题模型本身也可以作为数据集,支持学术界相关的研究,比如帮助科研人员调研自动化主题命名、主题模型的压缩、主题去重等课题。
Familia 团队期望开发者和研究者们将 Familia 应用于不同的场景中,挖掘主题模型更多的应用潜力,并给提出更多的要求与需求。百度乐于与大家广泛深入的交流,进一步推动主题模型的技术发展与应用创新。
评论