2016-01-13 56 views
0

我在Linux中執行了LDA,並且在主題2中沒有得到像「ø」這樣的字符。但是,它們在Windows中運行時顯示。有誰知道如何處理這個?我使用包quantedatopicmodelsWindows中的R無法處理某些字符

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

編輯:

數據: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

我猜不同的區域設置。 – 2016-01-13 03:19:37

+1

您沒有真正提供足夠的數據來使問題重現。我猜想問題在於文件編碼。 Windows假定文件採用「拉丁-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(即「cp1252」,「WINDOWS-1252」),而Linux和OS X使用UTF-8。我的猜測是,technology201501.csv被編碼爲UTF-8,當你將它讀入R Windows時,它們被轉換爲1252,這些字符對單詞做了一些奇怪的事情,並且創建了明顯的令牌作爲字符(但沒有可重複的例子,它是不可能告訴我)。相比之下,在Linux中,包含「ø」等的單詞被保留,因爲沒有轉換。由於沒有將這些UTF編碼的Unicode代碼點映射到8位WINDOWS-1252編碼中的某個位置,所以轉換可能會擴展字符(在7位「ASCII」範圍之外),即使這樣的點存在於該編碼中。

要轉換,它,如果你改變你的調用應該工作:

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

作爲最後一個參數是由textfile()直接傳遞給read.csv()。 (但是,在最新版本中只有0.9.2)

您可以在命令行中使用file technology201501.csv來驗證.csv文件的編碼。幾乎所有的Linux發行版和OS X都包含這些功能,但是也可以在Windows上安裝RTools。

+0

我收到了此警告消息。結果仍然是一樣的。警告消息: 在文本文件(「technology201501.csv」,textField =「title」,fileEncoding =「UTF-8」)中: 參數fileEncoding未使用 – user1569341

+0

'packageVersion(「quanteda」)'返回什麼? –

+0

它返回'0.9.2.0' – user1569341