搜索引擎主题模型优化( LDA中的主题就像词主成分,其把主成分-样本之间的关系)
优采云 发布时间: 2022-01-26 00:01搜索引擎主题模型优化(
LDA中的主题就像词主成分,其把主成分-样本之间的关系)
NLP︱LDA主题模型的应用问题
将LDA与多元统计分析相结合,LDA中的主题就像词的主成分,阐明了主成分与样本之间的关系。在多变量中,聚类分为Q型聚类、R型聚类和主成分分析。R型聚类和主成分分析是针对变量的,Q型聚类是针对样本的。
PCA主要关注主成分和变量之间的关系。LDA 在文中也有同样的作用。它将一堆单词(变量)变成主题(主要成分)。同时,通过人像的主成分,可以知道人群喜欢什么。的主题;
Q 型聚类代表样本之间的社区关系。
LDA假设前提:主题模型中的主要假设是词袋假设,即在不影响模型训练结果的情况下交换文档中词的顺序,模型结果与词的顺序无关字。
主题模型中最重要的参数是每个文档的主题概率分布和每个主题下的词条概率分布。
LDA是一个三层贝叶斯模型,三层分别是:文档层、主题层和词层。
两种估计方法 - VEM 和 gibbs
一般来说,逼近这种后验分布的方法可以分为两类:
1. 变分算法,它们是确定性方法。变体算法假设一些参数分布,并将这些理想分布与后验数据进行比较,并找到最接近的分布。因此,估计问题转化为优化问题。主要算法是变分期望最大化算法(VEM)。这种方法是最常用的方法。主要用在 R 软件的 tomicmodels 包中。
2. 基于采样的算法。采样算法,比如吉布斯采样(gibbs sampling),主要是构造一个马尔可夫链,从后验经验分布中抽取一些样本来估计后验分布。吉布斯采样的方法在 R 软件的 lda 包中被广泛使用。
参考:使用R作为主题模型:词过滤和主题号确定
R包枚举——lda和topicmodel
在R语言中,提供LDA模型的包(package)有两个:lda和topicmodels。
lda 提供基于 Gibbs 采样、MMSB(themixed-membership stochastic blockmodel)、RTM(RelationalTopic Model)和 sLDA(supervisedLDA)和 RTM 的经典 LDA。基于 VEM(变分期望最大化)。
Topicmodels 基于 tm 包,提供了三种模型:LDA_VEM、LDA_Gibbs 和 CTM_VEM(correlatedtopics 模型)。
此外,textir 包还提供了其他类型的主题模型。
参考:R的文档主题模型
但是主题模型有一个非常大的问题:模型质量问题
1、模型质量差,话题无效词多,清理困难;
2、主题差异不够显着,效果不好;
3、话题中,词与词的相关性很低。
4、 无法体现场景,作者最初希望得到一个话题,收录场景词+用户态度、情绪、事件词,形成一个比较完整的体系,但是比较幼稚……
5、 主题命名很困难。如果基础词无效,主题画像也会很困难。
一、腾讯孔雀案
我们来看一下腾讯孔雀的应用案例:
输入一个词,然后弹出两件事:搜索词-主题列表(主题中有很多词);搜索词-文档列表。
笔者猜测实现三个距离计算的过程:
首先计算搜索词向量与主题词向量的距离,对主题进行排序;
然后计算搜索词与主题下每个词向量的距离,并对词进行排序;
最后计算搜索词与文档向量的距离,对文档进行排序。
腾讯在制作主题系统方面下足了功夫,从中可以看到如下信息:
1、一般来说,单词之间的相关性不是那么强;
2、词性基本都是名词,很少有动作和形容词。
系统还做了一些有趣的尝试:利用用户-QQ群矩阵做话题模型,对QQ群进行聚类,可以很好的了解不同的用户群喜欢什么样的话题群,有多少人。
二、主题模型的主要作用(参考博客)
有了主题模型,我们如何使用它?它有什么优点?我总结了以下几点:
1)衡量文档之间的语义相似度。对于文档,我们发现的主题分布可以看作是它的抽象表示。对于概率分布,我们可以通过一些距离公式(如KL距离)计算两篇文档的语义距离,得到它们之间的相似度。
2)可以解决多义问题。回想第一个例子,“apple”可以是一种水果,也可以指苹果公司。通过我们得到的“词-主题”概率分布,我们可以知道“苹果”属于哪些主题,我们可以通过主题匹配来计算它与其他词的相似度。
3)它消除了文档中噪音的影响。一般来说,文档中的噪音往往是次要主题,我们可以忽略它们,只保留文档中的主要主题。
4)它是无人监督的,完全自动化的。我们只需要提供训练文件,它就可以自动训练各种概率,无需任何人工标注过程。
5)它与语言无关。任何语言都可以被训练来获得它的主题分布,只要它可以分割它。
综上所述,主题模型是一个强大的工具,可以挖掘语言背后的隐藏信息。近年来,各大搜索引擎公司都开始重视这方面的研发。语义分析技术逐渐渗透到搜索领域的各种产品中。让我们看看在不久的将来我们的搜索将如何变得更智能。
三、主题模型的一些扩展
可以看到模型的扩展
1、基于LDA的主题模型变形
用于情感分析:主题情感偏差评分,对主题进行评分,然后根据主题-文档矩阵对每个文档的情感进行评分。
主题间相关性:根据主题分布的点积相似度,确定相关文本,建立主题间的相关性
时间序列文本,动态主题模型。
短文本,消歧,构建语义相似度聚类;
对于知识图谱的构建,知识图谱中需要一些集合和潜变量,所以主题建模更适合作为一个大的包容集;
利用稀疏性,在模型中的topic-word矩阵中,会有非常低频率的数据,所以可以强制变为0来减少影响。
2、摘录:LDA 经验
如果要训练一个主题模型进行预测,数据量要足够大;理论上,词汇长度越长,表达的主题越清晰,这需要一个优秀的词库;如果您想更精细地划分主题或突出特色主题需要专业词典;LDA的参数alpha对计算效率和模型结果影响很大,选择合适的alpha可以提高效率和模型可靠性;确定题目数量没有特别突出的方法,需要更多经验;基于时间轴的热点话题和话题趋势检测,话题模型是一个不错的选择;上面提到的正面词和负面词怎么用,这篇文章没有找到合适的方法;
(参考:R的文档主题模型)
3、摘录:LDA 经验
整个过程有很多歧义,我列举几个如下:
(1)doc应该怎么定义,topicmodel是按人训练还是在每条微博上训练?对比后发现topicmodel中每个topic的term都是在一个per微博基础上的类别比较一致,所以我选择用微博作为doc单元进行训练,用human作为doc单元进行推理;但是我没有找到关于这个问题更详细的参考资料,我看了几个关于twitter和微博的topicmodel应用,微博一一作为处理单元。
(2)不同的估计方法有什么区别?R包提供了VEM、Gibbs、CTM等,这里不做详细对比,本文其余部分的结果都是基于Gibbs估计的结果。
(3)topicmodel适合短文本分析吗?稀疏会带来什么样的问题?其实微博以doc为单位逐条分析会导致稀疏问题,但我没有意识到它有潜力问题问题来了。
(4)中文文本处理感觉很紧迫……除了分词,没有专门的R包用于词性标注、句法分析、同义词等,本文只做初步处理。
5)最终的聚类效果不仅考虑了明星的专业领域,还考虑了他们的情绪状态、生活中的爱好和兴趣等,是一个综合的结果。选择不同的专业领域可以通过选择不同的主题进行聚类。类分析。
参考:原文链接:微博名人的那些事
扩展一:主题模型在关键词抽取中的应用
扩展 2:LDA 相似性文章聚类
论文:Arnab Bhadury 的“使用 LDA 对相似故事进行聚类 | Flipboard 工程”
去除一些噪声词,然后使用LDA模型来表示向量文章,提供了低维且鲁棒的词向量表达。
扩展三:中文标签/话题提取/推荐
来自知乎的回答,某总结:如何为中文文本做中文标签推荐?
1、 根据关键词的权重,比如tfidf值,推荐TopN的关键词作为文本标签给用户。
2、LDA,先计算每个中文文本的K个话题分布,取概率最高的话题,然后取话题下概率最高的TopN个词作为标签推荐给用户,但是这种方法的K值不容易确定。最终计算出来的效果不如第一种方法。但是,LDA 不适合解决细粒度的标注问题,例如提取实例名称。
3、标签分发模型(NTDM),源自社交媒体用户标签的分析推荐()
4、Extraction关键词 另一个常用的方法是TextRank,它根据单词的窗口共现或相似度构建单词网络,然后根据PageRank算法计算单词的权重。
扩展 4:文本挖掘中主题跟踪的可视化呈现
扩展 5:迭代 LDA 模型
LDA作为一种无监督的算法模型,本身也可能在训练集中有大量的噪声数据,这可能会导致模型在效果上无法满足行业的需求。比如我们经过一个LDA过程后,得到的每个主题的词表(xxx.twords)或多或少都夹杂着其他主题的词或噪声词等,导致后续推理的准确率不理想.
在LDA过程完成并获得xxx.twords文件后,我们可以尝试根据“专家经验”手动去除每个主题中不应该属于该主题的词。经过处理,就相当于获得了一个理想的、干净的“先验知识”。
得到这样的“先验知识”后,我们可以将其作为变量传入下一个LDA过程,当模型初始化时,“先验知识”中的词就会大概率落入对应的话题中。使用相同的训练集和相同的参数再次迭代 LDA 过程。经过两三次这样的迭代,应该会有一些改进。
虽然能在一定程度上提升模型效果,但也有一定的弊端:大大增加了人工成本,而且如果话题太多(上千或上万),很难筛选出“优先”的一个。知识”。
改进的python代码,源码知乎玩转一些高级--带你进入主题模型LDA(小改进+附源码)
延伸六:如何建立高效的话题模型?
本节来自知乎Q&A:主题模型还有用吗,应该怎么用?
1.文字要长而长。不要太长,想办法把它拼凑起来,让它更长
2.语料库更好,需要下更多功夫才能摆脱
3、规模要大。有两层意思,一是文档多,二是主题多
4、算法上,plda+可以支持中等规模;lightlda可以支持*敏*感*词*(这个宝贝有点贡献,插个广告);warplda 应该也可以,但是它不是开源的,实现起来应该不会很复杂。
5、应用场景必须可靠。直观上看,分类等任务还是需要监督的,不适合无监督的方法。与基于内容的推荐应用程序类似,LDA 是可靠的。
6、不要使用短文本。想用的话,也应该用twitter lda~~~~
主题模型最合适的变体是添加先验信息:
相信题主用的是完全无监督的Topic Model,但这太行不通了~~~在现实生活中浪费了这么多标注数据,有监督的模型肯定比无监督的好~ 所以!大家可以试试Supervised Topic Model,利用现实中已有的注解来提高模型的准确率~比如用知乎这个标签来训练一个有监督的Topic Model~~~词聚类效果会会好很多。
开源监督 LDA:
iir/llda.py at master · shuyo/iir · GitHub
chbrown/slda · GitHub