问题标签 [topicmodels]
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.
r - R topicmodels tidytext - 潜在 Dirchelet 分配(LDA):错误:找不到绑定:'Var1'
我在 R 中的 LDA 模型有问题。每次我尝试在我的 LDA_VEM 对象上执行 tidy() 函数时,我都会收到错误“错误:找不到绑定:'Var1'。你能解释一下如何解决这个问题吗?代码如下:
r - R中潜在狄利克雷分配(LDA)中特定主题的术语的概率是多少
我在 R 中工作,包“topicmodels”。我正在努力解决并更好地理解代码/包。在我正在阅读的大多数教程和文档中,我看到人们用 5 个或 10 个最可能的术语来定义主题。这是一个例子:
所以代码的最后一部分返回了与我定义的 5 个主题相关的 5 个最可能的术语。
在 lda 对象中,我可以访问 gamma 元素,它包含每个文档属于每个主题的概率。因此,基于此,我可以以大于我喜欢的任何阈值的概率提取主题,而不是为每个人提供相同数量的主题。
但是我的第二步是要知道哪些词与主题相关性最强。我可以使用 terms(lda) 函数来提取它,但这给了我这么多的 N。
在输出中我还发现了
它包含每个主题每个单词的 beta,但这是一个 Beta 值,我很难解释。它们都是负值,虽然我看到一些值在 -6 左右,而另一些值在 -200 左右,但我无法将其解释为一种概率或衡量标准,以查看哪些词以及某些词与某个主题相关联的强度有多大。有没有办法提取/计算任何可以解释为这种措施的东西。
非常感谢弗雷德里克
r - 如何在 RTextTools 中查看由 create_matrix 创建的矩阵的内容?
这是作为输出提供的元数据。我想知道的是,是否有任何命令可以实际查看词干或观察非稀疏条目。通过使用 nrow(matrix) 和 ncol(matrix),我了解了矩阵的大小,但我需要更多帮助来解构矩阵。我正在使用 NYTimes 数据集。
nlp - 主题建模
我有一个包含 6000 条记录的 excel 表,每条记录代表一条消息,我想给它一个主题,例如它与体育或新闻有关,等等,我想从句子中的单词中找出它。我想要一个简单的没有编码的结果程序只需给它excel表获取类别,因为它是我硕士论文任务的一小部分
tidy - tidy Error in eval(substitute(expr), envir, enclos) : binding not found: 'Var1'
When I apply the tidy function to the result of the LDA model in my dataset, I get the following error "Error in eval(substitute(expr), envir, enclos) : binding not found: 'Var1'". I get the same error when used on associated press example, as shown below. I tried reinstalling the tidytext via devtools::install_github("juliasilge/tidytext") and I still get the same result. Is there something else I can try?
library(tidyr) library(tidytext) library(tidyverse) library(topicmodels) library(Broom)
data("AssociatedPress") AssociatedPress
ap_lda <- LDA(AssociatedPress, k = 2, control = list(seed = 1234)) ap_lda
ap_topics <- tidy(ap_lda, matrix = "beta") ap_topics
<> Non-/sparse entries: 302031/23220327 Sparsity : 99% Maximal term length: 18 Weighting : term frequency (tf)
ap_lda <- LDA(AssociatedPress, k = 2, control = list(seed = 1234)) ap_lda A LDA_VEM topic model with 2 topics.
ap_topics <- tidy(ap_lda, matrix = "beta") Error in eval(substitute(expr), envir, enclos) : binding not found: 'Var1' ap_topics
r - R主题模型LDA
为了测试目的,我在一个包含 2 个文档(句子)的小型语料库上运行 LDA。以下代码返回给定输入文档根本不合理的主题词和文档主题分布。在 Python 中运行完全相同的结果是合理的。谁知道这里有什么问题?
Python的结果如下:
r - 未定义的符号:gsl_multimin_fdfminimizer_conjugate_fr 尝试在 R 中安装主题模型时
我已经尝试topicmodels
在 R 中安装包好几分钟了。我已经阅读了很多教程并安装了 gsl 包,但我仍然收到此错误:
r - text2vec 和 topicmodels 可以为 LDA 生成具有合适参数设置的相似主题吗?
我想知道不同包的结果(因此,算法)有何不同,以及是否可以设置参数以产生类似的主题。我看了看包裹text2vec
,topicmodels
特别是。
我使用下面的代码来比较这些包生成的 10 个主题(参见代码部分的术语)。我无法生成具有相似含义的主题集。例如,主题 10 fromtext2vec
与“警察”有关,由 产生的主题均未topicmodels
提及“警察”或类似术语。更进一步,我无法topicmodels
在由text2vec
.
我是 LDA 的初学者,因此,对于有经验的程序员来说,我的理解可能听起来很幼稚。然而,直觉上,人们会假设应该有可能产生一组具有相似含义的主题来证明结果的有效性/稳健性。当然,不一定是完全相同的一组术语,而是针对类似主题的术语列表。
也许问题只是我对这些术语列表的人工解释不足以捕捉相似性,但也许有一些参数可能会增加人工解释的相似性。有人可以指导我如何设置参数来实现这一点,或者以其他方式提供适当资源的解释或提示以提高我对此事的理解吗?
这里有一些可能相关的问题:
- 我知道
text2vec
不使用标准 Gibbs 采样,而是使用WarpLDA,这已经是算法上的差异topcimodels
。如果我的理解是正确的,则priorsalpha
和delta
used intopicmodels
分别设置为doc_topic_prior
和topic_word_prior
intext2vec
。 - 此外,在后处理中,text2vec 允许
lambda
根据频率对主题术语进行排序。我还不明白,术语是如何排序的topicmodels
- 与设置相比lambda=1
?(我尝试了 0 到 1 之间的不同 lambda,但没有得到类似的主题) - 另一个问题是,即使在设置时似乎也很难产生一个完全可重现的例子
seed
(例如,参见这个问题)。这不是我的直接问题,但可能会使回答更加困难。
很抱歉这个冗长的问题,并提前感谢任何帮助或建议。
Update2:我已将第一次更新的内容移至基于更完整分析的答案中。
更新:text2vec
根据包创建者Dmitriy Selivanov的有用评论,我可以确认设置lambda=1
增加了两个包生成的术语列表之间的主题相似性。
length(setdiff())
此外,我通过快速检查和跨主题仔细查看了两个包生成的术语列表之间的差异length(intersect())
(参见下面的代码)。这个粗略的检查表明text2vec
每个主题丢弃了几个术语 - 可能是单个主题的概率阈值?topicmodels
保留所有主题的所有条款。这解释了可以从术语列表(由人类)得出的部分含义差异。
如上所述,生成可重现的示例似乎很困难,因此我没有在下面的代码中调整所有数据示例。由于运行时间短,任何人都可以检查他/她自己的系统。
r - R - 将预编码的训练集合并到 lda 模型中
我正在尝试使用 topicmodels 包中的 LDA 功能将调查问题列表分配到 30 个不同的类别中。
我到目前为止的代码是:
我已经对 openended$q2 中 10% 的数据进行了适当编码,如何使用该数据训练算法?
谢谢!