整洁的数据框:德文字符被删除

Tidy data frame: German characters being removed

我正在使用以下代码将数据框转换为整齐的数据框:

replace_reg <- "https://t.co/[A-Za-z\d]+|http://[A-Za-z\d]+|&amp;|&lt;|&gt;|RT|https"
unnest_reg <- "([^A-Za-z_\d#@']|'(?![A-Za-z_\d#@]))"
tidy_tweets <- tweets %>% 
filter(!str_detect(text, "^RT")) %>%
mutate(text = str_replace_all(text, replace_reg, "")) %>%
unnest_tokens(word, text, token = "regex", pattern = unnest_reg) %>%
filter(!word %in% custom_stop_words2$word,
     str_detect(word, "[a-zäöüß]"))

然而,这会产生一个整洁的数据框,其中德语字符 üäöß 从新创建的单词列中删除,例如,"wählen" 变成两个单词:"w" 和 "hlen,"并且特殊字符被删除。

我正在尝试获取一个整洁的德语单词数据框来进行文本分析和术语频率。

有人可以为我指出正确的方向来解决这个问题吗?

您需要将括号表达式中的所有 A-Za-z\d 替换为 [:alnum:]

POSIX 字符 class [:alnum:] 匹配 Unicode 字母和数字。

replace_reg <- "https://t.co/[[:alnum:]]+|http://[[:alnum:]]+|&amp;|&lt;|&gt;|RT|https"
unnest_reg <- "([^[:alnum:]_#@']|'(?![[:alnum:]_#@]))"

如果您将这些模式与 stringr 函数一起使用,您也可以考虑使用 [\p{L}\p{N}],例如

unnest_reg <- "([^\p{L}\p{N}_#@']|'(?![\p{L}\p{N}_#@]))"

其中 \p{L} 匹配任何 Unicode 字母,\p{N} 匹配任何 Unicode 数字。