2017-10-03 10 views
0

Ich arbeite mit einem Datensatz, der 439 Beobachtungen für die Textanalyse in stm hat. Wenn ich textProcessor verwende, ändert sich die Anzahl der Beobachtungen aus irgendeinem Grund in 438. Dies führt später zu Problemen, wenn beispielsweise die Funktion findThoughts() verwendet wird.textProcessor ändert die Anzahl der Beobachtungen meines Korpus (Verwendung mit stm-Paket in R)

############################################## 
#PREPROCESSING 
############################################## 

#Process the data for analysis. 
temp<-textProcessor(sovereigncredit$Content,sovereigncredit, customstopwords = customstop, stem=FALSE) 
meta<-temp$meta 
vocab<-temp$vocab 
docs<-temp$documents 
length(docs) # QUESTION: WHY IS THIS 438 instead of 439, like the original dataset? 
length(sovereigncredit$Content) # See, this original one is 439. 
out <- prepDocuments(docs, vocab, meta) 
docs<-out$documents 
vocab<-out$vocab 
meta <-out$meta 

Ein Beispiel hierfür ein Problem auf der ganzen Linie immer ist:

thoughts1<-findThoughts(sovereigncredit1, texts=sovereigncredit$Content,n=5, topics=1) 

, für die die Ausgabe lautet:

„Fehler in findThoughts (sovereigncredit1, Texte = sovereigncredit $ Inhalt ,: Anzahl der bereitgestellten Texte und Anzahl der modellierten Dokumente stimmen nicht überein "

In dem "sovereigncredit1" ist ein Themenmodell basierend auf "out" von oben.

Wenn meine Interpretation korrekt ist (und ich mache keinen weiteren Fehler), scheint das Problem dieser Beobachtungsunterschied in der Anzahl der Beobachtungen vor und nach der Textverarbeitung zu sein.

Bis jetzt habe ich mir die ursprüngliche csv angesehen und sichergestellt, dass es tatsächlich 439 gültige Beobachtungen und keine leeren Zeilen gibt. Ich bin mir nicht sicher, was los ist. Jede Hilfe wäre willkommen!

Antwort

0

stm kann nicht mit leeren Dokumenten umgehen, so dass wir sie einfach fallen lassen. textProcessor entfernt eine Menge von Sachen aus Texten: benutzerdefinierte Stoppwörter, Wörter kürzer als 3 Zeichen, Zahlen etc. Also, was hier passiert ist eines Ihrer Dokumente (was auch immer gelöscht wird) ist im Wesentlichen verlieren alle Inhalte irgendwann während des Prozesses der verschiedene Dinge textProcessor tut.

Sie können zurück arbeiten, welches Dokument es war und entscheiden, was Sie in diesem Fall tun wollen. Im Allgemeinen, wenn Sie mehr Kontrolle über die Textmanipulation wollen, würde ich dringend das quanteda-Paket empfehlen, das viel feinere Werkzeuge als stm für das Manipulieren von Texten in eine Dokument-Term-Matrix hat.

Verwandte Themen