R包tm中的高效定制词干

时间:2018-02-14 11:31:52

标签: r nlp tm

这是一个(似乎)工作的代码,但我正在寻找缩短代码的方法。它实现了自定义词干或词汇分组。

# Simple reproducible example:
library(tm)
vec <- c("partners, very good", "partnery SOso Goodish!", "partna goodies", 
         "Good night")
corp <- Corpus(VectorSource(vec))
corp <- tm_map(corp, tolower)
corp <- tm_map(corp, removePunctuation)

# Custom stemming (how to shorten this code and avoid reptition)
corp <- tm_map(
  corp, 
  content_transformer(gsub), 
  pattern = "good[^ ]*", 
  replacement = "good"
)
corp <- tm_map(
  corp, 
  content_transformer(gsub), 
  pattern = "partn[^ ]*", 
  replacement = "partn"
)

背景:我不能使用标准的词干方法,因为:

  1. 我正在分析的文本语言没有词干算法 已经开发出来了。
  2. 我正在使用代码对与其密切相关的术语进行分组 意味着(但不是拼写)以便以后将数据提供给聚类算法。
  3. 编辑

    我已经达到了一个令人满意且更具可扩展性的解决方案,但我仍然觉得这不是应该这样做的方式......

    # Make a list of pattern/replacment pairs
    steml <- list(
      c("good[^ ]*", "good"),
      c("partn[^ ]*", "partn")
    )
    
    for (pair in seq_along(steml)) {
      corp <- tm_map(
        corp, 
        content_transformer(gsub), 
        pattern     = steml[[pair]][1],
        replacement = steml[[pair]][2]
      )
    }
    

0 个答案:

没有答案