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

R 如何将自定义函数应用于quanteda语料库,r,text-mining,quanteda,R,Text Mining,Quanteda,我正在尝试将一个脚本从使用tm迁移到quanteda。在阅读quanteda文档时,有一种哲学,即在“下游”应用更改,从而使原始语料库保持不变。嗯 我以前写过一个脚本来查找tm语料库中的拼写错误,并得到了我们团队的支持来创建手动查找。所以,我有一个csv文件,有两列,第一列是拼写错误的术语,第二列是该术语的正确版本 以前我使用tm软件包做了以下工作: # Write a custom function to pass to tm_map # "Spellingdoc" is the 2 colu

我正在尝试将一个脚本从使用tm迁移到quanteda。在阅读quanteda文档时,有一种哲学,即在“下游”应用更改,从而使原始语料库保持不变。嗯

我以前写过一个脚本来查找tm语料库中的拼写错误,并得到了我们团队的支持来创建手动查找。所以,我有一个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))
#编写一个自定义函数以传递给tm#u map
#“Spellingdoc”是两列csv
图书馆(stringr)
图书馆(stringi)
图书馆(tm)

stringi_拼写更新我想我找到了一个间接的答案


text(myCorpus)不可能从您的示例中知道这是否有效,这会遗漏一些部分,但通常:


如果您想访问quanteda语料库中的文本,可以使用
text()
,并替换这些文本,
text()Hi@Ken,实际上mycorpus是quanteda语料库。我最近才知道这个包裹。我想你的第二句话就是我要找的?然而,对于这个特殊的问题,我注意到您为dfm()提供的字典功能,所以我使用了它,但很高兴知道,如果我需要对每个文档应用自定义函数,我会去
text(mycorpus)清理语料库中的文本仍然符合quanteda的无损工作流原则,如果语料库包含您从未感兴趣的拼写错误(例如OCR错误的产物)。我们要阻止的是人们使用词干分析器或从语料库中删除停止词。
texts(myCorpus) <- myFunction(myCorpus)
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)