是否有 R 函数可以通过自定义字典进行清理

Is there an R function to clean via a custom dictionary

在 R 中清理我的数据时,我想使用自定义词典(超过 400,000 个单词)。我已经将词典加载为一个大字符列表,我正在尝试使用它,以便我的内容数据 (VCorpus) 仅包含我字典中的单词。
例如:

#[1] "never give up uouo cbbuk jeez"  

会变成

#[1*] "never give up"  

因为“从不”、“放弃”和“向上”等词都在自定义词典中。 我之前尝试过以下方法:

#Reading the custom dictionary as a function
    english.words  <- function(x) x %in% custom.dictionary
#Filtering based on words in the dictionary
    DF2 <- DF1[(english.words(DF1$Text)),]

但我的结果是一个只有一个词的字符列表。有什么建议吗?

由于您使用的是数据框,因此您可以尝试这样做:

library(tidyverse)
library(tidytext)

dat<-tibble(text="never give up uouo cbbuk jeez")
words_to_keep<-c("never","give","up")

keep_function<-function(data,words_to_keep){
 data %>%
  unnest_tokens(word, text) %>% 
  filter(word %in% words_to_keep) %>%
  nest(text=word) %>%
  mutate(text = map(text, unlist), 
         text = map_chr(text, paste, collapse = " "))
  }

keep_function(dat,words_to_keep)

您可以将句子拆分成单词,只保留字典中的单词,然后将它们重新粘贴到一个句子中。

DF1$Text1 <- sapply(strsplit(DF1$Text, '\s+'), function(x) 
                    paste0(Filter(english.words, x), collapse = ' '))

这里我新建了一个名为Text1的专栏,里面只有英文单词,如果你想替换原来的专栏,你可以将输出保存在DF1$Text.