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

サマリー

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

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

使用法

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

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

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

  • ツールへの入力は、*.json または *.csv ファイルを含むフォルダーです。

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

パラメーター

ラベル説明データ タイプ
入力フォルダー

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 ファイルが含まれる必要があります。

    • token.csv - 入力チャンクとしてテキストが含まれます。
    • tags.csv - テキスト チャンクの IOB タグが含まれます。
  • BILUO - IOB 形式のエクステンションで、追加で L (Last) および U (Unit) タグが含まれます。

    トレーニング データ フォルダーには、次の 2 つの *.csv ファイルが含まれる必要があります。

    • token.csv - 入力チャンクとしてテキストが含まれます。
    • tags.csv - テキスト チャンクの BILUO タグが含まれます。

Folder
出力モデル

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

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-baseDistilRoBERTa は、OpenAI の WebText データセットの複製である OpenWebTextCorpus でのみ roberta-base の監視下で事前トレーニングされた英語モデルです。
  • distilbert-base-casedモデルは DistilBERT ニューラル ネットワークを使用してトレーニングされます。 DistilBERT は、より小さい汎用言語表現モデルです。
  • spacyモデルは SpaCy ニューラル ネットワークを使用してトレーニングされます。 SpaCy は、高度な自然言語処理のためのオープンソース ライブラリです。
String
バッチ サイズ
(オプション)

1 回に処理されるトレーニング サンプルの数。 このパラメーターは、SpaCy バックボーンを持つモデルには適用されません。 デフォルト値は 2 です。

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

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

トレーニング データの最大シーケンス長を表す seq_len など、モデルのトレーニングにおいて考慮される、モデルの初期化に使用される追加の引数。

使用可能な、サポートされるモデル引数のリストについては、EntityRecognizer ドキュメントのキーワード引数をご参照ください。

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

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

Double
検証率
(オプション)

モデルの検証に使用するトレーニング サンプルの割合。 デフォルト値は 10 です。

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

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

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

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

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

Boolean

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})
名前説明データ タイプ
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 ファイルが含まれる必要があります。

    • token.csv - 入力チャンクとしてテキストが含まれます。
    • tags.csv - テキスト チャンクの IOB タグが含まれます。
  • BILUO - IOB 形式のエクステンションで、追加で L (Last) および U (Unit) タグが含まれます。

    トレーニング データ フォルダーには、次の 2 つの *.csv ファイルが含まれる必要があります。

    • token.csv - 入力チャンクとしてテキストが含まれます。
    • tags.csv - テキスト チャンクの BILUO タグが含まれます。

Folder
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-baseDistilRoBERTa は、OpenAI の WebText データセットの複製である OpenWebTextCorpus でのみ roberta-base の監視下で事前トレーニングされた英語モデルです。
  • distilbert-base-casedモデルは DistilBERT ニューラル ネットワークを使用してトレーニングされます。 DistilBERT は、より小さい汎用言語表現モデルです。
  • spacyモデルは SpaCy ニューラル ネットワークを使用してトレーニングされます。 SpaCy は、高度な自然言語処理のためのオープンソース ライブラリです。
String
batch_size
(オプション)

1 回に処理されるトレーニング サンプルの数。 このパラメーターは、SpaCy バックボーンを持つモデルには適用されません。 デフォルト値は 2 です。

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

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

トレーニング データの最大シーケンス長を表す seq_len など、モデルのトレーニングにおいて考慮される、モデルの初期化に使用される追加の引数。

使用可能な、サポートされるモデル引数のリストについては、EntityRecognizer ドキュメントのキーワード引数をご参照ください。

Value Table
learning_rate
(オプション)

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

Double
validation_percentage
(オプション)

モデルの検証に使用するトレーニング サンプルの割合。 デフォルト値は 10 です。

Double
stop_training
(オプション)

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

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

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

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

コードのサンプル

TrainEntityRecognitionModel (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、TrainEntityRecognitionModel 関数の使用方法を示しています。

# Name: TrainEntityRecognizer.py
# Description: Train an Entity Recognition model to extract useful entities like "Address", "Date" from text.  
#
# Requirements: ArcGIS Pro Advanced license

# Import system modules
import arcpy
import os

arcpy.env.workspace = "C:/textanalysisexamples/data"
dbpath = "C:/textanalysisexamples/Text_analysis_tools.gdb"

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

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