エンティティリンキング
スパンアノテーションをWikidata、UMLS、カスタムAPIなどの外部知識ベースにリンクします。
エンティティリンキング
エンティティリンキングにより、アノテーターはスパンアノテーションをWikidataやUMLSなどの外部知識ベース(KB)に接続できます。テキストのメンションと正規エンティティ間のセマンティックリンクを作成し、固有表現認識、概念正規化、知識グラフ構築に有用です。
仕組み
エンティティリンキングがスパンアノテーションスキーマで有効な場合:
- アノテーターがテキストをハイライトしてラベルを割り当て(例:"PERSON"、"ORGANIZATION")
- スパンのコントロールバーにリンクアイコンが表示
- アイコンをクリックすると、一致するKBエンティティを検索するモーダルが開く
- 選択されたエンティティIDがスパンアノテーションとともに保存
- リンクされたスパンは塗りつぶされたアイコンを表示し、ホバー時にエンティティの詳細を表示
クイックスタート
スパンスキーマにentity_linking設定を追加してエンティティリンキングを有効にします:
yaml
annotation_schemes:
- annotation_type: span
name: ner
description: Named Entity Recognition with KB linking
labels:
- name: PERSON
tooltip: "People's names"
- name: ORGANIZATION
tooltip: "Companies, agencies, institutions"
- name: LOCATION
tooltip: "Places, cities, countries"
entity_linking:
enabled: true
knowledge_bases:
- name: wikidata
type: wikidata
language: en設定オプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
enabled | boolean | false | このスキーマのエンティティリンキングを有効化 |
knowledge_bases | list | [] | KB設定のリスト |
auto_search | boolean | true | モーダルを開いた時に自動検索 |
required | boolean | false | スパン保存前にエンティティリンクを必須化 |
multi_select | boolean | false | 複数エンティティへのリンクを許可 |
知識ベースの設定
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
name | string | 必須 | このKBの一意識別子 |
type | string | 必須 | KBタイプ:wikidata、umls、またはrest |
api_key | string | null | 認証サービス用のAPIキー |
base_url | string | null | REST API用のベースURL |
language | string | "en" | 検索結果の言語コード |
timeout | integer | 10 | リクエストタイムアウト(秒) |
サポートされる知識ベース
Wikidata
1億以上のエンティティを持つ無料のオープン知識ベース。APIキー不要。
yaml
entity_linking:
enabled: true
knowledge_bases:
- name: wikidata
type: wikidata
language: en多言語ラベル、エンティティエイリアス(例:"NYC"で"New York City"を検索)、Wikipedia記事へのリンクをサポートします。
UMLS
包括的な医療・生物医学用語集。UTSから無料のAPIキーが必要。
yaml
entity_linking:
enabled: true
knowledge_bases:
- name: umls
type: umls
api_key: ${UMLS_API_KEY}医学概念、薬剤、疾患、処置、200以上のソース語彙(SNOMED CT、ICD-10、MeSH、RxNorm)への相互参照を含みます。
カスタムREST API
REST APIを持つ任意の知識ベースに接続:
yaml
entity_linking:
enabled: true
knowledge_bases:
- name: internal_kb
type: rest
base_url: https://api.example.com
api_key: optional_api_key
extra_params:
search_endpoint: /search
entity_endpoint: /entity/{entity_id}
search_query_param: q
results_path: data.results
entity_id_field: id
label_field: name
description_field: description複数の知識ベース
アノテーターが最も適切なソースを選択できるよう、複数のKBを設定:
yaml
entity_linking:
enabled: true
knowledge_bases:
- name: wikidata
type: wikidata
language: en
- name: umls
type: umls
api_key: ${UMLS_API_KEY}
- name: company_entities
type: rest
base_url: https://internal.company.com/api/entities検索モーダルのドロップダウンで、設定された知識ベース間を切り替えることができます。
マルチセレクトモード
曖昧なメンションに対して、スパンを複数のエンティティにリンクするマルチセレクトを有効にします:
yaml
entity_linking:
enabled: true
multi_select: true
knowledge_bases:
- name: wikidata
type: wikidata
language: enデータ形式
エンティティリンクされたスパンには出力に追加フィールドが含まれます:
json
{
"id": "instance_001",
"text": "Albert Einstein was born in Ulm, Germany in 1879.",
"annotations": {
"ner": {
"spans": [
{
"text": "Albert Einstein",
"start": 0,
"end": 15,
"label": "PERSON",
"kb_id": "Q937",
"kb_source": "wikidata",
"kb_label": "Albert Einstein"
},
{
"text": "Ulm",
"start": 28,
"end": 31,
"label": "LOCATION",
"kb_id": "Q3012",
"kb_source": "wikidata",
"kb_label": "Ulm"
}
]
}
}
}ベストプラクティス
- 効率のために自動検索を有効に - スパンテキストで検索を事前入力
- リンクを必須にしない - エンティティが見つからない場合にアノテーションをブロックしない
- 適切なタイムアウトを設定 - 遅いネットワーク向け
- KBをエンティティタイプに合わせる - 一般的なエンティティにはWikidata、生物医学用語にはUMLS、ドメイン固有のエンティティにはカスタムAPIを使用
- 曖昧なメンションにはマルチセレクトを使用 - 略語、一般的な名前、多義語
関連資料
- スパンアノテーション - 基本的なスパンアノテーションの設定
- 共参照チェーン - エンティティメンションのグループ化
- イベントアノテーション - N項イベント構造
実装の詳細については、ソースドキュメントを参照してください。