Watson Natural Language Processing の特定のアルゴリズムは、独自のデータを使用してトレーニングできます。例えば、エンティティー抽出、データの分類、センチメントの抽出、およびターゲット・センチメントの抽出のために、独自のデータに基づいてカスタム・モデルを作成できます。
Slateと呼ばれる組み込みのトランスフォーマーベースのIBM foundation modelを使用して、独自のモデルを作成することができます。 スレート・モデルは、ヘイト、バイアス、および不適切表現をフィルタリングするために前処理された非常に大きなデータ・セットでトレーニングされています。
独自の分類、エンティティー抽出モデル、またはセンチメント・モデルを作成するには、独自のデータで 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 (構文の品詞タグ付けでサポート対象のすべての言語) |
TFIDF による 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 |
Transformer モデル | 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-waton-studio-lib
ライブラリー内の関数に使用できるwslib
オブジェクトが作成されます。 使用可能なibm-watson-studio-lib
関数について詳しくは、ibm-watson-studio-lib
for Pythonの使用を参照してください。train()
メソッドを実行して、カスタム辞書、正規表現、または分類モデルを作成し、このカスタム・モデルを変数に割り当てます。 例:custom_block = CNN.train(train_stream, embedding_model.embedding, verbose=2)
カスタム辞書または正規表現モデルを保存する場合は、RBRGeneric ブロックに変換します。 カスタム辞書または正規表現モデルを RBRGeneric ブロックに変換することは、 WatsonNatural Language Processing for Embed の API を使用してモデルをロードして実行する場合に便利です。 これまでは、 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')
ibm-watson-studio-lib
を使用して、モデルをデータ資産としてプロジェクトに保存します。wslib.save_data("<model name>", custom_block.as_bytes(), overwrite=True)
トランスフォーマー・モデルを保存する場合、モデルを CPU 形式で保存するオプションがあります。 モデルを CPU 環境でのみ使用する予定の場合、この形式を使用すると、カスタム・モデルの実行効率が向上します。 これを行うには、CPU フォーマット・オプションを以下のように設定します。
wslib.save_data('<model name>', data=custom_model.as_bytes(cpu_format=True), overwrite=True)
別のプロジェクトからインポートされたノートブックにカスタム・モデルをロードするには、以下のようにします。
プロジェクトの「管理」タブの「アクセス制御」ページにアクセス・トークンがあることを確認します。 プロジェクト管理者のみがアクセス・トークンを作成できます。 アクセス・トークンは、ビューアーまたは編集者アクセス権を備えることができます。 トークンをノートブックに注入できるのは、編集者のみです。
ノートブックのアクション・バーで「詳細」>「プロジェクト・トークンの挿入」をクリックしてプロジェクト・トークンをノートブックに追加し、セルを実行します。 挿入された隠しコード・セルを実行すると、
ibm-watson-studio-lib
ライブラリー内の関数に使用できるwslib
オブジェクトが作成されます。 使用可能なibm-watson-studio-lib
関数について詳しくは、ibm-watson-studio-lib
for Pythonの使用を参照してください。ibm-watson-studio-lib
およびwatson-nlp
を使用してモデルをロードします。custom_block = watson_nlp.load(wslib.load_data("<model name>"))