搜索引擎主题模型优化(2.基于抽样的算法,变异式的期望和期望算法)

优采云 发布时间: 2022-01-17 17:18

  搜索引擎主题模型优化(2.基于抽样的算法,变异式的期望和期望算法)

  LDA是一个三层贝叶斯模型,三层分别是:文档层、主题层和词层。该模型基于以下假设:1)整个文档集合中有k个独立主题;2)每个主题是单词的多项分布;3)每个文档由k个主题组成主题是随机混合的;4)每个文档是k个主题的多项分布;5)每个文档的主题概率分布的先验分布是狄利克雷分布;

  6)每个主题中词的概率分布的先验分布是狄利克雷分布。

  文档生成过程如下: 1)对于文档集M,由带参数β的狄利克雷分布生成主题的分布参数φ;2)对于M中的每一个文档m,参数为α的狄利克雷分布中采样doc到topic的分布参数θ;3)对于文档m中的第n个词W_mn,先根据θ分布对文档m的一个隐式主题Z_m进行采样,然后根据φ分布对主题Z_m采样一个词W_mn。

  ————————————————————————————————————————————————————— — —

  两种估计方法 - VEM 和 gibbs

  一般来说,逼近这种后验分布的方法可以分为两类:

  1. 变分算法,它们是确定性方法。变体算法假设一些参数分布,并将这些理想分布与后验数据进行比较,并找到最接近的分布。因此,估计问题转化为优化问题。主要算法是变分期望最大化算法(VEM)。这种方法是最常用的方法。主要用在 R 软件的 tomicmodels 包中。

  2. 基于采样的算法。采样算法,比如Gibbs采样,主要是构造一个马尔可夫链,从后验经验分布中抽取一些样本来估计后验分布。吉布斯采样的方法在 R 软件的 lda 包中被广泛使用。

  参考:使用R作为主题模型:词过滤和主题号确定

  R包枚举——lda和topicmodel

  在R语言中,提供LDA模型的包(package)有两个:lda和topicmodels。

  lda 提供基于 Gibbs 采样、MMSB(混合成员随机块模型)、RTM(关系主题模型)和 sLDA(监督 LDA)和 RTM 的经典 LDA。基于 VEM(变分期望最大化)。

  topicmodels 基于包 tm 提供了三种模型:LDA_VEM、LDA_Gibbs 和 CTM_VEM(相关主题模型)。

  此外,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类别比较一致,所以我选择用微博作为doc单元进行训练,用human作为doc单元进行推理,但是没有找到关于这个问题更详细的参考资料,看了几个topicmodel推特和微博的应用,微博一一作为处理单元。

  (2)不同的估计方法有什么区别?R包提供了VEM、Gibbs、CTM等,这里不做详细对比,本文其余部分的结果都是基于Gibbs估计的结果。

  (3)topicmodel适合短文本分析吗?稀疏会带来什么样的问题?其实每条微博都以doc为单位分析会导致稀疏问题,但我没有意识到它有潜在的问题question来。

  (4)中文文本处理感觉很紧迫……除了分词,没有专门的R包用于词性标注、句法分析、同义词等,本文只做初步处理。

  (5)最终的聚类效果不仅考虑了明星的专业领域,还考虑了他们的情绪状态、生活中的爱好和兴趣等,是一个综合的结果。选择不同的专业领域可以通过选择不同的主题。来自聚类分析。

  参考:原文链接:微博名人的那些事

  ——————————————————————————————————————————

  扩展一:主题模型在关键词抽取中的应用

  在关键字和短语提取中使用主题建模时,按行业生成用户文档。同时,行业信息可以作为输入主题敏感的排名算法,提高搜索准确率。

  参考博客:

  ——————————————————————————————————————————

  扩展 2:LDA 相似性文章聚类

  论文:Arnab Bhadury 的“使用 LDA 对相似故事进行聚类 | Flipboard 工程”

  去除一些噪声词,然后使用LDA模型来表示向量文章,提供了低维且鲁棒的词向量表达。

  博客地址:

  ——————————————————————————————————————————

  扩展三:中文标签/话题提取/推荐

  来自知乎的回答,某总结:如何为中文文本做中文标签推荐?

  1、 根据关键词的权重,如tfidf值,从高到低向用户推荐TopN的关键词作为文本标签。

  2、LDA,先计算每个中文文本的K个话题分布,取概率最高的话题,然后取话题下概率最高的TopN个词作为标签推荐给用户,但是这种方法的K值不容易确定。最终计算出来的效果不如第一种方法。但是,LDA 不适合解决细粒度的标注问题,例如提取实例名称。

  3、标签分发模型(NTDM),源自社交媒体用户标签的分析和推荐()

  4、Extract关键词 另一种常用的方法是TextRank,它根据词窗共现或相似度构建词网,然后根据PageRank算法计算词权重。

  ——————————————————————————————————————————

  扩展 4:文本挖掘中主题跟踪的可视化呈现

  在做主题分类的时候,想做一个每个时间段的主题模型趋势,也就是在不同时间段建模,但是如何可视化这样的内容呢?

  笔者看到了一个很好的案例:

  ——————————————————————————————————————扩展 5:迭代 LDA 模型

  LDA作为一种无监督的算法模型,本身在训练集中也可能存在大量的噪声数据,这可能会导致模型在效果上无法满足行业的需求。比如我们经过一个LDA过程后,得到的每个主题的词表(xxx.twords)或多或少都夹杂着其他主题的词或噪声词等,导致后续推理的准确率不理想. 在LDA过程完成并获得xxx.twords文件后,我们可以尝试根据“专家经验”手动去除每个主题中不应该属于该主题的词。经过处理,就相当于获得了一个理想的、干净的“先验知识”。得到这样的“先验知识”后,我们可以将其作为变量传入下一个LDA流程,并且在模型初始化的时候,“先验知识”中的词会大概率落入对应的话题中。使用相同的训练集和相同的参数再次迭代 LDA 过程。经过两三次这样的迭代,应该会有一些改进。虽然能在一定程度上提升模型效果,但也有一定的弊端:大大增加了人工成本,而且如果话题太多(上千或上万),很难筛选出“优先”的一个。知识”。虽然能在一定程度上提升模型效果,但也有一定的弊端:大大增加了人工成本,而且如果话题太多(上千或上万),很难筛选出“优先”的一个。知识”。虽然能在一定程度上提升模型效果,但也有一定的弊端:大大增加了人工成本,而且如果话题太多(上千或上万),很难筛选出“优先”的一个。知识”。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线