2017-04-19 5 views
0

Ich arbeite mit Textdaten von Abstracts und versuche stm (strukturelle Themenmodellierung) zu verwenden, um unbeaufsichtigte extrahierte Themen vor dem Konstruieren zu betrachten mein eigenes Wörterbuch (für die überwachte Analyse). Ich habe mit einem Problem zu tun und frage mich, ob jemand schon einmal auf das gleiche Problem gestoßen ist. Wenn findThoughts() laufen bekomme ich folgende Fehlermeldung:R stm - Anzahl der bereitgestellten Texte und Anzahl der modellierten Dokumente stimmen nicht überein

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

Ich bin nicht sicher, was mit meinen Daten falsch ist. Ich dachte, es könnte mit NA Werten in diesen leeren Zeilen des Korpus zu tun hat, wobei ich keine abstraktes hatte, aber das gleiche passiert, nachdem NA Reihen zu entfernen (mit dem folgenden:

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

Wenn Sie eine Idee haben, auf der Materie, lass es mich wissen.

Antwort

0

die findThoughts Funktion gibt den Fehler „Anzahl der bereitgestellten Texte und Anzahl der Dokumente modelliert nicht übereinstimmen“, wenn Länge (Texte)! = Anzahl der Reihen von out.stm.

Dies ist ein Fehler, der von der TextProcessor-Funktion stammt, die zur Verarbeitung des Dokuments verwendet wird s bevor Sie die Funktion 'stm' aufrufen.

Dies ist der Grund, warum das passiert: Die temporäre Ausgabe hat ein Attribut temp $ docs.removed, das die Zeilen auflistet, die entfernt wurden. Die Länge von 'temp $ documents' ist also kleiner als die Länge von 'temp $ docs.removed'.

So haben das stm-Objekt 'a' und ein $ theta (die Matrix mit Themenwahrscheinlichkeiten von Dokumenten), die mit temp $ -Dokumenten modelliert werden, dieselbe Länge wie temp $ -Dokumente.

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) 

Lösung: Entfernen Sie die Dokumente, die im 'temp'-Objekt aus Ihren' Text'-Objekten entfernt wurden. Der folgende Code erstellt das, indem ein neuer Vektor z erstellt wird, der die in temp $ docs.removed referenzierten Indizes entfernt.

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

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