【问题标题】:R: tm: TextDocument level metadata setting looks to be very inefficientR: tm: TextDocument 级别的元数据设置看起来效率很低
【发布时间】:2024-05-03 04:55:02
【问题描述】:

我正在从数据库中加载文本文档,然后从它们创建语料库,最后我设置了文档的前缀 id(我需要使用前缀,因为我有几种类型的文档)。

rs <- dbSendQuery(con,"SELECT id::TEXT, content FROM entry")
entry.d = data.table(fetch(rs,n=-1))
entry.vs = VectorSource(entry.d$content)
entry.vc = VCorpus(entry.vs, readerControl = list(language = "pl"))
meta(entry.vc, tag = 'id', type = 'local') = paste0("e:",entry.d$id)

这工作很慢。需要6分钟,当

tm_map(entry.vc, tm_reduce, tmFuns = funs, mc.cores=1)

funs 是 6 个函数的列表,只需要多花 2 分钟。

有什么方法可以更快?

【问题讨论】:

    标签: r metadata text-mining tm corpus


    【解决方案1】:

    我已更改代码以在 VCorpus 初始化期间设置 ID。

    rs <- dbSendQuery(con,"SELECT ('e:'||id) AS id, content, 'pl'::TEXT AS language FROM entry")
    entry.d = data.table(fetch(rs,n=-1))
    entry.dfs = DataframeSource(entry.d)
    reader <- readTabular(mapping=list(content="content", id="id", language='language'))
    entry.vc = VCorpus(entry.dfs, readerControl = list(reader = reader))
    

    现在只需 2.5 分钟即可生成具有自定义 ID 的 VCorpus。

    【讨论】: