【问题标题】:spaCy How to initialize a Doc with entities in IOB format?spaCy 如何使用 IOB 格式的实体初始化文档?
【发布时间】:2021-10-12 08:07:24
【问题描述】:

在我的 spaCy 项目中,我想用文本、标签和空格初始化一个 Doc 对象。 然而 spaCy 不欣赏我提供标签的方式,并在以下错误消息中表明它缺乏欣赏:

doc = Doc(nlp.vocab, words=token_texts, ents=labels, spaces=whitespaces)
  File "spacy\tokens\doc.pyx", line 297, in spacy.tokens.doc.Doc.__init__
ValueError: [E177] Ill-formed IOB input detected: ('', 'O')

代码:

import spacy
from spacy.tokens import Doc
nlp = spacy.load("en_core_web_sm")

token_texts = ["I", "like", "potatoes", "!"]
labels = [("", "O"), ("", "O"), ("food", "I"), ("", "O")]
whitespaces = [True, True, False, False]
doc = Doc(nlp.vocab, words=token_texts, ents=labels, spaces=whitespaces)

有人知道如何准确地为银盘上的实体服务吗?

spaCy Doc documentation 状态

ent: 一个字符串列表,相同长度的单词,分配给 基于令牌的 IOB 标签。默认为无。可选[列表[str]]

类型提示List[str] 让我尝试["", "", "food", ""],但结果是相同的错误消息。

没有答案的 Stackoverflow 链接:

Convert NER SpaCy format to IOB format

Convert list of IOB formatted data to simple IOB formatted data

Failed to convert iob to spaCy binary format

Replace to entity tags to IOB format

【问题讨论】:

    标签: python nlp spacy spacy-3


    【解决方案1】:

    IOB 标签的格式应与 CoNLL 文件中使用的格式相同,例如“B-PERSON”。所以在你的示例代码中:

    labels = ["O", "O", "I-FOOD", "O"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多