テキスト分類モデルのトレーニング (Train Text Classification Model) (GeoAI)

サマリー

単一または複数ラベルのテキスト分類モデルをトレーニングし、事前定義済みカテゴリまたはラベルを非構造化テキストに割り当てます。

テキスト分類の仕組みの詳細

使用法

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

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

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

  • このツールへの入力は、トレーニング データを含むテーブルまたはフィーチャクラスで、入力テキストを含むテキスト フィールドとターゲット クラス ラベルを含むラベル フィールドがあります。

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

パラメーター

ラベル説明データ タイプ
入力テーブル

モデルの入力テキストを含むテキスト フィールドと、ターゲットクラス ラベルを含むラベル フィールドのある、フィーチャクラスまたはテーブル。

Feature Layer; Table View
テキスト フィールド

モデルによって分類されるテキストを含む、入力フィーチャクラスまたはテーブルのテキスト フィールド。

Field
ラベル フィールド

モデルのトレーニングに使用されるターゲット クラス ラベルを含む、入力フィーチャクラスまたはテーブルのテキスト フィールド。 複数ラベルのテキスト分類の場合は、複数のテキスト フィールドを指定します。

Field
出力モデル

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

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

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

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

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

モデルをトレーニングする場合の対象となるエポックの最大数。 最大エポック値を 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 は、より小さい汎用言語表現モデルです。
String
バッチ サイズ
(オプション)

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

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

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

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

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

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

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

Double
検証率
(オプション)

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

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

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

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

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

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

Boolean
HTML タグの削除
(オプション)

HTML タグを入力テキストから削除するかどうかを指定します。

  • オン - 入力テキストの HTML タグが削除されます。 これがデフォルトです。
  • オフ - 入力テキストの HTML タグは削除されません。

Boolean
URL の削除
(オプション)

URL を入力テキストから削除するかどうかを指定します。

  • オン - 入力テキストの URL が削除されます。 これがデフォルトです。
  • オフ - 入力テキストの URL は削除されません。

Boolean

arcpy.geoai.TrainTextClassificationModel(in_table, text_field, label_field, out_model, {pretrained_model_file}, {max_epochs}, {model_backbone}, {batch_size}, {model_arguments}, {learning_rate}, {validation_percentage}, {stop_training}, {make_trainable}, {remove_html_tags}, {remove_urls})
名前説明データ タイプ
in_table

モデルの入力テキストを含むテキスト フィールドと、ターゲットクラス ラベルを含むラベル フィールドのある、フィーチャクラスまたはテーブル。

Feature Layer; Table View
text_field

モデルによって分類されるテキストを含む、入力フィーチャクラスまたはテーブルのテキスト フィールド。

Field
label_field
[label_field,...]

モデルのトレーニングに使用されるターゲット クラス ラベルを含む、入力フィーチャクラスまたはテーブルのテキスト フィールド。 複数ラベルのテキスト分類の場合は、複数のテキスト フィールドを指定します。

Field
out_model

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

Folder
pretrained_model_file
(オプション)

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

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

File
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 は、より小さい汎用言語表現モデルです。
String
batch_size
(オプション)

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

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

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

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

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

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
remove_html_tags
(オプション)

HTML タグを入力テキストから削除するかどうかを指定します。

  • REMOVE_HTML_TAGS入力テキストの HTML タグが削除されます。 これがデフォルトです。
  • DO_NOT_REMOVE_HTML_TAGS入力テキストの HTML タグは削除されません。
Boolean
remove_urls
(オプション)

URL を入力テキストから削除するかどうかを指定します。

  • REMOVE_URLS入力テキストの URL が削除されます。 これがデフォルトです。
  • DO_NOT_REMOVE_URLS入力テキストの URL は削除されません。
Boolean

コードのサンプル

TrainTextClassificationModel (Python ウィンドウ)

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

# Name: TrainTextClassification.py
# Description: Train a text classifier model to classify text in different classes.  
#
# Requirements: ArcGIS Pro Advanced license

# Import system modules
import arcpy
import os

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

# Set local variables
in_table = "training_data_textclassifier.csv"
out_folder = "c\\textclassifier"

# Run Train Text Classification Model
arcpy.geoai.TrainTextClassificationModel(in_table, out_folder, 
            max_epochs=2, text_field="Address", label_field="Country", batch_size=16)