2017-04-19 354 views
0

我从摘要文本数据的工作,我试图用stm(结构性主题建模)有非监督提取的主题一看,施工前的文件数数我自己的字典(用于监督分析)。 我处理一个问题,我不知道是否有人遇到过同样的问题。 当运行findThoughts()我得到以下错误:[R STM - 提供文本和建模不匹配

Error in findThoughts(out.stm, topics = 27, texts = corpus$documents$texts, : Number of provided texts and number of documents modeled do not match

我不知道这有什么错我的数据。我认为它可能有与语料库中的那些空行NA值做其中我没有抽象的,但删除NA行(与后同样的情况如下:

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

如果你对任何想法事,请让我知道。

回答

0

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

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

这就是为什么会发生这种情况: 临时输出有一个属性temp $ docs.removed,它列出了已删除的行。所以“临时文件$”的长度会比温度$ docs.removed的长度“意见”较小。

所以STM对象“a”和它使用的临时文件$将具有相同长度的临时文件$建模的$ THETA(与文件专题概率矩阵)。

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) 

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

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

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