IBM Cloud Docs
カスタム言語モデルの作成

カスタム言語モデルの作成

以下のステップに従って、IBM Watson® Speech to Text サービスのカスタム言語モデルを作成したり、それに内容を追加したり、それをトレーニングしたりします。

  1. カスタム言語モデルを作成します。 同じ分野または異なる分野を対象とした複数のカスタム・モデルを作成できます。 そのプロセスは、作成するすべてのモデルで同一です。 言語モデルのカスタマイズは、すべての大型音声モデル、ほとんどの前世代モデル、およびすべての次世代モデルで利用可能です。 詳しくは、各言語でのカスタマイズのサポートを参照してください。
  2. カスタム言語モデルにコーパスを追加します。 コーパスとは、特定の分野の用語をコンテキストに応じて使用する、プレーン・テキスト形式の文書のことです。 1 つのカスタム・モデルに複数のコーパスを一度に 1 つずつ順番に追加することができます。 *前世代モデルに基づくカスタム・モデルの場合、*サービスは、基本語彙に存在しない用語をコーパスから抽出することにより、カスタム・モデルの語彙を作成します。 *次世代モデルに基づくカスタム・モデルの場合、*このサービスは、コーパスから単語ではなく文字シーケンスを抽出します。
  3. カスタム言語モデルに単語を追加します。 カスタム単語を個別にモデルに追加することもできます。 カスタム・モデルの単語を音声書き起こしでどのように表示するか、および音声でどのように発音するかを指定できます。 *前世代モデルに基づくカスタム・モデルの場合、*コーパスから抽出されたカスタム単語を変更することもできます。
  4. カスタム言語モデルをトレーニングします。 コーパスと単語をカスタム・モデルに追加した後、モデルをトレーニングする必要があります。 トレーニングによって、カスタム・モデルを音声認識で使用できる状態に準備します。 モデルは、トレーニングされるまで、新規または変更されたコーパスまたは単語を使用しません。
  5. 音声認識でのカスタム言語モデルの使用。 カスタム・モデルをトレーニングした後、それを音声認識要求で使用できます。 書き起こしのために渡される音声に、カスタム・モデルのコーパスで定義されている分野固有の単語とカスタム単語が含まれている場合、要求の結果にはモデルの拡張語彙が反映されます。 音声認識要求で使用できるモデルは一度に 1 つのみです。

カスタム言語モデルを作成する手順は、反復的なものです。 必要に応じて何度でも、コーパスの追加、単語の追加、モデルのトレーニングまたはリトレーニングを行うことができます。 ほとんどのカスタム言語モデルに文法を追加することもできます。 文法を追加すると、サービスの応答が、文法によって認識される単語のみに制限されます。

カスタム言語モデルの作成

新しいカスタム言語モデルを作成するには、POST /v1/customizations メソッドを使用します。 このメソッドは、新しいカスタム・モデルの属性を定義する JSON オブジェクトを、要求の本体として受け入れます。 新規カスタム・モデルの所有元は、そのモデルを作成するために使用された資格情報を持つサービスのインスタンスです。 詳しくは、カスタム・モデルの所有権を参照してください。

所有する資格情報ごとに、最大で 1024 個のカスタム言語モデルを作成できます。 詳しくは、カスタム・モデルの最大数を参照してください。

新しいカスタム言語モデルには、以下の属性があります。

name (必須ストリング)

新規カスタム・モデルのユーザー定義の名前。 カスタム・モデルの言語に一致し、モデルのドメインを記述するローカライズされた名前 ( Medical custom modelLegal custom model など) を使用します。

  • 名前には最大256文字まで含めることができます。
  • 名前には、円記号、スラッシュ、コロン、等号、アンパーサンド、または疑問符を使用しないでください。
  • ユーザーが 所有するすべてのカスタム言語モデルの間で一意となる名前を使用します。
base_model_name (必須ストリング)

新しいカスタムモデルでカスタマイズされる基本言語モデルの名前。 GET /v1/models メソッドによって返されたモデルの名前を使用する必要があります。 新規カスタム・モデルは、 カスタマイズ対象の基本モデルでのみ使用できます。

dialect (任意指定ストリング)

新規カスタム・モデルで使用される指定の言語の方言。 すべての言語において、このフィールドは常に省略しても問題ありません。 このサービスは、基本モデルの名前からの言語 ID を自動的に使用します。 例えば、このサービスでは、米国英語のすべてのモデルに en-US が自動的に使用されます。

新規カスタム・モデルに dialect を指定する場合は、以下のガイドラインに従ってください。

  • スペイン語以外の前世代モデルの場合、および次世代モデルの場合は、基本モデルの名前からの 5 文字の言語 ID に一致する値を指定する必要があります。
  • スペイン語の前世代モデルの場合は、以下のいずれかの値を指定する必要があります。
    • カスティリャ・スペイン語の場合は es-ES (es-ES モデル)
    • ラテンアメリカ・スペイン語の場合は es-LA (es-ARes-CLes-CO、および es-PE モデル)
    • メキシコ (北米) スペイン語の場合は es-US (es-MX モデル)

dialect フィールドに渡す値はすべて、大/小文字を区別しません。

description (任意指定ストリング)

新しいカスタムモデルの推奨される説明。

  • カスタム・モデルの言語と一致するローカライズされた説明を使用します。
  • 説明には最大128文字まで入力できます。

以下に、Example model という名前の新規カスタム・モデルを作成する例を示します。 このモデルは基本モデル en-US-BroadbandModel を対象に作成され、Example custom language model という説明が指定されています。 必要な Content-Type ヘッダーは、JSONデータがメソッドに渡されることを指定します。

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--data "{\"name\": \"Example model\", \
  \"base_model_name\": \"en-US_BroadbandModel\", \
  \"description\": \"Example custom language model\"}" \
"{url}/v1/customizations"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--data "{\"name\": \"Example model\", \
  \"base_model_name\": \"en-US_BroadbandModel\", \
  \"description\": \"Example custom language model\"}" \
"{url}/v1/customizations"

この例では、新規モデルのカスタマイズ ID が返されます。 各カスタムモデルは、GUID (Globally Unique Identifier) で表されるカスタマイズ ID によって識別されます。 カスタム・モデルに関連する呼び出しで、そのモデルの GUID を指定するには、customization_id パラメーターを使用します。

{
  "customization_id": "74f4807e-b5ff-4866-824e-6bba1a84fe96"
}

カスタム言語モデルへのコーパスの追加

カスタム言語モデルを作成した後、次のステップでは、ドメイン固有のデータをモデルに追加します。 カスタム・モデルにデータを取り込むための推奨される方法は、1 つ以上のコーパスを追加することです。 コーパスは、理想的には、対象分野で使用される例文が含まれる、プレーン・テキスト・ファイルです。

  • 大規模な音声モデルに基づくカスタム・モデルの場合、 サービスは 1 つ以上のコーパス・ファイルから単語シーケンスを解析して抽出します。 これらの文字は、サービスが音声から文字シーケンスを学習および予測するのに役立ちます。 大規模な音声モデルに基づくカスタム・モデルでのコーパスの使用について詳しくは、 大規模な音声モデルおよび次世代モデルでのコーパスの処理 を参照してください。

  • *前世代モデルに基づくカスタム・モデルの場合、*サービスはコーパス・ファイルを解析し、基本語彙に含まれていない単語を抽出します。 このような単語は、未知 (OOV) 語と呼ばれます。 前世代モデルに基づくカスタム・モデルでコーパスを使用する方法について詳しくは、前世代モデルのコーパスでの作業を参照してください。

  • *次世代モデルに基づくカスタム・モデルの場合、*サービスは、コーパス・ファイルから文字シーケンスを解析して抽出します。 これらの文字は、サービスが音声から文字シーケンスを学習および予測するのに役立ちます。 次世代モデルに基づくカスタム・モデルでのコーパスの使用について詳しくは、 大規模な音声モデルおよび次世代モデルでのコーパスの処理 を参照してください。

コーパスは、ドメイン固有の単語を含む文を提供することにより、サービスがコンテキスト内の単語と文字シーケンスを学習できるようにします。 モデルの単語を個別に拡張および変更することもできます。 コーパスから追加した単語に関してモデルをトレーニングするのではなく、個々の単語に関してのみモデルをトレーニングすると、トレーニングに時間がかかるだけでなく、得られる結果の有効性が低くなる可能性があります。

コーパスをカスタム・モデルに追加するには、POST /v1/customizations/{customization_id}/corpora/{corpus_name} メソッドを使用します。

customization_id (必須ストリング)
コーパスの追加先となるカスタム・モデルのカスタマイズ ID を指定します。
corpus_name (必須ストリング)
コーパスの名前を指定します。 カスタム・モデルの言語と一致し、コーパスの内容を反映する、ローカライズされた名前を使用します。
  • 名前の最大文字数は 128 文字です。
  • URL エンコードする必要のある文字は使用しないでください。 例えば、スペース、スラッシュ、円記号、コロン、アンパーサンド、二重引用符、正符号、等号、疑問符などは、名前に使用しないでください。 (これらの文字の使用がサービスによって禁止されているわけではありません。 ただし、これらの文字を使用するときには常に URL エンコードする必要があるため、使用は推奨されません。)
  • カスタム・モデルに既に追加されているコーパスや文法の名前を使用しないでください。
  • 名前 user を使用しないでください。これは、ユーザーによって追加または変更されるカスタム単語を表すためにサービスによって予約されています。
  • base_lm および default_lm という名前は使用しないでください。 いずれの名前も、サービスで将来使用するために予約されています。

コーパステキストファイルをリクエストの本文として渡します。 以下に、指定の ID を持つカスタム・モデルに、コーパス・テキスト・ファイル healthcare.txt を追加する例を示します。 例では、コーパス healthcare が指定されています。

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--data-binary @healthcare.txt \
"{url}/v1/customizations/{customization_id}/corpora/healthcare"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--data-binary @healthcare.txt \
"{url}/v1/customizations/{customization_id}/corpora/healthcare"

このメソッドでは、カスタム・モデルの既存のコーパスを上書きする、オプションの allow_overwrite クエリー・パラメーターも受け入れられます。 コーパス・ファイルをモデルに追加した後で、コーパス・ファイルの更新が必要になった場合、このパラメーターを使用します。

このメソッドは非同期です。 完了するまでに数分かかる場合があります。 操作の期間は、コーパス内の単語の総数とサービスの現在の負荷によって異なります。 *前世代モデルに基づくカスタム・モデルの場合、*この期間は、サービスがコーパスで検出する新規単語の数によっても異なります。 コーパスのステータスを確認する方法について詳しくは、コーパスの追加要求のモニタリングを参照してください。

コーパス・テキスト・ファイルごとにメソッドを呼び出すことによって、1 つのカスタム・モデルに任意の数のコーパスを追加することができます。 1 つのコーパスが完全に追加されてから、別のコーパスを追加する必要があります。 最初にモデルに追加するときに、コーパスの状況は being_processed になります。 サービスが処理を完了すると、その状況は analyzed になります。

*前世代モデルに基づくカスタム・モデルの場合、*コーパスの追加が完了したら、そこから抽出された新しいカスタム単語を調べて、タイプミスやその他のエラーがないか確認します。 詳しくは、前世代モデルの単語リソースの検証を参照してください。

コーパスの追加要求のモニタリング

コーパスが有効な場合、サービスは 201 応答コードを返します。 その後、コーパスの内容を非同期的に処理します。 現在の要求に対してサービスによるコーパスの分析が完了するまでは、カスタム・モデルにデータを追加する要求やモデルをトレーニングする要求を実行依頼することはできません。

分析のステータスを判別するには、GET /v1/customizations/{customization_id}/corpora/{corpus_name} メソッドを使用して、コーパスのステータスをポーリングします。 以下の例に示すように、メソッドではモデルの ID およびコーパスの名前が受け入れられます。

IBM Cloud

curl -X GET -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}/corpora/corpus1"

IBM Cloud Pak for Data IBM Software Hub

curl -X GET \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}/corpora/corpus1"

応答にはコーパスの状況が含まれます。 カスタム・モデルは前世代モデルに基づいているため、応答には OOV 語の数が表示されます。

{
  "name": "corpus1",
  "total_words": 5037,
  "out_of_vocabulary_words": 401,
  "status": "analyzed"
}

status フィールドには、以下のいずれかの値が設定されます。

  • analyzed は、サービスによるコーパスの分析が正常に完了したことを意味します。
  • being_processed は、サービスによるコーパスの分析がまだ進行中であることを意味します。
  • undetermined は、コーパスの処理中にサービスでエラーが発生したことを意味します。

コーパスのステータスが analyzed になるまで、ループを使用して 10 秒間隔でステータスを確認します。 モデルのコーパスのステータスを確認する方法について詳しくは、カスタム言語モデルのコーパスのリストを参照してください。

カスタム言語モデルへの単語の追加

カスタム言語モデルに単語を追加する方法としてコーパスを追加することが推奨されますが、個別のカスタム単語をモデルに直接追加することもできます。 このサービスは、コーパスからの単語の内容を解析するのと同様に、カスタム・モデルのカスタム単語を解析します。

モデルに追加する単語が 1 つのみまたは少数の場合は、コーパスを使用して単語を追加することは、実践的でも実行可能でもない場合があります。 最も単純な方法は、つづりだけを指定して単語を追加することです。 ただし、単語の表示方法や、単語の 1 つ以上の発音を指定することもできます。

カスタムモデルに単語を追加した後、新しいカスタム単語を調べて、タイプミスやその他のエラーがないか確認します。 このチェックは、一度に複数の単語を追加する場合に特に重要です。

POST メソッドを使用した単語の追加

POST /v1/customizations/{customization_id}/words の方法は、一度に1つまたは複数の単語を追加します。 要求の本体またはファイルから、JSON データとして追加される単語を渡します。 いずれの場合も、 Content-Type ヘッダーで、JSONデータがメソッドに渡されることが指定されています。

次の例では、指定したIDのカスタムモデルに、 HHonorsIEEE という2つのカスタム単語を追加します

  • 最初の例では、要求の本体を介して各単語に関する情報を渡します。

    IBM Cloud

    curl -X POST -u "apikey:{apikey}" \
    --header "Content-Type: application/json" \
    --data "{\"words\": [ \
       {\"word\": \"HHonors\", \"sounds_like\": [\"hilton honors\", \"H. honors\"], \"display_as\": \"HHonors\"}, \
       {\"word\": \"IEEE\", \"sounds_like\": [\"I. triple E.\"]}]}" \
    "{url}/v1/customizations/{customization_id}/words"
    

    IBM Cloud Pak for Data IBM Software Hub

    curl -X POST \
    --header "Authorization: Bearer {token}" \
    --header "Content-Type: application/json" \
    --data "{\"words\": [ \
      {\"word\": \"HHonors\", \"sounds_like\": [\"hilton honors\", \"H. honors\"], \"display_as\": \"HHonors\"}, \
      {\"word\": \"IEEE\", \"sounds_like\": [\"I. triple E.\"]}]}" \
    "{url}/v1/customizations/{customization_id}/words"
    
  • 2 番目の例では、 words.json という名前のファイルから同じ単語を追加します。

    {
      "words": [
        {"word": "HHonors", "sounds_like": ["hilton honors", "H. honors"], "display_as": "HHonors"},
        {"word": "IEEE", "sounds_like": ["I. triple E."]}
      ]
    }
    

    次のリクエストは、ファイルから単語を追加します

    IBM Cloud

    curl -X POST -u "apikey:{apikey}" \
    --header "Content-Type: application/json" \
    --data-binary @words.json \
    "{url}/v1/customizations/{customization_id}/words"
    

    IBM Cloud Pak for Data IBM Software Hub

    curl -X POST \
    --header "Authorization: Bearer {token}" \
    --header "Content-Type: application/json" \
    --data-binary @words.json \
    "{url}/v1/customizations/{customization_id}/words"
    

POST の方法は非同期です。 完了するまでに数分かかる場合があります。 完了するまでの時間は、追加する単語の数およびサービスに現在かかっている負荷に応じて変わります。 操作のステータスを確認する方法について詳しくは、単語の追加要求のモニタリングを参照してください。

PUT メソッドを使用した単語の追加

PUT /v1/customizations/{customization_id}/words/{word_name} メソッドを使用すると、個別の単語が追加されます。 単語に関する情報を提供するJSONオブジェクトをリクエストの本文として渡します。

以下に、指定の ID のモデルに単語 NCAA を追加する例を示します。 Content-Type ヘッダーが再び必要であることは、JSON データがメソッドに渡されていることを示しています。

IBM Cloud

curl -X PUT -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--data "{\"sounds_like\": [\"N. C. A. A.\", \"N. C. double A.\"]}" \
"{url}/v1/customizations/{customization_id}/words/NCAA"

IBM Cloud Pak for Data IBM Software Hub

curl -X PUT \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--data "{\"sounds_like\": [\"N. C. A. A.\", \"N. C. double A.\"]}" \
"{url}/v1/customizations/{customization_id}/words/NCAA"

PUT の方法は同期型です。 サービスは、要求の成功または失敗を報告する応答コードを直ちに返します。

単語の追加要求のモニタリング

POST /v1/customizations/{customization_id}/words メソッドを使用したときに、入力データが有効な場合、サービスは 201 応答コードを返します。 その後、単語を非同期で処理してモデルに追加します。 サービスが新規単語の追加要求を完了するまでは、カスタム・モデルにデータを追加する要求やモデルをトレーニングする要求は実行依頼できません。

要求のステータスを判別するには、GET /v1/customizations/{customization_id} メソッドを使用して、モデルのステータスをポーリングします。 このメソッドは、以下の例のように、モデルのカスタマイズ ID を受け入れます。

IBM Cloud

curl -X GET -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}"

IBM Cloud Pak for Data IBM Software Hub

curl -X GET \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}"

この要求には、モデルの状況に関する情報が含まれます。

{
  "customization_id": "74f4807e-b5ff-4866-824e-6bba1a84fe96",
  "created": "2016-06-01T18:42:25.324Z",
  "updated": "2016-06-01T18:45:11.737Z",
  "language": "en-US",
  "dialect": "en-US",
  "owner": "297cfd08-330a-22ba-93ce-1a73f454dd98",
  "name": "Example model",
  "description": "Example custom language model",
  "base_model_name": "en-US_BroadbandModel",
  "status": "pending",
  "progress": 0
}

status フィールドで、モデルの現在の状態が報告されます。 サービスが新規単語を処理している間は、ステータスは pending のままです。 ステータスが ready になり操作の完了が示されるまで、ループを使用して 10 秒間隔でステータスを確認します。 有効な status 値について詳しくは、モデルのトレーニング要求のモニタリングを参照してください。

カスタム・モデルの単語の変更

POST /v1/customizations/{customization_id}/words メソッドおよび PUT /v1/customizations/{customization_id}/words/{word_name} メソッドを使用して、カスタム・モデルの単語を変更または拡張することもできます。 モデルに単語を追加したときに発生したタイプミスやその他の誤りを修正するために、これらのメソッドを使用しなければならない場合があります。 また、既存の単語に同音異字の定義を追加しなければならない場合もあります。

既存の単語の定義を変更するには、単語を追加する場合とまったく同じようにこれらのメソッドを使用します。 単語に指定する新規データによって、その単語の既存の定義が上書きされます。 *前世代モデルに基づくカスタム・モデルの場合、*コーパスから追加された単語を変更することもできます。

カスタム言語モデルのトレーニング

カスタム言語モデルに新しい単語を取り込んだ後 (コーパスを追加するか、単語を直接追加するか、文法を追加することによって)、新しいデータでモデルをトレーニングする必要があります。 トレーニングにより、音声認識においてカスタム・モデルでそれらのデータが使用されるように準備します。 データに関してトレーニングされるまでは、どのような方法によって追加した単語であってもモデルでは使用されません。

カスタム・モデルをトレーニングするには、POST /v1/customizations/{customization_id}/train メソッドを使用します。 以下の例に示すように、トレーニングするモデルのカスタマイズ ID をこのメソッドに渡します。

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}/train"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}/train"

このメソッドは非同期です。 モデルをトレーニングする対象の新規単語の数およびサービスに現在かかっている負荷によっては、トレーニングが完了するまでに数分かかる場合があります。 トレーニング操作のステータスを確認する方法について詳しくは、モデルのトレーニング要求のモニタリングを参照してください。

このメソッドには、以下のオプションのクエリー・パラメーターが含まれています。

  • word_type_to_add パラメーターは、カスタム・モデルをトレーニングする対象の単語を指定します。

    • 単語の取得元にかかわらず、すべての単語に関してモデルをトレーニングするには、all を指定するか、このパラメーターを省略します。
    • ユーザーによって追加または変更された単語に関してのみモデルをトレーニングし、コーパスまたは文法からのみ抽出された単語を無視するには、user を指定します。

    *前世代モデルに基づくカスタム・モデルの場合、*このオプションは、タイプミスを含む単語など、ノイズのあるデータを持つコーパスを追加する場合に役立ちます。 そのようなデータに関してモデルをトレーニングする前に、word_type メソッドの GET /v1/customizations/{customization_id}/words クエリー・パラメーターを使用して、コーパスおよび文法から抽出された単語を確認できます。 詳しくは、カスタム言語モデルからのカスタム単語のリストを参照してください。

    大規模音声モデルおよび次世代モデルに基づくカスタム・モデルの場合、 サービスは word_type_to_add パラメーターを無視します。 単語リソースには、ユーザーが直接追加または変更するカスタム単語のみが含まれるため、パラメーターは不要です。

  • カスタム・モデルが音声認識で使用される場合、customization_weight パラメーターによって、基本語彙の単語と対比してカスタム・モデルの単語に付与される相対的な重みを指定します。 カスタム・モデルを使用する認識要求であればカスタマイズの重みを指定できます。 詳しくは、カスタマイズの重み付けの使用を参照してください。

  • strictパラメーターは、カスタム・モデルに有効なリソースと無効なリソース (コーパス、単語、および文法) が混在している場合にトレーニングを続行するかどうかを示します。 デフォルトでは、モデルに 1 つ以上の無効なリソースが含まれている場合、トレーニングは失敗します。 モデルに少なくとも 1 つの有効なリソースが含まれている場合にトレーニングを続行できるようにするには、このパラメーターを false に設定します。 サービスにより無効なリソースはトレーニングから除外されます。 詳しくは、カスタム言語モデルのトレーニングの失敗を参照してください。

モデルのトレーニング要求のモニタリング

トレーニング・プロセスが正常に開始されると、サービスは 200 応答コードを返します。 サービスは、既存の要求が完了するまで、後続のトレーニング要求、または新しいコーパス、単語、または文法を追加する要求を受け入れることができません。

カスタム言語モデルへの単語の追加 で説明されているように、大規模な音声モデルまたは次世代モデルに基づくカスタム・モデルにカスタム単語を直接追加すると、モデルのトレーニングにかかる時間が、そうでない場合よりも数分長くなります。 POST /v1/customizations/{customization_id}/words メソッドまたは PUT /v1/customizations/{customization_id}/words/{word_name} メソッドを使用して追加したカスタム単語を使用してモデルをトレーニングする場合は、モデルのトレーニング時間をさらに数分間考慮してください。

トレーニング要求のステータスを判別するには、GET /v1/customizations/{customization_id} メソッドを使用して、モデルのステータスをポーリングします。 このメソッドは、モデルのカスタマイズ ID を受け入れます。

IBM Cloud

curl -X GET -u "apikey:{apikey}" \
"{url}/v1/customizations/{customization_id}"

IBM Cloud Pak for Data IBM Software Hub

curl -X GET \
--header "Authorization: Bearer {token}" \
"{url}/v1/customizations/{customization_id}"

応答には、モデルの状態に関する情報が含まれています

{
  "customization_id": "74f4807e-b5ff-4866-824e-6bba1a84fe96",
  "created": "2016-06-01T18:42:25.324Z",
  "updated": "2016-06-01T18:45:11.737Z",
  "language": "en-US",
  "dialect": "en-US",
  "owner": "297cfd08-330a-22ba-93ce-1a73f454dd98",
  "name": "Example model",
  "description": "Example custom language model",
  "base_model_name": "en-US_BroadbandModel",
  "status": "training",
  "progress": 0
}

応答には、カスタム・モデルの状態を報告する status フィールドおよび progress フィールドが含まれます。 progress フィールドの意味は、モデルのステータスに応じて異なります。 status フィールドには、以下のいずれかの値が設定されます。

  • pending は、モデルは作成されたが、有効なトレーニング・データの追加を待機しているか、サービスによる追加データの分析完了を待機していることを意味します。 この場合、progress フィールドは 0 になります。

  • ready は、モデルに有効なデータが取り込まれ、モデルのトレーニングを開始できる状態になっていることを意味します。 この場合、progress フィールドは 0 になります。

    モデルに有効なリソースと無効なリソース (有効なカスタム単語と無効なカスタム単語の両方など) が混在している場合は、strict 照会パラメーターを false に設定していない限り、モデルのトレーニングが失敗します。 詳しくは、カスタム言語モデルのトレーニングの失敗を参照してください。

  • training は、モデルがトレーニング中であることを意味します。 この場合、progress フィールドは 0 になります。 トレーニングが完了すると、フィールドが0から100に変わります。

  • available は、モデルのトレーニングが完了し、モデルが使用可能な状態になっていることを意味します。 この場合、progress フィールドは 100 になります。

  • upgrading は、モデルがアップグレード中であることを意味します。 この場合、progress フィールドは 0 になります。

  • failed は、モデルのトレーニングが失敗したことを意味します。 この場合、progress フィールドは 0 になります。 詳しくは、カスタム言語モデルのトレーニングの失敗を参照してください。

ステータスが available になるまで、ループを使用して 10 秒間隔でステータスを確認します。 カスタム・モデルのステータスを確認する方法について詳しくは、カスタム言語モデルのリストを参照してください。

カスタム言語モデルのトレーニングの失敗

サービスがカスタム言語モデルの別の要求を処理している場合、トレーニングの開始は失敗します。 例えば、サービスが以下のような場合、状況コード 409 でトレーニング要求の開始が失敗します。

  • OOV 語のリストを生成するため、または文字シーケンスを抽出するためのコーパスまたは文法の処理
  • 同音異字発音を検証または自動生成するためにカスタム単語を処理している
  • 別のトレーニング要求を処理している

また、カスタム・モデルが以下のような場合、状況コード 400 でトレーニングの開始が失敗します。

  • 作成されたか最後にトレーニングされたため、新しい有効なトレーニング・データ (コーパス、単語、または文法) が含まれていません
  • 1 つ以上の無効なコーパス、単語、または文法が含まれている (例えば、カスタム単語に無効な同音異字発音が含まれている)

トレーニング要求が状況コード 400 で失敗した場合、このサービスによりカスタム・モデルの状況が failed に設定されます。 以下のいずれかのアクションを実行してください。

  • カスタマイズ・インターフェースのメソッドを使用して、モデルのリソースを調べ、見つかったエラーをすべて修正します。

    • 無効なコーパスについては、コーパスのテキスト・ファイルを修正し、allow_overwrite メソッドの POST /v1/customizations/{customization_id}/corpora/{corpus_name} パラメーターを使用して、修正したファイルをモデルに追加できます。 詳しくは、カスタム言語モデルへのコーパスの追加を参照してください。
    • 無効な文法については、文法ファイルを修正し、allow_overwrite メソッドの POST /v1/customizations/{customization_id}/grammars/{grammar_name} パラメーターを使用して、修正したファイルをモデルに追加できます。 詳しくは、カスタム言語モデルへの文法の追加を参照してください。
    • 無効なカスタム単語については、POST /v1/customizations/{customization_id}/words または PUT /v1/customizations/{customization_id}/words/{word_name} メソッドを使用して、モデルの単語リソース内でその単語を直接修正できます。 詳しくは、カスタム・モデルの単語の変更を参照してください。

    カスタム言語モデルの単語の検証について詳しくは、以下を参照してください。

  • トレーニングから無効なリソースを除外するには、strict メソッドの POST /v1/customizations/{customization_id}/train パラメーターを false に設定します。 トレーニングを成功させるには、モデルに少なくとも 1 つの有効なリソース (コーパス、単語、または文法) が含まれている必要があります。 strict パラメーターは、有効なリソースと無効なリソースが混在するカスタム・モデルをトレーニングする際に役立ちます。