我正在使用很棒的 quanteda 包将我的 dfm 转换为 topicmodels 格式。但是,在此过程中,我丢失了我需要用来确定哪些主题最有可能在我的文档中流行的文档变量。鉴于 topicmodels 包(与 STM 一样)仅选择非零计数,这尤其是一个问题。原始 dfm 中的文档数量和模型输出因此不同。有什么方法可以让我正确识别 casu 中的文件吗?
问问题
466 次
3 回答
1
我检查了你的结果。由于您的 select 语句,您在 dfm_speeches 中没有任何功能。将其转换为 the 使用的“dtm”格式topicmodels
,您确实会得到一个没有文档也没有术语的文档术语矩阵。
但是,如果您使用 dfm_select 选择的结果是具有功能的 dfm,然后您将其转换为 dtm 格式,您将看到 docvars 出现。
dfm_speeches <- dfm(data_corpus_irishbudget2010,
remove_punct = TRUE, remove_numbers = TRUE, remove = stopwords("english")) %>%
dfm_trim(min_termfreq = 4, max_docfreq = 10)
dfm_speeches <- dfm_select(dfm_speeches, c("Bruton", "Cowen"))
docvars(dfm_speeches)
dfmlda <- convert(dfm_speeches, to = "topicmodels")
这将进一步与主题模型一起工作。我承认,如果您转换为 dtmtm
并且您没有任何功能,您将看到 dtm 中出现的文档。如果没有功能,我不确定转换为 topicmodels 是否会产生意想不到的副作用。
于 2018-05-29T19:10:51.080 回答
1
我不认为问题描述得很清楚,但我相信我明白它是什么。
主题模型的文档特征矩阵不能包含空文档,因此它们返回没有这些的主题的命名向量。但是,如果您将它们与文档名称匹配,您仍然可以使用它:
# mx is a quanteda's dfm
# topic is a named vector for topics from LDA
docvars(mx, "topic") <- topic[match(docnames(mx), names(topic))]
于 2018-05-29T20:52:53.193 回答
0
对不起,这是一个例子。
dfm_speeches <- dfm(data_corpus_irishbudget2010,
remove_punct = TRUE, remove_numbers = TRUE, remove = stopwords("english")) %>%
dfm_trim(min_termfreq = 4, max_docfreq = 10)
dfm_speeches <- dfm_select(dfm_speeches, c("corbyn", "hillary"))
library(topicmodels)
dfmlda <- convert(dfm_speeches, to = "topicmodels") %>%
dfmlda
如您所见,dfmlda 对象是空的,因为我通过删除特定单词来修改我的 dfm。
于 2018-05-29T18:33:09.063 回答