#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))