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)

延伸閱讀

有關實現細節,請參閱源文件