独自のモデルを作成する

Watson の自然言語処理機能にある特定のアルゴリズムは、独自のデータを用いて学習させることができます。例えば、エンティティ抽出やデータの分類を行うために、独自のデータに基づいたカスタムモデルを作成することが可能です。

Slate という名前の組み込みの トランフォーマー ベースの IBM 基盤モデル を使用して、独自のモデルを作成できます。 Slate モデルは、大規模なデータ・セットでトレーニングされています。このデータ・セットは、ヘイト、バイアス、および禁止用語をフィルタリングするために前処理されています。

独自の分類モデルまたはエンティティー抽出モデルを作成するには、独自のデータで Slate モデルを ファイン・チューニング します。 妥当な時間でモデルをトレーニングするには、 GPU ベースの環境を使用することをお勧めします。

カスタムモデルに対する言語サポート

カスタムモデルを作成できるほか、表示されている言語については、以下の事前学習済み辞書モデルおよび分類モデルを利用できます。

事前トレーニングされた辞書モデルと分類モデルでサポートされる言語
カスタム・モデル 対応言語コード
辞書モデル af, ar, bs, ca, cs, da, de, el, en, es, fi, fr, he, hi, hr, it, ja, ko, nb, nl, nn, pl, pt, ro, ru, sk, sr, sv, tr, zh_cn, zh_tw(構文品詞タグ付けでサポートされているすべての言語)
正規表現 af, ar, bs, ca, cs, da, de, el, en, es, fi, fr, he, hi, hr, it, ja, ko, nb, nl, nn, pl, pt, ro, ru, sk, sr, sv, tr, zh_cn, zh_tw(構文品詞タグ付けでサポートされているすべての言語)
TF-IDFを用いたSVM分類 af, ar, ca, cs, da, de, el, en, es, fi, fr, he, hi, hr, it, ja, ko, nb, nl, nn, pl, pt, ro, ru, sk, sr, sv, tr, zh_cn, zh_tw
USEを用いたSVM分類 ar, de, en, es, fr, it, ja, ko, nl, pl, pt, ru, tr, zh_cn, zh_tw
GloVe を用いた CNN 分類 ar, de, en, es, fr, it, ja, ko, nl, pt, zh_cn
BERTによる多言語分類 af, ar, ca, cs, da, de, el, en, es, fi, fr, he, hi, hr, it, ja, ko, nb, nl, nn, pl, pt, ro, ru, sk, sr, sv, tr, zh_cn, zh_tw
トランスフォーマーモデル af, ar, bs, ca, cs, da, de, el, en, es, fi, fr, he, hi, hr, it, ja, ko, nb, nl, nn, pl, pt, ro, ru, sk, sr, sv, tr, zh_cn, zh_tw
ストップワードリスト ar, de, en, es, fr, it, ja, ko

言語コードと対応する言語のリストについては、 言語コード を参照してください。

カスタムモデルの保存と読み込み

カスタムモデルを別のノートブックで使用したい場合は、プロジェクトにデータアセットとして保存してください。 こうすることで、プロジェクトのエクスポートの一環としてモデルをエクスポートできます。

ライブラリ ibm-watson-studio-lib を使用して、カスタムモデルを保存および読み込みます。 使用可能な ibm-watson-studio-lib 関数について詳しくは、 ibm-watson-studio-lib for Python を参照してください。

ノートブック内のカスタムモデルをデータアセットとして保存し、別のプロジェクトにエクスポートして使用するには:

  1. この train() メソッドを実行して、カスタム辞書、正規表現、または分類モデルを作成し、このカスタムモデルを変数に割り当てます。 例:

    custom_block = CNN.train(train_stream, embedding_model.embedding, verbose=2)
    
  2. カスタム辞書または正規表現モデルを保存する場合は、それを RBRGeneric ブロックに変換します。 カスタム辞書または正規表現モデルを RBRGeneric ブロックに変換すると、 API for Watson Natural Language Processing for Embed を使用してモデルをロードして実行する場合に便利です。 現在のところ、 Watson Natural Language Processing for Embed は、辞書モデルと正規表現モデルの実行のみを RBRGeneric ブロックとしてサポートしています。 モデルを RBRGeneric ブロックに変換するには、以下のコマンドを実行します。

    # Create the custom regular expression model
    custom_regex_block = watson_nlp.resources.feature_extractor.RBR.train(module_folder, language='en', regexes=regexes)
    
    # Save the model to the local file system
    custom_regex_model_path = 'some/path'
    custom_regex_block.save(custom_regex_model_path)
    
    # The model was saved in a file "executor.zip" in the provided path, in this case "some/path/executor.zip"
    model_path = os.path.join(custom_regex_model_path, 'executor.zip')
    
    # Re-load the model as a RBRGeneric block
    custom_block = watson_nlp.blocks.rules.RBRGeneric(watson_nlp.toolkit.rule_utils.RBRExecutor.load(model_path), language='en')
    
  3. ibm-watson-studio-lib を使用して、モデルを データ資産 としてプロジェクトに保存します。

    from ibm_watson_studio_lib import access_project_or_space
    wslib = access_project_or_space()
    
    wslib.save_data('<model name>', data=custom_model.as_bytes(), overwrite=True)
    

    トランフォーマー モデルを保存する際、 CPU フォーマットでモデルを保存するオプションがあります。 CPU 環境でのみモデルを使用する予定の場合は、この形式を使用すると、カスタム・モデルの実行効率が向上します。 これを行うには、 CPU フォーマット・オプションを次のように設定します。

    wslib.save_data('<model name>', data=custom_model.as_bytes(cpu_format=True), overwrite=True)
    

別のプロジェクトからインポートしたノートブックにカスタムモデルを読み込むには:

  1. ibm-watson-studio-lib を使用して watson-nlpモデルを読み込みます:
    custom_model = watson_nlp.load(wslib.load_data('<model name>'))