カスタムスロットタイプの作成と編集

カスタムスロットタイプの作成と編集

このドキュメントではカスタムスロットタイプの作成方法と標準スロットタイプの拡張方法について説明します。

カスタムスロットタイプの概要

カスタムスロットタイプは、スロットの代表的な値のリストを定義します。カスタムスロットタイプは、Amazonの標準タイプセットでサポートされていない項目のリストに使用します。カスタムタイプを使用する場合は、タイプと値を定義し、インテントの定義の一部としてタイプ名を指定します。

PlanMyTripインテントの例で考えてみましょう。 activityスロットタイプで使用する旅行アクティビティのカスタムスロットタイプを定義するとします。タイプの名前をLIST_OF_ACTIVITIESとします。このタイプには次の値が含まれます。

サイクリング
ランニング
ツーリング
キャンプ
キャンピング
散策
ハイキング
レース
ジョギング
買い物
ショッピング
スキー
ダイビング
温泉
サーフィン
泳ぎ
スイミング

これらは、「私はハイキングに京都に行きます」や「私は散策に京都に行きます」などの発話をサポートします。

カスタム値のセットには、ユーザーが話せる言葉であれば、スキルのスロット処理でサポートしているあらゆる値を使用できます。ただし、スキルの言語の一般的な辞書にない単語は、認識されない可能性があります。

カスタムスロットタイプは、列挙型と同じではありません。リストにない値でも、音声言語認識システムに認識されれば、返されます。スロットタイプへの入力はリストの値に重み付けされますが、リストの項目だけに限られるわけではありません。ユーザーのダイアログモデル自分が作成したコードで検証とエラーチェックを実行するか、スロット検証ルールを定義してから、ダイアログをAlexaにデリゲートして、ユーザーに入力可能な値についてのプロンプトを出します。

推奨されるカスタムスロットタイプの値については、カスタムスロットタイプの値に関する推奨事項を参照してください。

同じカスタムスロットタイプは同じスキルの複数のスロットに使用できます。

スキルで使用されるスロットタイプを表示する

左側のナビゲーションのスロットタイプセクションには、スキルに追加したすべてのスロットタイプが表示されます。たとえば以下のような情報があります。

  • 定義したすべてのカスタムスロットタイプ。
  • モデルに追加した、または追加値で拡張した標準スロットタイプ。

スロットタイプの名前を変更したり値を更新したりするには、左側のナビゲーションからスロットタイプを選択してスロットの詳細ページを開きます。(スロットタイプ)を使用中のスロットセクションに、現在そのタイプを使用しているスロットとインテントのすべてが表示されます。

カスタムスロットタイプを追加または編集する

スロットタイプの名前: カスタムスロットタイプの名前には英字とアンダースコア(_)のみを指定できます。ピリオド(.)は標準スロットタイプにのみ使用できます(AMAZON.Cityなど)。

1つのスキルに作成できるスロットタイプ数の制限については、対話モデルの制限を参照してください。

新しいカスタムスロットタイプを追加するには

  1. 左側のナビゲーションから、スロットタイプの隣にある追加をクリックします。
  2. カスタムスロットタイプを作成オプションを選択します。
  3. スロットタイプの名前を入力してカスタムスロットタイプを作成をクリックします。
  4. それぞれの値を入力して、「+」記号をクリックするかEnterを押します。

  5. 値を保存した後、スロット値のIDと同義語をスロット値に追加できます。
    • ID列をクリックして、値のIDを編集します。
    • 同義語列をクリックして値に同義語を入力し、「+」記号をクリックするかEnterを押して保存します。

    スロットタイプ値のIDと同義語の使用に関する詳細については、スロットタイプ値の同義語とIDを定義する(エンティティ解決)を参照してください。

  6. 変更したら必ず保存するようにしてください。

スロットタイプの値を編集するには

  1. スロットタイプの下にあるスロットタイプの名前をクリックして、スロットタイプの詳細ページを開きます。
  2. それぞれの値を入力して、「+」記号をクリックするかEnterを押します。推奨されるスロットタイプの値については、カスタムスロットタイプの値を参照してください。
  3. ID列をクリックして、値のIDを編集します。
  4. 同義語列をクリックして値に同義語を入力し、「+」記号をクリックするかEnterを押して保存します。
  5. 変更したら必ず保存するようにしてください。

カスタムスロットタイプの名前を変更するには

  1. 左側のナビゲーションから、スロットタイプの隣にある追加をクリックします。
  2. スロットタイプの名前のフィールドをクリックします。名前を編集してモデルを保存をクリックします。

カスタムスロットタイプの値

リクエストで指定されるスロットの値は、通常の文字形式でスキルに送信されます。

たとえば下の表では、スロットタイプ値とこれらの値がスキルに渡される際にどのような形式に変換されるか、いくつかサンプルを挙げています。この表のスロット値は、カスタムスロット値のリストに指定する値を指しています。発話形式はユーザーの話しかける言葉、スロットの出力値はスキルに渡されるリクエストのデータを指します。

スロット値 発話形式 スロットの出力値
a. k. b. forty eight エーケービーフォーティーエイト akb 48
n. h. k. 第一 エヌエイチケーダイイチ nhk 第一
nasa ナサ nasa
nato ナトー nato
七パーセント ナナパーセント 七パーセント
三センチメートル サンセンチメートル 三センチメートル
君の名は キミノナハ 君の名は
ご注文はうさぎですか ゴチュウモンハウサギデスカ ご注文はうさぎですか
星三点五 ホシサンテンゴ 星三点五

スロット値の表記では、以下の点に注意してください。

  • アルファベットを使用する場合、すべて小文字にします。
  • 個々に発音されるアルファベット(イニシャリズム)は、ピリオドと半角スペースで区切った小文字を使用します。ピリオドと半角スペースを入れずに小文字を使うと、発音が正しく検出されないために認識率が低下する可能性があります。
  • 数字はアラビア数字ではなく、漢数字で書きます(「5」ではなく「五」とします)。英語で発音される数字は、アルファベットで書きます(「ワン」ではなく「one」とします)。
  • 句読点、特殊文字や記号は使用しないでください(「。」、「★」、「!」、「?」など)。
  • 「%」、「&」、「℃」など、発音される記号は、完全な単語として記述します(「パーセント」、「アンド」、「度」)。
  • ゲルマン系言語における注意点:ウムラウト(ä, ü, ö)やシャープS(ß)は別のスペルで書いてはいけません。たとえば、認識率の低下を避けるために、「buero」ではなく「büro」、「fussball」ではなく「fußball」と書きます。これらの異なるスペルは、「masse」と「maße」のように、意味の異なる単語に変化する場合もあります。

カスタムスロットタイプの値に関する推奨事項も参照してください。

スロットタイプ値の同義語と一意の識別子

カスタムスロットタイプの各値には、一意の識別子と設定済みの同義語があります。 これにより、複数の発話を1つに結び付けることができ、ユーザーが話す値に関係なく、共通のIDと値をIntentRequestで取得できます。たとえば、特定のメディアタイプを収集するMEDIA_TYPEスロットでは、ユーザーは「楽曲」、「トラック」、または「シングル」と話しかけることができます。これら3つの発話すべてを、一意の識別子SONGを使って1つのスロット値「楽曲」に結び付けることができます。

同義語とIDの仕組みの詳細については、スロットタイプ値の同義語とIDを定義する(エンティティ解決)を参照してください。

候補のスロット値を使用する

スロット値の候補を表示する機能は、 これらのロケールで使用できます。

スロット値と同義語が入力されると、開発者コンソールは機械学習を使用して、スロットに含めることができる追加の値を提案します。値または同義語のどちらかとして、スロットタイプに候補の値を追加できます。候補の値を表示するには、少なくとも1つのスロット値を入力する必要があります。候補の値は、スロットタイプに追加するスロット値と同義語に応じて、利用可能な場合のみ表示されます。スキルの言語にかかわらず、候補の値には英語(米国)のつづりが使用されます。

たとえば、「bicycling」、「camping」、「hiking」など、さまざまなアクティビティタイプの値を持つLIST_OF_ACTIVITIESスロットタイプの場合、「mountain biking」、「kayaking」などの候補の値が生成されます。

スロットタイプの編集時に複数表示される候補のスロット値
スロットタイプの編集時に複数表示される候補のスロット値

スロット値として候補の値を追加するには、候補の値をクリックして、追加をクリックします。

既存のスロット値の同義語として候補の値を追加するには、以下の手順を実行します。

  1. 候補の値をクリックし、同義語を選択します。
  2. 同義語を追加する既存のスロット値を選択します。スロット値の入力を開始すると、リストを絞り込めます。
  3. 追加をクリックします。

スロットタイプの値を一括で編集またはアップロードする

一括編集を使用して、スロットタイプの値をすばやく入力または編集できます。この機能は、他のファイルから値をコピー&ペーストするのに役立ちます。

値を一括で編集する、または読み込むと、各行はそれぞれ別のスロット値になります。CSV形式で識別子と同義語を入力できます。

スロット値,識別子,同義語,同義語,...

指定のスロット値には、同義語をいくつでも入力できます。

たとえば、このファイルは2つのスロット値(IDがDRIVEの「ドライブする」と4つの同義語、およびIDがFLYの「飛行機に乗る」と2つの同義語)を読み込みます。

ドライブする,DRIVE,車,自動車,自動車で旅行する,自動車旅行
飛行機に乗る,FLY,飛行,飛行機

サンプルの値を一括で編集または読み込むには

  1. スロットタイプの下にあるスロットタイプの名前をクリックして、スロットタイプの詳細ページを開きます。
  2. スロット値セクションの右上で、一括編集をクリックします。
  3. 編集ボックスの値を編集するか、CSVファイルをウィンドウにドラッグしてコンテンツを読み込みます。

    • 1行ごとに1スロット値を入力します。
    • CSVファイルを読み込むと、編集ボックスに表示される既存のスロット値と置き換えられます。
    • 下のCSVにはヘッダーが含まれますを選択して、テキストフィールドに表示される一番上の行を除外します。
    • 送信をクリックしないと、値の変更は保存されません。
  4. 送信をクリックします。

追加の値を使用して標準スロットタイプを拡張する

標準リストスロットタイプのサブセットにユーザー定義のカスタム値を追加できます。つまり、指定した値をAmazonが定義した標準値に追加できるということです。たとえば、AMAZON.Cityは、日本人が一般的に使用する都市を認識できるようにします。含まれていない可能性がある小さな町など、追加の都市を収集する必要がある場合、タイプを拡張してリストに追加できます。その後、スロットは、元の値のセットと追加したカスタム値を認識します。

標準スロットタイプに追加する値の同義語とIDを定義することもできます。詳細については、標準スロットタイプのエンティティ解決を参照してください。

標準スロットタイプの拡張は、特定のスキルにのみ適用されます。たとえば、あるスキルで追加の都市を指定してAMAZON.Cityを拡張しても、それらの変更はAMAZON.Cityを使用する他のスキルには適用されません。

標準タイプを拡張する前に、スキルにスロットタイプを追加する必要があります。左側のナビゲーションで、スロットタイプのタイプを確認します。拡張するスロットタイプが含まれていなければ、スキルに追加します。

  1. 左側のナビゲーションから、スロットタイプの隣にある追加をクリックします。
  2. Alexaのビルトインライブラリから既存のスロットタイプを使用オプションを選択します。
  3. 追加する標準スロットタイプを検索します。スロットタイプは名前で絞り込むことができます。
  4. 追加する各ビルトインスロットタイプのチェックボックスをオンにし、スロットタイプを追加をクリックします。
  5. 変更したら必ず保存するようにしてください。

標準スロットタイプを拡張するには、カスタムタイプと同様に値を追加します。左側のナビゲーションで、スロットタイプの中から編集するスロットタイプを選択します。それぞれの値を入力して、「+」記号をクリックするかEnterを押します。

スロットタイプのJSON(対話モデルのスキーマ)

JSONエディターですべてのスロットタイプのJSON表現の確認や編集ができます。interactionModel.languageModel.typesプロパティにはスロットタイプオブジェクトの配列が含まれています。カスタムスロットタイプと拡張された標準スロットタイプがそれぞれこの配列で表されます。

この例では、カスタムタイプ(LIST_OF_TRAVEL_MODES)のtypesプロパティと拡張された標準タイプ(AMAZON.City)を示しています。簡潔に表現するため、interactionModelおよびlanguageModelの他のプロパティは示していません。対話モデルJSONの詳細については、対話モデルのスキーマを参照してください。

{
  "interactionModel": {
    "languageModel": {
      "types": [
        {
          "name": "LIST_OF_TRAVEL_MODES",
          "values": [
            {
              "id": "TRAIN",
              "name": {
                "value": "電車に乗る",
                "synonyms": [
                  "電車",
                  "乗車"
                ]
              }
            },
            {
              "id": "FLY",
              "name": {
                "value": "飛行機に乗る",
                "synonyms": [
                  "ジェット",
                  "飛行",
                  "飛行機で"
                ]
              }
            },
            {
              "id": "DRIVE",
              "name": {
                "value": "ドライブする",
                "synonyms": [
                  "車",
                  "自動車",
                  "自動車で旅行する",
                  "自動車旅行"
                ]
              }
            }
          ]
        },
        {
          "name": "AMAZON.City",
          "values": [
            {
              "name": {
                "value": "カスタムの都市"
              }
            },
            {
              "name": {
                "value": "小都市"
              }
            }
          ]
        }
      ]
    }
  }
}