我想为 utf-8 中的非英语文本创建一个词云(实际上,它是哈萨克语)。
文本在 tm 包的检查功能中显示得绝对正确。
但是,当我搜索词频时,所有内容都显示不正确:
问题在于文本显示为编码字符而不是单词。西里尔字符显示正确。结果,词云变得一团糟。
是否可以以某种方式将编码分配给 tm 函数?我试过this https://stackoverflow.com/questions/18677571/assigning-arabic-text-to-r-variables,但文本本身没问题,问题在于使用 tm 包。
让示例文本为:
Ол арман – יлем елдерімен терезесі тейс Латынас Лкрып, יлем картасынан ойып тирып орын алатын Т֙уелсіз Мемлекет ат any еді。
Ол арман – тикармысы бакуаты, татіні тишзу холу еді, гртейне сеніммен харайтын бакытты Ел болу еді.
Біз армандарды акикатка айналдырдыка。 Маладык ЕлдіУ іргетасын ЛаладыЛ。
Мен ЛоГамда «Казак елінік идеясы Ландай болуы керек?» жен сауал жиі талий тали сетінін куріп жирмін。 Біз Яшін болашаГымызка бакдар ететін,блтты бйыстырып,жетелейтін идея бар。 Ол – Муйсгілік Ел идеясы。
Туелсіздікпен бірге халкымыз Муйгілік Мбраттарына Лол жеткізді.
我的简单代码是这样的:
(基于onertipaday.blogspot.com http://onertipaday.blogspot.com/2011/07/word-cloud-in-r.html教程:)
require(tm)
require(wordcloud)
text<-readLines("text.txt", encoding="UTF-8")
ap.corpus <- Corpus(DataframeSource(data.frame(text)))
ap.corpus <- tm_map(ap.corpus, removePunctuation)
ap.corpus <- tm_map(ap.corpus, tolower)
ap.tdm <- TermDocumentMatrix(ap.corpus)
ap.m <- as.matrix(ap.tdm)
ap.v <- sort(rowSums(ap.m),decreasing=TRUE)
ap.d <- data.frame(word = names(ap.v),freq=ap.v)
table(ap.d$freq)
1 2
44 4
findFreqTerms(ap.tdm, lowfreq=2)
[1] "<U+04D9>лем" "арман" "еді"
[4] "м<U+04D9><U+04A3>гілік"
这些词应该是:“טлем”、арман”、“еді”、“м֙Угілік”。它们正确显示在inspect(ap.corpus)
output.
非常感谢任何帮助! :)