我正在处理摘要中的文本数据,我正在尝试使用stm
(结构主题建模)来查看无监督的提取主题,然后再构建我自己的字典(用于监督分析)。
我正在处理一个问题,我想知道是否有人之前遇到过同样的问题。
运行findThoughts()
时出现以下错误:
findThoughts出错(out.stm,topics = 27,texts = corpus $ documents $ texts,: 提供的文本数量和建模的文档数量不匹配
我不确定我的数据有什么问题。我认为它可能与语料库的那些空行中的NA
值有关,其中我没有抽象,但在删除NA
行后会发生同样的情况(具有以下内容:
df[!is.na(df$abstract),]
如果您对此事有任何疑问,请告诉我。
答案 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 删除了正确的文档索引。