R stm - 提供的文本数量和建模的文档数量不匹配

时间:2017-04-19 10:10:57

标签: r text-mining topic-modeling stm

我正在处理摘要中的文本数据,我正在尝试使用stm(结构主题建模)来查看无监督的提取主题,然后再构建我自己的字典(用于监督分析)。 我正在处理一个问题,我想知道是否有人之前遇到过同样的问题。 运行findThoughts()时出现以下错误:

  

findThoughts出错(out.stm,topics = 27,texts = corpus $ documents $ texts,:     提供的文本数量和建模的文档数量不匹配

我不确定我的数据有什么问题。我认为它可能与语料库的那些空行中的NA值有关,其中我没有抽象,但在删除NA行后会发生同样的情况(具有以下内容:

df[!is.na(df$abstract),]

如果您对此事有任何疑问,请告诉我。

2 个答案:

答案 0 :(得分:0)

当length(文本)!= out.stm的行数时,findThoughts函数返回错误“提供的文本数和建模的文档数不匹配”。

这是一个错误,它来自textProcessor函数,用于在调用'stm'函数之前处理文档。

这就是为什么会发生这种情况: 临时输出具有属性temp $ docs.removed,其中列出了已删除的行。因此,'temp $ documents'的长度将比temp $ docs.removed的长度小于'comments'。

因此,使用temp $文档建模的stm对象'a'和$ theta(具有文档主题概率的矩阵)将具有与temp $文档相同的长度。

temp<-textProcessor(comments, metadata=NULL,  lowercase=TRUE, removestopwords=TRUE, removenumbers=TRUE,  removepunctuation=TRUE, stem=TRUE, wordLengths=c(3,Inf),  sparselevel=1, language="en",  verbose=TRUE, onlycharacter= FALSE, striphtml=FALSE, customstopwords=NULL, onlytxtfiles=TRUE)


meta<-temp$meta
vocab<-temp$vocab
docs<-temp$documents
a<-stm(documents=docs, vocab=vocab, K=7,data=meta, max.em.its=800)

解决方案:从“文本”对象中删除“temp”对象中删除的文档。下面的代码通过创建一个新的向量z来删除temp $ docs.removed中引用的索引。

z<-comments[-temp$docs.removed,]
length(z)

thoughts3 <- findThoughts(a,texts=z,topics=3, n=10,thresh=0.0)

答案 1 :(得分:0)

根据Sruthi Susan Thomas给出的答案,对我有用的正确代码放在了 out 插补(out = prepDocuments(text $ documents,text $ vocab,text $ meta))而不是参数中的“ temp”。 Out 删除了正确的文档索引。