如何将自定义函数应用于quanteda语料库

时间:2017-08-30 06:10:40

标签: r text-mining quanteda

我尝试将脚本从使用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))

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

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

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

我想我找到了here的间接答案。

texts(myCorpus) <- myFunction(myCorpus)