Вставить результаты леммы в новый фрейм данных

#r #spacy #quanteda

#r #пространный #квантовая

Вопрос:

Используя это, можно увидеть лемму каждого слова:

 library(spacyr)
df <- data.frame(body = c("model for receiving"), id = c(132))
df$body <- as.character(df$body)
df$id <- as.character(df$id)
spacy_parse(structure(df$body, names = df$id),
                     lemma = TRUE, pos = TRUE)
  

Однако при использовании следующего фрагмента для повторного создания входного фрейма данных с новыми словами леммы он выдает результат ввода и нет

 df2 <- spacy_parse(structure(df$body, names = df$id),
                     lemma = TRUE, pos = TRUE) %>%
    mutate(id = doc_id) %>%
    group_by(id) %>%
    summarize(body = paste(lemma, collapse = " "))
  

ожидаемый результат:

 df <- data.frame(body = c("model for receive"), id = c(132))
  

Ответ №1:

Для меня работает нормально:

 R.Version()$version.string
## [1] "R version 4.0.2 (2020-06-22)"

df <- data.frame(
  body = c("model for receiving"),
  id = c(132),
  stringsAsFactors = FALSE
)

library("dplyr", warn.conflicts = FALSE)
library("spacyr")
spacy_initialize()
## Found 'spacy_condaenv'. spacyr will use this environment
## successfully initialized (spaCy Version: 2.3.2, language model: en_core_web_sm)
## (python options: type = "condaenv", value = "spacy_condaenv")

spacy_parse(structure(df$body, names = df$id),
  lemma = TRUE, pos = TRUE
) %>%
  mutate(id = doc_id) %>%
  group_by(id) %>%
  summarize(body = paste(lemma, collapse = " "))
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 1 x 2
##   id    body             
##   <chr> <chr>            
## 1 132   model for receive