【发布时间】:2014-09-15 05:20:27
【问题描述】:
我只是想从俄语的 UTF-8 编码文本创建一个语料库。问题是,tm 包中的 Corpus 方法没有正确编码字符串。
这是我的问题的可重现示例:
加载俄语文本:
> data <- c("Renault Logan, 2005","Складское помещение, 345 м²",
"Су-шеф","3-к квартира, 64 м², 3/5 эт.","Samsung galaxy S4 mini GT-I9190 (чёрный)")
创建一个向量源:
> vs <- VectorSource(data)
> vs # outputs correctly
然后,创建语料库:
> corp <- Corpus(vs)
> inspect(corp) # output is not encoded properly
我得到的输出是:
> inspect(corp)
<<VCorpus (documents: 5, metadata (corpus/indexed): 0/0)>>
[[1]]
<<PlainTextDocument (metadata: 7)>>
Renault Logan, 2005
[[2]]
<<PlainTextDocument (metadata: 7)>>
Ñêëàäñêîå ïîìåùåíèå, 345 ì<U+00B2>
[[3]]
<<PlainTextDocument (metadata: 7)>>
Ñó-øåô
[[4]]
<<PlainTextDocument (metadata: 7)>>
3-ê êâàðòèðà, 64 ì<U+00B2>, 3/5 ýò.
[[5]]
<<PlainTextDocument (metadata: 7)>>
Samsung galaxy S4 mini GT-I9190 (÷¸ðíûé)
为什么输出不正确?似乎没有任何选项可以在语料库方法上设置编码。有没有办法在事后设置它?我试过这个:
> title_corpus <- tm_map(title_corpus, enc2utf8)
Error in FUN(X[[1L]], ...) : argumemt is not a character vector
但是,它的错误如图所示。
【问题讨论】:
-
我无法复制。当我运行
inspect时,它看起来和data中的一样。你使用的是什么版本的tm和 R(sessionInfo()应该告诉你)。 -
@MrFlick 我正在使用
R version 3.1.0 (2014-04-10) Platform: x86_64-w64-mingw32/x64 (64-bit)和tm_0.6。我在 Windows 上。 -
好的。我在使用 3.0.2 的计算机,所以我无法获得最新版本的
tm。但是语料库没有编码参数,但 VectorSource 应该。VectorSource(data, encoding="UTF-8")会发生什么。有什么不同吗? -
上面写着,
Error in VectorSource(raw_test$title, encoding = "UTF-8") : unused argument (encoding = "UTF-8") -
呃。由于某种原因,它似乎确实从最新版本的
tm中删除了。最后一枪,VectorSource(enc2utf8(data))。如果这不起作用,也许我可以在我的另一台计算机上尝试。
标签: r encoding utf-8 tm corpus