GibbsLDA++使用记录
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++使用记录相关推荐
- mysql建立联合索引,mysql建立唯一键,mysql如何解决重复记录联合索引
在项目中,常常要用到联合唯一 在一些配置表中,一些列的组合成为一条记录. 比如,在游戏中,游戏的分区和用户id会形成一条记录.(比如,一个qq用户可以在艾欧尼亚.德玛西亚创建两个账号) 添加联 ...
- 实现 连续15签到记录_MySQL和Redis实现用户签到,你喜欢怎么实现?
现在的网站和app开发中,签到是一个很常见的功能 如微博签到送积分,签到排行榜 微博签到 如移动app ,签到送流量等活动, 移动app签到 用户签到是提高用户粘性的有效手段,用的好能事半功倍! 下面 ...
- 记录一次http请求失败的问题分析
问题背景 当前我有一个基于Flask编写的Restful服务,由于业务的需求,我需要将该服务打包成docker 镜像进行离线部署,原始服务的端口是在6661端口进行开启,为了区分,在docker中启动 ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- LeetCode简单题之学生出勤记录 I
题目 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late,迟到 'P':Pre ...
- 关于TVM的点滴记录
关于TVM的点滴记录
- MySql数据库Update批量更新与批量更新多条记录的不同值实现方法
批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other ...
- 记录篇,自己在项目中使用过的。
图片选择器,6.0已经适配过,类似qq空间上传 点击打开链接_胡小牧记录 下面是效果图: PictureSelector PhotoPicker 类似qq空间发布心情. 点击打开链接 BubbleSe ...
- HTML5与CSS3权威指南之CSS3学习记录
title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...
最新文章
- prometheus连续查询_Prometheus查询
- 业界丨AI公司魅力榜:谷歌最慷慨排第二,最抠门的你应该能想到
- ok6410 u-boot-2012.04.01移植六完善MLC NAND支持
- Django-View中绕过RSCF验证
- Equinox P2的学习
- codeigniter 禁止ip登录_「开源资讯」baigo SSO v4.0 beta-3 发布,单点登录系统
- hybrid app、web app与native app工具
- ubuntu 12.04 memcached安装
- VGAE(Variational graph auto-encoders)论文及代码解读
- 开源呼叫中心软件 GOautodial 存在两个漏洞,可导致RCE
- Qt捕捉窗口关闭事件
- 流放者柯南rust_《流放者柯南》玩法前瞻 奴隶助你生活奔小康
- Hinton胶囊网络代码正式开源,5天GitHub fork超1.4万
- hdoj1116【欧拉回路】
- 裴(pei)蜀定理 知识点
- php电子病历毕业设计,电子病历管理系统的设计毕业论文.doc
- AE(4)实例:更换衣服色彩
- YOLO v2详细解读
- 依赖计算机英语作文,2011年高考英语卷写作表达题目范文汇总(39):过度依赖电脑的弊端...
- 【深度学习之美】全面连接困何处,卷积网络见解深(入门系列之九)
热门文章
- 如何把后端返还的blob格式的文件进行本地下载?
- 图像的空间域与频率域
- 椭圆切线方程公式的推导过程
- java 生日类型,Users类中对应的生日类型是java.sql.Date.
- 《Linux内核分析》 第二节 操作系统是如何工作的
- 把一个人的特点写具体作文_把一个人的特点写具体作文五年级下册
- 奇兔recovery卡刷教程_奇兔开发者学院课程教学第四讲: Recovery备份提取制作ROM
- AI 时代竟有智能化鸿沟,具备哪些条件才能跨过?
- Camunda 实战 :流程部署和发起 (二)
- RH135---Linux系统管理及网络服务之 linux中内核及加强型火墙管理 --Selinux