0

我在 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))
4

1 回答 1

0

这是一个编码问题,再加上使用 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"))

因为最后一个参数直接传递给read.csv()by textfile()。(这仅在最新版本 0.9.2 中是正确的。)

file technology201501.csv您可以使用命令行验证 .csv 文件的编码。这几乎包含在每个 Linux 发行版和 OS X 中,但也随 Windows 上的 RTools 一起安装。

于 2016-01-13T08:14:21.290 回答