在 spaCy 中创建自定义命名实体
如果 spaCy 内置的命名实体不够用,您可以使用 spaCy 的 EntityRuler() 类自行创建。
EntityRuler() 允许您创建自定义实体并将其加入 spaCy 流水线。
首先创建一个 EntityRuler() 实例,并将当前流水线 nlp 传入。
随后在该实例上调用 add_patterns(),传入包含要打上实体标签的文本 pattern 的字典。
设置好模式后,您可以使用 add_pipe() 将其添加到 nlp 流水线中。
鉴于 Acme 是一家科技公司,您决定将模式 "smartphone" 标注为 "PRODUCT" 实体标签。
spaCy 已导入,并且已存在一个 doc,其中包含来自 call_4_channel_2.wav 的转写文本(文件)。
本练习是课程的一部分
Python 语音语言处理
练习说明
- 从
spacy.pipeline导入EntityRuler。 - 将
"smartphone"作为"pattern"键的取值。 - 将
EntityRuler()实例ruler添加到nlp流水线。 - 打印
doc中包含的实体属性。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import EntityRuler class
from spacy.pipeline import ____
# Create EntityRuler instance
ruler = EntityRuler(nlp)
# Define pattern for new entity
ruler.add_patterns([{"label": "PRODUCT", "pattern": ____}])
# Update existing pipeline
nlp.add_pipe(____, before="ner")
# Test new entity
for entity in doc.____:
print(entity.text, entity.label_)