r - 在文本分析中使用德语字符(ü、ö、ä 等) (R)
问题描述
我正在用 R 进行一些文本挖掘。我要分析的文本是德语。
问题是德语字符在文本本身或结果中都没有正确显示。
我正在使用 Mac OS。
我在这里找到了类似的线程并尝试了建议的解决方案:
Sys.setlocale("LC_ALL", "de_DE.UTF-8")
似乎改变了语言(即不给出错误消息),但字符仍然显示不正确,例如Erste-Hilfe-Ma\xa7nahmen而不是Erste-Hilfe-Maßnahmen。
text <- readLines("Erste Hilfe.txt", encoding="de_DE.UTF-8")
结果:Erste-Hilfe-Ma\xa7nahmen
text <- readLines("Erste Hilfe.txt", encoding="ISO/IEC 8859-15")
结果:Erste-Hilfe-Ma\xa7nahmen
您还有其他解决方案吗?
解决方案
这在一定程度上取决于您要对文件执行的操作,但通常stri_read_lines()
从包stringi
中可以很好地处理变音符号,即使在保留编码的情况下也是如此"auto"
library(stringi)
lines <- stri_read_lines("Erste Hilfe.txt", encoding = "auto")
如果显示lines
矢量后还是有问题,可以尝试检测编码:
lines_raw <- stri_read_raw("Erste Hilfe.txt")
stri_enc_detect(lines_raw)
输出将如下所示:
Encoding Language Confidence
1 UTF-8 1.00
2 windows-1252 de 0.55
3 Big5 zh 0.44
4 windows-1254 tr 0.25
5 windows-1250 hu 0.14
6 UTF-16BE 0.10
7 UTF-16LE 0.10
8 GB18030 zh 0.10
9 IBM424_rtl he 0.01
在这种情况下,我读入了一个 UTF-8 文本文件,其中包含许多变音符号,并且 stringi 正确猜测编码没有问题。但是,如果置信度不那么高,您可能想尝试一些编码。
我也可以在控制台中毫无问题地显示它(尽管已将语言环境设置为 en_GB.UTF-8),但在某些情况下,这可能会导致问题。如果您想通过读取文件来检查您的编码是否真的被破坏,或者控制台可能无法显示它,您可以尝试将这些行写回文件并检查:
stri_write_lines(lines, "Erste Hilfe_new.txt")
您也可以尝试使用变音符号创建一个字符向量,然后查看它是否正确显示:
"äöü"
通常,版本 0.93 以上的 RStudio 不应该有这个问题。希望这可以帮助。
编辑:
在评论中,事实证明文本的来源仍然可以在互联网上找到——我没有考虑过这种可能性。经常发生编码问题是因为一些编辑器在保存文件时强制使用某种编码。如果源代码可在线获得,您可以使用rvest
包直接将文本读入 R:
library(rvest)
lines <- read_html("https://www.zeit.de/wissen/2018-10/erste-hilfe-kinder-rotes-kreuz-kurs-ersthelfer-notfall/komplettansicht") %>%
html_nodes(".article__item") %>%
html_text()
> grep("Maßnahmen", lines, value = TRUE)[1]
[1] "In vielen europäischen Ländern, etwa in Belgien und Dänemark, steht Erste Hilfe spätestens in der Sekundarstufe im Schullehrplan. Auch Großbritannien arbeitet an einem Gesetzesentwurf, der vorsieht, dass Grundschulkindern grundlegende Erste-Hilfe-Maßnahmen beigebracht werden. Die Schülerinnen und Schüler weiterführender Schulen sollen in Zukunft die Reanimation üben, also Beatmung und Herzdruckmassage.\n"
请参阅他们的文档以了解如何确定html_nodes
. 我通常使用 chrome 扩展选择器小工具。
推荐阅读
- hibernate - 如何使用休眠搜索填充 Elasticsearch
- python - 来自导入的 Python 包的语法错误
- ios - iOS - 错误消息“设备上没有剩余空间”
- excel - Excel 插件无法在 Apple 的硅 M1 处理器机器上运行
- jquery - 动画未完成时,Anime.js svg morph 动画悬停不反转
- api - BigCartel - 显示可供购买的数量
- firebase - 我可以使用 fcm 向其他用户发送推送通知吗?
- python - 如何从不同的 txt 文件在 matplotlib 中同时制作几个动画图
- java - Drools 决策表动作执行顺序
- eclipse - Eclipse 2020-03:验证 Maven 项目时出现 java.lang.StackOverflowError