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

bxjv4tth  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(292)

我正在处理摘要中的文本数据,并且在构建我自己的字典(用于监督分析)之前,我尝试使用stm(结构化主题建模)来查看非监督提取的主题。我正在处理一个问题,我想知道是否有人以前遇到过同样的问题。当运行findThoughts()时,我得到以下错误:
findThoughts中的错误(输出.stm,主题= 27,文本=语料库$文档$文本,:提供的文本数和建模的文档数不匹配
我不确定我的数据出了什么问题,我以为这可能与语料库中没有摘要的空行中的NA值有关,但在删除NA行后也会发生同样的情况(如下所示:

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

如果你对这件事有什么想法,请告诉我。

4dc9hkyq

4dc9hkyq1#

当length(texts)!= out. stm的行数时,findThoughts函数返回错误“提供的文本数和建模的文档数不匹配”。
这是一个源于textProcessor函数的错误,该函数用于在调用“stm”函数之前处理文档。
以下是发生这种情况的原因:临时输出有一个属性temp$docs.removed,它列出了被删除的行。因此,“temp$documents”的长度将比“comments”短temp$docs. removed的长度。
因此,stm对象“a”和使用temp$documents建模的a$theta(文档的主题概率矩阵)将具有与temp$documents相同的长度。

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)

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

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

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

1mrurvl12#

根据Sruthi Susan托马斯给出的答案,正确的代码是在参数中放入“out”输入(out=prepDocuments(text$documents,text$vocab,text$ meta))而不是“temp”。Out删除了文档的正确索引。

相关问题