算法工程师进化-NLP之主题模型
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 参考资料
算法工程师进化-NLP之主题模型的更多相关文章
- NLP︱LDA主题模型的应用难题、使用心得及从多元统计角度剖析
将LDA跟多元统计分析结合起来看,那么LDA中的主题就像词主成分,其把主成分-样本之间的关系说清楚了.多元学的时候聚类分为Q型聚类.R型聚类以及主成分分析.R型聚类.主成分分析针对变量,Q型聚类针对样 ...
- 算法工程师进化-SQL
1 引言 SQL操作往往是程序员必备的技能,对于算法工程师而言,熟练掌握SQL操作则更为重要.本文以<SQL语句执行顺序>作为学习资料,总结SQL的理论部分. 2 SQL查询语句的执行顺序 ...
- TF-IDF与主题模型 - NLP学习(3-2)
分词(Tokenization) - NLP学习(1) N-grams模型.停顿词(stopwords)和标准化处理 - NLP学习(2) 文本向量化及词袋模型 - NLP学习(3-1) 在上一篇博文 ...
- [综] Latent Dirichlet Allocation(LDA)主题模型算法
多项分布 http://szjc.math168.com/book/ebookdetail.aspx?cateid=1&§ionid=983 二项分布和多项分布 http:// ...
- 文本主题模型之LDA(二) LDA求解之Gibbs采样算法
文本主题模型之LDA(一) LDA基础 文本主题模型之LDA(二) LDA求解之Gibbs采样算法 文本主题模型之LDA(三) LDA求解之变分推断EM算法(TODO) 本文是LDA主题模型的第二篇, ...
- 文本主题模型之LDA(三) LDA求解之变分推断EM算法
文本主题模型之LDA(一) LDA基础 文本主题模型之LDA(二) LDA求解之Gibbs采样算法 文本主题模型之LDA(三) LDA求解之变分推断EM算法 本文是LDA主题模型的第三篇,读这一篇之前 ...
- Spark:聚类算法之LDA主题模型算法
http://blog.csdn.net/pipisorry/article/details/52912179 Spark上实现LDA原理 LDA主题模型算法 [主题模型TopicModel:隐含狄利 ...
- nlp算法工程师养成记 目标要求
时间规定: 2018.12.07-2018.02.15 能力养成: linux, shell python, c++(会多少算多少) tensorflow, keras, pytorch(tf优先) ...
- Spark机器学习(8):LDA主题模型算法
1. LDA基础知识 LDA(Latent Dirichlet Allocation)是一种主题模型.LDA一个三层贝叶斯概率模型,包含词.主题和文档三层结构. LDA是一个生成模型,可以用来生成一篇 ...
随机推荐
- 利用maven开发springMVC项目(三)——数据库配置
前两节介绍了开发环境的搭建以及框架的配置 现在主要介绍在eclipse中如何将SpringMVC.hibernate.mysql数据库结合起来. 数据库配置 下面,就要通过一个简单的例子,来介绍Spr ...
- PAT——1068. 万绿丛中一点红
对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入 ...
- 我的QT5学习之路(四)——信号槽
一.前言 前面说了Qt最基本的实例创建.控件以及工具集的介绍,相当于对于Qt有了一个初次的认识,这次我们开始认识Qt信号通信的重点之一——信号槽. 二.信号槽 信号槽是 Qt 框架引以为豪的机制之一. ...
- Kafka 部署指南-好久没有更新博客了
最近到了一家新公司,很多全新技术栈要理解.每天都在看各类 English Offcial Document,我的宗旨是我既然看懂了,就写下来分享,这是第一篇. 基本需求: 1.已有 zookeeper ...
- echarts 报错问题 is null 或者未定义等问题
我们在使用echarts的时候会出现is null或者未定义等报错提示,但是却无从下手的情况. 其一,我们是完全按照echarts的官方文档来添加的js文件:其二,在对使用option时候的配置是按照 ...
- Redis 之江湖遇险-复制运维及优化
一. 前言 上一篇Redis 之深入江湖-复制原理中说了复制的原理,那么在理解复制原理之后,还要知道在这复制功能的背后,还有哪些坑要注意一下,毕竟坑是要跳过去的,而不是跳进去的. 二. 读写分离的一些 ...
- 百度云虚拟主机BCH安装PHP框架CodeIgniter
百度云虚拟主机BCH官方未支持CodeIgniter框架,本人参加php中文网活动获取一百度云虚拟主机,本人选的ThinkPHP版,但本人喜欢CodeIgniter框架,因此尝试在该主机上配置Code ...
- Delphi获取Android下GPS的NMEA 0183数据
下面的程序,可以实现Android下获取GNSS的NMEA0183数据: unit utAndroidNmea; interface uses Androidapi.JNIBridge, Androi ...
- 嵌入式nand flash详解
一.s3c2440启动后会将nand flash的前4K程序复制到内部的sram中,这个过程是硬件自动完成的,但是如果我们的程序远远大于4K,这个时候就需要将程序从flash拷贝到内存中来运行了. 二 ...
- Go 跨域请求问题
在使用go语言写测试服务的时候遇到了前端跨域请求问题,只需在go中加入 w.Header().Set("Access-Control-Allow-Origin", "*& ...