2016-01-13 10 views
0

Я выполнил LDA в Linux и не получил символов типа «ø» в разделе 2. Однако при запуске в Windows они показывают. Кто-нибудь знает, как с этим бороться? Я использовал пакеты quanteda и topicmodels.R в Windows не может обрабатывать некоторые символы

> terms(LDAModel1,5) 
Topic 1 Topic 2 
[1,] "car" "ø" 
[2,] "build" "ù" 
[3,] "work" "network" 
[4,] "drive" "ces" 
[5,] "musk" "new" 

Edit:

данных: https://www.dropbox.com/s/tdr9yok7tp0pylz/technology201501.csv

Код что-то вроде этого:

library(quanteda) 
library(topicmodels) 

myCorpus <- corpus(textfile("technology201501.csv", textField = "title")) 
myDfm <- dfm(myCorpus,ignoredFeatures=stopwords("english"), stem = TRUE, removeNumbers = TRUE, removePunct = TRUE, removeSeparators = TRUE) 
myDfm <-removeFeatures(myDfm, c("reddit", "redditors","redditor","nsfw", "hey", "vs", "versus", "ur", "they'r", "u'll", "u.","u","r","can","anyone","will","amp","http","just")) 
sparsityThreshold <- round(ndoc(myDfm) * (1 - 0.9999)) 
myDfm2 <- trim(myDfm, minDoc = sparsityThreshold) 
LDAModel1 <- LDA(quantedaformat2dtm(myDfm2), 25, 'Gibbs', list(iter=4000,seed = 123)) 
+2

Я думаю, что разные локации. –

+1

Вы действительно не предоставили достаточно данных, чтобы сделать проблему воспроизводимой. Я предполагаю, что проблема связана с кодировкой файлов. Windows предполагает, что файлы находятся в кодировке «latin-1». Ваша Linux-система может принимать кодировку UTF-8. Важно, чтобы вы знали, какая кодировка использовалась в ваших файлах данных, и правильно считывать данные с помощью правильной кодировки. Вы не показываете какие-либо шаги по импорту, поэтому трудно понять, что вы, возможно, сделали. – MrFlick

+0

Я пробовал разные кодировки, такие как https://support.rstudio.com/hc/en-us/articles/200532197-Character-Encoding, но это не сработало. – user1569341

ответ

0

Это вопрос кодирования, в сочетании с различными локалей доступны в R с помощью Windows, и Linux. (Попробуйте: Sys.getlocale()) Windows использует .1252 по умолчанию (aka «cp1252», «WINDOWS-1252»), в то время как Linux и OS X используют UTF-8. Я предполагаю, что technology201501.csv кодируется как UTF-8 и преобразуется в 1252, когда вы читаете его в R Windows, эти символы делают что-то нечетное по отношению к словам и создают видимые маркеры в качестве символа (но без воспроизводимого примера это невозможно мне сказать). Напротив, в Linux слова, содержащие «ø» и т. Д., Сохраняются, потому что нет конверсии. Конверсия может искажать слова с расширенными (за пределами 7-битного диапазона «ASCII»), поскольку сопоставление этих кодов UICF кодированного кода Unicode с местом в 8-разрядной кодировке WINDOWS-1252, хотя такие точки существуют в этом кодировании.

Для преобразования, он должен работать, если вы изменить ваш вызов:

myCorpus <- corpus(textfile("technology201501.csv", textField = "title", fileEncoding = "UTF-8")) 

как последний аргумент передается прямо в read.csv() по textfile(). (Это верно только в новейшей версии, однако, 0.9.2.)

Вы можете проверить кодировку вашего CSV-файла с помощью file technology201501.csv в командной строке. Это включает почти все дистрибутивы Linux и OS X, но также устанавливается с помощью RTools в Windows.

+0

Я получил это предупреждение. Результат все тот же. Предупреждающее сообщение: В текстовом файле ("технология201501.csv", textField = "title", fileEncoding = "UTF-8"): Аргумент fileEncoding не используется – user1569341

+0

Что возвращает 'packageVersion (" quanteda ")? –

+0

он возвращает '0.9.2.0' – user1569341

 Смежные вопросы

  • Нет связанных вопросов^_^