LDA的相关介绍可以看这二篇博客

LDA浅析:http://blog.csdn.net/huagong_adu/article/details/7937616

http://www.52nlp.cn/lda-math-mcmc-%E5%92%8C-gibbs-sampling1

这里记录一下使用GibbsLDA++的介绍以及JGibbLDA的使用过程:

GibbsLDA++主页地址: http://gibbslda.sourceforge.net/

GibbsLDA ++是使用Gibbs采样技术进行参数估计和推理的潜在Dirichlet分配(LDA)的C / C ++实现。它非常快,旨在分析大型数据集的隐藏/潜在主题结构,包括大量文本/ Web文档。 LDA首先由David Blei等引入。在C(使用变分方法),Java和Matlab中已经有了这个模型的几个实现。

GibbsLDA ++可用于以下潜在应用领域:

1.信息检索和搜索(分析大型文本收集的语义/潜在主题/概念结构,实现更智能的信息搜索)。

2.文件分类/集群,文档摘要和文本/网络挖掘社区。

3.基于内容的图像聚类,对象识别和计算机视觉的其他应用。

4.生物数据中的其他潜在应用。

GibbsLDA ++代码下载页:https://sourceforge.net/projects/gibbslda/

JGibbLDA代码下载页:https://sourceforge.net/projects/jgibblda/

GibbsLDA ++ 是LDA的C/C++版本:

环境要求:linux

解压并且编译:

$ gunzipGibbsLDA++.tar.gz

$ tar -xfGibbsLDA++.tar

$ make clean

$ make all

在编译GibbsLDA ++之后,我们在GibbsLDA ++ / src目录中有一个可执行文件“lda”

GibbsLDA++使用方法:

在linux编译好之后有一个lda的可执行文件,可以在linux环境下用命令行的形式执行。

1.      从零开始的参数估计

$ lda -est [-alpha <double>] [-beta <double>][-ntopics <int>] [-niters <int>] [-savestep <int>] [-twords<int>] -dfile <string>

参数说明([]里面的参数是可以选择的):

-est:从头估计LDA模型

-alpha <double>:LDA的alpha的超参数的值。 alpha的默认值为50 / K(K是主题数)。有关选择α和β值的详细讨论,请参阅[Griffiths04]。

-beta <double>:beta的值,也是LDA的超参数。其默认值为0.1

-ntopics <int>:主题数量。其默认值为100.这取决于输入数据集。请参阅[Griffiths04]和[Blei03]更加仔细地讨论选择主题数量。

-niters <int>:吉布斯抽样迭代次数。默认值为2000。

-savestep <int>:将LDA模型保存到硬盘的步骤(按Gibbs采样迭代次数计算)。默认值为200。也就是说每迭代200次就保存一次模型。

-twords <int>:每个主题最有可能的单词。默认值为零。如果将此参数设置为大于零的值,例如20,则GibbsLDA ++将根据上述参数savestep将每个主题的前20个最有可能单词列表打印出来,以便每次将模型保存到硬盘时。

-dfile <string>:输入训练数据文件。

2.      先验估计模型的参数估计

$ lda -estc -dir <string> -model<string> [-niters <int>] [-savestep <int>] [-twords<int>

参数说明([]里面的参数是可以选择的):

-estc:从以前估计的模型继续估计模型。

-dir <string>:目录包含以前估计的模型

-model <string>:先前估计的模型的名称。

-niters <int>:Gibbs采样迭代次数以继续估计。 默认值为2000。

-savestep <int>:将LDA模型保存到硬盘的步骤(按Gibbs采样迭代次数计算)。 默认值为200。

-twords <int>:每个主题最有可能的字数。 默认值为零。 如果将此参数设置为大于零的值,例如20,则GibbsLDA ++将根据上述参数savestep将每个主题的前20个最有可能单词列表打印出来,以便每次将模型保存到硬盘时。

3.      推测以前看不见(新)的数据

$ lda -inf -dir <string> -model<string> [-niters <int>] [-twords <int>] -dfile<string>

参数说明([]里面的参数是可以选择的):

-inf:使用先前估计的LDA模型推断以前看不到的(新)数据。

-dir <string>:目录包含以前估计的模型

-model <string>:先前估计的模型的名称。

-niters <int>:用于推断的吉布斯抽样迭代次数。 默认值为20。

-twords <int>:新数据的每个主题的最有可能的字数。 默认值为零。 如果将此参数设置为大于零的值(例如20),则GibbsLDA ++将在推断后打印每个主题前20个最有可能的单词列表。

-dfile <string>:包含新数据的文件。

输入数据的格式:用于训练/估计模型和新数据的数据(即,以前看不见的数据)都是如下相同的格式:

[M]

[document1]

[document2]

...

[documentM]

其中第一行是文件的总数[M]。之后的每一行都是一个文本。 [documenti]是数据集的第i个文档,由Ni单词/术语列表组成。

[documenti] = [wordi1] [wordi2] ...[wordiNi]

其中所有[wordij](i = 1..M,j = 1..Ni)是文本字符串(词),它们由空白字符分隔。

输出:GibbsLDA ++的吉布斯抽样估计的输出包括以下文件:

<model_name>.others

<model_name>.phi

<model_name>.theta

<model_name>.tassign

<model_name>.twords

说明:

<model_name>:是与保存在硬盘上的时间步长对应的LDA模型的名称。例如,模型的名称保存在Gibbs采样迭代中,第400个将是模型00400。类似地,模型在第1200次迭代中被保存为模型01200。最后一个Gibbs采样迭代的模型名称是最终模型。

<model_name> .others:此文件包含LDA模型的一些参数,如:

alpha=?

beta=?

ntopics=? # 即主题数量

ndocs=? # 即文件数量

nwords=? # 即词汇大小

liter=? # 即保存模型的Gibbs采样迭代

<model_name> .phi:此文件包含单词主题分布,即p(wordw | topict)。每行都是一个主题,每一列都是词汇中的一个单词。

<model_name> .theta:此文件包含主题文档分发,即p(topict | documentm)。每行都是一个文档,每一列是一个主题。

<model_name> .tassign:此文件包含训练数据中词的主题分配。 每一行都是一个文件,它由一个<wordij>:<topic of wordij>的列表组成

<model_file> .twords:此文件包含每个主题的词汇最有可能的词。 在命令行中指定了词。

GibbsLDA ++还保存了一个名为wordmap.txt的文件,其中包含单词和单词的ID(整数)之间的映射。这是因为GibbsLDA ++直接使用单词/术语的整数ID而不是文本字符串。

Gibbs采样推理的输出,用于以前看不见的数据:

GibbsLDA ++推理的输出与估计过程的输出几乎相同,只是这些文件的内容是新数据。 <model_name>与输入(新)数据的文件名完全相同。

GibbsLDA ++ 例子:

例如,我们要估计存储在名为models / casestudy / trndocs.dat的文件中的文档集合的LDA模型,然后使用该模型对存储在文件模型/ casestudy / newdocs.dat中的新数据进行推理。

我们想估计100个主题,alpha = 0.5和beta = 0.1。我们要执行1000次Gibbs采样迭代,每100次迭代保存一个模型,每次保存一个模型时,打印每个主题20个最有可能的单词列表。假设我们现在在GibbsLDA ++的主目录下,我们将执行以下命令来从头估计LDA模型,命令如下:

$ src/lda -est -alpha 0.5 -beta 0.1 -ntopics 100-niters 1000 -savestep 100 -twords 20 -dfile models/casestudy/trndocs.dat

现在看看models/casestudy目录,我们可以看到输出:

现在,我们要继续从先前估计的模型型号01000(model-01000) 执行800次吉布斯抽样迭代,其中savestep = 100,twords = 30,我们执行以下命令:

$ src/lda -estc -dir models/casestudy/-model model-01000 -niters 800 -savestep 100 -twords 30

看casestudy目录的输出。

现在,如果我们要对新数据newdocs.dat(注意,新数据文件存储在LDA模型的同一目录中)使用之前估计的LDA模型之一进行推理(30吉布斯抽样迭代),例如 model-01800,我们执行以下命令:

$ src/lda -inf -dir models/casestudy/ -modelmodel-01800 -niters 30 -twords 20 -dfile newdocs.dat

现在,看casestudy目录,我们可以看到推论的输出:

newdocs.dat.others

newdocs.dat.phi

newdocs.dat.tassign

newdocs.dat.theta

newdocs.dat.twords

GibbsLDA++使用记录相关推荐

  1. mysql建立联合索引,mysql建立唯一键,mysql如何解决重复记录联合索引

    在项目中,常常要用到联合唯一   在一些配置表中,一些列的组合成为一条记录.   比如,在游戏中,游戏的分区和用户id会形成一条记录.(比如,一个qq用户可以在艾欧尼亚.德玛西亚创建两个账号) 添加联 ...

  2. 实现 连续15签到记录_MySQL和Redis实现用户签到,你喜欢怎么实现?

    现在的网站和app开发中,签到是一个很常见的功能 如微博签到送积分,签到排行榜 微博签到 如移动app ,签到送流量等活动, 移动app签到 用户签到是提高用户粘性的有效手段,用的好能事半功倍! 下面 ...

  3. 记录一次http请求失败的问题分析

    问题背景 当前我有一个基于Flask编写的Restful服务,由于业务的需求,我需要将该服务打包成docker 镜像进行离线部署,原始服务的端口是在6661端口进行开启,为了区分,在docker中启动 ...

  4. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  5. LeetCode简单题之学生出勤记录 I

    题目 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late,迟到 'P':Pre ...

  6. 关于TVM的点滴记录

    关于TVM的点滴记录

  7. MySql数据库Update批量更新与批量更新多条记录的不同值实现方法

    批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other ...

  8. 记录篇,自己在项目中使用过的。

    图片选择器,6.0已经适配过,类似qq空间上传 点击打开链接_胡小牧记录 下面是效果图: PictureSelector PhotoPicker 类似qq空间发布心情. 点击打开链接 BubbleSe ...

  9. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

最新文章

  1. prometheus连续查询_Prometheus查询
  2. 业界丨AI公司魅力榜:谷歌最慷慨排第二,最抠门的你应该能想到
  3. ok6410 u-boot-2012.04.01移植六完善MLC NAND支持
  4. Django-View中绕过RSCF验证
  5. Equinox P2的学习
  6. codeigniter 禁止ip登录_「开源资讯」baigo SSO v4.0 beta-3 发布,单点登录系统
  7. hybrid app、web app与native app工具
  8. ubuntu 12.04 memcached安装
  9. VGAE(Variational graph auto-encoders)论文及代码解读
  10. 开源呼叫中心软件 GOautodial 存在两个漏洞,可导致RCE
  11. Qt捕捉窗口关闭事件
  12. 流放者柯南rust_《流放者柯南》玩法前瞻 奴隶助你生活奔小康
  13. Hinton胶囊网络代码正式开源,5天GitHub fork超1.4万
  14. hdoj1116【欧拉回路】
  15. 裴(pei)蜀定理 知识点
  16. php电子病历毕业设计,电子病历管理系统的设计毕业论文.doc
  17. AE(4)实例:更换衣服色彩
  18. YOLO v2详细解读
  19. 依赖计算机英语作文,2011年高考英语卷写作表达题目范文汇总(39):过度依赖电脑的弊端...
  20. 【深度学习之美】全面连接困何处,卷积网络见解深(入门系列之九)

热门文章

  1. 如何把后端返还的blob格式的文件进行本地下载?
  2. 图像的空间域与频率域
  3. 椭圆切线方程公式的推导过程
  4. java 生日类型,Users类中对应的生日类型是java.sql.Date.
  5. 《Linux内核分析》 第二节 操作系统是如何工作的
  6. 把一个人的特点写具体作文_把一个人的特点写具体作文五年级下册
  7. 奇兔recovery卡刷教程_奇兔开发者学院课程教学第四讲: Recovery备份提取制作ROM
  8. AI 时代竟有智能化鸿沟,具备哪些条件才能跨过?
  9. Camunda 实战 :流程部署和发起 (二)
  10. RH135---Linux系统管理及网络服务之 linux中内核及加强型火墙管理 --Selinux