Это задание лучше подходит для квантеды, а не тм. Ваша функция создает список и удаляет все из корпуса. Используя Quanteda, вы можете просто использовать команды Quanteda, чтобы получить все, что вы хотите.
Поскольку вы не предоставили никаких воспроизводимых данных, я буду использовать набор данных, который поставляется с Quanteda. Комментарии над кодом объясняют, что происходит. Наиболее важной функцией в этом коде является dfm_select
. Здесь вы можете использовать разнообразный набор шаблонов выбора, чтобы найти термины в тексте.
library(quanteda)
# load corpus
my_corpus <- corpus(data_corpus_inaugural)
# create document features (like document term matrix)
my_dfm <- dfm(my_corpus)
# dfm_select can use regex selections to select terms
my_dfm_punct <- dfm_select(my_dfm,
pattern = "[[:alnum:]]{1,}[[:punct:]]{1,}?[[:alnum:]]{1,}",
selection = "keep",
valuetype = "regex")
# show frequency of selected terms.
head(textstat_frequency(my_dfm_punct))
feature frequency rank docfreq group
1 fellow-citizens 39 1 19 all
2 america's 35 2 11 all
3 self-government 30 3 16 all
4 world's 24 4 15 all
5 nation's 22 5 13 all
6 god's 15 6 14 all