Ich verwende und wordcloud()
für einige grundlegende Data-Mining in R, aber ich stehe in Schwierigkeiten, weil nicht-englische Zeichen in meinem Dataset sind (obwohl ich habe versucht, andere Sprachen zu filtern, basierend auf HintergrundvariablenEntfernen von nicht-englischen Text aus Corpus in R mit tm()
Lassen Sie uns sagen, dass einige der Linien in meiner TXT-Datei (gespeichert als UTF-8 in TextWrangler) wie folgt aussehen:.
Special
satisfação
Happy
Sad
Potential für
ich dann lese meine TXT-Datei in R:
Dies ergibt die Warnmeldung:
Warning message:
In readLines(y, encoding = x$Encoding) :
incomplete final line found on '/temp/file.txt'
Aber da es eine Warnung ist, kein Fehler, ich weiter nach vorne schieben.
words <- tm_map(words, stripWhitespace)
words <- tm_map(words, tolower)
Dies ergibt dann den Fehler:
Error in FUN(X[[1L]], ...) : invalid input 'satisfa��o' in 'utf8towcs'
Ich bin offen Wege zu finden, die nicht-englische Zeichen zu filtern, entweder in TextWrangler oder R; was auch immer das zweckmäßigste ist. Danke für Ihre Hilfe!
Wenn das Ziel nur ist diese Nicht-ASCII-Zeichen zu entfernen, dann führt dies zu dem Trick: 'sapply (Wörter , Funktion (Zeile) iconv (Zeile, "latin1", "ASCII", sub = "")) '[(von hier)] (http://stackoverflow.com/a/15754155/1036500). Aber das wird Sie mit Wortfragmenten mit fehlenden Zeichen belassen. Wenn Sie nicht-englische Wörter entfernen möchten, können Sie Wörter mit Nicht-ASCII-Zeichen unterteilen, sie zu Ihrer Stoppwortliste hinzufügen und diese beim Entfernen von Stoppwörtern entfernen. – Ben
Ich habe diesen Post tatsächlich gesehen, aber er öffnet die Tür, um den Corpus in ein anderes Objekt zu verwandeln? Das Ausführen dieses Befehls auf einem Korpus ergibt: 'Fehler in UseMethod (" tm_map ", x): keine anwendbare Methode für 'tm_map' angewendet auf ein Objekt der Klasse" c ('matrix', 'character') "' – roody
Sie können wandle die Ausgabe von 'sapply' in ein Korpus wie folgt um:' dat1 <- sapply (Wörter, Funktion (Zeile) iconv (Zeile, "latin1", "ASCII", sub = "")) '' dann zurück zu a corpus: 'words1 <- Corpus (VectorSource (dat1))' – Ben