NLP︱LDA主题模型的应用难题、使用心得及从多元统计角度剖析
将LDA跟多元统计分析结合起来看,那么LDA中的主题就像词主成分,其把主成分-样本之间的关系说清楚了。多元学的时候聚类分为Q型聚类、R型聚类以及主成分分析。R型聚类、主成分分析针对变量,Q型聚类针对样本。
PCA主要将的是主成分-变量之间的关系,在文本中LDA也有同样的效果,将一撮词(变量)变成话题(主成分),同时通过画像主成分,可以知道人群喜欢什么样子的话题;
Q型聚类代表样本之间的群落关系。
LDA假设前提:主题模型中最主要的假设是词袋假设(bag of words),指通过交换文档内词的次序而不影响模型训练的结果,模型结果与词的顺序无关。
主题模型中最重要的参数就是各个文档的主题概率分布和各个主题下的词项概率分布。
———————————————————————————————————————————————————
两种的估计方法——VEM 以及 gibbs
通常逼近这个后验分布的方法可以分为两类:
1. 变异算法(variational algorithms),这是一种决定论式的方法。变异式算法假设一些参数分布,并根据这些理想中的分布与后验的数据相比较,并从中找到最接近的。由此,将一个估计问题转化为最优化问题。最主要的算法是变异式的期望最大化算法(variational expectation-maximization,VEM)。这个方法是最主要使用的方法。在R软件的tomicmodels包中被重点使用。
2. 基于抽样的算法。抽样的算法,如吉布斯抽样(gibbs sampling)主要是构造一个马尔科夫链,从后验的实证的分布中抽取一些样本,以之估计后验分布。吉布斯抽样的方法在R软件的lda包中广泛使用。
R包列举——lda和topicmodel
在R语言中,有两个包(package)提供了LDA模型:lda和topicmodels。
lda提供了基于Gibbs采样的经典LDA、MMSB(the mixed-membership stochastic blockmodel )、RTM(Relational Topic Model)和基于VEM(variational expectation-maximization)的sLDA (supervised LDA)、RTM.。
topicmodels基于包tm,提供LDA_VEM、LDA_Gibbs、CTM_VEM(correlated topics model)三种模型。
另外包textir也提供了其他类型的主题模型。
参考:R之文档主题模型
——————————————————————————————————————————
但是主题模型存在一个非常大的问题:模型质量问题
1、模型质量较差,话题出来的无效词较多且较难清洗干净;
2、话题之间,区别不够显著,效果不佳;
3、话题内,词和词的关联性很低。
4、反映不出场景,笔者最开始希望得到的是一个话题,里面有场景词+用户态度、情绪、事件词,构成一个比较完善的系统,但是比较天真...
5、话题命名是个难点,基本词语如果效果差了,话题画像也很难了。
——————————————————————————————————————————
一、腾讯Peacock案例
来看看腾讯peacock的应用案例:
输入一个词,然后跳出来两个内容:搜索词-主题列表(主题里面有很多词语);搜索词-文档列表。
笔者猜测实现三个距离计算的过程:
先计算搜索词向量和主题词向量距离,主题排序;
再计算搜索词和主题下各个词语向量的距离,词语排序;
最后计算搜索词和文档向量的距离,文档排序。
腾讯花了大力气做的主题系统,从中可以看到这样几个信息:
1、总体来看,词和词之间的关联性也不是那么强烈;
2、词性基本都是名词,少有动作、形容词。
该系统还做了一些好玩的尝试:利用用户-QQ群矩阵,做主题模型,将QQ群进行聚类,可以很好的了解,不同用户群喜欢什么样子话题群,人数的多少。
——————————————————————————————————————————
二、主题模型主要作用(参考博客)
有了主题模型,我们该怎么使用它呢?它有什么优点呢?我总结了以下几点:
1)它可以衡量文档之间的语义相似性。对于一篇文档,我们求出来的主题分布可以看作是对它的一个抽象表示。对于概率分布,我们可以通过一些距离公式(比如KL距离)来计算出两篇文档的语义距离,从而得到它们之间的相似度。
2)它可以解决多义词的问题。回想最开始的例子,“苹果”可能是水果,也可能指苹果公司。通过我们求出来的“词语-主题”概率分布,我们就可以知道“苹果”都属于哪些主题,就可以通过主题的匹配来计算它与其他文字之间的相似度。
3)它可以排除文档中噪音的影响。一般来说,文档中的噪音往往处于次要主题中,我们可以把它们忽略掉,只保持文档中最主要的主题。
4)它是无监督的,完全自动化的。我们只需要提供训练文档,它就可以自动训练出各种概率,无需任何人工标注过程。
5)它是跟语言无关的。任何语言只要能够对它进行分词,就可以进行训练,得到它的主题分布。
综上所述,主题模型是一个能够挖掘语言背后隐含信息的利器。近些年来各大搜索引擎公司都已经开始重视这方面的研发工作。语义分析的技术正在逐步深入到搜索领域的各个产品中去。在不久的将来,我们的搜索将会变得更加智能,让我们拭目以待吧。
——————————————————————————————————————————
三、主题模型的一些延伸
模型的延伸可以看看
1、基于LDA的Topic Model变形
用在情感分析中:主题情感偏向性得分,对主题进行打分然后根据主题-文档矩阵,对每个文档的情感进行打分。
主题之间的关联性:根据主题分布的点积相似性,确定相关文本,建立主题之间的关联
时序文本,动态主题模型。
短文本,消除歧义,建立语义相似性聚类;
知识图谱的构建,知识图谱中需要一些集合,潜变量,那么主题建模比较适合作为一个大的包容的集合;
稀疏性利用,在模型中主题-词语矩阵,会有很低频的数据,那么可以强行让其变成0,减少影响。
2、摘录:LDA使用心得
- 如果要训练一个主题模型用于预测,数据量要足够大;
- 理论上讲,词汇长度越长,表达的主题越明确,这需要一个优秀的词库;
- 如果想要主题划分的更细或突出专业主题,需要专业的词典;
- LDA的参数alpha对计算效率和模型结果影响非常大,选择合适的alpha可以提高效率和模型可靠性;
- 主题数的确定没有特别突出的方法,更多需要经验;
- 根据时间轴探测热点话题和话题趋势,主题模型是一个不错的选择;
- 前面提到的正面词汇和负面词汇,如何利用,本文没有找到合适的方法;
(参考:R之文档主题模型)
3、摘录:LDA使用心得
整个过程中有很多不甚明朗的地方,我且谨列几条如下:
(1) doc应该怎样定义,是应该以每人为单位训练topicmodel还是应该以每条微博为单位?经过比较我发现以每条微博为单位训练的topicmodel中的每个topic的term类别更加一致;因此我选择了以微博为doc单位训练,并以人为doc单位做inference;不过我没有找到关于这个问题更详细的reference,看到的几篇关于twitter、microblog的topicmodel应用也是用逐条微博作为处理单位。
(2)不同的估计方法之间有什么区别?R包提供的有VEM、Gibbs、CTM等,这里没有做细节的比较,本文后文结果全部以Gibbs估计结果为主。
(3)topicmodel适不适合做短文本的分析?sparsity会带来怎样的问题?实际上以逐条微博为doc单位分析正会导致sparsity的问题,不过我还没意识到它潜在带来的问题。
(4)中文的文本处理感觉很捉急啊……除了分词之外的词性标注、句法分析、同义词等等都没有专门处理的R包,本文也仅做了初步的处理。
(5)最后的聚类效果不仅仅考虑名人的专业领域,也考虑了其生活中的情感状态、爱好兴趣等,是一个综合的结果,选取不同的专业领域可以通过选取不同topic做聚类分析而得。
参考文献:原文链接:微博名人那些事儿
————————————————————————————————————
延伸一:主题模型在关键词提取的应用
根据按行业分类的用户生成文档,同时在关键字和短语抽取使用主题建模。同时,可以利用行业信息作为输入话题敏感的排名算法提高搜索精度。
参考博客:http://bugra.github.io/work/notes/2017-02-05/topic-modeling-for-keyword-extraction/
————————————————————————————————————
延伸二:LDA相似文章聚类
论文:《Clustering Similar Stories Using LDA | Flipboard Engineering》by Arnab Bhadury
去掉一些噪音词,然后LDA模型后用向量来表征文章,提供了一个低纬度、稳健性较强的词向量表达方式。
博客地址:http://engineering.flipboard.com/2017/02/storyclustering
NLP︱LDA主题模型的应用难题、使用心得及从多元统计角度剖析的更多相关文章
- R语言︱LDA主题模型——最优主题数选取(topicmodels)+LDAvis可视化(lda+LDAvis)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:在自己学LDA主题模型时候,发现该模 ...
- Gensim LDA主题模型实验
本文利用gensim进行LDA主题模型实验,第一部分是基于前文的wiki语料,第二部分是基于Sogou新闻语料. 1. 基于wiki语料的LDA实验 上一文得到了wiki纯文本已分词语料 wiki.z ...
- [综] Latent Dirichlet Allocation(LDA)主题模型算法
多项分布 http://szjc.math168.com/book/ebookdetail.aspx?cateid=1&§ionid=983 二项分布和多项分布 http:// ...
- 用scikit-learn学习LDA主题模型
在LDA模型原理篇我们总结了LDA主题模型的原理,这里我们就从应用的角度来使用scikit-learn来学习LDA主题模型.除了scikit-learn, 还有spark MLlib和gensim库 ...
- Spark:聚类算法之LDA主题模型算法
http://blog.csdn.net/pipisorry/article/details/52912179 Spark上实现LDA原理 LDA主题模型算法 [主题模型TopicModel:隐含狄利 ...
- R语言︱LDA主题模型——最优主题...
R语言︱LDA主题模型——最优主题...:https://blog.csdn.net/sinat_26917383/article/details/51547298#comments
- 自然语言处理之LDA主题模型
1.LDA概述 在机器学习领域,LDA是两个常用模型的简称:线性判别分析(Linear Discriminant Analysis)和 隐含狄利克雷分布(Latent Dirichlet Alloca ...
- 机器学习入门-文本特征-使用LDA主题模型构造标签 1.LatentDirichletAllocation(LDA用于构建主题模型) 2.LDA.components(输出各个词向量的权重值)
函数说明 1.LDA(n_topics, max_iters, random_state) 用于构建LDA主题模型,将文本分成不同的主题 参数说明:n_topics 表示分为多少个主题, max_i ...
- 理解 LDA 主题模型
前言 gamma函数 0 整体把握LDA 1 gamma函数 beta分布 1 beta分布 2 Beta-Binomial 共轭 3 共轭先验分布 4 从beta分布推广到Dirichlet 分布 ...
随机推荐
- spring使用redis做缓存
缓存 什么是缓存? 在高并发下,为了提高访问的性能,需要将数据库中 一些经常展现和不会频繁变更的数据,存放在存取速率更快的内存中.这样可以 降低数据的获取时间,带来更好的体验 减轻数据库的压力 缓存适 ...
- 给php加速安装APC
说明:APC-3.1.13 适应于 php-5.4.27 下载: wget http://blog.xinfilm.com/softdir/APC-3.1.13.tgz tar -zxvf APC-3 ...
- Java高并发的常见应对方案
Java高并发的常见应对方案 一.关于并发我们说的高并发是什么? 在互联网时代,高并发,通常是指,在某个时间点,有很多个访问同时到来. 高并发,通常关心的系统指标与业务指标? QPS:每秒钟查询量,广 ...
- 洛谷 [P1403] 约数研究
本题的思想很好,正难则反 首先如果暴力枚举每个数的约数个数,一定会超时,那么我们就从约数的角度考虑,题目中问的是1~n的约数个数和,那么我们就枚举约数,看每个约数在1~n中出现过几次. #includ ...
- BZOJ 1069: [SCOI2007]最大土地面积 [旋转卡壳]
1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2978 Solved: 1173[Submit][Sta ...
- Docker小记 — Docker Engine
前言 用了Docker方才觉得生产环境终于有了他该有的样子,就像集装箱普及之后大型货轮的价值才逐渐体现出来,Docker详细说明可查阅"官方文档".本篇为Docker Engine ...
- NFS配置及使用
什么是NFS NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享存储.在NFS的应用中,本地NFS ...
- 【linux之设备,分区,文件系统】
一.设备 IDE磁盘的设备文件采用/dev/hdx来命名,分区则采用/dev/hdxy来命名,其中x表示磁盘(a是第一块磁盘,b是第二块磁盘,以此类推), y代表分区的号码(由1开始,..3以此类推) ...
- laravel5.4+vue+vux+element的环境搭配
最近因为项目的需要,需要搭配一个这样的环境.之前做过的东西没有这样用过,在网上找了半天不是过于简单就是根本行不通,自己踩了半天的坑,终于搭配成功. 首先下载laravel5.4,直接去官网一键安装包或 ...
- 观察者模式—jdk自带源码分析
一:观察者模式简介 二:jdk实现观察者模式的源码 三:实际例子 四:观察者模式的优点和不足 五:总结 一:观察者模式简介 有时又被称为发布(publish )-订阅(Subscribe)模式.模型- ...