R:找到语料库中最常见的单词组

Oll*_*aws 4 corpus tm word-frequency

有没有一种简单的方法不仅可以在 R 的文本语料库中找到最常见的术语,还可以找到表达式(例如多个单词、一组单词)?

使用 tm 包,我可以找到最常见的术语,如下所示:

tdm <- TermDocumentMatrix(corpus)
findFreqTerms(tdm, lowfreq=3, highfreq=Inf)
Run Code Online (Sandbox Code Playgroud)

我可以使用函数找到与最常见单词相关的单词findAssocs(),因此我可以手动对这些单词进行分组。但是我怎样才能找到这些词组在语料库中出现的次数呢?

谢谢

knb*_*knb 5

如果我没记错的话,您可以使用 weka 构造一个 Bigrams(总是一起出现的 2 个单词)的 TermDocumentMatrix,然后根据需要处理它们

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
Run Code Online (Sandbox Code Playgroud)

或者,

#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))
Run Code Online (Sandbox Code Playgroud)

有时,首先执行词干提取有助于获得“更好”的词组。