热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文本表示模型(1):主题模型LSA、pLSA、LDA

目录文本表示模型主题模型LSApLSALDA文本表示模型文本表示模型可分为以下几种:基于one-hot,tf-idf,textrank等的bag-of-words


目录

  • 文本表示模型
    • 主题模型
      • LSA
      • pLSA
      • LDA


文本表示模型

文本表示模型可分为以下几种:


  • 基于one-hot, tf-idf, textrank等的bag-of-words;
  • 基于计数的,主题模型,如LSA, pLSA, LDA
  • 基于预测的,静态词嵌入,如Word2Vec, FastText, Glove
  • 基于大规模预训练的,动态词嵌入,如BERT, ELMo, GPT, T5

本文讲解第二种“主题模型”。


主题模型

主题模型的目标是在大量的文档中自动发现隐含的主题信息


LSA

LSA(Latent Semantic Analysis,潜在语义分析)

首先构建doc-word共现矩阵,矩阵元素为词的tf-idf值(常见词不一定和主题相关,所以tf-idf比词频适用)。

为了找到潜在的语义(主题),LSA利用奇异值分解SVD,把高维的doc-word共现矩阵映射(降维)到低维的潜在语义空间,得到映射后的文档向量和词向量,并且具有相似主题分布的文档(或词)向量接近。


如上图所示,SVD将doc-word共现矩阵 A 分解为U、S、V三个矩阵的乘积


  • U∈R(m⨉t)U∈ℝ^{(m⨉t)}UR(mt)是潜在语义空间中的doc-topic矩阵,行表示按t个主题表达的文档向量;
  • VT∈R(n⨉t)V^T∈ℝ^{(n⨉t)}VTR(nt)是潜在语义空间中的topic-word矩阵,列代表按t个主题表达的词向量;
  • U和V是列向量彼此正交的正交矩阵;
  • S 是一个对角矩阵,奇异值在对角线上降序排列,可视为该维度的重要性;
  • t 是一个超参数,根据待查找的主题数量进行选择和调整。

有了LSA文档向量和词向量,可计算不同文档的相似度、不同词的相似度、词(或query)与文档的相似度

缺点:


  • 缺乏严谨的数理统计基础
  • SVD分解慢。如果矩阵大小是N,SVD的计算复杂度达到O(N^3),不过可以使用Truncated SVD等更快的方法。

pLSA

pLSA(probabilistic Latent Semantic Analysis,概率潜在语义分析)

将LSA的思想带入到概率统计模型中,不再使用SVD,是一种生成式概率图模型(可以写成若干条件概率连乘),用EM算法学习模型参数。



如上图,给定文档 d,主题 z 以 P(z|d) 的概率出现在该文档中;给定主题 z,单词 w 以 P(w|z) 的概率从主题 z 中被选取。在这个模型中,d 和 w 是已经观测到的变量,而 z 是未知的变量(代表潜在的主题)。其中 P(z|d) 和 P(w|z) 是pLSA模型需要求解的参数。

注:pLSA 模型和 LSA 模型之间存在一个直接的平行对应关系:

缺点:


  • 无法得知新文档的 P(d)
  • pLSA 的参数量随文档数量线性增长,容易过拟合

LDA

LDA(Latent Drichlet Allocation,潜在狄利克雷分配)

LDA 是 pLSA 的贝叶斯版本,在 pLSA 的基础上,引入了参数的狄利克雷先验分布。


  • pLSA采用的是频率学派思想:把 P(z|d) 和 P(w|z) 这两个待估计的参数,看作固定的未知常数,可以求解出来(通过样本计算最大似然估计)。
  • LDA采用的是贝叶斯学派思想:把 P(z|d) 和 P(w|z) 这两个待估计的参数,看作服从一定分布的随机变量(这个分布符合狄利克雷先验概率分布),可通过样本修正先验分布,获得后验分布;
  • 狄利克雷是一种「分布的分布」。它回答了:「给定某种分布,我看到的实际概率分布可能是什么样子?」

注:pLSA 相当于把 LDA 的先验分布转为均匀分布,然后对参数求最大后验估计(在先验是均匀分布的前提下,这也等价于求参数的最大似然估计),而这也正反映出了一个较为合理的先验对于建模是非常重要的。


P(w,Z,B,Θ∣α,η)=∏t=1Tp(Θt∣α)∏i=1Kp(βk∣η)(∏n=1NP(wt,n∣zt,n,βk)P(zt,n∣Θt))P(w,Z,\Beta,\Theta|\alpha,\eta)=\prod_{t=1}^Tp(\Theta_t|\alpha)\prod_{i=1}^Kp(\beta_k|\eta)(\prod_{n=1}^NP(w_{t,n} | z_{t,n}, \beta_k) P(z_{t,n|\Theta_t}))P(w,Z,B,Θα,η)=t=1Tp(Θtα)i=1Kp(βkη)(n=1NP(wt,nzt,n,βk)P(zt,nΘt))

上图中的 α 和 η 是狄利克雷分布的超参数,通过极大似然学习,分别决定了主题分布 Θ\ThetaΘ 和词分布 β\betaβ 。主题分布 Θ\ThetaΘ 是一个维度为文档数 × 主题数的矩阵,矩阵元素 θi,j\theta_{i,j}θi,j 是主题 j 在文档 i 中的比例;词分布 β\betaβ 是一个维度为主题数 × 词数的矩阵,矩阵元素 βi,j\beta_{i,j}βi,j 是词 j 在主题 k 中的频次。在这个模型中,只有文档分布 w 是观测变量。文档分布 www 是一个维度为文档数 × 词数的矩阵,矩阵元素 wi,jw_{i,j}wi,j 是词 j 在文档 i 中出现的频次。

求解主题分布和词分布,用Gibbs Sampling。首先随机初始化,多次遍历每个词,用其他所有词来预测它,逐渐收敛,获得近似解。


使用 LDA,可以从文档语料库中提取人类可解释的主题,其中每个主题都以与之关联度最高的词语作为特征。例如,主题 2 可以用诸如「石油、天然气、钻井、管道、楔石、能量」等术语来表示。此外,在给定一个新文档的条件下,我们可以获得表示其主题混合的向量,例如,5% 的主题 1,70% 的主题 2,10%的主题 3 等。通常来说,这些向量对下游应用非常有用。


Reference:


  • 《深度学习进阶-NLP》,p63-94
  • 《百面机器学习》p133-138
  • 《西瓜书》p337-339
  • 一文读懂如何用LSA、PSLA、LDA和lda2vec进行主题建模
  • 浅谈话题模型:LSA、PLSA、LDA
  • topic model (LSA、PLSA、LDA)

推荐阅读
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 在2019中国国际智能产业博览会上,百度董事长兼CEO李彦宏强调,人工智能应务实推进其在各行业的应用。随后,在“ABC SUMMIT 2019百度云智峰会”上,百度展示了通过“云+AI”推动AI工业化和产业智能化的最新成果。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 为了评估精心优化的模型与策略在实际环境中的表现,Google对其实验框架进行了全面升级,旨在实现更高效、更精准和更快速的在线测试。新的框架支持更多的实验场景,提供更好的数据洞察,并显著缩短了实验周期,从而加速产品迭代和优化过程。 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 如何使用 net.sf.extjwnl.data.Word 类及其代码示例详解 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 在Python编程中,掌握高级技巧对于提升代码效率和可读性至关重要。本文重点探讨了生成器和迭代器的应用,这两种工具不仅能够优化内存使用,还能简化复杂数据处理流程。生成器通过按需生成数据,避免了大量数据加载对内存的占用,而迭代器则提供了一种优雅的方式来遍历集合对象。此外,文章还深入解析了这些高级特性的实际应用场景,帮助读者更好地理解和运用这些技术。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 本文主要参考《Python机器学习经典实例》  在介绍凝聚层次聚类之前,我们需要先理解层次聚类(hierarchicalclustering)。层次聚类是一组聚类算法,通过不断地分 ... [详细]
  • IamcleaningtextinR.Mytexthastheform我在R中清理文本。我的文字有表格buthecouldnotavoidthesubje ... [详细]
author-avatar
手浪用户2602936705
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有