看到一段对主题模型的总结,感觉很精辟:

如何找到文本隐含的主题呢?常用的方法一般都是基于统计学的生成方法。即假设以一定的概率选择了一个主题,然后以一定的概率选择当前主题的词。最后这些词组成了我们当前的文本。所有词的统计概率分布可以从语料库获得,具体如何以“一定的概率选择”,这就是各种具体的主题模型算法的任务了。lda也是采取的这种思想。

大部分对LDA的解释都是通过LDA生成文档的思路,而我们一般是给定文档,利用LDA推测该文档的话题分布。我在这里先讲一下生成文档的过程,再讲我们普遍用到的代码中推测话题的过程:

1.文档生成

我比较关注实用性,又不是很喜欢那么多的数学公式,所以主要先把个人感觉最方便理解的解释分享给大家看看~反正我看了下边的解释脑子里可以有LDA原理的整个思路。

联系右上角给出的图,步骤为从上到下、从左到右,先得到一个主题Zij=k,再得到第k个主题的词分布φk,继而生成文档的词汇w,循环该图流程,生成整篇文档。

过程中涉及到多种分布;

共轭分布:在贝叶斯的理论体系中,如果先验概率分布和后验概率分布满足同样的分布律的话,就说先验分布和后验分布是共轭分布,同时,先验分布又叫做似然函数的共轭先验分布。大白话来说就是:如果一个概率分布Z乘以一个分布Y之后的分布仍然是Z,那么就是共轭分布。二项分布的共轭先验分布是Beta分布,多项分布的共轭先验分布是Dirichlet分布。

LDA中涉及的   多项分布和Dirichlet分布,LDA中词和主题服从多项式分布,两者的参数服从Dirichlet分布。我认为引入共轭分布主要是为了方便计算整个过程中的参数

2.通过已知文档推测所含话题分布

通过LDA推测话题分布时,

1)初始先随机给文本中的每个词(喂进去的词需要经过分词、通过dictionary每个词对应一个id,再将id与该词对应的tf-idf值或词频关联存储为一个矩阵)分配主题z0(初始设置了要得到的话题个数k,为每个词分配话题id),也给定了α和β,控制了主题分布和词分布;

2)然后统计词t属于主题z的数量以及每个文档m下出现的主题z的数量;通过除了当前词w以外其他所有词所属的主题分布估计当前词分配各个主题的概率,即计算得到词w对应各主题的概率p(1,2,....k)=(p1,p2,.....pk)
3)当得到当前词属于所有主题z的概率分布后,根据这个概率分布为该词采样(不是取最大值)一个新的主题。
4)用同样方法更新下一个词的主题,直到发现每个文档的主题分布和每个主题的词分布收敛(应该是文档中出现的所有同一个词计算得到的所属主题分布都一致),算法终止,输出待估计的参数θ和φ,同时每个单词的主题Zmn也可以得到。

实际中应用会设置最大迭代次数,每一次计算的公式称为Gibbs updating rule

这样就解释了内部推测话题的过程。其中涉及的数学计算过程如下(我比较懒,直接贴了邹博视频的式子啦,如果对大家有用希望能点个赞之类的啦~~~~~~~~~):

另外,想起来在用LDA做实验的过程中还找到了百度开源的一个项目。关于主题模型的项目。文档主题推断工具、语义匹配计算工具以及基于工业级语料训练的三种主题模型:Latent Dirichlet Allocation(LDA)、SentenceLDA 和Topical Word Embedding(TWE)  github链接:https://github.com/baidu/Familia

3.通过gensim中LDA可以实现的功能

1)得到该文档的话题分布及相应概率

2)计算各文档相似度

dictionary = corpora.Dictionary.load('dictionary.dict')

corpus = corpora.MmCorpus("corpus.mm")

lda = models.LdaModel.load("model.lda")

index = similarities.MatrixSimilarity(lda[corpus])

index.save("simIndex.index")

docname = "docs/the_doc.txt" doc = open(docname, 'r').read()

vec_bow = dictionary.doc2bow(doc.lower().split())

vec_lda = lda[vec_bow] sims = index[vec_lda]

sims = sorted(enumerate(sims), key=lambda item: -item[1])
参考链接:https://blog.csdn.net/qq_25073545/article/details/79782066

3)通过PYLDAVIS模块将主题可视化

试了一下该项目是可以直接用的,只不过只能在LINUX下使用,可以直接按github上给出的步骤应用,效果还不错~~~

LDA学习小记的更多相关文章

  1. mongodb入门学习小记

    Mongodb 简单入门(个人学习小记) 1.安装并注册成服务:(示例) E:\DevTools\mongodb3.2.6\bin>mongod.exe --bind_ip 127.0.0.1 ...

  2. javascript学习小记(一)

    大四了,课少了许多,突然之间就不知道学什么啦.整天在宿舍混着日子,很想学习就是感觉没有一点头绪,昨天看了电影激战.这种纠结的情绪让我都有点喘不上气啦!一点要找点事情干了,所以决定找个东西开始学习.那就 ...

  3. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

  4. js 正则学习小记之左最长规则

    原文:js 正则学习小记之左最长规则 昨天我在判断正则引擎用到的方法是用 /nfa|nfa not/ 去匹配 "nfa not",得到的结果是 'nfa'.其实我们的本意是想得到整 ...

  5. js 正则学习小记之NFA引擎

    原文:js 正则学习小记之NFA引擎 之前一直认为自己正则还不错,在看 次碳酸钴,Barret Lee 等大神都把正则玩的出神入化后发现我只是个战五渣.  求抱大腿,求大神调教. 之前大致有个印象,正 ...

  6. js 正则学习小记之匹配字符串优化篇

    原文:js 正则学习小记之匹配字符串优化篇 昨天在<js 正则学习小记之匹配字符串>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯 ...

  7. CSS学习小记

    搜狗主页页面CSS学习小记 1.边框的处理   要形成上图所示的布局效果,即,点选后,导航下面的边框不显示而其他的边框形成平滑的形状.相对于把导航的下面边框取消然后用空白覆盖掉下面搜索栏的边框比较而言 ...

  8. Gcd&Exgcd算法学习小记

    Preface 对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法,以前也只是背下来,没有真正了解并证明过. 对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用E ...

  9. logstash 学习小记

    logstash 学习小记 标签(空格分隔): 日志收集 Introduce Logstash is a tool for managing events and logs. You can use ...

随机推荐

  1. Java动态代理与反射详解

    首先我得先请大家不要误会,博客园说转载的文章放在文章分类里,原创的文章用随笔写,我开先还以为随笔是拿来写抒情文的(滑稽),后来才发现不是这样的,但是自己所有的文章都在文章分类里了,又懒得搬运,所以我就 ...

  2. PWDX查找程序执行路径

    PWDX通过PID号查找文件对应的启动目录 在linux 64位 5.4及SunOS 5.10上测试通过 通常的做法: [root@app1 bin]# ps -ef | grep java root ...

  3. 【12月26日】A股滚动市盈率PE最低排名

    深康佳A(SZ000016) - 滚动市盈率PE:1.47 - 滚动市净率PB:0.98 - 滚动年化股息收益率:4.97% - 消费电子产品 - 深康佳A(SZ000016)的历史市盈率走势图 华菱 ...

  4. [Node.js] 01 - How to learn node.js

    基本概念 链接:https://www.zhihu.com/question/47244505/answer/105026648 链接:How to decide when to use Node.j ...

  5. ASP.NET MVC 4 (十一) Bundles和显示模式

    Bundles用于打包CSS和javascript脚本文件,优化对它们的组织管理.显示模式则允许我们为不同的设备显示不同的视图. 默认脚本库 在VS创建一个MVC工程,VS会为我们在scripts目录 ...

  6. 【typecho】解决使用分隔符 <!--more-->标签后首页文字下面出现一段空白

    使用typecho 搭建了一个站点,输出摘要时候.使用了   <!--more-->  分隔符,然后首页文章出现了一大片空白,审查元素发现.多了好多 <br> 标签 解决办法: ...

  7. Twain

    3.7.37 ICAP_SUPPORTEDSIZESType:TW_UINT16Supported Messages:MSG_GET - TW_ENUMERATIONMSG_GETCURRENT - ...

  8. Django框架详解

    一.WSGI接口 WSGI服务网关接口:Web Server Gateway Interface缩写. WSGI是python定义的Web服务器和Web应用程序之间或框架之间的通用接口标准. WSGI ...

  9. iTerm2中粘贴tab问题

    点过Remember 后,这个窗口就再也不弹出来了.可随后想修改配置,在preferences中又没有找到. 解决方案: 思路:/Users/${name}/Library/Preferences/c ...

  10. 文本分类学习 (八)SVM 入门之线性分类器

    SVM 和线性分类器是分不开的.因为SVM的核心:高维空间中,在线性可分(如果线性不可分那么就使用核函数转换为更高维从而变的线性可分)的数据集中寻找一个最优的超平面将数据集分隔开来. 所以要理解SVM ...