关系与事件抽取
如何标注实体之间的关系,以及带触发词和论元的结构化事件,在 Potato 中使用跨度链接与事件标注。
关系抽取用一条带类型的链接把两个实体连接起来("居里夫人,获得,诺贝尔奖")。事件抽取更进一步:它标记一个事件触发词,以及围绕它的各个角色(谁、对谁、做了什么、何时发生)。 两者都能把扁平的文本变成结构化的知识。
关系:链接跨度
一条关系标注由三部分组成:头部跨度、尾部跨度和关系类型。在 Potato 中,标注者先标出跨度,再在它们之间画一条带方向、带类型的链接(跨度链接)。
yaml
annotation_schemes:
- annotation_type: span
name: entities
description: "Mark the entities involved."
labels: [PERSON, ORGANIZATION, AWARD]
- annotation_type: span_link
name: relations
description: "Draw a link between two entities and choose the relation."
labels: [won, works_for, located_in, founded_by]关系是有方向的,因此要为每种类型确定并写明方向("founded_by" 是从公司指向人,还是反过来?)。
事件:触发词与论元
一个事件由一个触发词(往往是像 "acquired" 这样的动词)锚定,并带有填充各类型角色(买方、卖方、价格、日期)的论元。Potato 的事件标注类型让标注者标出触发词,并附加带角色标签的跨度。
事件标注示例展示了一套可用的触发词加论元配置。
这些任务为什么困难
- 标签空间很大,一致性会下降。尽量让关系类型和角色类型既少又定义清晰。
- 标注者必须先把跨度标对,否则错误会层层累积。可以考虑第一遍标注实体,第二遍再标注关系。
- 结构化输出让一致性指标变得棘手,要在你真正关心的层级上测量(触发词是否正确、论元是否正确、整个事件是否正确)。