R tm paquet d'entrée non valide dans 'utf8towcs'
Je suis en train d'utiliser le tm package R pour effectuer certaines d'analyse de texte. J'ai attaché les suivantes:
require(tm)
dataSet <- Corpus(DirSource('tmp/'))
dataSet <- tm_map(dataSet, tolower)
Error in FUN(X[[6L]], ...) : invalid input 'RT @noXforU Erneut riesiger (Alt-)�lteppich im Golf von Mexiko (#pics vom Freitag) http://bit.ly/bw1hvU http://bit.ly/9R7JCf #oilspill #bp' in 'utf8towcs'
Le problème est que certains personnages ne sont pas valides. J'aimerais exclure les caractères non valides à partir de l'analyse que ce soit dans R ou avant d'importer les fichiers pour le traitement.
J'ai essayé d'utiliser iconv pour convertir tous les fichiers utf-8 et d'exclure tout ce qui ne peut pas être convertie comme suit:
find . -type f -exec iconv -t utf-8 "{}" -c -o tmpConverted/"{}" \;
comme l'a souligné ici Convertir par lots latin-1 fichiers utf-8 à l'aide d'iconv
Mais j'obtiens toujours la même erreur.
J'apprécierais toute aide.
InformationsquelleAutor maiaini | 2012-03-09
Vous devez vous connecter pour publier un commentaire.
Aucune des réponses ci-dessus, a travaillé pour moi. La seule façon de contourner ce problème est de supprimer tous les non des caractères graphiques (http://stat.ethz.ch/R-manual/R-patched/library/base/html/regex.html).
Le code est ce simple
usableText <- iconv(tweets$text, "ASCII", "UTF-8", sub="")
C'est à partir de la tm faq:
J'espère que cette aide, pour moi, il n'.
http://tm.r-forge.r-project.org/faq.html
Je pense qu'il est clair maintenant que le problème est en raison de la émoticônes que tolower n'est pas en mesure de comprendre
Je viens d'aller à l'encontre de ce problème. Par chance vous utilisez un ordinateur fonctionnant sous OSX? Je suis et semblent avoir retracé le problème de la définition du jeu de caractères que le R est compilé contre sur ce système d'exploitation (voir https://stat.ethz.ch/pipermail/r-sig-mac/2012-July/009374.html)
Ce que je voyais, c'est que l'utilisation de la solution de la FAQ
me donnait cet avertissement:
Ce j'ai tracé à la
enc2utf8
fonction. La mauvaise nouvelle, c'est que c'est un problème avec mon OS sous-jacent et pas R.Voici donc ce que j'ai fait un travail autour de:
Cette forces iconv pour utiliser le codage utf8 sur le macintosh et fonctionne très bien sans avoir besoin de recompiler.
J'ai été l'exécution de ce sur Mac et ma frustration,j'ai eu à identifier la faute d'enregistrement (comme c'étaient des tweets) à résoudre. Depuis, la prochaine fois, il n'y a pas de garantie de l'enregistrement étant les mêmes, j'ai utilisé la fonction suivante
comme suggéré ci-dessus.
Il a travaillé comme un charme
C'est un problème commun avec la
tm
paquet (Un, Deux, Trois).Un non-
R
moyen pour résoudre ce problème est d'utiliser un éditeur de texte pour rechercher et remplacer tous les caractères de fantaisie (ie. ceux avec les signes diacritiques) dans votre texte avant de le charger dansR
(ou utilisezgsub
dansR
). Par exemple, vous seriez de rechercher et de remplacer toutes les instances de l'O-tréma dans Öl-Teppich. D'autres ont eu du succès avec ce (que j'ai aussi), mais si vous avez des milliers de fichiers texte, évidemment, ce n'est pas bon.Pour un
R
solution, j'ai trouvé que l'utilisation deVectorSource
au lieu deDirSource
semble résoudre le problème:Mais cela semble être un peu une coïncidence heureuse. Il doit y avoir une façon plus directe à ce sujet. Faites-nous savoir ce qui fonctionne pour vous!
L'ancien suggestions ne fonctionne pas pour moi. J'ai étudié plus et trouvé celui qui a travaillé dans la suite de https://eight2late.wordpress.com/2015/05/27/a-gentle-introduction-to-text-mining-using-r/
J'ai souvent ce problème et ce Débordement de Pile post est toujours ce qui arrive en premier. J'ai utilisé la solution devant, mais il peut bande de personnages et de les remplacer avec des déchets (comme la conversion de
it’s
àit’s
).J'ai trouvé qu'il y est en fait une bien meilleure solution pour cela! Si vous installez le
stringi
package, vous pouvez remplacertolower()
avecstri_trans_tolower()
et puis tout devrait fonctionner correctement.Utilisez les étapes suivantes:
Si c'est ok pour ignorer non valide les entrées, vous pouvez utiliser le R de la gestion des erreurs. e.g:
Il est un exemple supplémentaire ici: http://gastonsanchez.wordpress.com/2012/05/29/catching-errors-when-using-tolower/
La FAQ officielle semble être pas de travail dans ma situation:
Enfin je l'ai fait à l'aide de la for & fonction d'Encodage:
Du tchad solution ne fonctionnait pas pour moi. J'ai eu ce intégrés dans une fonction, et il était en train de donner une erreur sur
iconv
neededing un vecteur en entrée. Donc, j'ai décidé de faire la conversion avant la création du corpus.J'ai été en mesure de le réparer par la conversion des données au format texte brut à l'aide de cette ligne de code
corpus <- tm_map(corpus, PlainTextDocument)
merci à l'utilisateur https://stackoverflow.com/users/4386239/paul-gowder
pour sa réponse ici
https://stackoverflow.com/a/29529990/815677