エンティティ認識モデルのトレーニング (Train Entity Recognition Model) (GeoAI)

サマリー

未加工のテキストから事前定義されたエンティティを抽出するエンティティ認識モデルをトレーニングします。

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

使用法

  • このツールを使用するには、ディープ ラーニング フレームワークがインストールされている必要があります。 ArcGIS Pro のディープ ラーニング フレームワークを使用するようにコンピューターを設定するには、「ArcGIS 用のディープ ラーニング フレームワークのインストール」をご参照ください。

  • このツールは、既存のトレーニング済みモデルの微調整にも使用できます。

  • GPU を使用してこのツールを実行するには、プロセッサ タイプ環境を GPU に設定します。 複数の GPU がある場合は、代わりに GPU ID 環境を指定します。

  • 入力には、テキスト フィールドと名前付きエンティティ ラベルを含むフィーチャクラスまたはテーブル、あるいは .json または .csv ファイルのトレーニング データがあるフォルダーを指定できます。

  • このツールは、NER モデルのトレーニングに Transformer ベースのバックボーンを使用し、Mistral LLM を使用したプロンプト付きコンテキスト内学習をサポートしています。 Mistral バックボーンをインストールするには、「ArcGIS Mistral バックボーン」をご参照ください。

  • このツールの実行要件および発生する可能性のある問題の詳細については、「ディープ ラーニングに関するよくある質問」をご参照ください。

パラメーター

ラベル説明データ タイプ
入力フォルダーまたはテーブル

入力は次のいずれかになります。

  • モデルの入力テキストを含むテキスト フィールドと、選択したテキスト フィールドがモデルの入力テキストとして使用され残りのフィールドが名前付きエンティティのラベルとして処理されるラベル付きエントリのある、フィーチャクラスまたはテーブル。
  • 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 タグが含まれます。
Folder; Feature Layer; Table View; Feature Class
出力モデル

トレーニング済みモデルが格納される出力フォルダーの場所。

Folder
事前トレーニング済みモデル ファイル
(オプション)

新しいモデルの微調整に使用される事前トレーニング済みモデル。 入力には Esri モデル定義ファイル (.emd) またはディープ ラーニング パッケージ ファイル (.dlpk) を指定できます。

類似したエンティティを持つ事前トレーニング済みモデルは、新しいモデルに合わせて微調整することができます。 事前トレーニング済みモデルは、新しいモデルのトレーニングに使用される同じモデル タイプおよびバックボーン モデルでトレーニングされている必要があります。

File
住所エンティティ
(オプション)

ロケーションとして処理される住所エンティティ。 推論では、このようなエンティティは、指定のロケーターでジオコーディングされ、エンティティ抽出処理の結果としてフィーチャクラスが生成されます。 ロケーターが提供されていないか、トレーニング済みモデルが住所エンティティを抽出しない場合、抽出したエンティティを含むテーブルが代わりに生成されます。

String
最大エポック
(オプション)

モデルをトレーニングする場合の対象となるエポックの最大数。 最大エポック値を 1 に設定すると、データセットがニューラル ネットワークによって 1 回渡されます。 デフォルト値は 5 です。

Long
モデル バックボーン
(オプション)

新しいモデルをトレーニングするアーキテクチャとして使用する、事前構成済みのニューラル ネットワークを指定します。

  • bert-base-casedモデルは BERT ニューラル ネットワークを使用してトレーニングされます。 BERT は、Masked Language Model 目的関数と Next Sentence Prediction を使用して事前トレーニングされます。
  • roberta-baseモデルは RoBERTa ニューラル ネットワークを使用してトレーニングされます。 RoBERTa は、BERT の主要なハイパーパラメーターを変更し、小さいバッチと高い学習率により、目的の事前トレーニングと Next Sentence のトレーニングを回避します。
  • albert-base-v1モデルは ALBERT ニューラル ネットワークを使用してトレーニングされます。 ALBERT は、文章の一貫性 (intersentence coherence) のモデリングに焦点を当てた自己監視損失を使用しており、BERT より優れたスケーラビリティが得られます。
  • xlnet-base-casedモデルは XLNet ニューラル ネットワークを使用してトレーニングされます。 XLNet は、一般化された自己回帰事前トレーニング方法です。 これにより、因数分解順序のすべての順列で予想される確率を最大化することで双方向のコンテキストを学習でき、BERT の欠点が克服されます。
  • xlm-roberta-baseモデルは XLM-RoBERTa ニューラル ネットワークを使用してトレーニングされます。 XLM-RoBERTa は、100 の異なる言語でトレーニングされた多言語モデルです。 一部の XLM 多言語モデルとは異なり、使用されている言語を理解して入力 ID から正しい言語を識別するための言語テンソルを必要としません。
  • distilroberta-baseモデルは DistilRoBERTa ニューラル ネットワークを使用してトレーニングされます。 DistilRoBERTa は、OpenAI の WebText データセットの複製である OpenWebTextCorpus にのみ基づく roberta-base ニューラル ネットワークの管理下で事前トレーニングされた英語モデルです。
  • distilbert-base-casedモデルは DistilBERT ニューラル ネットワークを使用してトレーニングされます。 DistilBERT は、より小さい汎用言語表現モデルです。
  • mistralこのモデルは、Mistral 大規模言語モデル (LLM) を使用してトレーニングされます。 Mistral は、Sliding Window Attention、Grouped Query Attention、Byte-fallback BPE トークナイザーを使用するデコーダーオンリーなトランスフォーマーです。 Mistral バックボーンをインストールするには、「ArcGIS Mistral バックボーン」をご参照ください。
String
バッチ サイズ
(オプション)

1 回に処理されるトレーニング サンプルの数。 デフォルト値は 2 です。

バッチ サイズを大きくすると、ツールのパフォーマンスが向上しますが、バッチ サイズが増加するにつれて、使用されるメモリ量が増加します。 メモリ不足エラーが発生した場合は、より小さなバッチ サイズを使用してください。

Double
モデル引数
(オプション)

モデルの初期化に使用される追加の引数。 サポートされるモデル引数は sequence_length です。これは、モデルのトレーニングにおいて考慮されるトレーニング データの最大シーケンス長を設定するために使用されます。

Value Table
学習率
(オプション)

トレーニング処理の際に調整されるモデル加重の量を示すステップ サイズ。 値を指定しない場合、最適な学習率が自動的に生成されます。

Double
検証率
(オプション)

モデルの検証に使用するトレーニング サンプルの割合。 デフォルト値は、Transformer ベースのモデル バックボーンの場合は 10、Mistral バックボーンの場合は 50 です。

Double
モデルの改善が見込めなくなった時点で停止
(オプション)

モデルの改善がなくなった時点でモデルのトレーニングを停止するか、[最大エポック] パラメーター値に達するまでトレーニングを続行するかを指定します。

  • オン - [最大エポック] パラメーター値にかかわらず、モデルの改善がなくなった時点でモデルのトレーニングを停止します。 これがデフォルトです。
  • オフ - [最大エポック] パラメーター値に到達するまで、モデルのトレーニングが続行されます。
Boolean
モデル バックボーンをトレーニング可能にする
(オプション)

事前トレーニング済みモデルのバックボーン レイヤーを固定するかどうかを指定します。これにより、加重とバイアスが本来の設計どおりになります。

  • オン - バックボーン レイヤーは固定されず、[モデル バックボーン] パラメーター値の加重とバイアスを、トレーニング サンプルに合わせて変更できます。 この処理には時間がかかりますが、通常は優れた結果が得られます。 これがデフォルトです。
  • オフ - バックボーン レイヤーは固定され、[モデル バックボーン] パラメーター値の事前定義済み加重とバイアスはトレーニング中に変更されません。

Boolean
テキスト フィールド

モデルによって入力として使用されるテキストを含む、入力フィーチャクラスまたはテーブル内のテキスト フィールド。 このパラメーターは、[入力フォルダーまたはテーブル] パラメーター値がフィーチャクラスまたはテーブルである場合は必須です。

Field
プロンプト
(オプション)

予測した出力を生成するために、大規模言語モデル (LLM) に与えられる特定の入力または手順。

デフォルト値は、指定テキスト内の指定クラスに属する名前付きエンティティの抽出です。 他のクラスに属するエンティティにはタグを付けないでください。

String

arcpy.geoai.TrainEntityRecognitionModel(in_folder, out_model, {pretrained_model_file}, {address_entity}, {max_epochs}, {model_backbone}, {batch_size}, {model_arguments}, {learning_rate}, {validation_percentage}, {stop_training}, {make_trainable}, text_field, {prompt})
名前説明データ タイプ
in_folder

入力は次のいずれかになります。

  • モデルの入力テキストを含むテキスト フィールドと、選択したテキスト フィールドがモデルの入力テキストとして使用され残りのフィールドが名前付きエンティティのラベルとして処理されるラベル付きエントリのある、フィーチャクラスまたはテーブル。
  • 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 タグが含まれます。
Folder; Feature Layer; Table View; Feature Class
out_model

トレーニング済みモデルが格納される出力フォルダーの場所。

Folder
pretrained_model_file
(オプション)

新しいモデルの微調整に使用される事前トレーニング済みモデル。 入力には Esri モデル定義ファイル (.emd) またはディープ ラーニング パッケージ ファイル (.dlpk) を指定できます。

類似したエンティティを持つ事前トレーニング済みモデルは、新しいモデルに合わせて微調整することができます。 事前トレーニング済みモデルは、新しいモデルのトレーニングに使用される同じモデル タイプおよびバックボーン モデルでトレーニングされている必要があります。

File
address_entity
(オプション)

ロケーションとして処理される住所エンティティ。 推論では、このようなエンティティは、指定のロケーターでジオコーディングされ、エンティティ抽出処理の結果としてフィーチャクラスが生成されます。 ロケーターが提供されていないか、トレーニング済みモデルが住所エンティティを抽出しない場合、抽出したエンティティを含むテーブルが代わりに生成されます。

String
max_epochs
(オプション)

モデルをトレーニングする場合の対象となるエポックの最大数。 最大エポック値を 1 に設定すると、データセットがニューラル ネットワークによって 1 回渡されます。 デフォルト値は 5 です。

Long
model_backbone
(オプション)

新しいモデルをトレーニングするアーキテクチャとして使用する、事前構成済みのニューラル ネットワークを指定します。

  • bert-base-casedモデルは BERT ニューラル ネットワークを使用してトレーニングされます。 BERT は、Masked Language Model 目的関数と Next Sentence Prediction を使用して事前トレーニングされます。
  • roberta-baseモデルは RoBERTa ニューラル ネットワークを使用してトレーニングされます。 RoBERTa は、BERT の主要なハイパーパラメーターを変更し、小さいバッチと高い学習率により、目的の事前トレーニングと Next Sentence のトレーニングを回避します。
  • albert-base-v1モデルは ALBERT ニューラル ネットワークを使用してトレーニングされます。 ALBERT は、文章の一貫性 (intersentence coherence) のモデリングに焦点を当てた自己監視損失を使用しており、BERT より優れたスケーラビリティが得られます。
  • xlnet-base-casedモデルは XLNet ニューラル ネットワークを使用してトレーニングされます。 XLNet は、一般化された自己回帰事前トレーニング方法です。 これにより、因数分解順序のすべての順列で予想される確率を最大化することで双方向のコンテキストを学習でき、BERT の欠点が克服されます。
  • xlm-roberta-baseモデルは XLM-RoBERTa ニューラル ネットワークを使用してトレーニングされます。 XLM-RoBERTa は、100 の異なる言語でトレーニングされた多言語モデルです。 一部の XLM 多言語モデルとは異なり、使用されている言語を理解して入力 ID から正しい言語を識別するための言語テンソルを必要としません。
  • distilroberta-baseモデルは DistilRoBERTa ニューラル ネットワークを使用してトレーニングされます。 DistilRoBERTa は、OpenAI の WebText データセットの複製である OpenWebTextCorpus にのみ基づく roberta-base ニューラル ネットワークの管理下で事前トレーニングされた英語モデルです。
  • distilbert-base-casedモデルは DistilBERT ニューラル ネットワークを使用してトレーニングされます。 DistilBERT は、より小さい汎用言語表現モデルです。
  • mistralこのモデルは、Mistral 大規模言語モデル (LLM) を使用してトレーニングされます。 Mistral は、Sliding Window Attention、Grouped Query Attention、Byte-fallback BPE トークナイザーを使用するデコーダーオンリーなトランスフォーマーです。 Mistral バックボーンをインストールするには、「ArcGIS Mistral バックボーン」をご参照ください。
String
batch_size
(オプション)

1 回に処理されるトレーニング サンプルの数。 デフォルト値は 2 です。

バッチ サイズを大きくすると、ツールのパフォーマンスが向上しますが、バッチ サイズが増加するにつれて、使用されるメモリ量が増加します。 メモリ不足エラーが発生した場合は、より小さなバッチ サイズを使用してください。

Double
model_arguments
[model_arguments,...]
(オプション)

モデルの初期化に使用される追加の引数。 サポートされるモデル引数は sequence_length です。これは、モデルのトレーニングにおいて考慮されるトレーニング データの最大シーケンス長を設定するために使用されます。

Value Table
learning_rate
(オプション)

トレーニング処理の際に調整されるモデル加重の量を示すステップ サイズ。 値を指定しない場合、最適な学習率が自動的に生成されます。

Double
validation_percentage
(オプション)

モデルの検証に使用するトレーニング サンプルの割合。 デフォルト値は、Transformer ベースのモデル バックボーンの場合は 10、Mistral バックボーンの場合は 50 です。

Double
stop_training
(オプション)

モデルの改善がなくなった時点でモデルのトレーニングを停止するか、max_epochs パラメーター値に達するまでトレーニングを続行するかを指定します。

  • STOP_TRAININGmax_epochs パラメーター値にかかわらず、モデルの改善がなくなった時点でモデルのトレーニングを停止します。 これがデフォルトです。
  • CONTINUE_TRAININGmax_epochs パラメーター値に到達するまで、モデルのトレーニングは続行します。
Boolean
make_trainable
(オプション)

事前トレーニング済みモデルのバックボーン レイヤーを固定するかどうかを指定します。これにより、加重とバイアスが本来の設計どおりになります。

  • TRAIN_MODEL_BACKBONEバックボーン レイヤーは固定されず、model_backbone パラメーター値の加重とバイアスを、トレーニング サンプルに合わせて変更できます。 この処理には時間がかかりますが、通常は優れた結果が得られます。 これがデフォルトです。
  • FREEZE_MODEL_BACKBONEバックボーン レイヤーは固定され、model_backbone パラメーター値の事前定義済み加重とバイアスはトレーニング中に変更されません。
Boolean
text_field

モデルによって入力として使用されるテキストを含む、入力フィーチャクラスまたはテーブル内のテキスト フィールド。 このパラメーターは、in_folder パラメーター値がフィーチャクラスまたはテーブルである場合は必須です。

Field
prompt
(オプション)

予測した出力を生成するために、大規模言語モデル (LLM) に与えられる特定の入力または手順。

デフォルト値は、指定テキスト内の指定クラスに属する名前付きエンティティの抽出です。 他のクラスに属するエンティティにはタグを付けないでください。

String

コードのサンプル

TrainEntityRecognitionModel (スタンドアロン スクリプト)

次の例は、TrainEntityRecognitionModel 関数を使用する方法を示しています。

# Name: TrainEntityRecognizer.py
# Description: Train an Entity Recognition model to extract useful entities such as "Address", "Date" from text.  

# Import system modules
import arcpy

arcpy.env.workspace = "C:/textanalysisexamples/data"

# Set local variables
in_folder = "train_data"
out_folder = "test_bio_format"

# Run Train Entity Recognition Model
arcpy.geoai.TrainEntityRecognitionModel(in_folder, out_folder)

ライセンス情報

  • Basic: No
  • Standard: No
  • Advanced: Yes

関連トピック