算法工程师进化-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是一个生成模型,可以用来生成一篇 ...
随机推荐
- DPDK+Pktgen 高速发包测试
参考博客 Pktgen概述 Pktgen,(Packet Gen-erator)是一个基于DPDK的软件框架,发包速率可达线速. 提供运行时管理,端口实时测量. 可以控制 UDP, TCP, ARP, ...
- vue中使用swiper并自定义分页器样式
一,安装swiper 执行命令 npm install vue-awesome-swiper --save 二,引入swiper import {Swiper} from "vue-awes ...
- vue 父子组件的生命周期顺序
一.加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount ...
- 仓位 001 998 AUFNAHME不存在(L9009)
测试做一个物料库存561初始化时,库位是上启用了WM的.提示“C01 998 AUFNAHME 不存在”,998 库存余额的初始条目 是缺省的存储类型.用LS25在正式系统中,CO1 998下有AUF ...
- java Clob类型 转String
1.我的数据库是oracle11g 遇到取出来的字段是clob类型,但是所需要的是string类型,写一个转换函数就可以解决问题了. // Clob类型 转String public String C ...
- 执行mongod其他实例出现的问题
windows环境下,配置其他mongo实例,会出现一些问题 1.配置路径不对,执行bat文件时出现闪屏 根据提示创建C:\data\db\ 目录(因为mongodb默认在/data/db下创建数据库 ...
- Delphi在Android下通过WiFI进行调试
如果我们需要调试USB程序且Android设备只有一个USB口,那么可以通过WiFi来调试程序,这样USB口就可以用了. 大致步骤如下: 1.在有root权限的Android设备里安装“Wifi AD ...
- 大数据学习--day16(集合总体架构--ArrayList--LinkedList)
集合总体架构--ArrayList--LinkedList Collection接口的实现类用法上都有相似的方法.Map同理. List: 特性 : 1. 有索引 2. 有序 ...
- STM32(5)——通用定时器基本定时器
1.STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器. 其中系统嘀嗒定时器是前文中所描述的S ...
- ruby中的循环——times
times:能够得知循环的次数 格式: 循环次数.times do 希望循环的处理 end 或者可省略do~end,用{~}代替: 循环次数.times{ 希望循环的处理 } 循环从第0次开始,可以看 ...