开始使用免费开始使用

在 spaCy 中创建自定义命名实体

如果 spaCy 内置的命名实体还不够用,您可以使用 spaCy 的 entity_ruler 管道组件自定义实体。

entity_ruler 组件允许您创建自己的实体,并将其加入 spaCy 的 pipeline。

首先使用 nlp.add_pipe() 将该组件添加到现有 pipeline 中,并将其放在 "ner" 组件之前,以便优先应用您的规则。add_pipe() 会返回它所添加的组件。

随后,您可以对该组件调用 add_patterns(),并传入包含要标注为实体的文本 pattern 的字典。

鉴于 Acme 是一家科技公司,您决定将模式 "smartphone" 标注为 "PRODUCT" 实体标签。

spaCy 已导入,nlp 已加载 en_core_web_sm 模型。由于修改 pipeline 不会影响已存在的 doc,在新组件就位后,您将使用 call_4_channel_2.wav 的转写文本重新创建 doc,对应的file。

本练习是课程的一部分

Python 语音语言处理

查看课程

练习说明

  • 将 "entity_ruler" 组件添加到 nlp 的 pipeline 中,置于 "ner" 组件之前,并将其保存为 ruler。
  • 将 "smartphone" 作为 "pattern" 键的取值添加。
  • 打印 doc 中包含的实体属性。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Add an entity_ruler component to the pipeline, before ner
ruler = nlp.add_pipe(____, before=____)

# Define pattern for new entity
ruler.add_patterns([{"label": "PRODUCT", "pattern": ____}])

# Recreate the doc so it uses the updated pipeline
doc = nlp(call_4_channel_2_text)

# Test new entity
for entity in doc.____:
  print(entity.text, entity.label_)
编辑并运行代码