Я преобразовал набор китайских документов в сегментированные слова (объект list
), а затем преобразовал объект list
в матрицу-термин-документ (называемую dtm
), а затем передал его в модель LDA (используя функцию LDA()
из пакета topicmodels
).Наконец, я оцениваю слово-тему («бета»), используя tidy()
из пакета tidytext
;однако столбец term
не отображал китайские символы, даже после того, как я вставил encoding = "UTF-8"
в tidy()
).
Я предоставил код репликации и часть своих данных ниже, и мне интересно,можно вручную изменить кодировку столбца term
в w_topics
, чтобы он мог отображать эти китайские символы и отображать эти символы на графике (для дальнейшего использования).Было бы очень полезно, если бы кто-то смог пролить свет на это.
Sys.setlocale("LC_ALL","Chinese") # reset to simplified Chinese encoding
library(foreign)
library(dplyr)
library(plyr)
library(tidyverse)
library(tm)
library(topicmodels)
seg <- readRDS(gzcon(url("https://www.dropbox.com/s/i1dhw2rzbr9i7xy/my_data.rds?dl=1")))
corpus <-Corpus(VectorSource(seg))
dtm <- DocumentTermMatrix(corpus,
control = list(
wordLengths=c(2, 20), # limiting the length of term
bounds = list(global = c(50, Inf)), # filter minimum freq.
removeNumbers = TRUE, # removeNumbers
weighting = weightTf, # weighing on term freq.
encoding = "UTF-8")) # reset to UTF8 encoding just in case
rowTotals <- slam::row_sums(dtm) # remove empty document
dtm <- dtm[rowTotals > 0, ]
#LDA assignment, set potential number of topics to 2
w_lda <- LDA(dtm, k = 2, control = list(seed = 1234))
#estimate word-topic assignment
library(tidytext)
w_topics <- tidy(w_lda, matrix = "beta")
head(w_topics)
# A tibble: 6 x 3
topic term beta
<int> <chr> <dbl>
1 1 "\"\xb7\xd6\xc1\xd1\"," 0.000405
2 2 "\"\xb7\xd6\xc1\xd1\"," 0.000618
3 1 "\"\xb8\xc9\xc2\xef\")" 0.0000184
4 2 "\"\xb8\xc9\xc2\xef\")" 0.0000400
5 1 "\"\xbb\xb9\"," 0.00869
6 2 "\"\xbb\xb9\"," 0.00264