1. 介绍
在 spaCy 中,自定义扩展属性让我们能够为 Doc
、Token
和 Span
对象添加元数据。通过这些扩展属性,开发者可以根据需要存储额外的上下文信息,或者动态计算属性值。
自定义属性通过点下划线(dot-underscore)属性访问,例如 token._.is_color
。这种命名方式确保这些属性是由用户自定义添加的,而不是 spaCy 内置的属性。扩展属性可以是静态的,或者通过动态计算获得其值。
为了让扩展属性在 Doc
、Token
或 Span
上使用,必须通过 set_extension
方法进行注册。下面我们将探讨如何使用和定义这些扩展属性。
2. 自定义扩展属性的类型
扩展属性有三种类型:
- 属性扩展(Attribute extensions):设置默认值,可以覆盖。
- 属性方法扩展(Property extensions):通过 getter 和可选的 setter 定义动态计算属性。
- 方法扩展(Method extensions):将函数作为方法注册,可以传递参数并动态计算属性值。
3. 属性扩展
属性扩展用于为自定义属性设置默认值,并允许在需要时覆盖它。例如,下面的代码为 Token
对象定义了一个 is_color
属性,默认值为 False
,但可以为特定的 token 手动设置为 True
。
import spacy
from spacy.tokens import Token
# 创建空白模型
nlp = spacy.blank("en")
# 为 Token 设置扩展属性,默认值为 False
Token.set_extension('is_color', default=False, f