R: Пакет TM Поиск частоты слов из одного столбца

Недавно я пытался найти частоту слов в одном столбце в data.frame в R, используя пакет tm. Хотя сам data.frame имеет много столбцов, основанных как на числах, так и на символах, меня интересует только один столбец, представляющий собой чистый текст. Хотя у меня не было проблем с очисткой самого текста, как только я пытаюсь подтянуть частоту слов с помощью команды findFreqTerms(), я получаю следующую ошибку:

Error: inherits(x, c("DocumentTermMatrix", "TermDocumentMatrix")) is not TRUE

Я понял это, чтобы сказать, что мне нужно преобразовать мои данные либо в DocumentTermMatrix, либо в TermDocumentMatrix, однако, поскольку у меня есть только один столбец, с которым я работаю, я также не могу его создать. Ошибка ниже:

> Test <- DocumentTermMatrix(Types)
Error in UseMethod("TermDocumentMatrix", x) : 
  no applicable method for 'TermDocumentMatrix' applied to an object of class "c('PlainTextDocument', 'TextDocument')"

Есть ли способ получить подсчет частоты из одного столбца? Я вставил свой полный код ниже с объяснениями для каждого шага, который я предпринял. Я ценю любую помощь, которую вы все можете мне оказать.

> # extracting the single column I wish to analyse from the data frame
  Types <-Expenses$Types
> # lower all cases
  Types <- tolower(Types)
> # remove punctuation
  Types <- removePunctuation(Types)
> # remove numbers
  Types <- removeNumbers(Types)
> # attempting to find word frequency
  findFreqTerms(Types)
Error: inherits(x, c("DocumentTermMatrix", "TermDocumentMatrix")) is not TRUE

person Aenderung    schedule 25.02.2015    source источник


Ответы (2)


Вы можете найти частоту терминов непосредственно из вашей текстовой переменной, если вы используете пакет qdap:

library(qdap)
a <- c("hello man", "how's it going", "just fine", "really fine", "man o man!")
a <- tolower(a)
a <- removePunctuation(a)
a <- removeNumbers(a)
freq_terms(a) # there are several additional arguments
  WORD   FREQ
1 man       3
2 fine      2
3 going     1
4 hello     1
5 hows      1
6 it        1
7 just      1
8 o         1
9 really    1
person lawyeR    schedule 25.02.2015

Сначала вам нужна матрица корпуса и терминологического документа...

library(tm)
a <- c("hello man", "how's it going", "just fine")
a <- tolower(a)
a <- removePunctuation(a)
a <- removeNumbers(a)
myCorpus <- Corpus(VectorSource(a))
myTDM <- TermDocumentMatrix(myCorpus)
findFreqTerms(myTDM)
person cory    schedule 25.02.2015