问题标签 [topic-modeling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
197 浏览

java - 标记的潜在狄利克雷分配输入值

我正在对 StackExchange 帖子进行标签预测和关键字提取。我有大约 36,000 个帖子,包括标题、正文和标签。我处理它们过滤掉嘈杂的元素。在此之后,我执行此处获得的标记潜在狄利克雷分配 (LLDA) 。

查看输出时,主题关键字分配的前半部分大部分都很好,例如:

但是,我越接近输出文件的末尾,主题关键字的分配就完全奇怪了:

有人可以解释一下为什么我最终得到了如此错误的任务吗?而且,为什么价值极低?

如前所述,我有大约 36,000 个帖子,这些是执行 LLDA 的值:

我发现几乎没有关于以前值的文档,因此通过反复试验,我发现这些最适合我设法获得的值。但是,也许有更好理解的人可以向我解释和/或建议什么值是最好的?

0 投票
1 回答
2009 浏览

r - 如何使用 R 的 topicmodels 包中的 LDA 函数重现精确结果

我一直无法从 topicmodels 的 LDA 函数中创建可重现的结果。从他们的文档中举一个例子:

如何从对 LDA 的两次单独调用中获得相同的结果?

顺便说一句(如果包作者在这里),我发现这个control=list(seed=0)片段很不幸并且没有必要。在幕后,有一条线if (missing(seed)) seed <- as.integer(Sys.time())。这不会使过程更可靠地随机化,它只会撤消指定的种子。我错过了什么吗?

更新:正如@hrbrmstr 在下面发现的那样,将种子作为控件传递会产生实际上相同的对象,唯一的区别是临时本地文件位置。所以这个问题更像是一个误解(尽管如果函数得到尊重,它似乎仍然会更清楚set.seed())。

0 投票
1 回答
1144 浏览

java - 使用斯坦福主题建模工具包 (TMT) 时加载类时出错

我试过JDK7-Update40和JDK8,但仍然无法运行TMT网站上的测试代码。

每次我单击“运行”时,它都会给出如下错误消息:

错误:加载 CharSequence 时出错,类文件 'C:\Program Files\Java\jre8\lib\rt.jar(java/lang/CharSequence.class)' 已损坏(字节 1470 处的常量池标记 15 错误)

我使用了错误的JDK?我应该使用什么特定版本?

谁能帮我吗?

非常感谢!

0 投票
1 回答
802 浏览

topic-modeling - 将 lda 用于 vowpal wabbit 的问题

我正在尝试使用 vowpal wabbit lda 模型。但我的结果很糟糕。我认为我正在做的过程有问题。我的词汇量为 100000。

我像这样运行代码

大众 --data train.txt --lda 50 --lda_alpha 0.1 --lda_rho 0.1 --lda_D 262726 -b 20 -pions.dat --readable_model wordtopics.dat

现在我期待 wordtopics.dat 文件包含这 100000 个单词的主题比例,但看起来这个单词 topics.dat 文件非常大,包含 1048587 行。

我认为是因为 b = 20,最后的线条就像具有均匀的概率分布。

但是,当我查看获得的主题时,它们根本没有意义。所以我觉得有些不对劲。伙计们会出什么问题?

0 投票
1 回答
1065 浏览

topic-modeling - MALLET 中主题模型的增量训练

根据 MA​​LLET文档,可以逐步训练主题模型:

“-output-model [FILENAME] 此选项指定一个文件来编写序列化的 MALLET 主题训练器对象。这种类型的输出适用于暂停和重新开始训练”

我想在一组数据上训练主题,然后用另一组数据增加模型。在两个训练步骤之后,我想输出两个数据集的状态(使用 --output-state)。这是我尝试这样做的方法:

在最后一个命令中,如果我添加“--input-model model”,则来自第二个数据集的数据不会出现在输出状态文件中。如果我不添加它,则输出状态文件中不存在来自第一个数据集的数据。

如果我尝试在代码中向模型添加其他实例:

我收到一个错误:

MALLET列表之前也有类似的问题:http: //permalink.gmane.org/gmane.comp.ai.mallet.devel/924,http : //permalink.gmane.org/gmane.comp.ai.mallet .devel/2139

那么主题模型的增量训练是可能的吗?

0 投票
2 回答
2172 浏览

regex - R 正则表达式中的槌错误:java.lang.NoSuchMethodException:给定参数没有合适的方法

我一直在关注如何在 R 中使用 mallet 创建主题模型的教程。我的文本文件每行有 1 个句子。它看起来像这样,大约有 50 句话。

这是我的代码:

除了代码的最后一行,一切正常

我不断收到此错误:

根据包,函数应该是这样的:

我相信它与 token.regexp 参数有关,因为它
documents1 <- mallet.read.dir(Dir)工作得很好,这意味着提供给 mallet.instances 的前 3 个参数是正确的。

这是我正在遵循教程的 git repo 的链接。 https://github.com/shawngraham/R/blob/master/topicmodel.R

任何帮助将非常感激。

谢谢,J

0 投票
2 回答
521 浏览

r - 如何将单词添加到语料库中的文档中?

我正在使用 tm 包在我的语料库上运行 LDA。我有一个包含 10,000 个文档的语料库。

我正在尝试编写一段代码,在某些单词之后添加单词“specialword”。所以本质上:对于我选择的单词向量(good, nice, happy, fun, love),我希望代码循环遍历每个文档,并在这些单词之后添加单词“specialword”。

例如,给定这个文档:

我希望结果是这样的:

问题是我不确定如何执行此操作,因为我不知道如何让代码在语料库中读取。我知道我应该做一个 for 循环(或者可能不做),但我不确定如何遍历每个文档中的每个单词,以及语料库中的每个文档。我还想知道我是否可以使用类似于在 tm_map 中工作的“翻译”功能的东西。


编辑::

做了一些尝试。此代码将“测试”返回为 NA。你知道为什么吗?


编辑:想通了!!谢谢

0 投票
2 回答
10086 浏览

r - 让 gsub 只替换整个单词?

(我正在使用 R。)对于称为“goodwords.corpus”的单词列表,我正在遍历语料库中的文档,并将列表“goodwords.corpus”中的每个单词替换为单词 + a数字。

例如,如果单词“good”在列表中,而“goodnight”不在列表中,那么这个文档:

会变成:

**我正在使用此代码(编辑-使此可重现):

但是,问题是我希望 gsub 只替换整个单词。出现的问题是:“good”在“goodwords.corpus”列表中,但是不在列表中的“goodnight”也受到影响。所以我明白了:

无论如何我可以告诉 gsub 只替换整个单词,而不是可能是其他单词一部分的单词?

我想用这个:

我读过 \< 和 \> 会告诉 gsub 只查找整个单词。但显然这不起作用,因为 goodwords.corpus[[i]] 在引号中时不起作用。

有什么建议么?

0 投票
0 回答
675 浏览

r - 使用主题模型包计算 R 中主题和文档下的单词概率

Griffiths 和 Steyvers 在他们 2006 年的著作中给出了主题下的单词概率示例。

我正在使用 R 并希望重现应用于我自己的数据的每个主题和每个文档的此类单词概率。不幸的是,我对 R 和 topicmodels 还很陌生,而且我越来越绝望,因为这个特定问题的答案似乎很明显,以至于没有人问这个问题。

那么,给定 DTM 或 TDM 或包中LDA函数的结果,topicmodels我如何获得后验分布?

Griffiths 和 Steyvers 中的以下输出会很棒:

主题 xyz

单词概率。
你好 0.069
世界 (1-0.069)

在论文中,他们为几个主题提供了这种输出——这个简短的输出只是为了澄清我的问题。

PS:任何链接或提示将不胜感激!

0 投票
1 回答
1155 浏览

lda - Mallet Api - 获得一致的结果

我是 LDA 和木槌的新手。我有以下查询

我尝试使用命令行运行 Mallet-LDA,并通过将--random-seed设置为固定值,我能够获得多次运行该算法的一致结果

但是,我确实尝试过使用 Mallet-Java-API,每次运行程序时都会得到不同的输出。我做了谷歌,发现需要修复随机种子,我在我的java代码中修复了它。我仍然得到不同的结果。

谁能让我知道我需要考虑哪些其他参数才能获得一致的结果(多次运行时)

我可能想在多次运行时添加该训练主题(命令行)产生相同的结果。但是,当我重新运行import-dir然后运行​​train-topics时,结果与前一个不匹配。(可能正如预期的那样)。我可以只运行一次import-dir,然后通过运行train-topics来试验不同数量的主题和迭代。同样,如果我想在使用 Java-Api 时复制相同的内容,则需要更改/保持不变。