gpt4 book ai didi

r - 使 udpipe_annotate() 更快

转载 作者:行者123 更新时间:2023-12-04 09:29:20 25 4
gpt4 key购买 nike

我目前正在处理一个文本挖掘文档,我想从我的文本中提取相关的关键字(请注意,我有很多很多文本文档)。

我正在使用 udpipe 包。一个很棒的小插曲在线 (http://bnosac.be/index.php/blog/77-an-overview-of-keyword-extraction-techniques)。一切正常,但是当我运行代码时,部分

x <- udpipe_annotate(ud_model, x = comments$feedback)

真的非常慢(尤其是当你有很多文本时)。 有没有人知道我如何更快地获得这部分?解决方法当然没问题。

library(udpipe)
library(textrank)
## First step: Take the Spanish udpipe model and annotate the text. Note: this takes about 3 minutes

data(brussels_reviews)
comments <- subset(brussels_reviews, language %in% "es")
ud_model <- udpipe_download_model(language = "spanish")
ud_model <- udpipe_load_model(ud_model$file_model)
x <- udpipe_annotate(ud_model, x = comments$feedback) # This part is really, really slow
x <- as.data.frame(x)

提前非常感谢!

最佳答案

我正在添加一个基于 future API 的答案。这与您使用的操作系统(Windows、Mac 或 Linux 风格)无关。

future.apply 包中包含所有基本 *apply 系列的并行替代方案。其余代码基于@jwijffels 的回答。唯一的区别是我在 annotate_splits 函数中使用了 data.table。

library(udpipe)
library(data.table)

data(brussels_reviews)
comments <- subset(brussels_reviews, language %in% "es")
ud_model <- udpipe_download_model(language = "spanish", overwrite = F)
ud_es <- udpipe_load_model(ud_model)


# returns a data.table
annotate_splits <- function(x, file) {
ud_model <- udpipe_load_model(file)
x <- as.data.table(udpipe_annotate(ud_model,
x = x$feedback,
doc_id = x$id))
return(x)
}


# load parallel library future.apply
library(future.apply)

# Define cores to be used
ncores <- 3L
plan(multiprocess, workers = ncores)

# split comments based on available cores
corpus_splitted <- split(comments, seq(1, nrow(comments), by = 100))

annotation <- future_lapply(corpus_splitted, annotate_splits, file = ud_model$file_model)
annotation <- rbindlist(annotation)

关于r - 使 udpipe_annotate() 更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53501341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com