Удаление текста без текста из Corpus в R с помощью tm()
Я использую tm()
и wordcloud()
для некоторого базового интеллектуального анализа данных в R, но я сталкиваюсь с трудностями, потому что в моем наборе данных есть неанглийские символы (хотя я пытался отфильтровать другие языки на основе на фоновые переменные.
Скажем, что некоторые из строк в моем TXT файле (сохраненные как UTF-8 в TextWrangler) выглядят следующим образом:
Special
satisfação
Happy
Sad
Potential für
Затем я прочитал свой txt файл в 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; что наиболее целесообразно. Спасибо за вашу помощь!
Ответы
Ответ 1
Здесь метод удаления слов с символами, отличными от ASCII, перед созданием корпуса:
# remove words with non-ASCII characters
# assuming you read your txt file in as a vector, eg.
# dat <- readLines('~/temp/dat.txt')
dat <- "Special, satisfação, Happy, Sad, Potential, für"
# convert string to vector of words
dat2 <- unlist(strsplit(dat, split=", "))
# find indices of words with non-ASCII characters
dat3 <- grep("dat2", iconv(dat2, "latin1", "ASCII", sub="dat2"))
# subset original vector of words to exclude words with non-ASCII char
dat4 <- dat2[-dat3]
# convert vector back to a string
dat5 <- paste(dat4, collapse = ", ")
# make corpus
require(tm)
words1 <- Corpus(VectorSource(dat5))
inspect(words1)
A corpus with 1 text document
The metadata consists of 2 tag-value pairs and a data frame
Available tags are:
create_date creator
Available variables in the data frame are:
MetaID
[[1]]
Special, Happy, Sad, Potential