столбцы слов, появляющиеся в тексте из столбца фрейма данных, с их частотой в R

У меня есть вопрос, связанный с этим старым сообщением: R Text Mining — как преобразовать тексты в столбце фрейма данных R в несколько столбцов с частотами слов?

Я пытаюсь имитировать что-то точно похожее на то, что было опубликовано по ссылке выше, используя R, однако, со строками, содержащими числовые символы.

Предположим, что res — это мой фрейм данных, определяемый:

library(qdap)
x1 <- as.factor(c( "7317 test1 fool 4258 6287" , "thi1s is 6287 test funny text1 test1", "this is test1 6287 text1 funny fool"))
y1 <- as.factor(c("test2 6287", "this is test text2", "test2 6287"))
z1 <- as.factor(c( "test2 6287" , "this is test 4258 text2 fool", "test2 6287"))
res <- data.frame(x1, y1, z1)

Когда я вычисляю частоты слов, определенных с помощью этих команд,

freqs <- t(wfm(as.factor(res$x1), 1:nrow(res), char.keep=TRUE))
abcd <- data.frame(res, freqs, check.names = FALSE)

abcd игнорирует 7317, 4258, 6287 и даже цифру 1 из test1 и считает частоты.

В первой строке столбца x1 1 удаляется из test1 и считается за слово. Точно так же is отделяется от thi1s и считается за слово. Однако то, что я хочу, это test1. Точно так же строки 7317, 4258 и т. д., сохраненные как строки, должны считаться словами и отображаться в таблице данных с их частотой. Что нужно дополнительно разместить в коде?


person Ray    schedule 04.03.2020    source источник


Ответы (1)


Вам нужно добавить следующее в оператор freqs: removeNumbers = FALSE. Функция wfm вызывает несколько других функций, и одна из них — tm::TermDocumentMatrix. Здесь значение по умолчанию, предоставленное wfm для этой функции, таково, что removeNumbers = TRUE. Так что это должно быть установлено на FALSE.

Код:

freqs <- t(wfm(as.factor(res$x1), 1:nrow(res), char.keep=TRUE, removeNumbers = FALSE))
abcd <- data.frame(res, freqs, check.names = FALSE)
person phiver    schedule 04.03.2020