使用 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
对象,但我没有找到正确的方法。
我终于在 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")
我有一个文本字符串,其中包含一组固定 命名实体(人物、位置...),如下例所示
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
对象,但我没有找到正确的方法。
我终于在 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")