ホーム API/ツール API 自然対話

自然対話

    近年、多様なデバイスがネットワークにつながっていく中で、画面のないデバイスや手がふさがっている状況で使うデバイスでは音声入出力が重要になります。そのようなデバイスでの音声対話型サービスを容易に実現するために、NTTドコモでは自然対話プラットフォームを開発しております。 docomo Developer supportでは、自然対話プラットフォームの一部をご体験いただける「自然対話API」の提供を開始いたします。これにより、開発者は音声対話型サービスを自然言語処理技術の知識なしに開発することができます。

    自然対話API利用イメージ
    API
    基本情報
    提供 : REST
    利用条件 : あり※1

    ※1「ガイドライン(必読)」に記載の利用条件に予め同意していただく必要がございます。

    ご利用いただくためには「アカウント登録(無料)」が必要です。

    リファレンスを参照するAPI機能名を選択してください

    意図解釈

    意図解釈APIとは


    意図解釈APIは発話文をテキストでインプットすると、文脈を解析し、その意図に沿った機能名及び値を返却します。

    ご利用にあたって

    意図解釈APIは発話文をテキストでインプットすると、求められている機能に一番近いものを選び返却するAPIです。
    発話は話しかけるような自然な文章を入力できます。
    回答としては、機能名の他に、文章中の特徴的な単語を抽出したものを返却します。

    例) :

    「お腹がすいた」 → 「”グルメ検索”」を返却
    「ラーメンが食べたい」 → 「”グルメ検索”、”グルメジャンル名 : ラーメン : フード名”」を返却
    「山田さんに電話がしたい」 → 「”電話”、”宛先 : 山田 : 姓”」を返却
    「横浜駅から溜池山王駅に行きたい」 → 「”乗換案内”、”乗車駅 : 横浜駅(駅名)”、”降車駅 : 溜池山王駅(駅名)”」を返却

    本APIには、日本語版と英語版があります。日本語版を利用されたい場合には、リクエストパラメータにおいて、"language=ja-JP"と指定してください。
    また、英語版を利用されたい場合には、同様に"language=en-JP"と指定してください。

    注意事項:

    本APIは、発話文に対する”回答”を返却するものではありません。
    例えば、「横浜駅から溜池山王駅に行きたい」という文章に対して、実際の乗換案内情報をアプリ上に表示させるためには APIから返却される「横浜駅」と「溜池山王駅」という単語を用いて、乗換案内検索エンジンに問い合わせる必要があります。

    しくみ

    意図解釈APIの基本的な使い方は「テキスト」を送信し、「判定結果」をサーバから受け取ることになります。
    機能別リファレンスページ内にありますリクエスト・レスポンスのサンプルコードも併せてご参照ください。

    本項では、実際にインタフェース内に登場する言葉を用いて、送信と受信それぞれの動きを解説します。
    詳細については、パラメータ一覧をご参照ください。
    以下に「乗換案内」を例として、しくみを解説します。

    ①アプリからサーバへの送信データについて
    必須のパラメータを送信してください。
    なお、判定結果を左右するのは「ユーザー発話内容」になります。

    ②サーバからアプリへの送信データについて
    重要なものは下記の6つになります。また、それぞれの例を記載します。

    「commandId」 : ST001003003
    「taskId」: ST001003
    「taskName」 : Transportation search
    「slotName」 : stationTo
    「slotValue」 : 溜池山王駅
    「valueType」 : station

    「commandID」:
        対話状態IDとなります。タスクID+3ケタの状態を表す番号で構成されます。
        詳細は コマンドID一覧をご参照ください。
    「taskId」「taskName」 :
        機能ごとのIDと名称となります。IDと名称は一対一対応しています。
        詳細は コマンドID一覧をご参照ください。
    「slotName」「slotValue」「valueType」 :
        各機能ごとに設定された単語の箱の事を、スロットと呼んでいます。
        例えば、乗換案内には”stationFrom(乗車駅)”と”stationTo(降車駅)”のスロットがあります。
        slotNameは、それらのスロットの名前を意味します。
        slotValueは、実際にスロットに格納された単語です。
        上記の例では、「stationTo」という名前のスロットに「溜池山王駅」という単語が入っていますという意味になります。
        また、valueTypeは、単語のタイプを意味します。
        上記の例では、「溜池山王駅」という単語は「station」のタイプという意味になります。
        コマンドごとに用いるスロットは決まっています。また、スロットごとに入るタイプも決まっています。
        詳細は機能別リファレンスページ内にあります スロット一覧をご参照ください。

    文章中から、指定されたスロット以上に単語を抽出したい場合は、「extractedWords」をご参照ください。
    抽出した単語すべてに対して、タイプ付したものを出力しています。

    "extractedWords":
      "wordsValue": "溜池山王駅",
      "wordsType": "station", "upoi", "snoun"

    上記の場合は、駅名・地名・名詞のタイプが紐づいています。
    タイプの詳細は機能別リファレンスページ内にありますタイプ一覧をご参照ください

    よくあるご質問
    APIなどの各サービスに関するよくある質問を掲載します。
    お問い合わせ
    「docomo Developer support」及び「作ろうスマートフォン/iモードコンテンツ」に関するお問い合わせです。よくあるご質問や技術ブログで解決しない場合は、お問い合わせください。