Skip to content

エンティティリンキング

スパンアノテーションをWikidata、UMLS、カスタムAPIなどの外部知識ベースにリンクします。

エンティティリンキング

エンティティリンキングにより、アノテーターはスパンアノテーションをWikidataやUMLSなどの外部知識ベース(KB)に接続できます。テキストのメンションと正規エンティティ間のセマンティックリンクを作成し、固有表現認識、概念正規化、知識グラフ構築に有用です。

仕組み

エンティティリンキングがスパンアノテーションスキーマで有効な場合:

  1. アノテーターがテキストをハイライトしてラベルを割り当て(例:"PERSON"、"ORGANIZATION")
  2. スパンのコントロールバーにリンクアイコンが表示
  3. アイコンをクリックすると、一致するKBエンティティを検索するモーダルが開く
  4. 選択されたエンティティIDがスパンアノテーションとともに保存
  5. リンクされたスパンは塗りつぶされたアイコンを表示し、ホバー時にエンティティの詳細を表示

クイックスタート

スパンスキーマに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

設定オプション

オプションタイプデフォルト説明
enabledbooleanfalseこのスキーマのエンティティリンキングを有効化
knowledge_baseslist[]KB設定のリスト
auto_searchbooleantrueモーダルを開いた時に自動検索
requiredbooleanfalseスパン保存前にエンティティリンクを必須化
multi_selectbooleanfalse複数エンティティへのリンクを許可

知識ベースの設定

オプションタイプデフォルト説明
namestring必須このKBの一意識別子
typestring必須KBタイプ:wikidataumls、またはrest
api_keystringnull認証サービス用のAPIキー
base_urlstringnullREST API用のベースURL
languagestring"en"検索結果の言語コード
timeoutinteger10リクエストタイムアウト(秒)

サポートされる知識ベース

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"
        }
      ]
    }
  }
}

ベストプラクティス

  1. 効率のために自動検索を有効に - スパンテキストで検索を事前入力
  2. リンクを必須にしない - エンティティが見つからない場合にアノテーションをブロックしない
  3. 適切なタイムアウトを設定 - 遅いネットワーク向け
  4. KBをエンティティタイプに合わせる - 一般的なエンティティにはWikidata、生物医学用語にはUMLS、ドメイン固有のエンティティにはカスタムAPIを使用
  5. 曖昧なメンションにはマルチセレクトを使用 - 略語、一般的な名前、多義語

関連資料

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