Slate IBM 基盤モデルに基づいて、ターゲットの評判抽出用に独自のモデルをトレーニングできます。 この事前トレーニングされたモデルは、特定の入力データに基づいてトレーニングすることにより、ユース・ケースに合わせて見つけることができます。
トレーニング用の入力データ形式
トレーニング機能にトレーニングおよび開発データ・セットを提供する必要があります。 開発データは通常、トレーニング・データの約 10% です。 各トレーニング・サンプルまたは開発サンプルは、JSON オブジェクトとして表されます。 text フィールドと target_mentions フィールドがなければなりません。 text はトレーニング例のテキストを表し、 target_mentions フィールドは配列であり、 text、 location、および sentimentを持つ各ターゲット・メンションのエントリーが含まれています。
Watson Knowledge Studio を使用して、対象分野の専門家がテキストに簡単にアノテーションを付け、トレーニング・データを作成できるようにすることを検討してください。
以下に、サンプル・トレーニング・データを含む配列の例を示します。
[
{
"text": "Those waiters stare at you your entire meal, just waiting for you to put your fork down and they snatch the plate away in a second.",
"target_mentions": [
{
"text": "waiters",
"location": {
"begin": 6,
"end": 13
},
"sentiment": "negative"
}
]
}
]
トレーニング・データ・セットと開発データ・セットは、JSON オブジェクトの配列からデータ・ストリームとして作成されます。 データ・ストリームを作成するには、ユーティリティー・メソッド read_json_to_stream
を使用できます。 入力データの言語のシンタックス分析モデルが必要です。
サンプル・コード:
import watson_nlp
from watson_nlp.toolkit.targeted_sentiment.training_data_reader import read_json_to_stream
training_data_file = 'train_data.json'
dev_data_file = 'dev_data.json'
# Load the syntax analysis model for the language of your input data
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
# Prepare train and dev data streams
train_stream = read_json_to_stream(json_path=training_data_file, syntax_model=syntax_model)
dev_stream = read_json_to_stream(json_path=dev_data_file, syntax_model=syntax_model)
事前トレーニングされたモデル・リソースのロード
トレーニング済みの Slate IBM 基盤モデルは、トレーニング・アルゴリズムに渡す前にロードする必要があります。
利用可能な Slate モデルの一覧については、次の表を参照してください。
モデル | 説明 |
---|---|
pretrained-model_slate.153m.distilled_many_transformer_multilingual_uncased |
汎用多目的モデル |
pretrained-model_slate.125m.finance_many_transformer_en_cased |
金融コンテンツで事前トレーニングされたモデル |
pretrained-model_slate.110m.cybersecurity_many_transformer_en_uncased |
サイバーセキュリティコンテンツで事前トレーニングされたモデル |
pretrained-model_slate.125m.biomedical_many_transformer_en_cased |
生物医学コンテンツで事前トレーニングされたモデル |
モデルをロードするには:
# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
モデルのトレーニング
評判トランスフォーマー・トレーニングの構成に使用できるすべてのオプションについて、以下を入力します。
help(watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train)
train
メソッドは、新しいターゲットの評判ブロック・モデルを作成します。
以下は、前のセクション (モデルのトレーニング) の入力データと事前トレーニング済みモデルを使用するサンプル呼び出しです。
# Train the model
custom_tsa_model = watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train(
train_stream,
dev_stream,
pretrained_model_resource,
num_train_epochs=5
)
新規データへのモデルの適用
データ・セットでモデルをトレーニングした後、既存の事前トレーニング済みブロックで使用する場合と同様に、 run()
メソッドを使用して新規データにモデルを適用します。 作成されたカスタム・モデルはブロック・モデルであるため、入力テキストに対して構文分析を実行し、結果を run()
メソッドに渡す必要があります。
サンプル・コード:
input_text = 'new input text'
# Run syntax analysis first
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
syntax_analysis = syntax_model.run(input_text, parsers=('token',))
# Apply the new model on top of the syntax predictions
tsa_predictions = custom_tsa_model.run(syntax_analysis)
モデルの保管およびロード
カスタム・ターゲットの評判モデルは、「 カスタム・モデルの保存およびロード」で説明されているように、 ibm_watson_studio_lib
を使用して他の任意のモデルとして保管できます。
カスタム・ターゲットの評判モデルをロードするには、追加のステップが必要です。
プロジェクトの「管理」タブの「アクセス制御」ページにアクセス・トークンがあることを確認します。 プロジェクト管理者のみがアクセス・トークンを作成できます。 アクセス・トークンには、 ビューアー または 編集者 のアクセス権を設定できます。 トークンをノートブックに注入できるのは、編集者のみです。
ノートブックのアクション・バーから 「詳細」>「プロジェクト・トークンの挿入」 をクリックして、プロジェクト・トークンをノートブックに追加します。 その後、セルを実行します。
挿入された非表示コード・セルを実行すると、
ibm-watson-studio-lib
ライブラリー内の関数に使用できるwslib
オブジェクトが作成されます。 使用可能なibm-watson-studio-lib
関数については、 Using ibm-watson-studio-lib for Pythonを参照してください。モデルをローカル・ランタイム環境にダウンロードして解凍します。
import zipfile model_zip = 'custom_TSA_model_file' model_folder = 'custom_TSA' wslib.download_file('custom_TSA_model', file_name=model_zip) with zipfile.ZipFile(model_zip, 'r') as zip_ref: zip_ref.extractall(model_folder)
解凍したフォルダーからモデルをロードします。
custom_TSA_model = watson_nlp.load(model_folder)
親トピック: 独自のモデルの作成