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

是否有一个R函数可以通过自定义字典进行清理,r,text-mining,data-cleaning,sentiment-analysis,R,Text Mining,Data Cleaning,Sentiment Analysis,在清理R中的数据时,我想使用自定义词典(超过400000个单词)。我已经将词典作为一个大字符列表加载,并且我正在尝试使用它,以便我的数据(VCorpus)中的内容仅包含词典中的单词。 例如: #[1] "never give up uouo cbbuk jeez" 将成为 #[1*] "never give up" 因为“永不”、“放弃”和“放弃”都在自定义词典中。 我以前尝试过以下方法: #Reading the custom diction

在清理R中的数据时,我想使用自定义词典(超过400000个单词)。我已经将词典作为一个大字符列表加载,并且我正在尝试使用它,以便我的数据(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)),]
#作为函数读取自定义词典

english.words由于您使用的是数据帧,因此可以尝试以下方法:

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)
库(tidyverse)
图书馆(tidytext)
dat%
嵌套(文本=单词)%>%
变异(文本=映射(文本,未列出),
text=map_chr(text,paste,collapse=“”))
}
保持功能(dat,字保持)

由于您使用的是数据帧,因此可以尝试以下方法:

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)
库(tidyverse)
图书馆(tidytext)
dat%
嵌套(文本=单词)%>%
变异(文本=映射(文本,未列出),
text=map_chr(text,paste,collapse=“”))
}
保持功能(dat,字保持)

您可以将句子拆分为单词,只保留词典中的单词,然后将它们再次粘贴到一个句子中

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

DF1$Text1你可以将句子拆分成单词,只保留字典中的单词,然后再将它们粘贴到一个句子中

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

DF1$Text1谢谢你,Ronak!代码运行得非常好,我正在试图找出如何为VCorpus实现此代码-有什么建议吗?我尝试了一些类似于:VCorpus嗯…不幸的是,我没有太多的VCorpus经验,所以我不知道那里到底会缺少什么。不用担心,谢谢你!我对堆栈溢出不太熟悉,但是我是否适合打开一个新的问题来寻求有关此主题的帮助(或者我是否应该编辑此原始帖子)?是的,您可以在同一主题上提出一个新问题。每个问题都应该集中在一个特定的任务上。谢谢你,罗纳克!代码运行得非常好,我正在试图找出如何为VCorpus实现此代码-有什么建议吗?我尝试了一些类似于:VCorpus嗯…不幸的是,我没有太多的VCorpus经验,所以我不知道那里到底会缺少什么。不用担心,谢谢你!我对堆栈溢出不太熟悉,但是我是否适合打开一个新的问题来寻求有关此主题的帮助(或者我是否应该编辑此原始帖子)?是的,您可以在同一主题上提出一个新问题。每个问题都应该集中在一个特定的任务上。谢谢你,马丁!我将尝试使用您的解决方案以及Ronak的解决方案来优化代码。谢谢Martin!我将尝试使用您的解决方案以及Ronak的解决方案来优化代码。