столбцы слова, появляющиеся в текстовом столбце фрейма данных с их частотой в R - PullRequest
0 голосов
/ 04 марта 2020

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

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

Предположим, что 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 и считается как слово. Точно так же, это вырезано из этого и считается как слово. Тем не менее, я хочу test1. Аналогично, строки 7317, 4258 и c, хранящиеся в виде строк, должны учитываться как слова и появляться в таблице данных с их частотами. Что должно быть размещено дополнительно в коде?

1 Ответ

1 голос
/ 04 марта 2020

Вам нужно добавить следующее в выражение 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)
...