エンティティ認識の仕組み

名前付きエンティティ認識 (NER) としても呼ばれるエンティティ認識は、文、段落、テキスト レポート、またはその他の形式の非構造化テキストから情報を抽出するプロセスです。 GeoAI ツールボックスのテキスト分析ツールセットには、エンティティ認識モデルをトレーニングし、これらのモデルを使用して非構造化テキストからエンティティを抽出するための自然言語処理 (NLP) 技術を使用するツールが含まれています。

[エンティティ認識モデルのトレーニング (Train Entity Recognition Model)] ツールは、トレーニング データセットの一部として入力された事前定義済みエンティティのセット (組織、個人、日付、国など) を抽出するための NLP モデルをトレーニングします。 トレーニングされたエンティティ認識モデルは、[ディープ ラーニングを使用したエンティティ抽出 (Extract Entities Using Deep Learning)] ツールで使用して、それらのエンティティを未加工テキストから構造化された形式に抽出します。

適用例

このツールは、次のような場合に適用できます。

  • 犯罪報告書から、使用された場所、報告担当官、武器などのデータを抽出します。 これにより傾向を表示できるので、改善策の策定に役立てることができます。
  • 場所や支援の必要性などの情報は、ツイートやソーシャル メディアの投稿から抽出できます。 これにより、自然災害時に緊急支援が必要な地域を特定できます。
エンティティ認識モデルのフロー チャート
このエンティティ認識モデルは、テキスト レポートから日付、時刻、場所などのエンティティを抽出するためのものです。

ArcGIS のエンティティ認識モデルは、2 つのバックエンド、Transformer アーキテクチャと、埋め込み、エンコード、アテンド、予測フレームワークで動作する spaCy ライブラリに基づいています。

  • 埋め込み - このプロセスでは、入力テキストは密な単語の埋め込みに変換されます。 これらの埋め込みは、入力テキストからセマンティック情報を取得し、モデルでの操作がはるかに簡単です。
    埋め込みワークフロー
  • エンコード - このプロセスでは、コンテキストはワード ベクターにエンコードされます。 これは、残差トリグラム畳み込みニューラルネットワーク (CNN) を使用して行われます。
    エンコード ワークフロー
  • アテンド - 前のステップからのマトリックス出力は、予測のために標準のフィードフォワード ネットワークに渡される単一ベクターに縮小されます。 このステップは、アテンション メカニズムと同様の効果があります。
    アテンド ワークフロー
  • 予測 - モデルの最終ステップは、入力テキストを前提とした予測です。 ここで、アテンション レイヤーからのベクターがマルチレイヤー パーセプトロンに渡され、エンティティ ラベル ID が出力されます。
    予測ワークフロー

Transformer ベースのバックエンドは、”Attention Is All You Need” (Vaswani 他著) で提案されているアーキテクチャを使用します。これにより、モデルの精度向上と並列化が可能になりますが、トレーニングには精度の低いラベル付きデータが必要です。 内部的には、ArcGIS の Transformer ベースのエンティティ認識モデルには 2 つのコンポーネントがあります。

  • エンコーダー: エンコーダーはモデルのバックボーンとしての役割を担い、入力テキストを固定長ベクトル形式の特徴表現に変換します。 このモデルは、Transformer アーキテクチャに基づき、大量のテキストに対して事前にトレーニングされた BART、ALBERT、RoBERTa などの一般的なエンコーダーを使用しています。
  • トークン レベル分類器 - トークン レベル分類器はモデルのヘッドとしての役割を担い、各トークンのフィーチャ表現をさまざまなエンティティを表す複数のカテゴリに分類します。 多くの分類器は、ニューラル ネットワークの単純な線形レイヤーです。
エンティティ認識モデルの概念

注意:

NLP モデルは、大量の非構造化テキストの解析を自動化するには強力なツールです。 他の種類のモデルと同様に、人間による適度な監視と、モデルの種類およびモデルのトレーニングに使用するトレーニング データセットに関する透明性を確保したうえで、関連するタスクに適用するよう注意する必要があります。

エンティティ認識モデルの使用

[ディープ ラーニングを使用したエンティティ抽出 (Extract Entities Using Deep Learning)] ツールを使用すると、トレーニング済みエンティティ認識モデルを非構造化テキストに適用し、そこから有用な情報を構造化データの形式で抽出できます。 あらかじめトレーニングされた、ArcGIS Living Atlas of the World のエンティティ認識モデルを使用することも、[エンティティ認識モデルのトレーニング (Train Entity Recognition Model)] ツールを使用して独自のモデルをトレーニングすることもできます。

[ディープ ラーニングを使用したエンティティ抽出 (Extract Entities Using Deep Learning)] ツールへの入力は、名前付きエンティティ認識が実行されるテキスト ファイルが格納されたフォルダーです。 入力モデルには、Esri モデル定義 JSON ファイル (*.emd) またはディープ ラーニング モデル パッケージ (*.dlpk) を指定できます。 モデルには、ディープ ラーニング モデル ファイル (モデル ウェイトを含む) へのパスと、その他のモデル パラメーターが含まれます。 一部のモデルには、追加のモデル引数が含まれることがあります。

このツールは、入力フォルダーの各テキスト ファイルから抽出されたエンティティを含むテーブルを作成します。 ロケーターが入力され、モデルが住所を抽出できると、代わりに、抽出された住所をジオコーディングすることでフィーチャクラスが生成されます。 テキスト ファイルに複数の住所が含まれている場合、各住所をジオコーディングし、そのテキスト ファイルの他のエンティティを複製することで、フィーチャが作成されます。

ツールは CPU で実行できますが、ディープ ラーニングは計算コストがかかるため、GPU を使用して処理することをお勧めします。 GPU を使用してこのツールを実行するには、プロセッサ タイプ環境設定を GPU に設定します。 複数の GPU がある場合は、代わりに GPU ID 環境設定を指定します。

エンティティ認識モデルのトレーニング

[エンティティ認識モデルのトレーニング (Train Entity Recognition Model)] ツールを使用すると、名前付きエンティティ認識の NLP モデルをトレーニングできます。 このツールでは機械学習のアプローチを用い、入力テキストとそのテキストのラベル付きエンティティのペアで構成されるトレーニング サンプルを入力することで、モデルのトレーニングを行います。 NLP モデルのトレーニングは計算負荷が高いタスクなので、GPU を使用することをお勧めします。

トレーニング データは、NER タスクの標準データセット形式のトレーニング データを含むフォルダーの形で入力されます。 トレーニング データは *.json または *.csv ファイル形式です。 次のデータセット タイプがサポートされています。

  • ner_json - フォルダーには、テキストとラベル付きエンティティを spaCy JSON トレーニング形式でフォーマットした *.json ファイルが含まれている必要があります。
  • IOB - Ramshaw および Marcus が論文 "Text Chunking using Transformation-Based Learning" で提案した Inside、Outside、Beginnig (IOB) 形式。 この形式では、フォルダーに次の 2 つの *.csv ファイルが格納されている必要があります。
    • token.csv - このファイルには、入力チャンクとしてテキストが含まれている必要があります。
    • tags.csv - このファイルには、テキスト チャンクとして IOB タグが含まれている必要があります。
  • BILUO - IOB 形式のエクステンションで、Begging の B、Inside の I、Last の L、Unit の U、Outside の O のタグが含まれます。 この形式を使用する場合は、トレーニング データを格納するフォルダーには次の 2 つの *.csv ファイルが含まれている必要があります。
    • token.csv - このファイルには、入力チャンクとしてテキストが含まれている必要があります。
    • tags.csv - このファイルには、テキスト チャンクとして BILUO タグが含まれている必要があります。

これらの形式とそのデータへのラベル付けについての詳細は、「Doccano を使用したテキストへのラベリング ガイド」をご参照ください。

エンティティ認識モデルをトレーニングする場合、モデルを最初からトレーニングするか、すでにトレーニングされたモデルをさらに微調整するかを選択できます。

トレーニング サンプルに含まれるターゲット エンティティと同じセットを持つ事前トレーニング済みエンティティ認識モデルがすでにあって利用できる場合は、それを新しいトレーニング データでさらに微調整できます。 新しいモデルをトレーニングするよりも、既存のモデルを微調整する方が時間を短縮でき、トレーニング サンプルも少なくて済みます。 事前トレーニング済みモデルを微調整する際は、事前トレーニング済みモデルに使用される同じバックボーン モデルを維持してください。

事前トレーニング済みモデルは、Esri モデル定義ファイル (*.emd) か、ディープ ラーニング パッケージ ファイル (*.dlpk) のいずれかです。 出力モデルも、これらの形式で、指定した出力モデル フォルダーに保存されます。

ArcGIS のエンティティ認識モデルは、住所エンティティを他のエンティティとは異なる方法で処理します。 エンティティを場所として処理する場合は、ツールのパラメーターで住所エンティティとして指定する必要があります。 推論では、これらのエンティティは、指定のロケーターでジオコーディングされ、エンティティ抽出処理の結果としてフィーチャクラスが生成されます。 ロケーターが提供されていないか、トレーニング済みモデルが住所エンティティを抽出しない場合は、抽出したエンティティを含むテーブルが代わりに生成されます。

ディープ ラーニング モデルのトレーニングは反復的な処理で、入力トレーニング データが複数回にわたってニューラル ネットワークで渡されます。 トレーニング データ全体の各トレーニング パスは、エポックと呼ばれます。 [最大エポック] パラメーターは、トレーニング中のモデルにおいて、トレーニング データが確認される最大回数を指定します。 これは、トレーニング対象のモデル、タスクの複雑さ、使用できるトレーニング サンプルの数によって異なります。 トレーニング サンプルの数が多い場合は、小さい値を使用できます。 一般的に、検証損失が少なくなるまで、エポックを増やしてトレーニングを繰り返すことをお勧めします。

[モデル バックボーン] パラメーターは、モデルのエンコーダーとして機能し、入力テキストの特徴表現を抽出する、事前構成済みのニューラル ネットワークを指定します。 このモデルは、大量のテキストに対して半教師付きで事前トレーニングされ、Transformer アーキテクチャに基づく BERT、ALBERT、RoBERTa、spaCy ベースのエンコーダーをサポートしております。

モデルのトレーニングはバッチで行われ、バッチ サイズ パラメーターは 1 回のトレーニングで処理されるトレーニング サンプルの数を指定します。 バッチ サイズを大きくすると、ツールのパフォーマンスが向上しますが、バッチ サイズが増加するにつれて、使用されるメモリ量が増加します。 モデルのトレーニング中にメモリ不足エラーが発生した場合は、より小さいバッチ サイズを使用してください。

[学習率] パラメーターは、非常に重要なハイパーパラメーターの 1 つです。 これは、トレーニング中に調整されるモデル ウェイトの割合を表します。 低い学習率を指定すると、モデルはゆっくりと向上し、トレーニングにも時間がかかるため、時間とリソースが浪費されることになります。 学習率が高ければ逆効果となり、モデルはあまり学習しない可能性があります。 高い学習率では、モデル ウェイトが大幅に調整され、不正な結果が生成されることになります。 ほとんどの場合、このツールでは Leslie N. Smith の "Cyclical Learning Rates for Training Neueal Networks" に基づく自動学習率ファインダーを使用するため、[学習率] パラメーターには値を指定しないことをお勧めします。

このツールでは、トレーニング データの一部 (デフォルトでは 10%) を検証用のセットとして使用します。 [検証率] パラメーターでは、検証に使用するトレーニング データの量を調整できます。

デフォルトでは、早期停止手法を使用するため、後続のトレーニング エポックでモデルが改善しなくなった時点で、モデルのトレーニングを停止します。 [モデルが改善しなくなったら停止] チェックボックスをオフにすると、この動作をオフにできます。

また、事前トレーニング済みモデルのバックボーン レイヤーを固定するかどうかも指定できます。これにより、ウェイトとバイアスが本来の設計どおりになります。 デフォルトでは、バックボーン モデルのレイヤーは固定されず、[モデル バックボーン] 値のウェイトとバイアスはトレーニング サンプルに合わせて変更できます。 この処理には時間がかかりますが、通常は優れた結果が得られます。

参考文献

Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. "Attention Is All You Need." December 6, 2017. https://arxiv.org/abs/1706.03762.

Honnibal, Matthew. "Embed, encode, attend, predict: The new deep learning formula for state-of-the-art NLP models." https://explosion.ai/blog/deep-learning-formula-nlp.

Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "Fully Understanding the Hashing Trick." May 22, 2018. https://arxiv.org/pdf/1805.08539.pdf.

"Doccano." https://github.com/doccano/doccano.

Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." May 24, 2019. https://arxiv.org/pdf/1810.04805.pdf.

Smith, Leslie N. "Cyclical Learning Rates for Training Neural Networks." April 4, 2017. https://doi.org/10.48550/arxiv.1506.01186.

Ramshaw, Lance, and Mitch Marcus. "Text Chunking using Transformation-Based Learning." 1995. In Third Workshop on Very Large Corpora.