Ошибка при параллельном запуске udpipe R и включении словосочетаний после аннотации

Я сталкиваюсь с ошибками при выполнении параллельной реализации udpipe_annotate() в R и хотел бы знать, как можно выполнить коллокации (комбинирование / слияние токенов) после выполнения этой задачи аннотации. Библиотеки, используемые как udpipe, data.table, quanteda и future.apply. Набор данных имеет около 115 тыс. Записей, на выполнение аннотации без параллельной реализации требуется более 1,5 часов.

Я уже загрузил английскую модель аннотации: "english-ewt-ud-2.4-190531.udpipe" в локальном каталоге R. Я получаю сообщение об ошибке при попытке выполнить следующий код. Я интересуюсь текстовым столбцом интереса через quanteda::tokens перед фактической задачей аннотации и хотел бы знать, как можно объединить размещения после того, как эта аннотация завершена.

ud_en <- udpipe_load_model(file = "english-ewt-ud-2.4-190531.udpipe")

annotate_splits <- function(x, file) {
  ud_model <- udpipe_load_model(file)
  corpus1.1 <- quanteda::corpus(x$Snippet, docnames = paste(x$Author, x$idx, sep = "("))
  tokens_w_stp1 <- quanteda::tokens(tolower(corpus1.1), what = "word", remove_numbers = FALSE, remove_punct = FALSE, remove_symbols = TRUE, remove_separators = TRUE, remove_url = TRUE, remove_hyphens = TRUE)
  tokens_w_stp2 <- sapply(tokens_w_stp1, FUN = function(x) paste(x, collapse = "\n"))
  x <- as.data.table(udpipe_annotate(ud_model, x = tokens_w_stp2, doc_id = names(tokens_w_stp2), tokenizer = "vertical", trace = 1000))
  return(x)
}

ncores <- 3L
plan(multiprocess, workers = ncores)

### Split text column of data.table bw_data2, based on available cores ###

chunk <- 1000
corpus_splitted <- split(bw_data2, rep(1:ceiling(nrow(bw_data2)/chunk), each=chunk, length.out=nrow(bw_data2)))

annotation <- future_lapply(corpus_splitted1, annotate_splits, file = ud_en) ## corpus_splitted1 is the first data.table from the list of data.tables obtained through split() call.

annotation <- rbindlist(annotation)

Ошибка, которую я получаю при первом вызове объекта аннотации:

Ошибка в path.expand(file): неверный аргумент 'path'

В случае, если я изменяю командную строку аннотации к следующему:

annotation <- future_lapply(corpus_splitted1, annotate_splits, file = ud_en$file)

Я получаю еще одну ошибку, утверждающую, что оператор $ недопустим для атомарных векторов.

Если я не ошибаюсь, сопоставления могут выполняться по всему аннотированному набору данных, только маркировка POS занимает больше времени, чем необходимо. Цель состоит в том, чтобы применить BTM (тематическая модель для краткого текста) в R после выполнения этой задачи.

Ценю ваши предложения / помощь. Благодарю.

0 ответов

Другие вопросы по тегам