Skip to content

エンティティリンキング

エンティティリンキングのアノテーション方法。テキスト中の言及を Wikidata のような知識ベースの項目に結び付け、Potato でリンキングタスクを構築する手順を解説します。

エンティティリンキングは、テキスト中の言及を知識ベースの特定の項目に結び付ける作業です。たとえば「Paris」を人物やテキサス州の都市ではなく、フランスの都市として解決します。 固有表現認識が何かがエンティティであることを見つけるのに対し、エンティティリンキングはそれがどの現実世界のエンティティなのかを決めます。

背景としてはエンティティリンキングと、よく使われるリンク先である WikidataWikipedia を参照してください。これは語義曖昧性解消と密接に関連します。

アノテーターがすること

  1. 言及スパンを特定する(多くは NER の工程で事前に印が付けられています)。
  2. アノテーターが知識ベースを検索し、一致する項目を選ぶ。
  3. 当てはまる項目がなければ NIL(知識ベースに存在しない)と印を付ける。

NIL のケースは欠かせません。これがないと、アノテーターは言及を誤った項目に無理やり当てはめ、データを汚染してしまいます。

Potato での構築方法

Potato は、知識ベース(Wikidata、UMLS、またはカスタムリスト)に対する随時検索(typeahead)によるエンティティリンキングをサポートします。これにより、アノテーターは ID を打ち込むのではなく、実在する候補から選べます。エンティティリンキングのショーケースは動作する実例です。

yaml
annotation_schemes:
  - annotation_type: span
    name: mentions
    description: "Mark the mention to link."
    labels: [Entity]
  - annotation_type: text
    name: kb_id
    description: "Search the knowledge base and enter the matching ID, or write NIL if none fits."

品質上の考慮点

  • 候補の質。 説明付きの優れた typeahead は、ガイドラインを長くするよりもはるかに誤選択を減らします。
  • 曖昧なときの既定。 2 つの項目が同じくらい妥当に見えるとき、どうするかをアノテーターに伝えておきます。
  • 粒度。 会社にリンクするのか子会社にか。映画にか、それともシリーズ全体にか。これは一度決めておきます。

さらに読む