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.csvUTF-8 としてエンコードされており、R Windows に読み込むと 1252 に変換されます。これらの文字は、単語に対して何か奇妙なことを行っており、文字として明らかなトークンを作成しています (ただし、再現可能な例がないため、私にはわかりません) )。対照的に、Linux では、「ø」などを含む単語は変換されないため保持されます。これらの UTF エンコードされた Unicode コード ポイントの 8 ビット WINDOWS-1252 エンコード内の場所へのマッピングがないため、変換により、拡張 (7 ビットの「ASCII」範囲外) 文字で単語がマングリングされる可能性があります。そのようなポイントはそのエンコーディングに存在します。

変換するには、呼び出しを次のように変更すると機能するはずです。

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 に答える