Вы можете токенизировать слова.То есть извлекать отдельные слова.Как только они извлечены, вы можете проверить токены на совпадения и удалить их.Здесь вам может помочь пакет stringr
#sample text
text <- "hola, me llamo struggles. El package 'stringr' puede resolver la pregunta."
#normalize text by making everything lowercase
lower_text <- stringr::str_to_lower(text)
#split text at anything that isn't a number or a letter
tokens <- stringr::str_split(lower_text, "[^[:alnum:]]+")
#create a list of stop words
stop_words <- c('la', 'las', 'el', 'ellos')
#remove words that are in the stop words vector
tokens[[1]][!tokens[[1]] %in% stop_words]
Поскольку вы, вероятно, будете делать это с большим количеством твитов, я предлагаю вам также взглянуть на пакет tidytext
и прочитать учебникhttps://www.tidytextmining.com/
df <- data.frame(
tweet = text,
tweet_id = 1234,
user = 'struggles',
stringsAsFactors = F
)
twitter_tokens <- tidytext::unnest_tokens(df, word, tweet)
clean_twitter_tokens <- dplyr::filter(twitter_tokens, !word %in% stop_words)
, и это даст вам что-то вроде
tweet_id user word
1 1234 struggles hola
2 1234 struggles me
3 1234 struggles llamo
4 1234 struggles struggles
5 1234 struggles package
6 1234 struggles stringr
7 1234 struggles puede
8 1234 struggles resolver
9 1234 struggles pregunta
И если вы хотите объединить его в одном предложении, то следующее вернет его:
lean_twitter_tokens %>%
dplyr::group_by(tweet_id, user) %>%
dplyr::summarize(tweet = stringr::str_c(word, collapse = ' '))
давая вам
tweet_id user tweet
<dbl> <chr> <chr>
1 1234 struggles hola me llamo struggles package stringr puede resolver pregunta