一、LDA模型的概念

什么是LDA模型?

LDA模型是一种无监督的贝叶斯模型,即不需要手工标注训练集。LDA模型也是一种典型的词袋模型,即认为一篇文章由许多个词组成,词与词之间没有先后顺序。

LDA模型的输入为:训练文本,指定主题个数K

LDA模型的输出为:每个主题Zk由哪些词组成及每个词的概率

比如:组成主题Z1的前5个词的概率:0.007*"netanyahu" + 0.007*"mod" + 0.007*"call" + 0.007*"gender" + 0.005*"sure"

LDA模型的应用为:预测一篇文档包含哪些主题及每个主题的概率

比如:对某个文档的预测结果为:[(13, 0.14081296), (15, 0.6363143), (16, 0.14560005)]

前提标准:一个词可以在多个主题下,一篇文档可以包含多个主题

二、文档生成思想

引用博客:https://blog.csdn.net/v_july_v/article//details/41209515

PLSA的文档生成模型思想:

1. 假设你每写一篇文档会制作一颗K面的“文档-主题”骰子(扔此骰子能得到K个主题中的任意一个),和K个V面的“主题-词项” 骰子(每个骰子对应一个主题,K个骰子对应之前的K个主题,且骰子的每一面对应要选择的词项,V个面对应着V个可选的词)。

2. 每写一个词,先扔该“文档-主题”骰子选择主题,得到主题的结果后,使用和主题结果对应的那颗“主题-词项”骰子,扔该骰子选择要写的词。即“先以一定的概率选取主题,再以一定的概率选取词”。

比如:设3个主题的概率分布是{教育:0.5,经济:0.3,交通:0.2}。我们把各个主题z在文档d中出现的概率分布称之为主题分布,且是一个多项分布。

设3个词的概率分布是{大学:0.5,老师:0.3,课程:0.2}。我们把各个词语w在主题z下出现的概率分布称之为词分布,这个词分布也是一个多项分布。

选主题和选词都是两个随机的过程,先从主题分布{教育:0.5,经济:0.3,交通:0.2}中抽取出主题:教育,然后从该教育主题对应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学

注:LDA中,我们不再认为主题分布和词分布是唯一确定的,而是有很多种可能(而是随机变量)。也就相当于,在文档1中,3个主题的概率分布是{教育:0.5,经济:0.3,交通:0.2},但在文档2中,3个主题的概率分布可能是{教育:0.6,经济:0.3,交通:0.1}。

3. 最后,你不停的重复扔“文档-主题”骰子和”主题-词项“骰子,重复N次(产生N个词),完成一篇文档,重复这产生一篇文档的方法M次,则完成M篇文档。

PLSA中生成文档的整个过程便是选定文档生成主题,确定主题生成词。

三、LDA学习过程

一个例子的简单实验效果:https://blog.csdn.net/v_july_v/article//details/41209515

假设事先给定了这几个主题:Arts、Budgets、Children、Education,然后通过学习训练,获取每个主题Topic对应的词语。如下图所示:

然后以一定的概率选取上述某个主题,再以一定的概率选取那个主题下的某个单词,不断的重复这两步,最终生成如下图所示的一篇文章(其中不同颜色的词语分别对应上图中不同主题下的词):

下面使用两个模型对比描述LDA模型:

1. mix unigram模型实现步骤:【一个文档只有一个主题

公式:P(w|d)=P(w|t)*P(t|d);w表示词,t表示主题,d表示文档

(1). 随机地给θd和φt赋值(对所有的d和t)。θd<pt1,...,ptk>,其中,pti表示d对应T中第i个topic的概率。φt<pw1,...,pwm>,其中,pwi表示t⽣成V中第i个单词的概率。

(2). 针对⼀个特定的⽂档ds中的第i单词wi,如果令该单词对应的topic为tj,可以把上述公式改写为:Pj(wi | ds)=P(wi | tj)*P(tj | ds)。

(3). 现在我们可以枚举T中的topic,得到所有的pj(wi | ds)。取令pj(wi | ds)最⼤的tj表示该词表示的主题。

(4). 如果ds中的第i个单词wi在这⾥选择了⼀个与原先不同的topic(也就是说,这个时候i在遍历ds中所有的单词,⽽tj理当不变),就会对θd和φt有影响了。它们的影响⼜会反过来影响对上⾯提到的p(w | d)的计算。对D中所有的d中的所有w进⾏⼀次p(w | d)的计算并重新选择topic看作⼀次迭代。这样进⾏n次循环迭代之后,就会收敛到LDA所需要的结果了。

2. PLSA模型实现步骤:一个文档只有多个主题

(1) “文档-词项”的生成模型:

  1. 按照概率选择一篇文档
  2. 选定文档后,从主题分布中按照概率选择一个隐含的主题类别
  3. 选定后,从词分布中按照概率选择一个词

(2) 对于任意一篇文档,其是已知的。某个词在文档中的概率 = 出现词wj的总文档数 ÷ 词的总个数。

根据可以训练出文档-主题和主题-词项

3. LDA模型实现步骤:一个文档只有多个主题

与PLSA模型相比,就步骤1不相同。 “文档-词项”的生成模型:

  1. 按照概率选择一篇文档
  2. 从狄利克雷分布(即Dirichlet分布)中取样生成文档 的主题分布,换言之,主题分布由超参数为的Dirichlet分布
  3. 从主题的多项式分布中取样生成文档第 j 个词的主题
  4. 从狄利克雷分布(即Dirichlet分布)中取样生成主题对应的词语分布,换言之,词语分布由参数为的Dirichlet分布生成
  5. 从词语的多项式分布中采样最终生成词语 

个人学习笔记,还望大家多多指正!

通俗易懂的LDA模型相关推荐

  1. 新闻分类任务(LDA模型,多项分布朴素贝叶斯)

    新闻分类任务 1.利用gensim建立LDA模型将文本进行主题分类 2.利用多项分布朴素贝叶斯将文本进行分类 数据来源:http://www.sogou.com/labs/resource/list_ ...

  2. NLP之TM之LDA:利用LDA算法瞬时掌握文档的主题内容—利用希拉里邮件数据集训练LDA模型并对新文本进行主题分类

    NLP之TM之LDA:利用LDA算法瞬时掌握文档的主题内容-利用希拉里邮件数据集训练LDA模型并对新文本进行主题分类 目录 输出结果 设计思路 核心代码 训练数据集 LDA模型应用 输出结果 设计思路 ...

  3. gensim读取已训练模型LDA模型的模型与dictionary

    import pyLDAvis.gensim from gensim import models, corpora from gensim.corpora import Dictionaryall_d ...

  4. 使用LDA模型对新的文档进行分类

    核心代码很简单: import gensim from 自己的工具类 import get_seg_content# lda_model 为已经训练好的LDA模型 # content 为一条文本内容 ...

  5. 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析

    目录 一.2020数学建模美赛C题简介 需求 评价内容 提供数据 二.解题思路 三.LDA简介 四.代码实现 1. 数据预处理 1.1剔除无用信息 1.1.1 剔除掉不需要的列 1.1.2 找出无效评 ...

  6. LDA模型中文文本主题提取丨可视化工具pyLDAvis的使用

    主题模型LDA的实现及其可视化pyLDAvis 1. 无监督提取文档主题--LDA模型 1.1 准备工作 1.2 调用api实现模型 2. LDA的可视化交互分析--pyLDAvis 2.1 安装py ...

  7. LDA模型中需要输入的数据格式

    LDA模型需要输入文本数据, 其中每个文档都是一组词语. 为了进行训练和预测, 需要将文本数据转化为数值型数据, 如将每个词语转化为整数编号或词袋表示.

  8. LDA模型,获取所有的文档-主题分布(即得到文档对于每个主题的概率分布)并保存

    前言:写小论文用到lda主题模型,需要得到所有的文档-主题分布.现有的只是为文档输出前几个概率大的主题 代码: import numpy as np from gensim.models import ...

  9. LDA模型应用、问题、评估

    LDA主题模型及python实现介绍了LDA模型的基本原理与Sklearn实现流程. 1 应用 聚类:主题是聚类中心,文章和多个类簇(主题)关联.聚类对整理和总结文章集合很有帮助.参看Blei教授和L ...

  10. 机器学习算法(九): 基于线性判别LDA模型的分类(基于LDA手写数字分类实践)

    机器学习算法(九): 基于线性判别模型的分类 1.前言:LDA算法简介和应用 1.1.算法简介 线性判别模型(LDA)在模式识别领域(比如人脸识别等图形图像识别领域)中有非常广泛的应用.LDA是一种监 ...

最新文章

  1. Java EE的三层架构
  2. java mset_Java 反射机制(包括组成、结构、示例说明等内容)
  3. python为什么没有指针_Python 没有指针,如何解算法题?
  4. 我不是在吓你,但是区块链,可能真的是普通人弯道超车的最后一个机会了。
  5. OPPO 推出 10 亿引力计划,全力构建智能化服务生态
  6. 【求救】如何调用Windows系统自带的“选择用户”、“选择组”的对话框?
  7. IL -- 手动处理装箱Box
  8. Android APP压力测试 之Monkey日志自动分析脚本
  9. windows网络防火墙开发二三事
  10. 报价单常见问题及高效拯救你的报价实用手册
  11. 【Qt Quick】零基础入门系列之安装与卸载(一)
  12. 注册一个公众号多少钱_微信公众号申请注册收费吗?要钱吗?多少钱?
  13. 算法练习-个人所得税
  14. 20行Python代码爬取网站美女图,哇太多了,我U盘装满了
  15. 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数
  16. 批量保存西瓜无水印视频的方法步骤
  17. 火狐不能html转execl,使用Blob无法在FireFox中使用Excel导出JavaScript
  18. torch.repeat()与numpy.repeat()和 numpy.tile()比较
  19. 【万字长文】——作者底层逻辑辨析【自组织场景宣言】,拉开未来序幕!
  20. 数据分析系列--常见的评估方法

热门文章

  1. 常平计算机培训班,东莞常平十大CAD培训班排名(如何为初学者学习CAD)
  2. Python OpenCV实现身份证号码识别
  3. 购买大米云主机并配置php环境搭建企业网站
  4. 连接linux工具Mtr,Mac、linux和windows mtr路径探测工具安装使用
  5. 测试鼠标宏软件,Mini Mouse Macro(鼠标宏设置工具)
  6. 号称最安全的Mega网盘加密方法分析
  7. 音频 ASIO 驱动开发
  8. 树莓派安装Gqrx软件(Linux下SDR 软件无线电接收软件之一)
  9. redis实现CAS
  10. 记录mikrotik路由器的折腾过程