2016-05-17 5 views
0

Загрузка куча документов с использованием tm Corpus Мне нужно указать кодировку.установить кодировку для чтения текстовых файлов в tm Corpora

Все документы закодированы в кодировке UTF-8. Если openend через содержимое текстового редактора одобрен, но содержимое корпуса заполнено странными символами (indicioâ., 'Sœs ....) Исходный текст написан на испанском языке. ES_es

library(tm) 
cname <- file.path("C:", "Users", "john", "Documents", "texts") 
docs <- Corpus(DirSource(cname), encoding ="UTF-8") 

> Error in Corpus(DirSource(cname), encoding = "UTF-8") : 
    unused argument (encoding = "UTF-8") 

Редакцией:

Получение ул (документы [1]) из корпуса я заметил:

.. .. $ Язык: CHR "ан"

Как может Я указываю, например, «UTF-8», «Latin1» или любую другую кодировку, чтобы избежать странных символов?

С уважением

+0

Что вы подразумеваете под «странными» - ошибочными символами или символами, которые вы хотите преобразовать в обычный текст (ASCII) без акцентов? –

+0

Странные символы, кажется, являются акцентированными словами и т. Д. Преобразование в ANSI могло бы работать. Латынь тоже. – useRj

+0

Где-то еще я увидел «Кодирование (данные) <-« UTF-8 »', возможно http://stackoverflow.com/questions/24920396/r-corpus-is-messing-up-my-utf-8-encoded- text –

ответ

0

От "C:" Это ясно, что вы используете Windows, который предполагает Windows-1252 кодировку (в большинстве систем), а не UTF-8. Вы можете попробовать прочитать файлы в качестве символа, а затем установить Encoding(myCharVector) <- "UTF-8". Если входной кодировкой был UTF-8, это должно заставить вашу систему правильно распознавать и отображать символы UTF-8.

В качестве альтернативы это будет работать, хотя это также делает тм ненужный:

require(quanteda) 
docs <- corpus(textfile("C:/Users/john/Documents/texts/*.txt", encoding = "UTF-8")) 

Тогда вы можете увидеть тексты, используя, например:

cat(texts(docs)[1:2]) 

Они должны иметь битое кодирование установлены и правильно отобразить. Тогда, если вы предпочитаете, вы можете получить их в тм с помощью:

docsTM <- Corpus(VectorSource(texts(docs))) 
+0

Мне трудно точно вызывать нос без ваших файлов, но основной подход должен работать. Я рад попробовать его с вашими файлами, если вы отправляете ссылку на некоторые из них. –

+0

Привет, ken, проблема возникла: dtm <- DocumentTermMatrix (docsTM) Ошибка: inherits (doc, «TextDocument») не TRUE – useRj

+0

Решенная выдача docsTM <- tm_map (docsTM, PlainTextDocument) – useRj

0

Кажется, что нет никакой необходимости в использовании quanteda пакета (кроме того, некоторое странное поведение теряет имена файлов при преобразовании в TM VCorpora)

files <- DirSource(directory = "C:/Users/john/Documents/",encoding ="UTF-8") 
mycorpus<- VCorpus(x=files) 

Теперь кодировка верна.