R tm 包 : utf-8 text

标签 r utf-8 tm

我想为 utf-8 中的非英语文本创建一个 wordcloud(实际上,它是哈萨克语)。

文本在 tm 包的检查功能中显示绝对正确。
但是,当我搜索词频时,一切都显示不正确:

问题是文本是用编码字符而不是单词显示的。正确显示西里尔字符。结果,wordcloud 变得一团糟。

是否可以以某种方式将编码分配给 tm 函数?我试过 this ,但文字本身很好,问题在于使用 tm 包。

让示例文本为:

Ол арман – әлем елдерімен терезесі тең қатынас құрып, әлем картасынан ойып тұрып орын алатын Тәуелсіз Мемлекет атану еді. Ол арман – тұрмысы бақуатты, түтіні түзу ұшқан, ұрпағы ертеңіне сеніммен қарайтын бақытты Ел болу еді. Біз армандарды ақиқатқа айналдырдық. Мәңгілік Елдің іргетасын қаладық. Мен қоғамда «Қазақ елінің ұлттық идеясы қандай болуы керек?» деген сауал жиі талқыға түсетінін көріп жүрмін. Біз үшін болашағымызға бағдар ететін, ұлтты ұйыстырып, ұлы мақсаттарға жетелейтін идея бар. Ол – Мәңгілік Ел идеясы. Тәуелсіздікпен бірге халқымыз Мәңгілік Мұраттарына қол жеткізді.



我的简单代码是这样的:
(基于 onertipaday.blogspot.com 教程:)
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) 输出中正确显示。

非常感谢任何帮助! :)

最佳答案

问题来自默认的标记器。 tm默认使用 scan_tokenizer它会丢失编码(也许您应该联系维护者以添加编码参数)。

scan_tokenizer function (x) { scan(text = x, what = "character", quote = "", quiet = TRUE) }



一种解决方案是提供您自己的分词器来创建矩阵项。我正在使用 strsplit :
scanner <- function(x) strsplit(x," ")
ap.tdm <- TermDocumentMatrix(ap.corpus,control=list(tokenize=scanner))

然后你得到编码良好的结果:
findFreqTerms(ap.tdm, lowfreq=2)
[1] "арман"    "біз"      "еді"      "әлем"     "идеясы"   "мәңгілік"

关于R tm 包 : utf-8 text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251736/

相关文章:

java - 4 字节 UTF-8 序列的字节 2 无效,但仅在执行 JAR 时?

r - 文档术语矩阵中的最大术语长度

r - 无法使用 tm for R 中的 DataframeSource 从数据帧获取元数据

r - 应用 tm 方法时一个变量的多个结果 "stemCompletion"

java - 调试 UTF-8 解码是否正确?

推荐使用相同索引向量对两个向量进行子集化的方法

html - 单引号在浏览器中显示为菱形问号(无数据库或 PHP)

在标记化之前删除数字、标点符号、空格

r - 如何使用 ggplot2 绘制时间间隔数据

R Shiny conditionalPanel 在不满足条件时显示