如何在R的tidytext中为德法多语言文本配置停用词生成Ngram
多语言停用词配置方案
tidytext的stop_words数据集本身就包含多种语言的停用词,你只需要筛选出德语(language = "de")、法语(language = "fr")和原有英文的停用词,合并成一个去重的列表,替换原代码里的停用词判断即可。
步骤1:构建多语言停用词表
先加载所需R包,筛选并合并目标语言的停用词:
library(tidytext) library(dplyr) # 合并英文、德语、法语停用词并去重 multi_lang_stopwords <- stop_words %>% filter(language %in% c("en", "de", "fr")) %>% select(word) %>% distinct()
步骤2:修改原Ngram生成代码
把原代码中调用stop_words$word的部分,替换为我们构建的多语言停用词表:
text_graph <- text_df %>% unnest_tokens(bigram, text, token = "ngrams", n = 2) %>% separate(bigram, c("word1", "word2"), sep = " ") %>% filter(!word1 %in% multi_lang_stopwords$word) %>% filter(!word2 %in% multi_lang_stopwords$word) %>% filter(!is.na(word1)) %>% filter(!is.na(word2)) %>% count(word1, word2, sort=TRUE) %>% filter(n >= 9) %>% graph_from_data_frame()
补充说明
- 如果文本中还有其他语言,可在
language %in% c()里添加对应语言代码(比如西班牙语是"es") - 用
distinct()是为了避免不同语言间出现重复停用词,减少冗余判断
内容的提问来源于stack exchange,提问作者Anton Kotov
相关产品推荐
相关产品推荐

