Skip to content

スパンリンキング

アノテーションされたテキストスパン間の型付き関係の作成。

スパンリンキングアノテーション

v2.1.0の新機能

スパンリンキングにより、アノテーターは既にアノテーションされたスパン(テキストセグメント)間に型付き関係を作成できます。これは関係抽出タスクで、エンティティ間の関係を特定する必要がある場合に便利です。例えば「PERSONがORGANIZATIONで働いている」や「PERSONがPERSONと協力している」などです。

概要

スパンリンキング機能は以下を提供します:

  • 型付き関係: 異なるカラーや制約を持つ複数のリンクタイプの定義
  • 有向・無向リンク: 方向性のある関係と対称的な関係の両方をサポート
  • N項リンク: 複数のスパン間のリンクを作成(ペアだけでなく)
  • 視覚的なアーク表示: テキスト上部にカラー付きアークとして関係を表示
  • ラベル制約: どのスパンラベルがソースまたはターゲットになれるかを制限

設定

スパンリンキングを使用するには、2つのアノテーションスキームが必要です:

  1. エンティティをアノテーションするためのspanスキーマ
  2. 関係をアノテーションするためのspan_linkスキーマ
yaml
annotation_schemes:
  # First, define the span schema for named entities
  - annotation_type: span
    name: entities
    description: "Highlight named entities"
    labels:
      - name: "PERSON"
        color: "#3b82f6"
      - name: "ORGANIZATION"
        color: "#22c55e"
      - name: "LOCATION"
        color: "#f59e0b"
    sequential_key_binding: true
 
  # Then, define the span_link schema for relationships
  - annotation_type: span_link
    name: relations
    description: "Annotate relationships between entities"
    span_schema: entities  # References the span schema above
    link_types:
      - name: "WORKS_FOR"
        directed: true
        allowed_source_labels: ["PERSON"]
        allowed_target_labels: ["ORGANIZATION"]
        color: "#dc2626"
      - name: "COLLABORATES_WITH"
        directed: false
        allowed_source_labels: ["PERSON"]
        allowed_target_labels: ["PERSON"]
        color: "#06b6d4"

設定オプション

必須フィールド

フィールド説明
annotation_type"span_link"でなければならない
nameスキーマの一意識別子
descriptionアノテーターに表示される説明
span_schemaリンクするスパンアノテーションスキーマの名前
link_typesリンクタイプ定義の配列

リンクタイプオプション

フィールドタイプ説明
namestring必須。 リンクタイプの名前/ラベル
directedbooleanリンクが方向性を持つかどうか。デフォルト:false
colorstringリンクの16進カラーコード
allowed_source_labelsarrayソースになれるスパンラベル
allowed_target_labelsarrayターゲットになれるスパンラベル
max_spansintegerこのリンクタイプの最大スパン数(N項リンク用)

視覚表示オプション

yaml
visual_display:
  enabled: true        # Show arc visualization
  arc_position: "above"  # Position of arcs
  show_labels: true    # Show link type labels on arcs

使い方

スパンの作成

  1. まず、スパンラベルを選択してテキストをハイライトしてアノテーション
  2. ハイライトされた各スパンがリンクに使用可能になる

リンクの作成

  1. 利用可能なオプションからリンクタイプを選択
  2. スパンをクリックして現在のリンクに追加(選択されたスパンはハイライトされる)
  3. 「リンクを作成」をクリックしてリンクを確定
  4. 有向リンクの場合、最初に選択したスパンがソース、最後がターゲット

リンクの表示

  • 作成されたリンクは「既存のリンク」セクションに表示
  • 視覚表示が有効な場合、テキスト上部にリンクされたスパンを接続するアークが描画される
  • アークはリンクタイプごとに色分けされる

リンクの削除

  • 「既存のリンク」セクションの各リンクの横にある削除ボタン(x)をクリック

データ形式

入力データ

IDとテキストフィールドを持つ標準的なテキストデータ:

json
[
  {
    "id": "item_1",
    "text": "John Smith works at Google as a senior engineer."
  }
]

出力形式

アノテーションにはスパンアノテーションとリンクアノテーションの両方が含まれます:

json
{
  "id": "item_1",
  "text": "John Smith works at Google as a senior engineer.",
  "entities": [
    {"start": 0, "end": 10, "label": "PERSON", "text": "John Smith"},
    {"start": 20, "end": 26, "label": "ORGANIZATION", "text": "Google"}
  ],
  "relations": [
    {
      "link_type": "WORKS_FOR",
      "span_ids": ["span_abc123", "span_def456"],
      "direction": "directed"
    }
  ]
}

ラベル制約

各リンクタイプに参加できるスパンラベルを制限:

yaml
link_types:
  - name: "WORKS_FOR"
    directed: true
    allowed_source_labels: ["PERSON"]      # Only PERSON can be source
    allowed_target_labels: ["ORGANIZATION"]  # Only ORGANIZATION can be target

制約に違反すると、UIにエラーメッセージが表示され、リンクの作成が防止されます。

N項リンク

デフォルトでは、リンクは正確に2つのスパンを接続します。より多くのエンティティを含む関係の場合:

yaml
link_types:
  - name: "MEETING"
    directed: false
    max_spans: 5  # Allow up to 5 participants
    allowed_source_labels: ["PERSON"]
    allowed_target_labels: ["PERSON"]

完全な動作例は以下を参照:

  • 設定:project-hub/simple_examples/simple-span-linking/config.yaml
  • データ:project-hub/simple_examples/simple-span-linking/data.json

実行方法:

bash
cd project-hub/simple_examples
python ../../potato/flask_server.py start simple-span-linking/config.yaml -p 9001

ヒント

  1. まずスパンをアノテーション: リンクを作成する前にスパンアノテーションを作成してください
  2. カラーを効果的に使用: 異なるリンクタイプに区別しやすいカラーを選択
  3. 方向性を考慮: 関係に明確な方向がある場合は有向リンクを使用
  4. キーボードショートカット: スパンラベルはキーボードショートカット(1, 2, 3...)による高速アノテーションをサポート

関連資料

実装の詳細については、ソースドキュメントを参照してください。