我正在做一些涉及葡萄牙语文本的文本挖掘。我的一些自定义文本挖掘功能中也有其他特殊字符。
我不是这个主题的专家。当我的许多字符开始显示不正确时,我认为我需要更改文件编码。我试过了
它们都没有改善字符的显示。我需要不同的编码还是我的方法都错了?
例如,当我尝试从GitHub阅读这个停用词列表时:
stop_words <- read.table("https://gist.githubusercontent.com/alopes/5358189/raw/2107d809cca6b83ce3d8e04dbd9463283025284f/stopwords.txt")
它们是这样出来的:
tail(stop_words, 17)
206 tivéramos
207 tenha
208 tenhamos
209 tenham
210 tivesse
211 tivéssemos
212 tivessem
213 tiver
214 tivermos
215 tiverem
216 terei
217 terá
218 teremos
219 terão
220 teria
221 terÃamos
222 teriam
我也用stringsAsFactors=F
尝试过。
我不会说葡萄牙语,但我的直觉告诉我,欧元和版权符号不在他们的字母表中。此外,它似乎正在将一些重音小写的e改为大写的不同重音的A。
以防有帮助:
Sys.getlocale()
[1]"LC_COLLATE=English_United;LC_CTYPE=English_United;LC_MONETARY=English_United;LC_NUMERIC=C;LC_TIME=English_United。
我还尝试更改区域设置,stri_encode(stop_words$V1, "", "UTF-8")
和尾(enc2native(as. vector(stop_words[,1])),17)
。
我是葡萄牙人,我有同样的问题,虽然我的编码是
Sys.getlocale()
[1] "LC_COLLATE=Portuguese_Portugal.1252;LC_CTYPE=Portuguese_Portugal.1252;LC_MONETARY=Portuguese_Portugal.1252;LC_NUMERIC=C;LC_TIME=Portuguese_Portugal.1252"
所以我在网上查了一下,在SO找到了这个提示。
stop_words2 <- sapply(stop_words, as.character)
它起作用了。但我使用read. table(…,stringsAs因素=FALSE)
读取数据。
你似乎对utf-8进行了双重编码。
这是utf-8中字符的图表:http://www.i18nqa.com/debug/utf8-debug.html.
现在查看“实际”列。
如您所见,打印的字符似乎代表实际值而不是编码值。
一个临时解决方案是解码一层utf-8。
更新:
安装R后,我试图重现问题。
这是我的控制台日志,并有一个简单的解释:
首先,我复制粘贴了你的代码:
> stop_words <- read.table("https://gist.githubusercontent.com/alopes/5358189/raw/2107d809cca6b83ce3d8e04dbd9463283025284f/stopwords.txt")
> tail(stop_words, 17)
V1
206 tivéramos
207 tenha
208 tenhamos
209 tenham
210 tivesse
211 tivéssemos
212 tivessem
213 tiver
214 tivermos
215 tiverem
216 terei
217 terá
218 teremos
219 terão
220 teria
221 terÃamos
222 teriam
好的,所以它没有按原样工作,所以我在read. table函数的末尾添加了编码参数。当我尝试使用小写utf-8时,结果如下:
> stop_words <- read.table("https://gist.githubusercontent.com/alopes/5358189/raw/2107d809cca6b83ce3d8e04dbd9463283025284f/stopwords.txt",encoding="utf-8")
> tail(stop_words, 17)
V1
206 tivéramos
207 tenha
208 tenhamos
209 tenham
210 tivesse
211 tivéssemos
212 tivessem
213 tiver
214 tivermos
215 tiverem
216 terei
217 terá
218 teremos
219 terão
220 teria
221 terÃamos
222 teriam
最后,我使用了大写字母的UTF-8,现在它可以正常工作了:
> stop_words <- read.table("https://gist.githubusercontent.com/alopes/5358189/raw/2107d809cca6b83ce3d8e04dbd9463283025284f/stopwords.txt", encoding = "UTF-8")
> tail(stop_words, 17)
V1
206 tivéramos
207 tenha
208 tenhamos
209 tenham
210 tivesse
211 tivéssemos
212 tivessem
213 tiver
214 tivermos
215 tiverem
216 terei
217 terá
218 teremos
219 terão
220 teria
221 teríamos
222 teriam
您可能忘记将编码参数放在read. table的末尾,或者尝试使用小写而不是大写。我由此理解的是,如果您没有指定R已经在其中编码,则R会尝试将字符转换为UTF-8。