名前付きエンティティ認識 (NER) としても呼ばれるエンティティ認識は、文、段落、テキスト レポート、またはその他の形式の非構造化テキストから情報を抽出するプロセスです。 GeoAI ツールボックスのテキスト分析ツールセットには、エンティティ認識モデルをトレーニングし、これらのモデルを使用して非構造化テキストからエンティティを抽出するための自然言語処理 (NLP) 技術を使用するツールが含まれています。
[エンティティ認識モデルのトレーニング (Train Entity Recognition Model)] ツールは、トレーニング データセットの一部として入力された事前定義済みエンティティのセット (組織、個人、日付、国など) を抽出するための NLP モデルをトレーニングします。 トレーニングされたエンティティ認識モデルは、[ディープ ラーニングを使用したエンティティ抽出 (Extract Entities Using Deep Learning)] ツールで使用して、それらのエンティティを未加工テキストから構造化された形式に抽出します。
適用例
このツールは、次のような場合に適用できます。
- 犯罪報告書から、使用された場所、報告担当官、武器などのデータを抽出します。 これにより傾向を表示できるので、改善策の策定に役立てることができます。
- 場所や支援の必要性などの情報は、ツイートやソーシャル メディアの投稿から抽出できます。 これにより、自然災害時に緊急支援が必要な地域を特定できます。
ArcGIS のエンティティ認識モデルは、埋め込み、エンコード、アテンド、予測フレームワークで動作する Transformer アーキテクチャに基づいています。
- 埋め込み - このプロセスでは、入力テキストは密な単語の埋め込みに変換されます。 これらの埋め込みは、入力テキストからセマンティック情報を取得し、モデルでの操作がはるかに簡単です。
- エンコード - このプロセスでは、コンテキストはワード ベクターにエンコードされます。 これは、残差トリグラム畳み込みニューラルネットワーク (CNN) を使用して行われます。
- アテンド - 前のステップからのマトリックス出力は、予測のために標準のフィードフォワード ネットワークに渡される単一ベクターに縮小されます。 このステップは、アテンション機構と同様の効果があります。
- 予測 - モデルの最終ステップは、入力テキストを前提とした予測です。 ここで、アテンション レイヤーからのベクターがマルチレイヤー パーセプトロンに渡され、エンティティ ラベル ID が出力されます。
Transformer ベースのバックエンドは、”Attention Is All You Need” (Vaswani 他著) で提案されているアーキテクチャを使用します。これにより、モデルの精度向上と並列化が可能になりますが、トレーニングには精度の低いラベル付きデータが必要です。 内部的には、ArcGIS の Transformer ベースのエンティティ認識モデルには 2 つのコンポーネントがあります。
- エンコーダー: エンコーダーはモデルのバックボーンとしての役割を担い、入力テキストを固定長ベクトル形式の特徴表現に変換します。 このモデルは、Transformer アーキテクチャに基づき、大量のテキストに対して事前にトレーニングされた BART、ALBERT、RoBERTa などの一般的なエンコーダーを使用しています。
- トークン レベル分類器 - トークン レベル分類器はモデルのヘッドとしての役割を担い、各トークンのフィーチャ表現をさまざまなエンティティを表す複数のカテゴリに分類します。 多くの分類器は、ニューラル ネットワークの単純な線形レイヤーです。
ArcGIS のエンティティ認識モデルも、Mistral モデル バックボーンをサポートしています。 Mistral は、Transformer アーキテクチャに基づく大規模言語モデルで、デコーダーオンリーなモデルとして動作します。 Mistral のアーキテクチャの主要コンポーネントは次のとおりです。
- Sliding Window Attention - 長いテキストを小さな重複セグメントで処理することで効率的に処理し、重要なコンテキストを維持しながら計算コストとメモリ使用量を削減します。
- Grouped Query Attention - 類似のクエリをまとめてクラスタリングすることで効率を高め、アテンションの計算量を最小限に抑え、処理を高速化します。
- Byte-Fallback BPE (Byte Pair Encoding) Tokenizer - モデルが処理できるようにテキストをトークンに変換します。
注意:
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 モデルをトレーニングできます。 このツールでは機械学習のアプローチを用い、入力テキストとそのテキストのラベル付きエンティティのペアで構成されるトレーニング サンプルを入力することで、モデルのトレーニングを行います。 Mistral モデル バックボーンでは、コンテキスト内学習を使用し、入力プロンプトを通じて、また、目的の出力を推測するのに役立つ具体的な例をモデルに提供することで、モデルの理解と応答をガイドします。 NLP モデルのトレーニングは計算負荷が高いタスクなので、GPU を使用することをお勧めします。
入力は次のいずれかになります。
- モデルの入力テキストとラベル付きエンティティのテキスト フィールドを含むフィーチャクラスまたはテーブル。ここで、選択したテキスト フィールドはモデルの入力テキストとして使用され、残りのフィールドは名前付きエンティティのラベルとして扱われます。
- NER タスクの標準データセット形式のトレーニング データを含むフォルダー。 トレーニング データは .json または .csv ファイル形式である必要があります。 ファイル形式が、入力のデータセット タイプを決定します。
- 入力がフォルダーの場合、次のデータセット タイプがサポートされています。
- ner_json - トレーニング データ フォルダーには、テキストとラベル付きエンティティを spaCy JSON トレーニング形式でフォーマットした .json ファイルが含まれている必要があります。
- IOB - Ramshaw および Marcus が論文「Text Chunking using Transformation-Based Learning」で提案した IOB (I - Inside、O - Outside、B - Begging タグ) 形式。
トレーニング データ フォルダーには、次の 2 つの .csv ファイルが含まれる必要があります。
- tokens.csv - 入力チャンクとしてテキストが含まれています。
- tags.csv - テキスト チャンクの IOB タグが含まれています。
- BILUO - IOB 形式のエクステンションで、追加で L (Last) および U (Unit) タグが含まれます。
トレーニング データ フォルダーには、次の 2 つの .csv ファイルが含まれる必要があります。
- tokens.csv - 入力チャンクとしてテキストが含まれています。
- tags.csv - テキスト チャンクの BILUO タグが含まれます。
- 入力がフォルダーの場合、次のデータセット タイプがサポートされています。
エンティティ認識モデルをトレーニングする場合、モデルを最初からトレーニングするか、すでにトレーニングされたモデルをさらに微調整するか、コンテキスト内学習を使用できます。
トレーニング サンプルに含まれるターゲット エンティティと同じセットを持つ事前トレーニング済みエンティティ認識モデルがすでにあって利用できる場合は、それを新しいトレーニング データでさらに微調整できます。 新しいモデルをトレーニングするよりも、既存のモデルを微調整する方が時間を短縮でき、トレーニング サンプルも少なくて済みます。 事前トレーニング済みモデルを微調整する際は、事前トレーニング済みモデルに使用される同じバックボーン モデルを維持してください。
事前トレーニング済みモデルは、Esri モデル定義ファイル (*.emd) か、ディープ ラーニング パッケージ ファイル (*.dlpk) のいずれかです。 出力モデルも、これらの形式で、指定した出力モデル フォルダーに保存されます。
ArcGIS のエンティティ認識モデルは、住所エンティティを他のエンティティとは異なる方法で処理します。 エンティティを場所として処理する場合は、ツールのパラメーターで住所エンティティとして指定する必要があります。 推論では、これらのエンティティは、指定のロケーターでジオコーディングされ、エンティティ抽出処理の結果としてフィーチャクラスが生成されます。 ロケーターが提供されていないか、トレーニング済みモデルが住所エンティティを抽出しない場合は、抽出したエンティティを含むテーブルが代わりに生成されます。
ディープ ラーニング モデルのトレーニングは反復的な処理で、入力トレーニング データが複数回にわたってニューラル ネットワークで渡されます。 トレーニング データ全体の各トレーニング パスは、エポックと呼ばれます。 [最大エポック] パラメーターは、トレーニング中のモデルにおいて、トレーニング データが確認される最大回数を指定します。 これは、トレーニング対象のモデル、タスクの複雑さ、使用できるトレーニング サンプルの数によって異なります。 トレーニング サンプルの数が多い場合は、小さい値を使用できます。 一般的に、検証損失が少なくなるまで、エポックを増やしてトレーニングを繰り返すことをお勧めします。
[モデル バックボーン] パラメーターは、モデルのエンコーダーとして機能し、入力テキストの特徴表現を抽出する、事前構成済みのニューラル ネットワークを指定します。 このパラメーターは、Transformer アーキテクチャに基づいて大量のテキストに対して半教師付きで事前トレーニングされた BERT、ALBERT、RoBERTa ベースのエンコーダーをサポートしています。 [モデル バックボーン] パラメーターは、Mistral 大規模言語モデル (LLM) もサポートしています。 Mistral は、長いテキストを効率的に処理するための Sliding Window Attention、計算を効率化するための Grouped Query Attention、および多様なテキスト入力を処理するための Byte-Fallback BPE Tokenizer を使用するデコーダーオンリーなトランスフォーマーです。
モデルのトレーニングはバッチで行われ、[バッチ サイズ] パラメーターは 1 回のトレーニングで処理されるトレーニング サンプルの数を指定します。 バッチ サイズを大きくすると、ツールのパフォーマンスが向上しますが、バッチ サイズが増加するにつれて、使用されるメモリ量が増加します。 モデルのトレーニング中にメモリ不足エラーが発生した場合は、より小さいバッチ サイズを使用してください。
[学習率] パラメーターは、非常に重要なハイパーパラメーターの 1 つです。 これは、トレーニング中に調整されるモデル ウェイトの割合を表します。 低い学習率を指定すると、モデルはゆっくりと向上し、トレーニングにも時間がかかるため、時間とリソースが浪費されることになります。 学習率が高ければ逆効果となり、モデルはあまり学習しない可能性があります。 高い学習率では、モデル ウェイトが大幅に調整され、不正な結果が生成されることになります。 ほとんどの場合、このツールでは Leslie N. Smith の "Cyclical Learning Rates for Training Neueal Networks" に基づく自動学習率ファインダーを使用するため、[学習率] パラメーターには値を指定しないことをお勧めします。
このツールでは、トレーニング データの一部を検証用のセットとして使用します。 [検証率] パラメーターでは、検証に使用するトレーニング データの量を調整できます。 Mistral モデルの場合、必要なトレーニング セットが小さく、モデルのパフォーマンスの評価に大規模な検証用のセットを利用するため、データの少なくとも 50 パーセントを検証用に予約する必要があります。
デフォルトでは、早期停止手法を使用するため、後続のトレーニング エポックでモデルが改善しなくなった時点で、モデルのトレーニングを停止します。 [モデルが改善しなくなったら停止] チェックボックスをオフにすると、この動作をオフにできます。
また、事前トレーニング済みモデルのバックボーン レイヤーを固定するかどうかも指定できます。これにより、ウェイトとバイアスが本来の設計どおりになります。 デフォルトでは、バックボーン モデルのレイヤーは固定されず、[モデル バックボーン] 値のウェイトとバイアスはトレーニング サンプルに合わせて変更できます。 この処理には時間がかかりますが、通常は優れた結果が得られます。
リソース
詳細については、以下をご参照ください。
"Attention Is All You Need" by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, and Illia Polosukhin on arXivLabs at Cornell University
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.
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.
"Mistral." https://docs.mistral.ai/getting-started/open_weight_models/.