Skip to content

事件标注

创建包含触发词和类型化参数的N元事件结构,用于信息抽取。

事件标注

事件标注支持为信息抽取任务创建 N 元事件结构。事件由触发词片段(表示事件的词或短语)和参数片段(具有类型化语义角色的实体片段)组成。

此标注类型常用于信息抽取、事件检测、语义角色标注和知识图谱构建。

基本配置

事件标注需要先定义一个片段标注方案,该方案提供用作触发词和参数的实体片段。

yaml
annotation_schemes:
  # Step 1: Define entity spans
  - annotation_type: span
    name: entities
    description: "Label entities in the text"
    labels:
      - name: PERSON
        color: "#3b82f6"
      - name: ORGANIZATION
        color: "#10b981"
      - name: LOCATION
        color: "#f59e0b"
      - name: WEAPON
        color: "#ef4444"
      - name: EVENT_TRIGGER
        color: "#8b5cf6"
        tooltip: "Words indicating events"
 
  # Step 2: Define event types and arguments
  - annotation_type: event_annotation
    name: events
    description: "Annotate events with triggers and arguments"
    span_schema: entities
    event_types:
      - type: "ATTACK"
        color: "#dc2626"
        trigger_labels: ["EVENT_TRIGGER"]
        arguments:
          - role: "attacker"
            entity_types: ["PERSON", "ORGANIZATION"]
            required: true
          - role: "target"
            entity_types: ["PERSON", "ORGANIZATION", "LOCATION"]
            required: true
          - role: "weapon"
            entity_types: ["WEAPON"]
            required: false

配置选项

事件类型

每个事件类型定义:

属性类型必填描述
typestring事件类型名称(例如 "ATTACK"、"HIRE")
colorstring可视化颜色(默认:自动分配)
trigger_labelslist允许作为触发词的片段标签(空 = 任何片段)
argumentslist参数定义列表

参数

每个参数定义:

属性类型必填描述
rolestring语义角色名称(例如 "attacker"、"target")
entity_typeslist此角色允许的片段标签(空 = 任何片段)
requiredboolean此参数是否必须填写(默认:false)

视觉显示

yaml
visual_display:
  enabled: true           # Show arc visualization (default: true)
  arc_position: above     # Position of arcs: "above" (default)
  show_labels: true       # Show role labels on arcs (default: true)

使用工作流

  1. 创建实体片段:使用片段标注工具标注实体片段(点击并拖动选择文本,然后选择标签)
  2. 选择事件类型:点击事件类型按钮(例如 "ATTACK")进入事件创建模式
  3. 选择触发词:点击一个片段将其设为事件触发词。如果配置了 trigger_labels,则只能选择具有匹配标签的片段
  4. 分配参数:对于每个参数角色,点击角色按钮激活它,然后点击一个片段进行分配。必填参数必须在创建事件之前填写
  5. 创建事件:所有必填参数填写完毕后,点击"创建事件"保存
  6. 查看事件:已创建的事件出现在"已有事件"部分,列出其触发词和参数

数据格式

输入

事件标注适用于任何基于文本的数据格式:

json
[
  {
    "id": "event_1",
    "text": "John attacked the building with a rifle."
  }
]

输出

事件以以下结构存储:

json
{
  "event_annotations": [
    {
      "id": "event_abc123",
      "schema": "events",
      "event_type": "ATTACK",
      "trigger_span_id": "span_xyz789",
      "arguments": [
        {"role": "attacker", "span_id": "span_def456"},
        {"role": "target", "span_id": "span_ghi012"},
        {"role": "weapon", "span_id": "span_jkl345"}
      ],
      "properties": {
        "color": "#dc2626",
        "trigger_text": "attacked",
        "trigger_label": "EVENT_TRIGGER"
      }
    }
  ]
}

视觉显示

弧形可视化显示:

  • 触发词位置的中心点(实心圆)
  • 连接到每个参数的辐射线(箭头)
  • 每条辐射线上的角色标签
  • 按类型进行颜色编码的事件

多个事件垂直堆叠以避免重叠。

完整示例

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Label entities in the text"
    labels:
      - name: PERSON
        color: "#3b82f6"
      - name: ORGANIZATION
        color: "#10b981"
      - name: LOCATION
        color: "#f59e0b"
      - name: WEAPON
        color: "#ef4444"
      - name: EVENT_TRIGGER
        color: "#8b5cf6"
 
  - annotation_type: event_annotation
    name: events
    description: "Annotate events"
    span_schema: entities
    event_types:
      - type: "ATTACK"
        color: "#dc2626"
        trigger_labels: ["EVENT_TRIGGER"]
        arguments:
          - role: "attacker"
            entity_types: ["PERSON", "ORGANIZATION"]
            required: true
          - role: "target"
            entity_types: ["PERSON", "ORGANIZATION", "LOCATION"]
            required: true
          - role: "weapon"
            entity_types: ["WEAPON"]
            required: false
 
      - type: "HIRE"
        color: "#2563eb"
        trigger_labels: ["EVENT_TRIGGER"]
        arguments:
          - role: "employer"
            entity_types: ["ORGANIZATION"]
            required: true
          - role: "employee"
            entity_types: ["PERSON"]
            required: true
 
      - type: "TRAVEL"
        color: "#059669"
        trigger_labels: ["EVENT_TRIGGER"]
        arguments:
          - role: "traveler"
            entity_types: ["PERSON"]
            required: true
          - role: "destination"
            entity_types: ["LOCATION"]
            required: true
          - role: "origin"
            entity_types: ["LOCATION"]
            required: false

最佳实践

  1. 使用描述性的类型名称 - 选择清晰、明确的事件类型名称,反映语义含义
  2. 适当约束触发词 - 使用 trigger_labels 限制哪些片段可以作为触发词。对于基于动词的事件,创建专用的 "EVENT_TRIGGER" 标签
  3. 平衡必填与可选参数 - 将核心参数标记为必填,但允许可选参数用于可能不总是存在的上下文
  4. 使用实体类型约束 - 对参数强制语义约束(例如 "attacker" 应该是 PERSON 或 ORGANIZATION)

延伸阅读

有关实现细节,请参阅源文档