2017-10-03 5 views
0

Je travaille avec un jeu de données contenant 439 observations pour l'analyse de texte dans stm. Lorsque j'utilise textProcessor, le nombre d'observations passe à 438 pour une raison quelconque. Cela crée des problèmes plus tard: lors de l'utilisation de la fonction findThoughts(), par exemple.textProcessor modifie le nombre d'observations de mon corpus (en utilisant le paquet stm dans 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 

Un exemple de ce devenir un problème en bas de la ligne est la suivante:

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

Pour que la sortie est:

« Erreur dans findThoughts (sovereigncredit1, textes = sovereigncredit $ Contenu ,: Le nombre de textes fournis et le nombre de documents modélisés ne correspondent pas "

Dans lequel "sovereigncredit1" est un modèle de sujet basé sur "out" d'en haut.

Si mon interprétation est correcte (et je ne fais pas une autre erreur), le problème semble être cette différence d'observation dans le nombre d'observations avant et après traitement de texte. Jusqu'ici, j'ai regardé le CSV d'origine et vérifié qu'il y avait en fait 439 observations valides et pas de rangées vides. Je ne suis pas sûr de ce qui se passe. Toute aide serait appréciée!

Répondre

0

stm ne peut pas gérer les documents vides, nous les laissons simplement tomber. textProcessor enlève beaucoup de choses des textes: mots d'arrêt personnalisés, mots plus courts que 3 caractères, nombres etc. Donc ce qui se passe ici est un de vos documents (celui qui est abandonné) est en train de perdre tout son contenu pendant le processus de diverses choses textProcessor fait.

Vous pouvez retravailler quel document il s'agissait et décider de ce que vous voulez faire à ce sujet dans cette instance. En général, si vous voulez plus de contrôle sur la manipulation de texte, je recommande fortement le paquetage quanteda qui a beaucoup plus d'outils fins que stm pour manipuler des textes dans une matrice de terme de document.