R: найти наиболее часто встречающуюся группу слов в корпусе

Есть ли простой способ, как найти не только наиболее часто встречающиеся термины, но и выражения (то есть более одного слова, группы слов) в текстовом корпусе в R?

Используя пакет tm, я могу найти такие наиболее часто встречающиеся термины:

tdm <- TermDocumentMatrix(corpus)
findFreqTerms(tdm, lowfreq=3, highfreq=Inf)

Я могу найти слова, связанные с наиболее часто встречающимися словами, используя функцию findAssocs(), поэтому я мог вручную сгруппировать эти слова. Но как найти количество вхождений этих групп слов в корпус?

Спасибо


person Ollaws    schedule 14.05.2014    source источник


Ответы (1)


Если я правильно помню, вы можете построить TermDocumentMatrix биграмм (2 слова, которые всегда встречаются вместе) с помощью weka, а затем обрабатывать их по мере необходимости.

library("tm") #text mining
library("RWeka") # for tokenization algorithms more complicated than single-word


BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2))

tdm <- TermDocumentMatrix(corpus, control = list(tokenize = BigramTokenizer))

# process tdm 
# findFreqTerms(tdm, lowfreq=3, highfreq=Inf)
# ...

tdm <- removeSparseTerms(tdm, 0.99)
print("----")
print("tdm properties")
str(tdm)
tdm_top_N_percent = tdm$nrow / 100 * topN_percentage_wanted

Альтернативно,

#words combinations that occur at least once together an at most 5 times
wmin=1
wmax = 5

BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = wmin, max = wmax))

Иногда полезно сначала выполнить определение корней слов, чтобы получить «лучшие» группы слов.

person knb    schedule 16.05.2014