2017-04-19 9 views
0

나는 초록에서 텍스트 데이터로 작업하고 있으며 구성하기 전에 감독되지 않은 추출 된 주제를 살펴보기 위해 stm (구조적 주제 모델링)을 사용하려고합니다. 내 자신의 사전 (감독 분석 용). 저는 문제를 다루고 있습니다. 이전에 같은 문제가 발생했는지 궁금합니다.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

내 데이터 뭐가 잘못 됐는지 모르겠어요 : findThoughts()를 실행하는 경우 나는 다음과 같은 오류가 발생합니다. 나는 더 추상적 없었다 특징으로는 신체의 그 빈 행에 NA 값으로 할 필요가 있다고 생각하지만, 같은과 (NA 행을 제거한 후 발생하는 다음

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

당신이에 어떤 생각이있는 경우 문제는, 알려 주시기 바랍니다.

답변

0

findThoughts 기능이 때 길이 (텍스트)! = out.stm의 행 수.

"일치하지 않는 한 텍스트와 모델링 문서 수 수"오류를 반환 이것은 문서를 처리하는 데 사용되는 textProcessor 함수에서 orginate하는 오류입니다. 'stm'함수를 호출하기 전에.

여기에 이런 이유가 있습니다. 임시 출력에는 제거 된 행을 나열하는 temp $ docs.removed 속성이 있습니다. 따라서 'temp $ documents'의 길이는 temp $ docs.removed 길이의 'comments'보다 작습니다.

따라서 temp $ 문서를 사용하여 모델링 된 stm 개체 '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) 

해결 방법 : 'temp'개체에서 제거 된 문서를 'texts'개체에서 제거하십시오. 아래 코드는 temp $ docs.removed에서 참조 된 인덱스를 제거하는 새로운 벡터 z를 생성하여이를 수행합니다.

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

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