1 引言

  主题模型是文本挖掘的重要工具,近年来在学术界和工业届都获得了非常多的关注。学术界的工作主要集中在建模层面,即提出各种各样的主题模型来适应不同的场景,因此缺乏指导主题模型在工业场景落地的资源和文献。

  本文主要是以《Familia:开源的中文主题模型应用工具包》为参考资料,入门NLP领域。该文结合开源工具Familia(百度开源),总结主题模型在工业届的一些典型应用案例,从而方便用户找到适合自己任务的模型以及该模型的应用方式。

2 主题模型概念

  以LDA为代表的主题模型,训练的结果一般是不同主题下每个语义相关词的重要程度;也就是说基于大量的网页预料,模型可以训练得到多种主题(隐变量)下各主题的关键词。基于训练的结果就可以评估一个文档的主题分布。

  主题模型在工业届的应用范式可以分为两类:语义表示和语义匹配。

3 语义表达

  主题模型的产生的主题分布可以看做文档的语义表示,该表示能够用于文档分类、聚类、内容丰富度分析、CTR预估等多种任务。

  基于主题模型的文档特征表示可是分为两类:一类是经过主题模型降维,得到文档在主题上的多项分布;另一类是联合使用主题向量和文档主题分布,生成文档的向量表示。

3.1 新闻质量分类

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

3.2 新闻聚类

  文档的主题分布可看做是包含语义信息的一个降维过程,低维的主题分布特征可以用来对文档进行聚类。基于主题分布特征进行K-means聚类,可以发现新闻的主题分布可以很好的完成聚类任务。

3.3 网页内容丰富度

  丰富度一定程度上反映了网页的质量。通过计算网页的主题分布,可以进一步计算该分布的信息熵,作为衡量网页内容丰富程度的指标,信息熵越大,表示网页内容越丰富。那么网页内容丰富度有什么重要作用呢?它可以作为一维特征引入更为复杂的网页排序函数中。

4 语义匹配

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

4.1 短文本-短文本语义匹配

  工业届的很多场景都会应用到短文本-短文本的语义匹配,例如:在网页搜索中,我们需要度量用户查询(query)和网页标题的语义相关性,在查询(query)推荐中,我们需要度量query和其他query的相似度。由于主题模型在短文本上的效果不理想,在短文本-短文本匹配任务中词向量的应用比主题模型要更加普遍。

4.2 短文本-长文本语义匹配

  短文本-长文本语义匹配在工业届的应用更加普遍。例如:在搜索引擎中,我们需要计算一个用户查询(query)和一个网页正文(content)的语义相关度。由于query通常较短,而网页content较长,因此query与content的匹配与上文提及的短文本-短文本不同,通常使用短文本-长文本语义匹配,已得到更好的匹配效果。

  在计算相似度的时候,我们规避对短文本直接进行主题映射,而是根据长文本的主题分布,计算该分布生成短文本的概率,作为它们之间的相似度。

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

  方法:首先通主题模型学习得到广告的主题分布,再计算用户查询和广告页面的语义相似度,该相似度作为一维特征,应用于更复杂的排序模型中。

  • 案例2:文档关键词抽取

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

4.3 长文本-长文本语义匹配

  通过使用主题模型,我们可以得到两个长文本的主题分布,再通过计算两个二项分布的距离来衡量它们之间的相似度。

  • 案例1:新闻个性化推荐

  方法:互联网应用中,当我们积累了大量用户行为之后,这些行为信息对应的文本内容可以作为一个抽象文档,对该文档进行主题映射获得的主题分布可以作为用户画像,例如:在新闻个性化推荐中,我们将用户近期阅读的新闻(或者新闻标题)合并成一篇长文档,并将该文档的主题分布作为表达用户阅读兴趣的用户画像。通过计算每篇实时新闻的主题分布与用户画像的距离,就可以作为向用户推送新闻的选择依据。

  • 案例2:小说个性化推荐

  方法:基于特征的矩阵分解可以增加一些全局特征、用户特征以及物品特征,使得模型的在推荐上可以取得更好的效果。另外我们还可以构建用户画像和每个小说主题分布的距离,该距离作为全局特征,加入到SVDFeature中训练。

  • 垂类新闻CTR预估

  方法:利用新闻-用户相似度(语义匹配),新闻主题特征(主题分布)和其他常规统计特征(时间、新闻源、点击率等),训练模型,从而预估CTR。

5 参考资料

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

算法工程师进化-NLP之主题模型的更多相关文章

  1. NLP︱LDA主题模型的应用难题、使用心得及从多元统计角度剖析

    将LDA跟多元统计分析结合起来看,那么LDA中的主题就像词主成分,其把主成分-样本之间的关系说清楚了.多元学的时候聚类分为Q型聚类.R型聚类以及主成分分析.R型聚类.主成分分析针对变量,Q型聚类针对样 ...

  2. 算法工程师进化-SQL

    1 引言 SQL操作往往是程序员必备的技能,对于算法工程师而言,熟练掌握SQL操作则更为重要.本文以<SQL语句执行顺序>作为学习资料,总结SQL的理论部分. 2 SQL查询语句的执行顺序 ...

  3. TF-IDF与主题模型 - NLP学习(3-2)

    分词(Tokenization) - NLP学习(1) N-grams模型.停顿词(stopwords)和标准化处理 - NLP学习(2) 文本向量化及词袋模型 - NLP学习(3-1) 在上一篇博文 ...

  4. [综] Latent Dirichlet Allocation(LDA)主题模型算法

    多项分布 http://szjc.math168.com/book/ebookdetail.aspx?cateid=1&&sectionid=983 二项分布和多项分布 http:// ...

  5. 文本主题模型之LDA(二) LDA求解之Gibbs采样算法

    文本主题模型之LDA(一) LDA基础 文本主题模型之LDA(二) LDA求解之Gibbs采样算法 文本主题模型之LDA(三) LDA求解之变分推断EM算法(TODO) 本文是LDA主题模型的第二篇, ...

  6. 文本主题模型之LDA(三) LDA求解之变分推断EM算法

    文本主题模型之LDA(一) LDA基础 文本主题模型之LDA(二) LDA求解之Gibbs采样算法 文本主题模型之LDA(三) LDA求解之变分推断EM算法 本文是LDA主题模型的第三篇,读这一篇之前 ...

  7. Spark:聚类算法之LDA主题模型算法

    http://blog.csdn.net/pipisorry/article/details/52912179 Spark上实现LDA原理 LDA主题模型算法 [主题模型TopicModel:隐含狄利 ...

  8. nlp算法工程师养成记 目标要求

    时间规定: 2018.12.07-2018.02.15 能力养成: linux, shell python, c++(会多少算多少) tensorflow, keras, pytorch(tf优先) ...

  9. Spark机器学习(8):LDA主题模型算法

    1. LDA基础知识 LDA(Latent Dirichlet Allocation)是一种主题模型.LDA一个三层贝叶斯概率模型,包含词.主题和文档三层结构. LDA是一个生成模型,可以用来生成一篇 ...

随机推荐

  1. HDU 2544最短路 (迪杰斯特拉算法)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others)    Me ...

  2. 减少 lwip 消耗 的 RAM

    1.修改 最大一包数据的大小 TCP_MSS , 即 TCP最大报文段大小,根据自己的应用进行修改 比如 我 的一包数据最大  256字节,在 lwipopts.h 文件中 因此 修改 如下: /* ...

  3. 串行通讯协议--起止式异步通讯协议(UART)

    起止式异步通讯协议: 特点与格式: 起止式异步协议的特点是一个字符一个字符传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求.其格式如图3 所示.每一个字符的前面都有 ...

  4. JavaScript this用法

    当this为全局变量时,this为window对象 <script> // 在全局变量中,this为window window.onload= function(){ alert(wind ...

  5. 3.Spring Cloud初相识--------Ribbon客户端负载均衡

    前言: 在生产环境中,未避免单点故障,每个微服务都会做高可用部署. 通白的说,就是每一个一模一样的服务会根据需求提供多分在多台机器上. 那么在大并发的情况下,如何分配服务可以快速得到响应,就成为了我们 ...

  6. SQL语句group by 与order by 执行顺序引发的一场“内斗”

    直入主题!看看下面这SQL会不会报错?如果报错应该是什么错误! --说明:黑色字体都是列SELECT application_id, index_num, num, amount FROM `cred ...

  7. C++ C# VC VC.net以及VC++有什么区别和联系?

    C/C++是编程语言,C是C++的爸爸,也就是说C++从C发展而来,而C++完全兼容C的语法.国际上有一个专门管理C++的机构,它们负责C++的标准制定. VC++是微软公司的C++编译环境,使用它可 ...

  8. nodejs知识点

    rss(resident set size):所有内存占用,包括指令区和堆栈. heapTotal:”堆”占用的内存,包括用到的和没用到的. heapUsed:用到的堆的部分. external: V ...

  9. ETL项目1:大数据采集,清洗,处理:使用MapReduce进行离线数据分析完整项目

    ETL项目1:大数据采集,清洗,处理:使用MapReduce进行离线数据分析完整项目 思路分析: 1.1 log日志生成 用curl模拟请求,nginx反向代理80端口来生成日志. #! /bin/b ...

  10. python 数据类型、进制转换

    数据类型 存储单位 最小单位是bit,表示二进制的0或1,一般写作b 最小的存储单位是字节,用byte表示,1B = 8b 1024B = 1KB 1024KB = 1MB 1024MB = 1GB ...