python - 使用 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")
推荐阅读
- android - 如何在 Android 中实现功能这样我可以通过蓝牙麦克风录制并在手机扬声器/耳机上播放
- go - Golang 断言任何数字浮动
- c# - 引用另一个类中的一个类的字段
- d3.js - D3 过滤器问题
- tibco - Tibco JMS 队列请求者”或“JMS 队列发送者”动态 JMS 属性映射
- python - 当我的特征多于行时,如何使用 sklearn PCA 获得降维?
- freepascal - 将行读入变量
- scala - Scala 在破坏字符串后返回 UDF 中的多列
- php - 没有标题的 PHP 查询数组(使用 MySQL DB 的 CI)
- unity3d - 禁用附加到的游戏对象后,Unity脚本未禁用