ビルトインスロットタイプのエンティティ解決



ビルトインスロットタイプのエンティティ解決

Alexaは、エンティティ解決を使ってユーザー発話のスロット値を1つの既知のエンティティに解決します。一部のビルトインスロットタイプはエンティティ解決とAlexa Entitiesを完全にサポートします。また、多くのビルトインスロットタイプは、独自の値で拡張することでエンティティ解決を使用できます。

エンティティ解決の詳細については、エンティティ解決を参照してください。

エンティティ解決をサポートするスロットタイプとAlexa Entities

一部のビルトインスロットタイプはエンティティ解決をサポートします。これらのタイプでは、ユーザー発話をAlexaナレッジグラフのAlexa Entitiesに解決できます。エンティティは、国際化URI(IRI)形式の一意IDを持ちます。Alexa EntitiesのIRIとLinked Data APIを使って、ナレッジグラフからエンティティに関するデータを取得できます。たとえば、ある人のbirthdateを取得できます。

スロットタイプがエンティティ解決をサポートする場合、エンティティ解決結果の情報源はAlexaEntitiesとなります。

次の例は、AMAZON.Personビルトインスロットタイプを使うPersonというスロットの結果を示しています。発話「ベゾス」が5つのエンティティ候補に解決されます。

{
  "version": "1.0",
  "session": {},
  "context": {},
  "request": {
    "type": "IntentRequest",
    "requestId": "amzn1.echo-api.request.1",
    "locale": "en-US",
    "timestamp": "2021-01-15T22:49:26Z",
    "intent": {
      "name": "WhoIsIntent",
      "confirmationStatus": "NONE",
      "slots": {
        "Person": {
          "name": "Person",
          "value": "bezos",
          "resolutions": {
            "resolutionsPerAuthority": [
              {
                "authority": "AlexaEntities",
                "status": {
                  "code": "ER_SUCCESS_MATCH"
                },
                "values": [
                  {
                    "value": {
                      "name": "Jeff Bezos",
                      "id": "https://ld.amazonalexa.com/entities/v1/6ZmdJgzS4ipuScmQo0ppz4"
                    }
                  },
                  {
                    "value": {
                      "name": "Mackenzie Bezos",
                      "id": "https://ld.amazonalexa.com/entities/v1/4r51itmsh0aQsz2yyVVEER"
                    }
                  },
                  {
                    "value": {
                      "name": "Yannis Bezos",
                      "id": "https://ld.amazonalexa.com/entities/v1/z0fYLagm4L0X3deptSiodB"
                    }
                  },
                  {
                    "value": {
                      "name": "Mike Bezos",
                      "id": "https://ld.amazonalexa.com/entities/v1/F9GKAu5mLT4iPP5d5xRetG"
                    }
                  },
                  {
                    "value": {
                      "name": "Mark Bezos",
                      "id": "https://ld.amazonalexa.com/entities/v1/fQxk1G8jtN4F7fe1NntcCH"
                    }
                  }
                ]
              }
            ]
          },
          "confirmationStatus": "NONE",
          "source": "USER",
          "slotValue": {
            "type": "Simple",
            "value": "bezos",
            "resolutions": {
              "resolutionsPerAuthority": [
                {
                  "authority": "AlexaEntities",
                  "status": {
                    "code": "ER_SUCCESS_MATCH"
                  },
                  "values": [
                    {
                      "value": {
                        "name": "Jeff Bezos",
                        "id": "https://ld.amazonalexa.com/entities/v1/6ZmdJgzS4ipuScmQo0ppz4"
                      }
                    },
                    {
                      "value": {
                        "name": "Mackenzie Bezos",
                        "id": "https://ld.amazonalexa.com/entities/v1/4r51itmsh0aQsz2yyVVEER"
                      }
                    },
                    {
                      "value": {
                        "name": "Yannis Bezos",
                        "id": "https://ld.amazonalexa.com/entities/v1/z0fYLagm4L0X3deptSiodB"
                      }
                    },
                    {
                      "value": {
                        "name": "Mike Bezos",
                        "id": "https://ld.amazonalexa.com/entities/v1/F9GKAu5mLT4iPP5d5xRetG"
                      }
                    },
                    {
                      "value": {
                        "name": "Mark Bezos",
                        "id": "https://ld.amazonalexa.com/entities/v1/fQxk1G8jtN4F7fe1NntcCH"
                      }
                    }
                  ]
                }
              ]
            }
          }
        }
      }
    }
  }
}

エンティティ解決をサポートするビルトインスロットタイプの一覧については、Alexa Entitiesのリファレンスを参照してください。

スロットタイプの拡張

多くのビルトインスロットタイプは、独自の値で拡張できます。スロットタイプを拡張するとエンティティ解決が実行され、スロットのすべての値にresolutionsプロパティが入ります。値には、同義語とカスタムIDを追加できます。

拡張したビルトインスロットタイプの場合、情報源はビルトインスロットタイプの名前になり、amzn1.er-authority.echo-sdk.<スキルID>.<ビルトインスロットタイプ名>の形式で表されます。

以下は、ビルトインスロットタイプAMAZON.Colorを使用するスロットのエンティティ解決結果の例です。AMAZON.Colorスロットタイプはエンティティ解決をサポートしませんが、タイプはカスタム値「青」と同義語の「コバルト」で拡張されています。Alexaはユーザー発話「コバルト」をこのカスタムエンティティに解決しました。

{
  "intent": {
    "name": "FavoriteColorIntent",
    "confirmationStatus": "NONE",
    "slots": {
      "favoriteColor": {
        "name": "favoriteColor",
        "value": "コバルト",
        "resolutions": {
          "resolutionsPerAuthority": [
            {
              "authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.1.AMAZON.Color",
              "status": {
                "code": "ER_SUCCESS_MATCH"
              },
              "values": [
                {
                  "value": {
                    "name": "青",
                    "id": "colorIdBlue"
                  }
                }
              ]
            }
          ]
        },
        "confirmationStatus": "NONE",
        "source": "USER",
        "slotValue": {
          "type": "Simple",
          "value": "コバルト",
          "resolutions": {
            "resolutionsPerAuthority": [
              {
                "authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.1.AMAZON.Color",
                "status": {
                  "code": "ER_SUCCESS_MATCH"
                },
                "values": [
                  {
                    "value": {
                      "name": "青",
                      "id": "colorIdBlue"
                    }
                  }
                ]
              }
            ]
          }
        }
      }
    }
  }
}

カスタム値に、ビルトインスロットタイプのデータセットに既に組み込まれていた値を追加し、独自のIDと同義語を割り当てることができます。上の例では、「青」という値は既にAMAZON.Colorスロットタイプの値に含まれていました。カスタム値として開発者が追加するバージョンは、元の値をオーバーライドするので、resolutionsプロパティにはこの発話に対応するカスタムIDが含まれています。

また、すでに標準タイプのデータセットに含まれている値を、独自の値に対する同義語として追加することもできます。これもまた、元の値をオーバーライドします。たとえば、AMAZON.Colorに「とても濃い青」というカスタム値と同義語の「青」を追加したとします。ユーザーの発話「青」により以下がスキルに送信されます。

  • ユーザーの言った値(「青」)
  • 追加したカスタム値「とても濃い青」
{
  "intent": {
    "name": "FavoriteColorIntent",
    "confirmationStatus": "NONE",
    "slots": {
      "favoriteColor": {
        "name": "favoriteColor",
        "value": "青",
        "resolutions": {
          "resolutionsPerAuthority": [
            {
              "authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.1.AMAZON.Color",
              "status": {
                "code": "ER_SUCCESS_MATCH"
              },
              "values": [
                {
                  "value": {
                    "name": "とても濃い青",
                    "id": "colorIdBlue"
                  }
                }
              ]
            }
          ]
        },
        "confirmationStatus": "NONE",
        "source": "USER",
        "slotValue": {
          "type": "Simple",
          "value": "青",
          "resolutions": {
            "resolutionsPerAuthority": [
              {
                "authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.1.AMAZON.Color",
                "status": {
                  "code": "ER_SUCCESS_MATCH"
                },
                "values": [
                  {
                    "value": {
                      "name": "とても濃い青",
                      "id": "colorIdBlue"
                    }
                  }
                ]
              }
            ]
          }
        }
      }
    }
  }
}

ビルトインスロットタイプを拡張する方法の詳細については、ビルトインスロットタイプを拡張して値を追加するを参照してください。拡張可能なタイプの一覧については、拡張できるスロットタイプを参照してください。

エンティティ解決をサポートしないスロットタイプ

エンティティ解決をサポートしないビルトインスロットタイプを拡張せずに使用した場合、ユーザーの言ったスロットタイプ値のnamevalueconfirmationStatusのプロパティのみがスキルに送信されます。たとえば、AMAZON.Colorスロットを独自の値で拡張しなかったとします。Alexaは一切のエンティティ解決を行わず、ユーザーの言った値を返します。

{
  "intent": {
    "name": "FavoriteColorIntent",
    "confirmationStatus": "NONE",
    "slots": {
      "favoriteColor": {
        "name": "favoriteColor",
        "value": "青",
        "confirmationStatus": "NONE",
        "source": "USER",
        "slotValue": {
          "type": "Simple",
          "value": "青"
        }
      }
    }
  }
}