Slate IBM Foundation モデルに基づいて、センチメント抽出用に独自のモデルをトレーニングできます。 この事前トレーニングされたモデルは、特定の入力データに基づいてトレーニングすることにより、ユース・ケースに合わせて見つけることができます。
利用可能な 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 |
生物医学コンテンツで事前トレーニングされたモデル |
トレーニング用の入力データ形式
トレーニング機能にトレーニングおよび開発データ・セットを提供する必要があります。 開発データは通常、トレーニング・データの約 10% です。 各トレーニング・サンプルまたは開発サンプルは、JSON オブジェクトとして表されます。 これには、 text フィールドと labels フィールドが必要です。 text はトレーニング例のテキストを表し、 labels フィールドは配列です。この配列には、 正、 中性、または 負のラベルが 1 つだけ含まれます。
以下に、サンプル・トレーニング・データを含む配列の例を示します。
[
{
"text": "I am happy",
"labels": ["positive"]
},
{
"text": "I am sad",
"labels": ["negative"]
},
{
"text": "The sky is blue",
"labels": ["neutral"]
}
]
トレーニング・データ・セットと開発データ・セットは、JSON オブジェクトの配列からデータ・ストリームとして作成されます。 データ・ストリームを作成するには、ユーティリティー・メソッド prepare_data_from_json
を使用します。
import watson_nlp
from watson_nlp.toolkit.sentiment_analysis_utils.training import train_util as utils
training_data_file = "train_data.json"
dev_data_file = "dev_data.json"
train_stream = utils.prepare_data_from_json(training_data_file)
dev_stream = utils.prepare_data_from_json(dev_data_file)
事前トレーニングされたモデル・リソースのロード
トレーニング済みの Slate IBM Foundation モデルは、トレーニング・アルゴリズムに渡す前にロードする必要があります。 さらに、入力テキストで使用される言語の構文分析モデルをロードする必要があります。
モデルをロードするには:
# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
# Download relevant syntax analysis models
syntax_model_en = watson_nlp.load('syntax_izumo_en_stock')
syntax_model_de = watson_nlp.load('syntax_izumo_de_stock')
# Create a list of all syntax analysis models
syntax_models = [syntax_model_en, syntax_model_de]
モデルのトレーニング
評判トランスフォーマー・トレーニングの構成に使用できるすべてのオプションについて、以下を入力します。
help(watson_nlp.workflows.sentiment.AggregatedSentiment.train_transformer)
train_transformer
メソッドは、シンタックス分析とトレーニングされたセンチメント分類を自動的に実行するワークフロー・モデルを作成します。 後続のステップで、言語検出を有効にして、ワークフロー・モデルが前提条件情報なしで入力テキストに対して実行できるようにします。
以下は、前のセクションの入力データと事前トレーニングされたモデルを使用した呼び出し例です (モデルのトレーニング)。
from watson_nlp.workflows.sentiment import AggregatedSentiment
sentiment_model = AggregatedSentiment.train_transformer(
train_data_stream = train_stream,
dev_data_stream = dev_stream,
syntax_model=syntax_models,
pretrained_model_resource=pretrained_model_resource,
label_list=['negative', 'neutral', 'positive'],
learning_rate=2e-5,
num_train_epochs=10,
combine_approach="NON_NEUTRAL_MEAN",
keep_model_artifacts=True
)
lang_detect_model = watson_nlp.load('lang-detect_izumo_multi_stock')
sentiment_model.enable_lang_detect(lang_detect_model)
新規データへのモデルの適用
データ・セットでモデルをトレーニングした後、既存の事前トレーニング済みブロックで使用する場合と同様に、 run()
メソッドを使用して新規データにモデルを適用します。
サンプル・コード:
input_text = 'new input text'
sentiment_predictions = sentiment_model.run(input_text)
親トピック: 独自のモデルの作成