スパンリンキング
アノテーションされたテキストスパン間の型付き関係の作成。
スパンリンキングアノテーション
v2.1.0の新機能
スパンリンキングにより、アノテーターは既にアノテーションされたスパン(テキストセグメント)間に型付き関係を作成できます。これは関係抽出タスクで、エンティティ間の関係を特定する必要がある場合に便利です。例えば「PERSONがORGANIZATIONで働いている」や「PERSONがPERSONと協力している」などです。
概要
スパンリンキング機能は以下を提供します:
- 型付き関係: 異なるカラーや制約を持つ複数のリンクタイプの定義
- 有向・無向リンク: 方向性のある関係と対称的な関係の両方をサポート
- N項リンク: 複数のスパン間のリンクを作成(ペアだけでなく)
- 視覚的なアーク表示: テキスト上部にカラー付きアークとして関係を表示
- ラベル制約: どのスパンラベルがソースまたはターゲットになれるかを制限
設定
スパンリンキングを使用するには、2つのアノテーションスキームが必要です:
- エンティティをアノテーションするための
spanスキーマ - 関係をアノテーションするための
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 | リンクタイプ定義の配列 |
リンクタイプオプション
| フィールド | タイプ | 説明 |
|---|---|---|
name | string | 必須。 リンクタイプの名前/ラベル |
directed | boolean | リンクが方向性を持つかどうか。デフォルト:false |
color | string | リンクの16進カラーコード |
allowed_source_labels | array | ソースになれるスパンラベル |
allowed_target_labels | array | ターゲットになれるスパンラベル |
max_spans | integer | このリンクタイプの最大スパン数(N項リンク用) |
視覚表示オプション
yaml
visual_display:
enabled: true # Show arc visualization
arc_position: "above" # Position of arcs
show_labels: true # Show link type labels on arcs使い方
スパンの作成
- まず、スパンラベルを選択してテキストをハイライトしてアノテーション
- ハイライトされた各スパンがリンクに使用可能になる
リンクの作成
- 利用可能なオプションからリンクタイプを選択
- スパンをクリックして現在のリンクに追加(選択されたスパンはハイライトされる)
- 「リンクを作成」をクリックしてリンクを確定
- 有向リンクの場合、最初に選択したスパンがソース、最後がターゲット
リンクの表示
- 作成されたリンクは「既存のリンク」セクションに表示
- 視覚表示が有効な場合、テキスト上部にリンクされたスパンを接続するアークが描画される
- アークはリンクタイプごとに色分けされる
リンクの削除
- 「既存のリンク」セクションの各リンクの横にある削除ボタン(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...)による高速アノテーションをサポート
関連資料
- スパンアノテーション - 基本的なスパンアノテーション
- UI設定 - カラーと表示のカスタマイズ
実装の詳細については、ソースドキュメントを参照してください。