我尝试将脚本从使用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语料库的等效方法是什么?
答案 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)