Skip to content

固有表現抽出

固有表現抽出(NER)とは何か、よく使われるラベルセット、そして色付きスパンラベルとツールチップを使って Potato で NER アノテーションタスクを構築する方法を解説します。

固有表現抽出(NER)は、テキスト中の名前を持つもの、すなわち人物・組織・場所・日付などを見つけて分類するタスクです。エンティティ型のラベルセットを持つスパンアノテーションタスクの一種です。 NER は検索、知識グラフ、秘匿化、情報抽出の基盤となる要素です。

背景については固有表現抽出を参照してください。

ラベルセットの選び方

標準的なスキームから始め、対象ドメインに合わせて削っていきます。

  • CoNLL-2003PERORGLOCMISC。最小構成の手堅い既定値です。
  • OntoNotes:日付・金額・パーセンテージを含む 18 種類。より細かいニーズ向け。
  • ドメイン固有:生物医学(遺伝子、疾患)、法律(法令、当事者)、金融など。

種類が少なく、定義が明確なほど一致度は高くなります。下流の実際の用途が必要とするときだけ種類を追加してください。

Potato でのタスク構築

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Highlight each named entity and select its type."
    labels: [PERSON, ORGANIZATION, LOCATION, DATE, MISC]
    label_colors:
      PERSON: "#3b82f6"
      ORGANIZATION: "#10b981"
      LOCATION: "#f59e0b"
      DATE: "#8b5cf6"
      MISC: "#6b7280"
    tooltips:
      PERSON: "Names of people, e.g. 'Ada Lovelace'."
      ORGANIZATION: "Companies, agencies, teams, e.g. 'United Nations'."
      LOCATION: "Cities, countries, landmarks, e.g. 'Paris'."
      DATE: "Dates and time expressions, e.g. 'next Monday'."
      MISC: "Named entities that fit none of the above."
    allow_overlapping: false
    sequential_key_binding: true

固有表現抽出のショーケースでは、この設定をサンプルデータで実行しています。

不一致を防ぐ境界ルール

NER の不一致の多くは、エンティティが何かではなく、どこで始まりどこで終わるかに関するものです。次の点を決めて文書化しましょう。

  • 敬称・肩書きは含めるか?(「Dr. Jane Smith」か「Dr. Jane Smith」か。)
  • the United Nations」の「the」を含めるか?
  • 「Bank of England」のような入れ子のエンティティはどう付けるか?必要なら allow_overlapping: true を設定します。

ラベルからモデルへ

CoNLL や spaCy 形式にエクスポートします。これらは BIO/IOB タグでエンティティを表現します。機械学習向けのアノテーションのエクスポートを参照してください。

さらに読む