在tm :: content_transformer()的上下文中,我如何使用mgsub?

时间:2017-07-14 08:40:05

标签: r tm qdap

qdap :: mgsub采用以下参数:

mgsub(x, pattern, replacement)

在库(tm)语料库转换中,您可以在content_transformer()中包含非tm函数,例如

corpus <- tm_map(corpus, content_transformer(tolower))

这是一个包含拼写错误的文字的数据框:

df <- data.frame(
  id = 1:2,
  sometext = c("[cad] appls", "bannanas")
)

这是一个数据框,其中包含拼写错误单词的自定义查找:

spldoc <- data.frame(
  incorrects = c("appls", "bnnanas"),
  corrects = c("apples", "bannanas")
)

使用mgsub和corpus以及content_transformer()的上下文我可以这样做:

wrongs <- select(spldoc, incorrects)[,1] %>% paste0("\\b",.,"\\b") # prepend and append \\b to create word boundary regex
rights <- select(spldoc, corrects)[,1]
df$sometext <- mgsub(wrongs, rights, df$sometext, fixed = F)

但我无法看到如何在函数内写入mgsub以传递给content_transformer()我的x参数与mgsub(x,pattern,replacement)中的相同?

1 个答案:

答案 0 :(得分:1)

这就是我所做的:

# create separate function to pass into tm_map()

spelling_update <- content_transformer(function(x, lut) mgsub(paste0("\\b", lut[, 1], "\\b") , lut[, 2], x, fixed = F))

然后

corpus <- tm_map(corpus, spelling_update(spldoc))