使用 displacy 显示自定义实体

Display custom entities using diSplacy

我有一个文本字符串,其中包含一组固定 命名实体(人物、位置...),如下例所示

text = "My name is John Smith and I live in Paris"
entities = [
    ("Person", 11, 21),  # John Smith
    ("Location", 36, 41),  # Paris
]

我想使用来自 Spacy 的非常好的渲染器 DiSplacy [1] 来显示它们。 如果我理解得很好,对我来说最好的方法是使用我的自定义实体在 Spacy 中创建一个自定义 Doc 对象,但我没有找到正确的方法。

[1] https://spacy.io/usage/visualizers#ent

我终于在 Spacy 论坛 (https://github.com/explosion/spaCy/discussions/7239) 中找到了解决方案。

简而言之,Doc可以很容易地用spacy 3.0+中的实体实例化。在 Spacy 2.0+(我的例子)中,一个解决方案是使用 char_span:

import spacy

nlp = spacy.blank("en")

text = "My name is John Smith and I live in Paris"
entities = [
    ("Employee", 11, 21),  # John Smith
    ("Location", 36, 41),  # Paris
]

doc = nlp(text)

ents = []
for ee in entities:
    ents.append(doc.char_span(ee[1], ee[2], ee[0]))

doc.ents = ents

for ent in doc.ents:
    print(ent, ent.label_, sep="\t")