Удаление слов и символов из текста в R

#r #text #stringr #tm

#r #текст #stringr #tm

Вопрос:

Рассмотрим следующий пример. Возможно ли это удалить stopwords из text ?

 library(tm)
text <- c("this is exercise for text mining ≤µm ≥°f ±μgm")
stopwords <- ("≤µm", "≥°f", "±μgm")
  

Ответ №1:

Вы можете попробовать gsub , как показано ниже

 gsub(paste0(stopwords, collapse = "|"),"",text)
  

Ответ №2:

Во-первых, у вас есть некоторые ошибки в строках вашего примера. text отсутствуют кавычки и stopwords отсутствуют c перед скобками.

 text <- c("this is exercise for text mining ≤µm ≥°f ±μgm")
stopwords <- c("≤µm", "≥°f", "±μgm")
  

Вы можете удалить значения в стоп-словах из своей строки, используя stringr, как показано ниже:

 library(stringr)
str_replace_all(text, paste(stopwords, collapse = "|"), "")
  

Ответ №3:

Поскольку вы собираетесь выполнять интеллектуальный анализ текста, возможно, вам захочется преобразовать входную строку в вектор слов. Если это так, вы можете легко удалить стоп-слова, установив подмножество.

 library(stringr)
text <- c("this is exercise for text mining ≤µm ≥°f ±μgm")
stopwords <- c("≤µm", "≥°f", "±μgm")
text <- unlist(str_split(text, " "))
text[!(sapply(text, function (x) any(str_detect(stopwords, x))))]
  

Если в вашей работе вы помещаете свои слова в data.frame или аналогичный, то есть другой способ:

 library(dplyr)
library(stringr)
text <- c("this is exercise for text mining ≤µm ≥°f ±μgm")
stopwords <- c("≤µm", "≥°f", "±μgm")
text <- unlist(str_split(text, " "))
data.frame(words = text) %>% anti_join(data.frame(words = stopwords))