1

我正在尝试将脚本从使用 tm 迁移到 quanteda。阅读 quanteda 文档,有一种关于“下游”应用更改以使原始语料库保持不变的理念。好的。

我之前编写了一个脚本来查找我们的 tm 语料库中的拼写错误,并得到了我们团队的支持来创建手动查找。所以,我有一个包含 2 列的 csv 文件,第一列是拼写错误的术语,第二列是该术语的正确版本。

以前使用 tm 包我是这样做的:

# Write a custom function to pass to tm_map
# "Spellingdoc" is the 2 column csv
library(stringr)
library(stringi)
library(tm)
stringi_spelling_update <- content_transformer(function(x, lut = spellingdoc) stri_replace_all_regex(str = x, pattern = paste0("\\b", lut[,1], "\\b"), replacement = lut[,2], vectorize_all = FALSE))

然后在我的 tm 语料库转换中,我这样做了:

mycorpus <- tm_map(mycorpus, function(i) stringi_spelling_update(i, spellingdoc))

将此自定义函数应用于我的 quanteda 语料库的等效方法是什么?

4

2 回答 2

1

不可能知道这是否会从您的示例中起作用,这会遗漏一些部分,但通常:

如果要访问quanteda语料库中的文本,可以使用texts(), 和替换这些文本,texts()<-

因此,在您的情况下,假设这mycorpus是一个tm语料库,您可以这样做:

library("quanteda")
stringi_spelling_update2 <- function(x, lut = spellingdoc) {
    stringi::stri_replace_all_regex(str = x, 
                                    pattern = paste0("\\b", lut[,1], "\\b"), 
                                    replacement = lut[,2], 
                                    vectorize_all = FALSE)
}

myquantedacorpus <- corpus(mycorpus)
texts(mycorpus) <- stringi_spelling_update2(texts(mycorpus), spellingdoc)
于 2017-08-30T16:05:30.060 回答
0

我想我在这里找到了一个间接的答案。

texts(myCorpus) <- myFunction(myCorpus)
于 2017-08-30T08:49:26.290 回答