将语料库从 quanteda 转换为 tm
Posted
技术标签:
【中文标题】将语料库从 quanteda 转换为 tm【英文标题】:Convert Corpus from quanteda to tm 【发布时间】:2021-09-28 22:05:22 【问题描述】:我的数据 mycorpus
位于 quanteda-corpus(来自 quanteda 的corpus
-function)中,我需要将其转换为 tm 包下的语料库。我知道 quanteda 的 convert
-function。但是,这只会将 doc-feature-matrix 转换为 tm。有没有我失踪的快速修复? tm 的VCorpus(mycorpus)
抛出错误消息“缺少源”
【问题讨论】:
解决方法可能是:dfhelp <- convert(mycorpus, to="data.frame")
ds <- DataframeSource(dfhelp)
mynewtmcorpus<- VCorpus(ds, readerControl = list(language = "en"))
【参考方案1】:
您可以直接从包装在 VCorpus 中的 VectorSource 构造 tm 语料库/VCorpus,因为 quanteda 语料库只是一个特殊的字符向量。
library("tm")
## Loading required package: NLP
# from version 3.0 of quanteda
data(data_corpus_inaugural, package = "quanteda")
VCorpus(VectorSource(data_corpus_inaugural))
## <<VCorpus>>
## Metadata: corpus specific: 0, document level (indexed): 0
## Content: documents: 59
但是...您真的想要/需要这样做吗?
【讨论】:
我错过了VectorSource
命令,谢谢:工作正常!我明白你关于持续应用 quanteda 或 tm 的观点。只是在编写函数时,来自 tm 的 content_transformer
命令非常易于使用:例如codeao <- content_transformer(function(x, pattern) return (gsub(pattern, "Abgabenordnung", x, ignore.case = FALSE)))
mytmcorpus<- tm_map(mytmcorpus, codeao, "\\bAO\\b")
是否有 quanteda 的等价物?也许我需要更深入地挖掘来自 quanteda 的tokens_replace
...【参考方案2】:
如果您有 dfm,您可以使用 tm 包中的 as.DocumentTermMatrix
函数。
如果您有一个名为 my_dfm 的 dfm,您可以使用下面的代码行。您需要为 dtm 的权重提供一个选项,但来自 quanteda 它只是 weightTf
my_dtm <- as.DocumentTermMatrix(my_dfm, weighting = weightTf)
【讨论】:
以上是关于将语料库从 quanteda 转换为 tm的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 R 中的 TM 包将我的语料库元数据附加到我的 dtm 数据帧导出中