将语料库从 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 &lt;- content_transformer(function(x, pattern) return (gsub(pattern, "Abgabenordnung", x, ignore.case = FALSE))) mytmcorpus&lt;- 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 数据帧导出中

如何将在线书籍中的单词语料库转换为术语文档矩阵?

使用 R 中的 tm 包为多个语料库制作前 N 个频繁项的数据框

如何使用 tm 包从非英语语料库中删除常用词尾?

从 R 中的许多 html 文件创建语料库

将语料库转换为数据框返回 NA