Я использую tm()
и wordcloud()
для некоторого базового интеллектуального анализа данных в R, но сталкиваюсь с трудностями, потому что в моем наборе данных есть неанглийские символы (хотя я пытался отфильтровать другие языки на основе фоновых переменных.
Допустим, некоторые строки в моем файле TXT (сохраненном как UTF-8 в TextWrangler) выглядят так:
Special
satisfação
Happy
Sad
Potential für
Затем я прочитал свой текстовый файл в R:
words <- Corpus(DirSource("~/temp", encoding = "UTF-8"),readerControl = list(language = "lat"))
Это дает предупреждающее сообщение:
Warning message:
In readLines(y, encoding = x$Encoding) :
incomplete final line found on '/temp/file.txt'
Но поскольку это предупреждение, а не ошибка, я продолжаю двигаться вперед.
words <- tm_map(words, stripWhitespace)
words <- tm_map(words, tolower)
Затем это дает ошибку:
Error in FUN(X[[1L]], ...) : invalid input 'satisfa��o' in 'utf8towcs'
Я готов найти способы отфильтровать неанглийские символы либо в TextWrangler, либо в R; то, что наиболее целесообразно. Спасибо за вашу помощь!
sapply(words, function(row) iconv(row, "latin1", "ASCII", sub=""))
(отсюда). Но это оставит вас с фрагментами слов с отсутствующими символами. Если вы хотите удалить неанглийские слова, вы можете подмножить слова с символами, отличными от ASCII, добавить их в свой список стоп-слов и удалить их по мере удаления стоп-слов. - person Ben   schedule 09.08.2013Error in UseMethod("tm_map", x) : no applicable method for 'tm_map' applied to an object of class "c('matrix', 'character')"
- person roody   schedule 09.08.2013sapply
обратно в корпус следующим образом:dat1 <- sapply(words, function(row) iconv(row, "latin1", "ASCII", sub=""))
затем обратно в корпус:words1 <- Corpus(VectorSource(dat1))
- person Ben   schedule 09.08.2013