Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据帧强制转换为DocumentTermMatrix?_R_Topic Modeling_Tidytext - Fatal编程技术网

如何将数据帧强制转换为DocumentTermMatrix?

如何将数据帧强制转换为DocumentTermMatrix?,r,topic-modeling,tidytext,R,Topic Modeling,Tidytext,我试图使用tidytext将一组词频转换为DocumentTermMatrix,但该函数似乎没有按预期工作。我从AssociatedPress开始,我知道这是一个documentTermMatrix,整理并将其转换回,但输出与原始矩阵不同。我做错了什么 library(topicmodels) data(AssociatedPress) ap_td <- tidy(AssociatedPress) tt <- ap_td %>% cast_dtm(document, ter

我试图使用
tidytext
将一组词频转换为DocumentTermMatrix,但该函数似乎没有按预期工作。我从
AssociatedPress
开始,我知道这是一个documentTermMatrix,整理并将其转换回,但输出与原始矩阵不同。我做错了什么

library(topicmodels)
data(AssociatedPress)
ap_td <- tidy(AssociatedPress)
tt <- ap_td %>%
  cast_dtm(document, term, count)
cast\u dtm
检索警告

警告消息:尝试为未找到的变量计算distinct() 在数据中: -
行列
这是一个错误,但出于兼容性原因,只会发出警告。该操作将返回输入 不变


在GitHub上,我找到了现在应该修复的问题。

使用tidytext 0.1.9.900和R 3.5.0时,我没有收到您的警告消息

dtm的术语、行和列的数量相同。此外,所有计数都是正确的

实际上,
tt$dimnames$Docs
的$dimnames$Docs与
关联的$dimnames$Docs
之间存在差异

原因是,如果在整理之前dtm中没有文档ID,就像AssociatedPress一样,tidy函数会将AssociatedPress$i分配给tidy_文本(ap_td)中的文档变量。将其转换回dtm,将使用tidy_text data.frame(ap_td)中的文档值填充$dimnames$Docs。因此,最终关联的Press$i值将在tt$dimnames$Docs中结束

你可以看到,如果你比较美联社的$i和tt的文档

all.equal(unique(as.character(AssociatedPress$i)), unique(tt$dimnames$Docs))
[1] TRUE
或者从关联的Press到ap\u td再到tt进行比较:

all.equal(unique(as.character(AssociatedPress$i)), unique(tt$dimnames$Docs), unique(ap_td))
[1] TRUE
如果您想自己遵循逻辑,可以检查所使用的所有函数。从
tidy.DocumentTermMatrix
开始,然后按照函数调用调用到
tidy.simple\u triplet\u matrix
,最后到
tidy\u triplet

all.equal(unique(as.character(AssociatedPress$i)), unique(tt$dimnames$Docs), unique(ap_td))
[1] TRUE