在文本分析(R)中使用德语字符(ü,ö,ä等)

时间:2018-11-03 18:43:46

标签: r text character-encoding

我正在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

您还有其他解决方案吗?

2 个答案:

答案 0 :(得分:3)

这取决于您对文件的处理方式,但通常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

输出看起来像这样:

stri_write_lines(lines, "Erste Hilfe_new.txt")

在这种情况下,我读了一个UTF-8文本文件,里面有许多变音符号,并且stringi正确猜测编码没有问题。但是,如果置信度不太高,您可能要尝试一些编码。

我也可以在控制台中毫无问题地显示它(尽管将语言环境设置为en_GB.UTF-8),但是在某些情况下,这可能会引起问题。如果您想通过读取文件来检查编码是否真的被破坏了,或者控制台是否可能无法显示它,则可以尝试将这些行写回到文件中并检查:

"äöü"

您也可以尝试使用变音符号创建一个字符向量,然后看看它是否正确显示:

rvest

通常,0.93版以上的RStudio应该不会有任何问题。希望这会有所帮助。

编辑:

在评论中,事实证明该文本的源仍可从Internet上获得-我没有考虑过这种可能性。经常会发生编码问题,因为某些编辑器在保存文件时会强制使用某种编码。但是,如果该源在线可用,则可以使用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" 包将文本直接读入R:

html_nodes

请参考他们的文档,以了解如何确定pandoc -f html+raw_html -t markdown 的正确输入。我通常使用chrome扩展程序selectorgadget。

答案 1 :(得分:0)

我已经尝试了@JBGruber(stringi)提出的第一个选项,但没有成功。

最终,以下措施的组合提供了帮助:

  • Sys.setlocale(“ LC_ALL”,“ en_US.UTF-8”)
  • 在R Studio中,将File> Reopen with Encoding更改为UTF-8
  • 按照UTF-8编码再次明确保存文件

我已经尝试了许多解决方法,包括独立完成上述所有步骤,但是只有一个方法可以提供帮助。