Найти частое слово и его значение в документе - PullRequest
0 голосов
/ 29 сентября 2018

Итак, мне нужно найти самое частое слово и его значение в DTM.

library('tm') 
library("SnowballC")  
my.text.location "C:/Users/mrina/OneDrive/Documents/../"
apapers <- VCorpus(DirSource(my.text.location)) class(apapers)
apapers <- tm_map(apapers, removeNumbers) 
apapers <- tm_map(apapers, removePunctuation) 
apapers <- tm_map(apapers, stemDocument, language ="en")

Это для очистки Корпуса и нижеследующего создания DTM и поиска частоты.

ptm.tf <- DocumentTermMatrix(apapers) 
dim(ptm.tf)
findFreqTerms(ptm.tf)

Есть ли способ собрать частое слово и значение частоты вместе?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

findFreqTerms - это не что иное, как использование строк в разреженной матрице.Функция использует слэм row_sums.Чтобы вести счет со словами, мы можем использовать те же функции.Пакет slam устанавливается при установке tm, поэтому функции доступны, если вы загружаете slam или вызываете их через slam::.Использование функций из шлема лучше, поскольку они работают с разреженными матрицами.База rowsums преобразует разреженную матрицу в плотную матрицу, которая медленнее и использует намного больше памяти.

# your code.....
ptm.tf <- DocumentTermMatrix(apapers) 

# using col_sums since it is a document term matrix. If it is a term document matrix use row_sums
frequency <- slam::col_sums(ptm.tf)
# Filtering like findFreqTerms. Find words that occur 10 times or more. 
frequency <- frequency[frequency >= 10]

# turn into data.frame if needed:
frequency_df <- data.frame(words = names(frequency ), freq = frequency , row.names = NULL)
0 голосов
/ 29 сентября 2018

Если вы не возражаете против использования другого пакета, это должно сработать (вместо создания объекта DTM):

library('tm') 
library("SnowballC")  
my.text.location "C:/Users/mrina/OneDrive/Documents/../"
apapers <- VCorpus(DirSource(my.text.location)) 
class(apapers)
apapers <- tm_map(apapers, removeNumbers) 
apapers <- tm_map(apapers, removePunctuation) 
apapers <- tm_map(apapers, stemDocument, language ="en")

# new lines here
library(qdap)
freq_terms(apapers)                ^

Создано в 2018-09-28 пакетом Представить (v0.2.0).

...