首页 > 解决方案 > 将函数传递给令牌时使用 unnest_tokens() 时出错

问题描述

unnest_tokens.data.frame(., entity, text, token = tokenize_scispacy_entities, 中的错误:标记化函数的预期输出为长度为 100 的列表

unnest_tokens() 适用于少数观察的样本,但在整个数据集上失败。

https://github.com/dgrtwo/cord19 可重现的例子:

library(dplyr)
library(cord19)
library(tidyverse)
library(tidytext)
library(spacyr)

从这里安装模型 - https://github.com/allenai/scispacy

spacy_initialize("en_core_sci_sm")

tokenize_scispacy_entities <- function(text) {
  spacy_extract_entity(text) %>%
    group_by(doc_id) %>%
    nest() %>%
    pull(data) %>%
    map("text") %>%
    map(str_to_lower)
}

paragraph_entities <- cord19_paragraphs %>% 
  select(paper_id, text) %>%
  sample_n(10) %>% 
  unnest_tokens(entity, text, token = tokenize_scispacy_entities)

标签: rtokenizespacytidytext

解决方案


我面临同样的问题。我不知道为什么,在我过滤掉空的抽象和较短的抽象字符串后,一切似乎都很好。

 abstract_entities <- article_data %>%
  filter(nchar(abstract) > 30) %>%
  select(paper_id, title, abstract) %>%
  sample_n(1000) %>%
  unnest_tokens(entity, abstract, token =  tokenize_scispacy_entities)


推荐阅读