主题模型:LDA原理详解与应用

article/2025/11/10 14:17:03

LDA算法简介:

LDA是一种基于贝叶斯思想的无监督的聚类算法,广泛用于文本聚类,文本分析,文本关键词等场景。具体的,算法 的输入是一个文档的集合D={d1, d2, d3, ... , dn},同时还需要主题Topic的类别数量m;然后会算法会将每一篇文档 di 在 所有Topic上的一个概率值p;这样每篇文档都会得到一个概率的集合di=(dp1,dp2,..., dpm), 表示文档di在m个topic上的概率值;同样的文档中的所有词也会求出 它对应每个Topic的概率,wi = (wp1,wp2,wp3,...,wpm);这样就得到了两个矩阵,一个文档到Topic,一个词到Topic。

其核心公示为:

p(w|d) = p(w|t)*p(t|d)

直观的看这个公式,就是以Topic作为中间层,可以通过当前的θd和φt给出了文档d中出现单词w的概率。其中p(t|d)利用θd计算得到,p(w|t)利用φt计算得到。

  实际上,利用当前的θd和φt,我们可以为一个文档中的一个单词计算它对应任意一个Topic时的p(w|d),然后根据这些结果来更新这个词应该对应的topic。然后,如果这个更新改变了这个单词所对应的Topic,就会反过来影响θd和φt。

  LDA算法开始时,先随机地给θd和φt赋值(对所有的d和t)。然后上述过程不断重复,最终收敛到的结果就是LDA的输出。

这样LDA算法,就将文档和词,投射到了一组Topic上,试图通过Topic找出文档与词间,文档与文档间,词于词之间潜在的关系;由于LDA属于无监督算法,每个Topic并不会要求指定条件,但聚类后,通过统计出各个Topic上词的概率分布,那些在该Topic上概率高的词,能非常好的描述该Topic的意义。

LDA算法原理:

在讲LDA模型之前,会先介绍下 Unigram Model (词袋模型)、Bayes Unigram Model(贝叶斯词袋模型),以及PLSA 概率潜在语义分析,这些算法工作是LDA模型的思想起源。

1.Unigram Model (词袋模型)

 LDA既然是聚类算法,而聚类算法大多数时候,都在寻找两个东西的相似度。

最开始,大家想要判断两篇文档是否相似,最简单直接的方法就是看文档里出现的词是否一样,其个数是否相近。于Unigram Model(词袋模型)就是实现这样的思路设计的。所以为了得到文档集合中,所有文档的共性的规律,词袋模型,假设:一篇文档生成的过程就是 独立的抛一个具有M面的骰子(M是所有词的个数),N次(N是该文档里词的个数),这样文档的生成,刚好可以看作是个多项式分布:

文档集合中,每个词出现的概率就是要求的参数,通过EM算法可以确定下来,这样就得到了模型。

2. Bayes Unigram Model(贝叶斯词袋模型)

词袋模型是频率学派,简单的认为文档里每个词出现的概率是个定数(即骰子的每个面的概率),但Bayes学派不这么认为,他们认为这些概率应该是一个随机过程产生的,于是生成一篇文档的过程可以描述为:先随机抽取一个M面的骰子(每个词出现的概率也是一个分布), 再用这个骰子独立抛N次。那么这个模型的分布如下:

p(\overrightarrow{n})=Mult(\overrightarrow{n}|\overrightarrow{p},N)是多项式分布,为了方便计算,假设p(W|\overrightarrow{p})为Dirichlet分布,它是多项式分布的共轭分布。

共轭分布:

共轭分布(conjugate distribution)的概率中一共涉及到三个分布:先验、似然和后验,如果由先验分布和似然分布所确定的后验分布与该先验分布属于同一种类型的分布,则该先验分布为似然分布的共轭分布,也称为共轭先验。

假设变量xx服从分布P(x|θ)P(x|θ),其观测样本为X={x1,x2,...,xm}X={x1,x2,...,xm},参数θθ服从先验分布Π(θ)Π(θ)。那么后验分布为
  P(θ|X)=Π(θ)P(X|θ)P(X)
如果后验分布P(θ|X)P(θ|X)与先验分布Π(θ)Π(θ)是同种类型的分布,则称先验分布Π(θ)Π(θ)为似然分布P(X|θ)P(X|θ)的共轭分布。
  比较常用的几个例子有:高斯分布是高斯分布的共轭分布,Beta分布是二项分布的共轭分布,Dirichlet分布是多项分布的共轭分布。

Dirichlet 分布:比如 抛了100次骰子,得到6个面的一个概率,记为一个实验,重复这个实验100次,那么这100次的实验中,这6个面的概率的概率分布,就是Dirichlet分布,它是分布之上的分布。

例如:1点(骰子六个面之一) 在这100次实验(每个实验抛100次) 是 0.15的概率为 0.12,实际我们这么想,100次实验中,有12次,1点在一个实验内出现了15次,可以看作是总共抛10000次,1点出现15×12=180次。这10000次实验,视为一个大的多项式分布,于是可以得出他们有相同的概率分布公式,这就是前面所提到的共轴分布,且有如下性质:

                            先验的Dirichlet分布+多项式分布 = 后验的Dirichlet分布

上述的例子中,你会发现,它与我们的Bayes Unigram Model(贝叶斯词袋模型)已经很相似了。一个实验里的100次抛骰子,可以看作是先验的Dirichlet分布,也就是模型中确定骰子各个面概率的那个随机过程,而重复这个这个实验100次,可以看作是后面的根据这个骰子确定文档的一个过程。

Dirichlet分布还有一个重要的性质,它的最大似然估计可以通过如下公式,证明过程有些复杂,暂不推导了:

 3. PLSA潜在语义分析

在文本聚类的时候,常常会遇到这样一种问题:例如在NBA的相关新闻中提到“石佛”,和提到“邓肯”它们应该是指的同一个人,确实两个不同的词;而另一篇关于教育的新闻里也提到了“邓肯”,但此“邓肯”非彼“邓肯”,它可能指的是美国教育部部长“阿恩·邓肯”;而这两篇NBA新闻和一篇教育新闻,很可能就被错误的聚类了。

      于是,可以发现词在不同的语义环境下,同一个词可能表达不同意思,而同一个意思可能产生不同的词。PLSA潜在语义分析,就是为了解决这样的问题。它在文档和词之间加了一层主题(Topic),先让文档和主题产生关联,再在主题中寻找词的概率分布。

      PLSA模型将文档的生成这样设计:第一步,我们抛一个有H面的骰子,每个面代表一个主题,各个面概率不一,得到一个主题;第二步,这个主题又对应了一个有T个面的骰子,每个面代表一个词,抛这骰子N次,得到一篇文章。其实我觉得这个模型可以看作是两个词袋模型的组合,第一个做一次,确定主题,第二个重复独立做N词,确定文章。下面是一个直观图(借用LDA数学八卦的图了):

 这样概率分布公式如下:

 4. LDA主题聚类模型

这时Bayes学派的朋友们又出现,历史是如此的相似,他们又对PLSA下手了,认为PLSA里面的两种骰子(产生主题的骰子和主题对应词的骰子),各个面的概率都不应该是确定,应该由一个随机过程来得出。于是让PLSA的两个词袋模型,变成两个Bayes词袋模型,就是LDA了

      前面已经介绍了,Bayes词袋模型的概率分布是一个Dirichlet 同轴分布,LDA 的整个物理过程实际就是两个Dirichlet 同轴分布,而 LDA 模型的参数估计也就出来了,通过那个重要的性质,如下:

 LDA算法设计与Gibbs Sampling

算法步骤:

      1. 对文档集合中的每篇文档d,做分词,并过滤掉无意义词,得到语料集合W = {w1, w2, …, wx}。
      2. 对这些词做统计,得到 p(wi|d)。
      3. 为语料集合W中的每个 wi ,随机指定一个主题 t,作为初始主题。
      4. 通过 Gibbs Sampling 公式, 重新采样 每个 w 的所属 主题t, 并在语料中更新 直到Gibbs Sampling 收敛。
      收敛以后得到 主题-词 的概率矩阵,这个就是LDA矩阵,而 文档-主题的的概率矩阵也是能得到的,统计后,就能能得到文档-主题的概率分布。

      Gibbs Sampling 公式:
      Gibbs Sampling 公式,可以用于计算 某x维度的空间中,两个平行点之间转移的概率。 比如在 二维空间(x, y平面),点a(x1,y1) 转移到 b(x1,y2)的概率记为P,P(a ->b) = p(y2|x1 )

      于是上述中第4步,可以视为我们将一个词对应的 文档和Topic的概率 看作是一个点在二维平面里的两个维度,词在不同的文档和不同的主题里,通过Gibbs Sampling公式,不断的转移(即重新采样),直至收敛。 下面是Gibbs Sampling公式收敛的一个图,可以给大家一个直观印象(来自LDA数学八卦)。

一个例子

Suppose you have the following set of sentences:

  • I like to eat broccoli and bananas.
  • I ate a banana and spinach smoothie for breakfast.
  • Chinchillas and kittens are cute.
  • My sister adopted a kitten yesterday.
  • Look at this cute hamster munching on a piece of broccoli.

What is latent Dirichlet allocation? It’s a way of automatically discovering topics that these sentences contain. For example, given these sentences and asked for 2 topics, LDA might produce something like

  • Sentences 1 and 2: 100% Topic A
  • Sentences 3 and 4: 100% Topic B
  • Sentence 5: 60% Topic A, 40% Topic B
  • Topic A: 30% broccoli, 15% bananas, 10% breakfast, 10% munching, … (at which point, you could interpret topic A to be about food)
  • Topic B: 20% chinchillas, 20% kittens, 20% cute, 15% hamster, … (at which point, you could interpret topic B to be about cute animals)

  上面关于sentence 5的结果,可以看出来是一个明显的概率类型的聚类结果(sentence 1和2正好都是100%的确定性结果)。

  再看例子里的结果,除了为每句话得出了一个概率的聚类结果,而且对每个Topic,都有代表性的词以及一个比例。以Topic A为例,就是说所有对应到Topic A的词里面,有30%的词是broccoli。在LDA算法中,会把每一个文档中的每一个词对应到一个Topic,所以能算出上面这个比例。这些词为描述这个Topic起了一个很好的指导意义,我想这就是LDA区别于传统文本聚类的优势吧。

所以LDA要干的事情简单来说就是为一堆文档进行聚类(所以是非监督学习),一种topic就是一类,要聚成的topic数目是事先指定的。聚类的结果是一个概率,而不是布尔型的100%属于某个类。


http://chatgpt.dhexx.cn/article/kMeFu7C3.shtml

相关文章

LDA主题模型简介及Python实现

一、LDA主题模型简介 LDA主题模型主要用于推测文档的主题分布,可以将文档集中每篇文档的主题以概率分布的形式给出根据主题进行主题聚类或文本分类。 LDA主题模型不关心文档中单词的顺序,通常使用词袋特征(bag-of-word feature)来…

制作属于自己的个人博客-超详细教程

SpringBoot个人博客 一.博客效果预览 博客首页预览 博客详情预览 博客评论区预览 博客底部栏预览 关于页面预览 二.博客效果在线预览 http://blog.ShaoxiongDu.top 三.项目技术 后端SpringBoot框架 分为控制层(Controller) 业务层(Service) 数据持久层(Dao) 按照Spring…

如何搭建个人博客

新的安装方式:(强烈推荐,简单方便) 利用dockernginx配置halo博客 先碎碎念一下,最近在学习springboot项目,在b站跟着up主研究如何写一个简易的博客来着,后来发现可以直接简易的搭建一个博客(都不用写代码&a…

使用 nodejs 搭建个人博客

"使用nodejs搭建自己的个人博客" 说明运行后端 node 模块后端框架采用的是 express 框架进行接口构建,具体解释如下:数据库参数配置评论邮箱提示付费文件下载配置(支付宝)评论语句检测 关于跨域问题的解决 说明 使用no…

超详细图解:如何使用 WordPress搭建一个个人博客?

前两天我用WordPress 给自己搭建了一个网站,整个过程非常的顺利,体验非常地好,于是我就整个过程、以及其中的一些搭建心得,记录下来。 如果你也正好有搭建个人网站的想法,那么本文会给你一个参考,也许看了这…

个人博客网站的设计与实现

/ 前话 / 纯手工敲代码,代码结构简单,divcss布局html静态个人博客首页网页设计,dreamwaver和hb都可以编辑,文件结构包含了css、fonts、images、js和html,运用html5技术,包括nav标签、header标签和footer标签…

个人博客系统毕业设计开题报告

本文给出的是本科生个人博客系统的毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求) 毕业设计开题报告 一、选题意义二、博客系统概述三 、毕业设计研究方案四、功能结构图五、进度安排六、参考文献 一、选题意义…

基于HTML个人博客网站项目的设计与实现——个人博客作品展示6页 HTML+CSS

Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 个人博客网站 | 个人主页介绍 | 个人简介 | 个人博客设计制作 | 等网站的设计与制作 | 大学生个人HTML网页设计作品 | HTML期末大学生网页设计作业 HTML:结构 CSS&…

HTML制作个人网页制作(简单静态HTML个人博客网页作品)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

个人主页博客网页设计制作HTML5+CSS大作业——清新春暖花开个人博客网站(6页)

HTML5CSS大作业——清新春暖花开个人博客网站(6页) 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄…

如何使用HTML制作个人网站(如何搭建个人博客)

📂文章目录 一、👨‍🎓网站题目二、✍️网站描述三、📚网站介绍四、🌐网站演示五、⚙️ 网站代码🧱HTML结构代码💒CSS样式代码 六、🥇 如何让学习不再盲目七、🎁更多干货…

10分钟搭建一个免费个人博客网站

一个程序员怎么能不拥有自己的博客,本文让10分钟快速搭建部署好自己的博客 准备工作 有Gitee账号有安装git会 markdown 编写文档Node.js 版本 > 8.6 博客采用VuePress搭建,Gitee部署,接下来,5步搞定。 1.创建项目 创建项目…

用html制作学生个人博客,网页制作论坛(学生个人网页制作代码)

许多开发人员认为擅长设计是一种天生的能力,而创造力是与生俱来的。但是设计是一项可以像其他任何东西一样学习的技能。你不必天生就可以创建一个漂亮的网站的艺术家,这需要实践。在身边的小伙伴的博客,自己的网站来看,很多人都是用了开源后台的网站模板,熟不知局限太大,…

个人网站、个人博客的设计案例,仅供参考

关于网站的内容,我也是纠结了好久,我这里说的是网站建设的内容。个人网站,大多数人还是做个博客,想着能平时写点内容,发点文章,图片,一些简短的分享什么的。 好,想到就做。 我做了…

如何用html制作博客页面,HTML个人博客页面

知识点总结:下面的是一个个人博客页面,歌词的段落用的时“p”标签,超链接为“a”标签。 包括鼠标经过的事件:颜色变换;去顶部去底部和指定位置:写入的锚点,点击后可以到制定位置。 刚开始学习ht…

手把手教你十五分钟搭建个人博客网站

文章目录 一、下载二、上传服务器与配置三、加备案号四、关闭所有评论五、删除自豪采用wordpress六、优雅主题配置七、安装md编译器八、自定义站点九、发一篇博客 一、下载 https://cn.wordpress.org/download/下载一个就行: 二、上传服务器与配置 解压&#xff…

HTML+CSS大作业: 个人介绍网页制作作业 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人博客网站制作成品下载

HTML5期末大作业:个人介绍网站设计——个人博客(6页) HTMLCSSJavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、…

个人博客网站建设详细版

前言:在讲个人博客,我要向机灵鹤大佬致以最高的敬意!感谢他提出的技术指导,本章我将以我犯的错误一步步讲述。 1. 购买服务器 我是在阿里购买的服务器,因为我是一名学生的原因我通过认证学生身份参加了阿里云高校计划…

HTML5+CSS大作业——清新春暖花开个人博客网站(6页)

HTML5CSS大作业——清新春暖花开个人博客网站(6页) 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄…

大学生个人网页设计 HTML个人网页制作 web个人网站模板 简单静态HTML个人网页作品

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…