【问题标题】:R: find most frequent group of words in corpusR:在语料库中找到最频繁的词组
【发布时间】:2014-05-14 13:08:35
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

    标签: tm corpus word-frequency


    【解决方案1】:

    如果我没记错的话,你可以使用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
    

    或者,

    #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))
    

    有时为了获得“更好”的词组,首先执行词干提取会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 2020-10-28
      相关资源
      最近更新 更多