【问题标题】:R in Windows cannot handle some charactersWindows 中的 R 无法处理某些字符
【发布时间】:2016-04-17 21:41:45
【问题描述】:

我在 Linux 中执行了 LDA,但在主题 2 中没有得到像“ø”这样的字符。但是,当在 Windows 中运行时,它们会显示出来。有谁知道如何处理这个?我使用了 quantedatopicmodels 包。

> 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))

【问题讨论】:

  • 我猜不同的地区。
  • 您没有真正提供足够的数据来使问题可重现。我猜问题出在文件编码上。 Windows 假定文件采用“latin-1”编码。您的 linux 操作系统可能采用 UTF-8 编码。了解数据文件中使用的编码并使用正确的编码正确读取数据非常重要。您没有显示任何导入步骤,因此很难知道您可能做了什么。
  • 我尝试了不同的编码,例如support.rstudio.com/hc/en-us/articles/…,但没有成功。
  • 请注意,最近在trim() 中添加了一个sparsity = 参数,该参数模拟了 tm 的使用,如果您想以这种方式考虑稀疏性。

标签: r windows lda topicmodels quanteda


【解决方案1】:

这是一个编码问题,再加上使用 Windows 和 Linux 的 R 中可用的不同语言环境。 (尝试:Sys.getlocale())Windows 默认使用 .1252(又名“cp1252”、“WINDOWS-1252”),而 Linux 和 OS X 使用 UTF-8。我的猜测是 technology201501.csv 被编码为 UTF-8 并且当您将其读入 R Windows 时被转换为 1252,这些字符对单词做了一些奇怪的事情,并创建了明显的标记作为字符(但没有可重现的示例,这对我来说是不可能的)。相比之下,在 Linux 中,包含“ø”等的单词被保留,因为没有转换。转换可能会破坏带有扩展(7 位“ASCII”范围之外)字符的单词,因为这些 UTF 编码的 Unicode 代码点没有映射到 8 位 WINDOWS-1252 编码中的位置,即使这些点存在于该编码中。

要转换,如果您将调用更改为:

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 一起安装。

【讨论】:

  • 我收到了这条警告信息。结果还是一样。警告消息:在 textfile("technology201501.csv", textField = "title", fileEncoding = "UTF-8") 中:未使用参数 fileEncoding
  • packageVersion("quanteda") 返回什么?
  • 返回‘0.9.2.0’
  • 我建议你 devtools::install_github("kbenoit/quanteda") 但也可以在 GitHub 页面上提出问题,我会从那里与你合作。需要知道源文件编码,但最好是重现问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多