我使用以下代码将数据帧转换为整洁的数据框:
replace_reg <- "https://t.co/[A-Za-z\\d]+|http://[A-Za-z\\d]+|&|<|>|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”,并删除特殊字符。
我正在尝试使用德语单词的整洁数据框来进行文本分析和术语频率。
有人能指出我正确的方向来解决这个问题吗?
答案 0 :(得分:2)
您需要将括号表达式中的所有A-Za-z\\d
替换为[:alnum:]
。
POSIX字符类[:alnum:]
匹配Unicode字母和数字。
replace_reg <- "https://t.co/[[:alnum:]]+|http://[[:alnum:]]+|&|<|>|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数字。