(57)【要約】【課題】対話シナリオの記述量を抑えつつ、多様な対話を実現することができるようにする。【解決手段】知識遷移部１２０が、各発話に対する知識に、知識間の関係を表わす関係ラベルを付すことにより、発話に関する知識を表現した知識ベース１３０と、ユーザ発話と、現在の知識と、関係ラベルを用いて知識ベースの知識間の遷移方法を定めた基本シナリオを含む対話シナリオとに基づいて、次の知識を決定し、発話生成部１５０が、次の知識に基づいて、システム発話を生成する。【選択図】図１
2019159489.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ発話に基づいて、予め定めた対話シナリオに基づいてシステム発話を生成する対話装置であって、
各発話に対する知識に、知識間の関係を表わす関係ラベルを付すことにより、発話に関する知識を表現した知識ベースと、
前記関係ラベルを用いて前記知識ベースの知識間の遷移方法を定めた基本シナリオを含む対話シナリオを格納したシナリオデータベースと、
入力されたユーザ発話に基づいて、前記知識ベースの複数の知識の中から、現在の知識を設定する発話理解部と、
前記ユーザ発話と、前記発話理解部により設定された現在の知識と、前記基本シナリオとに基づいて、前記知識ベースにおける遷移先知識を決定する知識遷移部と、
前記知識遷移部により決定された前記遷移先知識に基づいて、前記システム発話を生成する発話生成部と、
を備えることを特徴とする対話装置。
【請求項２】
前記対話シナリオは、具体的な対話内容に基づく前記知識ベースの知識間の遷移方法を定めたユーザシナリオを更に含み、
前記知識遷移部は、前記ユーザシナリオを優先して用いて、前記ユーザ発話に基づいて、前記知識ベースにおける遷移先知識を決定し、前記ユーザシナリオを用いて前記遷移先知識が定まらない場合に、前記基本シナリオと、前記ユーザ発話と、前記現在の知識とに基づいて、前記遷移先知識を決定する
ことを特徴とする請求項１記載の対話装置。
【請求項３】
前記知識遷移部は、
前回のユーザ発話が、前記ユーザシナリオにおいて定められた所定の条件を満たす場合、同一のユーザシナリオを優先して用いて、前記ユーザ発話に基づいて、前記知識ベースにおける遷移先知識を決定し、
前記同一のユーザシナリオを用いて前記遷移先知識が定まらない場合に、前記ユーザシナリオを優先して用いて、前記ユーザ発話に基づいて、前記知識ベースにおける遷移先知識を決定し、
前記ユーザシナリオを用いて前記遷移先知識が定まらない場合に、前記基本シナリオと、前記ユーザ発話と、前記現在の知識とに基づいて、前記知識ベースにおける遷移先知識を決定する
ことを特徴とする請求項２記載の対話装置。
【請求項４】
各発話に対する知識に、知識間の関係を表わす関係ラベルを付すことにより、発話に関する知識を表現した知識ベースと、前記関係ラベルを用いて前記知識ベースの知識間の遷移方法を定めた基本シナリオを含む対話シナリオを格納したシナリオデータベースと、を含み、ユーザ発話に基づいて、予め定めた前記対話シナリオに基づいてシステム発話を生成する対話装置における対話方法であって、
発話理解部が、入力されたユーザ発話に基づいて、前記知識ベースの複数の知識の中から、現在の知識を設定し、
知識遷移部が、前記ユーザ発話と、前記発話理解部により設定された現在の知識と、前記基本シナリオとに基づいて、前記知識ベースにおける遷移先知識を決定し、
発話生成部が、前記知識遷移部により決定された前記遷移先知識に基づいて、前記システム発話を生成する
ことを特徴とする対話方法。
【請求項５】
第１の発話と、前記第１の発話に引き続く第２の発話との各々について、前記発話に対する知識に、知識間の関係性を表す関係ラベルを付すことにより、発話に関する知識を表現した知識ベースに基づき、対話システムがユーザ発話に対するシステム発話を生成する処理に用いる対話シナリオのデータ構造であって、
予め用意された発話の属性毎に、当該属性の発話に引き続く発話の順序を、前記関係ラベルの遷移ルールで表現した第１の遷移ルールと、
前記発話の属性によらずに定義される、発話の順序を、前記関係ラベルの遷移ルールで表現した第２の遷移ルールと、
前記発話の属性毎の前記第１の遷移ルールと前記第２の遷移ルールとの優先順位を表す優先順位情報と、
を含み、
前記対話システムが、入力されたユーザ発話の属性に対応する前記第１の遷移ルールと前記第２の遷移ルールとのうち、前記優先順位情報に従い選択した遷移ルールに従って、前記知識ベースから前記ユーザ発話に引き続く発話であるシステム発話を生成する処理に用いられる、対話シナリオのデータ構造。
【請求項６】
コンピュータを、請求項１乃至３の何れか１項記載の対話装置の各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対話装置、対話方法、データ構造、およびプログラムに係り、特に、柔軟な対話を低コストで実現する対話装置、対話方法、データ構造、およびプログラムに関する。
【背景技術】
【０００２】
近年、ＡＩ技術の一つとしてコンピュータまたはロボットと対話を行う対話システムが注目されている。対話システムでは、ユーザの入力発話に対してシステムが適切な返答を繰り返すことによって実現される。
【０００３】
対話システムは大きく分けてシナリオ型と統計型にわけられる。シナリオ型の対話システムは、対話システムに前もって返答ルールを大量に記述することによって実現する（非特許文献１）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】大塚淳史、片山太一、杉山弘晃、東中竜一郎、松尾義博、「対話シナリオ構築におけるユーザ回答候補の推定」、第３１回人工知能学会全国大会論文集、１Ｂ３−２、２０１７
【発明の概要】
【発明が解決しようとする課題】
【０００５】
シナリオ型の対話システムは、ユーザ発話が対話シナリオに沿っている限り、高品質な対話をすることができる。一方で、シナリオに存在しない発話については、応答ができなくなってしまうため、より多くのユーザ発話を対話シナリオに一致させることが必要となる。
【０００６】
しかしながら、対話シナリオは作成コストが非常に高く、長時間の対話を行うためには膨大な応答ルールを記述する必要がある、という問題があった。
【０００７】
本発明は上記の点に鑑みてなされたものであり、対話シナリオの記述量を抑えつつ、多様な対話を実現することができる対話装置、対話方法、データ構造、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る対話装置は、ユーザ発話に基づいて、予め定めた対話シナリオに基づいてシステム発話を生成する対話装置であって、各発話に対する知識に、知識間の関係を表わす関係ラベルを付すことにより、発話に関する知識を表現した知識ベースと、前記関係ラベルを用いて前記知識ベースの知識間の遷移方法を定めた基本シナリオを含む対話シナリオを格納したシナリオデータベースと、入力されたユーザ発話に基づいて、前記知識ベースの複数の知識の中から、現在の知識を設定する発話理解部と、前記ユーザ発話と、前記発話理解部により設定された現在の知識と、前記基本シナリオとに基づいて、前記知識ベースにおける遷移先知識を決定する知識遷移部と、前記知識遷移部により決定された前記遷移先知識に基づいて、前記システム発話を生成する発話生成部と、を備えて構成される。
【０００９】
また、本発明に係る対話方法は、各発話に対する知識に、知識間の関係を表わす関係ラベルを付すことにより、発話に関する知識を表現した知識ベースと、前記関係ラベルを用いて前記知識ベースの知識間の遷移方法を定めた基本シナリオを含む対話シナリオを格納したシナリオデータベースと、を含み、ユーザ発話に基づいて、予め定めた前記対話シナリオに基づいてシステム発話を生成する対話装置における対話方法であって、発話理解部が、入力されたユーザ発話に基づいて、前記知識ベースの複数の知識の中から、現在の知識を設定し、知識遷移部が、前記ユーザ発話と、前記発話理解部により設定された現在の知識と、前記基本シナリオとに基づいて、前記知識ベースにおける遷移先知識を決定し、発話生成部が、前記知識遷移部により決定された前記遷移先知識に基づいて、前記システム発話を生成する。
【００１０】
本発明に係る対話装置及び対話方法によれば、各発話に対する知識に、知識間の関係を表わす関係ラベルを付すことにより、発話に関する知識を表現した知識ベースと、関係ラベルを用いて知識ベースの知識間の遷移方法を定めた基本シナリオを含む対話シナリオを格納したシナリオデータベースと、を含む。
【００１１】
そして、発話理解部が、入力されたユーザ発話に基づいて、知識ベースの複数の知識の中から、現在の知識を設定し、知識遷移部が、ユーザ発話と、発話理解部により設定された現在の知識と、基本シナリオとに基づいて、知識ベースにおける遷移先知識を決定し、発話生成部が、知識遷移部により決定された遷移先知識に基づいて、システム発話を生成する。
【００１２】
このように、各発話に対する知識に、知識間の関係を表わす関係ラベルを付すことにより、発話に関する知識を表現した知識ベースと、ユーザ発話と、現在の知識と、関係ラベルを用いて知識ベースの知識間の遷移方法を定めた基本シナリオを含む対話シナリオとに基づいて、次の知識を決定し、次の知識に基づいて、システム発話を生成することにより、対話シナリオの記述量を抑えつつ、多様な対話を実現することができる。
【００１３】
また、本発明に係る対話装置の前記対話シナリオは、具体的な対話内容に基づく前記知識ベースの知識間の遷移方法を定めたユーザシナリオを更に含み、前記知識遷移部は、前記ユーザシナリオを優先して用いて、前記ユーザ発話に基づいて、前記知識ベースにおける遷移先知識を決定し、前記ユーザシナリオを用いて前記遷移先知識が定まらない場合に、前記基本シナリオと、前記ユーザ発話と、前記現在の知識とに基づいて、前記遷移先知識を決定することができる。
【００１４】
また、本発明に係る対話装置の前記知識遷移部は、前回のユーザ発話が、前記ユーザシナリオにおいて定められた所定の条件を満たす場合、同一のユーザシナリオを優先して用いて、前記ユーザ発話に基づいて、前記知識ベースにおける遷移先知識を決定し、前記同一のユーザシナリオを用いて前記遷移先知識が定まらない場合に、前記ユーザシナリオを優先して用いて、前記ユーザ発話に基づいて、前記知識ベースにおける遷移先知識を決定し、前記ユーザシナリオを用いて前記遷移先知識が定まらない場合に、前記基本シナリオと、前記ユーザ発話と、前記現在の知識とに基づいて、前記知識ベースにおける遷移先知識を決定することができる。
【００１５】
また、本発明に係るデータ構造は、第１の発話と、前記第１の発話に引き続く第２の発話との各々について、前記発話に対する知識に、知識間の関係性を表す関係ラベルを付すことにより、発話に関する知識を表現した知識ベースに基づき、対話システムがユーザ発話に対するシステム発話を生成する処理に用いる対話シナリオのデータ構造であって、予め用意された発話の属性毎に、当該属性の発話に引き続く発話の順序を、前記関係ラベルの遷移ルールで表現した第１の遷移ルールと、前記発話の属性によらずに定義される、発話の順序を、前記関係ラベルの遷移ルールで表現した第２の遷移ルールと、前記発話の属性毎の前記第１の遷移ルールと前記第２の遷移ルールとの優先順位を表す優先順位情報と、を含み、前記対話システムが、入力されたユーザ発話の属性に対応する前記第１の遷移ルールと前記第２の遷移ルールとのうち、前記優先順位情報に従い選択した遷移ルールに従って、前記知識ベースから前記ユーザ発話に引き続く発話であるシステム発話を生成する処理に用いられる。
【００１６】
本発明に係るプログラムは、上記の対話装置の各部として機能させるためのプログラムである。
【発明の効果】
【００１７】
本発明の対話装置、対話方法、データ構造、およびプログラムによれば、対話シナリオの記述量を抑えつつ、多様な対話を実現することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態に係る対話装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係る対話装置の概要を示すイメージ図である。
【図３】本発明の実施の形態に係る知識ベースの構造の一例を示す図である。
【図４】本発明の実施の形態に係る基本シナリオの一例を示す図である。
【図５】本発明の実施の形態に係る基本シナリオの一例を示す図である。
【図６】本発明の実施の形態に係るユーザシナリオの一例を示す図である。
【図７】本発明の実施の形態に係る対話装置における対話の一例を示すイメージ図である。
【図８】本発明の実施の形態に係る対話装置の対話処理ルーチンを示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について図面を用いて説明する。
【００２０】
＜本発明の実施の形態に係る対話装置の概要＞
まず、本発明の実施形態の概要について説明する。
【００２１】
本発明の実施形態は、知識ベースと応答ルールを記述した対話シナリオとを組み合わせたシナリオ型の対話システムである。本実施形態に係る対話装置の概要を図２に示す。
【００２２】
一般常識的な事態間の関係を蓄積した知識ベースを予め構築しておき、対話はその知識ベース上を遷移していくことで行う。すなわち、図２に示すように、ユーザ発話を知識ベースの知識にマッピングし、知識に基づいてシステム発話を生成する。
【００２３】
ここで、本実施形態におけるユーザ発話とは、対話システムに入力として与えられるテキスト情報であり、システムが返答を返す対象を示す。なお、ユーザ発話は、必ずしもユーザ（人間）が入力したものである必要はない。また、ユーザ発話は、音声認識結果であるテキストでもよい。
【００２４】
ここで、本実施形態では、対話シナリオを、通常時の知識ベースの遷移を定義した基本シナリオと、ユーザが後から追加するユーザシナリオとの２つに分ける。知識ベースと基本シナリオさえ用意すれば十分な対話が実現可能となるが、ユーザシナリオを用意することでより複雑な対話を実現することができる。
【００２５】
知識ベースと基本シナリオを使用した対話シナリオでは、ユーザの入力発話が知識ベース上のどの知識の発話に近いかを判定し、その知識に接続された知識の発話をシステムが返答する。
【００２６】
このとき、どの知識に遷移するかを基本シナリオによって記述する。基本シナリオは、対話時に現在の知識（入力：ユーザ発話に対応）に対して次に遷移すべき先の知識（出力：システム発話に対応）を決定する際のルールとして、エッジの優先順位や条件を定義する。
【００２７】
ここで、基本シナリオは、遷移方法を記述するものなので、具体的な発話の内容に関する応答ルールは記述できない。そこで、具体的な発話の内容に関する応答ルールを記述した、ユーザシナリオを用いる。
【００２８】
ユーザシナリオでは、特定の状況や、基本シナリオで定義した以外（各知識の内容（発話文）に関する）の知識間の遷移を自由に記述する。すなわち、ユーザシナリオごとに、発動条件と、システムが取るべき具体的振舞いに関する情報を記載する。
【００２９】
本実施形態によって、対話システムを構築する利点は、対話システムの発話の情報源となる知識ベースと、対話戦略を決定する対話シナリオを切り離せる点がある。
【００３０】
従来のシナリオ型の対話は全て発話単位で記載する。そのため、一つの応答ルールを記述した場合には必ず１つ以上の発話文を記述する必要があった。また、対話シナリオは作成コストが非常に高く、長時間の対話を行うためには膨大な応答ルールを記述する必要があった。
【００３１】
しかしながら、本実施形態では、システム発話の発話文は全て知識ベース上の知識の情報を用いて作成されるため、新たに発話文を書く必要が無くなる。加えて、応答ルールも知識ベースの知識間の遷移ルールとして表現することになるため、対話シナリオの記述量が大幅に削減できるという利点がある。
【００３２】
また、知識ベースの内容を変更しても、同じ基本シナリオを用いて対話システムを構築することが可能である。従来の対話シナリオと違い、知識ベースが利用できるので、基本シナリオには発話文自体は記述しなくてもよいためである。
【００３３】
また、知識ベースは一般常識的な知識を基に作成されるため、異なる対話システムで使い回しをすることが可能である。
【００３４】
すなわち、対話戦略を基本シナリオで制御することで、同じ知識ベースでからでも、基本シナリオを変更することによって、様々なバリエーションの対話システムを実現できるという利点がある。
【００３５】
例えば、図３の知識ベースに対して、基本シナリオで常に反証となる知識を優先して発話するようにすれば、反論ばかりする対話システムができる、一方で、常に理由や補足の知識に遷移するように定義すれば、ユーザに対して肯定的な対話システムを実現できる。
【００３６】
また、ユーザシナリオに、一般的な遷移のルールが定義された基本シナリオでは通常遷移することのない、知識ベース上で現在の状態から遠い知識へのジャンプなどを記述することができる。このため、ユーザシナリオを用いることで、より柔軟な対話が可能となる。
【００３７】
＜本発明の実施の形態に係る対話装置の構成＞
図１を参照して、本発明の実施の形態に係る対話装置の構成について説明する。図１は、本発明の実施の形態に係る対話装置の構成を示すブロック図である。
【００３８】
対話装置１０は、ＣＰＵと、ＲＡＭと、後述する対話処理ルーチンを実行するためのプログラムを格納したＲＯＭとを備えたコンピュータで構成され、機能的には次に示すように構成されている。
【００３９】
図１に示すように、本実施形態に係る対話装置１０は、入力部１００と、発話理解部１１０と、知識遷移部１２０と、知識ベース１３０と、シナリオＤＢ（データベース）１４０と、発話生成部１５０と、出力部１６０とを備えて構成される。
【００４０】
知識ベース１３０は、発話に対する知識と、発話間の関係を表わす関係ラベルとからなる。
【００４１】
具体的には、知識ベース１３０は、発話に対する知識を含む複数のノード、及びノード間を接続し、かつ、ノード間の関係を示す関係ラベルが付与されるエッジからなる。図２に示すように、ノード間とその関係をｈｅａｄ−ｅｄｇｅ−ｔａｉｌで表現する３つ組の有向グラフによって表現できる知識構造である。なお、有向グラフに限定されず、無向グラフであってもよい。
【００４２】
ノードは、発話文ないし、外部の発話文と対応可能な知識や具体的振舞いに関する知識（以降、便宜上まとめて発話文と記述する）を含む。各ノードには、ノードを識別するためのＩＤが付与されている。
【００４３】
また、ノードは、メタ情報として、ノードの［属性］を自由に記述できる。この［属性］の情報は、ノードの知識に関するものであれば何でもよい。
【００４４】
また、ノードは、１つ以上のエッジで他のノードと接続されている。エッジには、ノード間の関係を定義する［関係ラベル］が記されている。この［関係ラベル］の情報は、ノード間の関係性を表すものであれば何でもよい。
【００４５】
また、ノードの知識は、発話文の内容等に対応するものであり、自由に設定することができる。知識ベース１３０の作成方法は、人手、自動を問わず自由に設定することができる。
【００４６】
図３に知識ベース１３０の例を示す。各ノードは、システム発話そのもの（発話文）を示している。また、各ノードには主観的事項を示す［ｓｕｂｊｅｃｔ］、または客観的事実を示す［ｏｂｊｅｃｔ］という［属性］が付与されている。
【００４７】
ノード間のエッジには、「反証」、「補足」、「理由」といった［関係ラベル］が付与されている。例えば、「スマホは持ったほうがいい」という［理由］として「スマホはアプリが使える」という［ｏｂｊｅｃｔ］（客観的事実）の知識があるという関係になる。
【００４８】
シナリオＤＢ１４０は、関係ラベルを用いて知識ベース１３０の知識間の遷移方法を定めた基本シナリオと、具体的な対話内容に基づく知識ベース１３０の知識間の遷移方法を定めたユーザシナリオとを含む対話シナリオを格納する。
【００４９】
＜＜基本シナリオ＞＞
基本シナリオは、知識ベース１３０における一般的なノード間の遷移方法を定義している。対話時に、現在のノード（ユーザ発話に対応）に対して、遷移すべき次のノード（システム発話に対応）を決定する際のルールとして、エッジの優先順位や条件を定義する。
【００５０】
基本シナリオに定義される情報には、知識ベース１３０のエッジの［関係ラベル］とその［方向］、及びノードの［属性］の情報が使用できる。基本シナリオは、各ノードの知識内容（発話文）によらない、知識ベース１３０の構造上の定義：［関係ラベル］、［方向］、［属性］を基に作成する。
【００５１】
このことにより、知識ベース１３０の知識量を拡張したとき（すなわち、ノード数を増やしたとき）に基本シナリオを変更することなく、新しい知識ベース１３０を使用した対話システムを構築することができる。
【００５２】
知識ベース１３０では、一つのノードに対して必ずしも全ての関係ラベルに対応するエッジが存在しているとは限らないため、ノードから遷移できない（システム発話が生成できない）事態にならないよう基本シナリオを記載する。
【００５３】
また、基本シナリオのルールが当てはまらない場合は、ランダムに遷移先ノードを決定する、等としておいてもよい。
【００５４】
基本シナリオのルールは大きく分けて、以下Ａ、Ｂ、Ｃの情報からなる（図４参照）。
【００５５】
Ａ：通常の遷移ルール［ｄｅｆａｕｌｔ］と、Ｂ：現在のノードの［属性］ごとに定義される遷移ルールと、Ｃ：上述のＡ、Ｂの優先順位との３種類からなる。
【００５６】
ＡとＢとは、現在のノードから遷移先のノード（以下、遷移先ノード）を決定する際の、エッジの［関係ラベル］、［方向］の優先順位に関する情報と、遷移数（一度にいくつ分ノードを遷移するか）の情報からなる。
【００５７】
ここで、図４において、複数回遷移させる場合には、関係ラベルを「￥ｔ」（タブ区切り）で並べている。すなわち、「補足￥ｔ理由」の例であれば、関係ラベルが「補足」であるエッジの順方向のノードに遷移し、そのノードから更に関係ラベルが「理由」であるエッジの順方向のノードに遷移することを意味する。
【００５８】
また、「ＯＲ（理由、補足）」は、遷移先が理由または補足であることを示し、「ＮＯＴ（理由）」は、「理由」以外の関係ラベルに対応するエッジの先のノードに遷移することを意味する。また、「補足：ｏｂｊｅｃｔ」は、関係ラベルが「補足」であるエッジの順方向のノードの属性が［ｏｂｊｅｃｔ］である場合に、そのノードに遷移することを意味する。
【００５９】
また、「＊：ｏｂｊｅｃｔ」は、関係ラベルは何でも良いが、属性が［ｏｂｊｅｃｔ］のノードに遷移することを意味する。「理由←」は、関係ラベルが「理由」であるエッジを遡って遷移することを意味する。
【００６０】
上記Ｃは、Ａの［ｄｅｆａｕｌｔ］と、Ｂの各［属性］それぞれの優先順位に関する情報からなる。
【００６１】
最低限の情報としては、Ａのみ記述すればよい。また、図４の例では、正規表現を用いて記述しているが、以上に従うものであれば、記述方法はどのようなものでもよい。
【００６２】
このように、基本シナリオには、知識ベース１３０の各ノードに対して、様々な遷移ルールを記述することができ、知識ベース１３０に応じて、様々な対話を実現させることができる。
【００６３】
また、基本シナリオの例を図５に示す。図５は、図３の知識ベースに対応した基本シナリオであり、［ｄｅｆａｕｌｔ］のフィールドは通常の遷移を示す。また、図５では、Ｃの情報を省略している。
【００６４】
図５の例の場合、「補足」、「理由」、「反証」の優先順位でノードの遷移を行うことを示している。［ｓｕｂｊｅｃｔ］のフィールドは、現在のノード（ユーザ発話とマッチングしたノード）の属性が［ｓｕｂｊｅｃｔ］だった場合の順番となり「反証：ｏｂｊｅｃｔ」、「補足：ｏｂｊｅｃｔ」、「理由」、「補足」、「反証」という優先順位でノード遷移が行われることになる。
【００６５】
ここで「反証：ｏｂｊｅｃｔ」とは、「遷移ノードとのエッジが反証であり、かつ、遷移ノードの属性がｏｂｊｅｃｔ」というルールになっている。「反証」は、遷移先のノードが［ｏｂｊｅｃｔ］以外の反証エッジで接続されているノードを指す。
【００６６】
＜＜ユーザシナリオ＞＞
ユーザシナリオには、具体的な発話の内容に基づくノードの遷移先を定義して記述する。例えば、ユーザシナリオには、基本シナリオで定義した以外（各ノードの知識内容（発話文）に関する）の対話システムの挙動を記述する。
【００６７】
ユーザシナリオの記述方法は、例えば、既存のシナリオ対話システムの記法、記述手法（後述のＡＩＭＬ等）に倣うことができる。
【００６８】
ユーザシナリオに定義されるルールは、ユーザ発話の内容、システム発話の内容、各ノードの発話文の内容などに関し、自由に記述できる。
【００６９】
既存の対話システムのシナリオでは、シナリオごとに設定された発動条件（所定のルール）とユーザ発話が一致した場合に、システムが取るべき具体的行動や発話の内容（システム発話文）をルールとして記述するが、ユーザシナリオではシステム発話文だけはなく、遷移先のノードのＩＤを書くことができる。この場合、指定した遷移先ノードのＩＤの発話をすることになる。また、ユーザシナリオでは、ルールを適用するための条件も記述される。
【００７０】
図６は、ユーザシナリオの例である。このユーザシナリオは、対話シナリオのマークアップ言語であるＡＩＭＬの記法に倣ったものである。図６の例では、ユーザが「スマホはいらない」といった発話をした場合、すなわち、「スマホ」及び「いらない」というキーワードがユーザ発話に含まれた場合に発動するユーザシナリオである。
【００７１】
図６のユーザシナリオでは、当該ユーザシナリオが発動するとシステムが無条件に「なんでいらないと思うの？」というシステム発話をする。
【００７２】
そして、当該ユーザシナリオが発動中に、次のユーザ発話において、ユーザが「高い」と言った場合には、ルールに従って、ノードのＩＤが４のノードに遷移し、システム発話を生成する。一方、次のユーザ発話において、ユーザが「ウイルス」と言った場合には、ルールに従って、ノードのＩＤが２のノードに遷移して、システム発話を生成する。
【００７３】
図６は、ＡＩＭＬをベースにしたユーザシナリオの例であるが、外部から知識ベース１３０におけるノード間の遷移を決定できる記法であれば他の記法を用いてもよい。
【００７４】
入力部１００は、ユーザ発話の入力を受け付ける。そして、入力部１００は、受け付けたユーザ発話を、発話理解部１１０に渡す。
【００７５】
発話理解部１１０は、シナリオＤＢ１４０と、入力されたユーザ発話に基づいて、知識ベース１３０の複数のノードの中から、現在のノードを設定する。
【００７６】
具体的には、発話理解部１１０は、まず、前回のユーザ発話について、ユーザシナリオが発動しているか否かを判定する。発話理解部１１０は、前回のユーザ発話が、ユーザシナリオの発動条件に一致しているか否かを判定する。
【００７７】
そして、ユーザシナリオの発動条件に一致している場合、ユーザシナリオが発動していると判定し、他の処理を行わずに、ユーザ発話を知識遷移部１２０に渡す。なお、ユーザシナリオが発動している旨の情報を、知識遷移部１２０から受け取ることにより、判定する構成としてもよい。
【００７８】
一方、ユーザシナリオの発動条件に一致していない場合、または、前回のユーザ発話が無い場合に、発話理解部１１０は、入力部１００が受け付けたユーザ発話が、知識ベース１３０のどのノードに一致するかを判定し、一致したノードを現在のノードに設定する。
【００７９】
また、発話理解部１１０は、他の処理を行わなかった場合であって、知識遷移部１２０が、ユーザシナリオと、ユーザ発話とに基づいて、遷移先ノードが定まらないと判定した場合に、ユーザ発話が、知識ベース１３０のどのノードに一致させるかを判定し、一致したノードを現在のノードに設定する。
【００８０】
ここで、ユーザ発話と知識ベース１３０のノードとを一致させる方法は、任意の方法を採用することができる。
【００８１】
例えば、従来の対話シナリオを用いた手法のように、知識ベース１３０の全ノードの発話文と、ユーザ発話とで一致する単語を発見するルールベースの手法を採用しても良いし、発話文とユーザ発話との意味的な類似性を計算し、類似度が最も高かかったノードを採用するという手法を採用してもよい。
【００８２】
また、前回のユーザ発話がどのノードに一致していたかの情報を利用してもよい。
【００８３】
ここで、ユーザ発話は、知識ベース１３０のどれかのノードに一致させる必要がある。ユーザ発話が、知識ベース１３０のどのノードとも一致しないような場合には、予め一致させるノードを定めておけばよい。
【００８４】
そして、発話理解部１１０は、ユーザ発話と、設定した現在のノードのＩＤとを、知識遷移部１２０に渡す。
【００８５】
知識遷移部１２０は、ユーザ発話と、発話理解部１１０により設定された現在のノードと、対話シナリオとに基づいて、知識ベース１３０における遷移先ノードを決定する。
【００８６】
具体的には、知識遷移部１２０は、ユーザシナリオを優先して用いて、ユーザ発話に基づいて、知識ベース１３０における遷移先ノードを決定し、ユーザシナリオを用いて遷移先ノードが定まらない場合に、基本シナリオと、ユーザ発話と、発話理解部１１０により設定された現在のノードとに基づいて、遷移先ノードを決定する。
【００８７】
まず、知識遷移部１２０は、発動されたユーザシナリオを確認し、条件が一致するルールがあるかどうかを判定する。
【００８８】
知識遷移部１２０は、条件が一致するルールがあれば、ユーザシナリオに従って、遷移先ノードを決定する。一方、発動されたユーザシナリオに、条件が一致するルールがない場合には、知識遷移部１２０は、基本シナリオに記述した遷移の優先順位を基に遷移先ノードを決定する。
【００８９】
例えば、図６の例に示すユーザシナリオでは、ユーザが「スマホはいらない」と言った発話をした時に、当該ユーザシナリオの発動条件に一致する。このユーザシナリオでは、発動するとシステムが無条件に「なんでいらないと思うの？」という発話をする。
【００９０】
つまり、次の遷移先ノードを決定しない、すなわち、現在のノードを遷移先ノードとする。
【００９１】
そして、知識遷移部１２０は、遷移先ノードのＩＤを、発話生成部１５０に渡す。
【００９２】
また、知識遷移部１２０は、前回のユーザ発話について、ユーザシナリオを用いて遷移先ノードを決定している場合、同一のユーザシナリオを優先して用いて、ユーザ発話に基づいて、知識ベース１３０における遷移先ノードを決定し、同一のユーザシナリオを用いて遷移先ノードが定まらない場合に、ユーザシナリオを優先して用いて、ユーザ発話に基づいて、知識ベースにおける遷移先ノードを決定し、ユーザシナリオを用いて遷移先ノードが定まらない場合に、基本シナリオと、ユーザ発話と、現在のノードとに基づいて、知識ベース１３０における遷移先ノードを決定する。
【００９３】
具体的には、図６の例に示すユーザシナリオにおいて、「なんでいらないと思うの？」というシステム発話の後に、ユーザ発話を受け取ると、発話理解部１１０が、前回のユーザ発話について、ユーザシナリオが発動していると判定するため、前回のユーザ発話についてユーザシナリオを用いて遷移先ノードを決定していると判定できる。
【００９４】
次に、知識遷移部１２０は、前回と同一のユーザシナリオである図６のユーザシナリオを用いて、ユーザ発話に基づいて、知識ベース１３０における遷移先ノードを決定する。
【００９５】
例えば、知識遷移部１２０は、図６のユーザシナリオにおいて、次のユーザ発話が「高い」という単語を含む場合は、ルールに従って知識ベース１３０のＩＤが４のノードに遷移し、「ウイルス」という単語を含む場合にはＩＤが２のノードを遷移先ノードに決定する。
【００９６】
一方、知識遷移部１２０は、前回と同一のユーザシナリオを用いて遷移先ノードが定まらない場合に、他のユーザシナリオを優先して用いて、ユーザ発話に基づいて、知識ベース１３０における遷移先ノードを決定し、ユーザシナリオを用いて遷移先ノードが定まらない場合に、基本シナリオと、ユーザ発話と、現在のノードとに基づいて、知識ベース１３０における遷移先ノードを決定する。
【００９７】
例えば、知識遷移部１２０は、図６のユーザシナリオにおいて、システム発話「なんでいらないと思うの？」に対する次のユーザ発話が「高い」、「ウイルス」を含まなかった場合は、前回と同一のユーザシナリオを用いて遷移先ノードが定まらないと判定できる。
【００９８】
この時、現在のノードは不適切である可能性が高いので、知識遷移部１２０は、発話理解部１１０に、ユーザ発話に基づいて現在のノードを設定させる。
【００９９】
次に、知識遷移部１２０は、他のユーザシナリオを確認し、一致する発動条件があるかどうかを判定する。
【０１００】
知識遷移部１２０は、発動条件が一致するユーザシナリオがあれば、当該ユーザシナリオに従って、遷移先ノードを決定する。一方、発動条件が一致するユーザシナリオがない場合には、知識遷移部１２０は、基本シナリオに記述した遷移の優先順位を基に遷移先ノードを決定する。
【０１０１】
知識遷移部１２０は、決定した遷移先ノードのＩＤを、発話生成部１５０に渡す。
【０１０２】
なお、知識遷移部１２０は、ユーザシナリオが発動している場合には、入力部１００から直接ユーザ発話を受け取ることができる構成としてもよい。
【０１０３】
この場合、発話理解部１１０は、ユーザシナリオが発動しているか否かを判定する必要が無く、同一のユーザシナリオに基づいて遷移先ノードを決定できる限りにおいては、発話理解部１１０の処理をせずに済む。
【０１０４】
発話生成部１５０は、知識遷移部１２０により決定された遷移先ノードに基づいて、システム発話を生成する。
【０１０５】
具体的には、発話生成部１５０は、遷移先ノードの知識を基に、システム発話を決定する。知識ベース１３０のノードの知識が発話文そのものであれば、ノードの内容をそのままシステム発話とすればよい。
【０１０６】
また、発話生成部１５０は、遷移先ノードに含まれる知識に対応する発話文を外部データベース（図示しない）から取得する構成を取ることもでき、この場合には外部データベースを参照して、発話文を取得して、システム発話を生成する処理を行う。
【０１０７】
ここで、発話生成部１５０は、最終的なシステム発話に、遷移したエッジの内容によって情報を付加することもできる。
【０１０８】
例えば、図３の例では、「スマホは機種代が高い」というユーザ発話に対して、関係ラベルが［反証］であるエッジで繋がるノードへの遷移を行い、遷移先のノードの発話文「パソコンより安い」を生成する際に、発話生成部１５０は、反証に対応する接続詞「でも」を付加し、「でも、パソコンより安い」というシステム発話として生成することで、よりつながりのある対話を実現できる。
【０１０９】
この他にも、発話生成部１５０は、対話システムのキャラクタ性などを考慮して語尾などの変換などの処理を行っても良い。
【０１１０】
そして、発話生成部１５０は、生成したシステム発話を、出力部１６０に渡す。
【０１１１】
出力部１６０は、発話生成部１５０により生成されたシステム発話を出力する。例えば、対話システムを表示するユーザインターフェースに、システム発話を表示する。
【０１１２】
＜本発明の実施の形態に係る対話装置における対話例＞
図７を用いて、本実施形態に係る対話装置１０における対話の例について説明する。図７は、本実施形態に係る対話装置１０における対話の一例を示すイメージ図である。
【０１１３】
当該対話例において、知識ベース１３０、シナリオＤＢ１４０の内容は、図３、図５、及び図６を用いる。また、図７において、丸顔のキャラクタがユーザを、四角顔のキャラクタが対話システムを示し、ユーザの発言がユーザ発話、対話システムの発言がシステム発話である。また、図７の対話は上から下に発言されたものである。
【０１１４】
まず、ユーザが「スマホいらないよね」と発話した場合には、ユーザ発話が図６のユーザシナリオの発動条件に一致するため、無条件で「なんでいらないと思うの？」と返答する。
【０１１５】
次に、ユーザが「ウイルスとか怖そう」と発話した場合には、発動されたユーザシナリオのルールの内、「ウイルス」の条件に一致するため、当該ルールに記載されている遷移先であるノード２を遷移先ノードに決定する。
【０１１６】
次のユーザ発話である「端末も高いし」は、発動されたユーザシナリオのルール内の条件と一致しないため、基本シナリオを用いて遷移先を決定する。このとき、「端末も高いし」というユーザ発話は、発話理解部１１０での判定の結果、図３の知識ベース１３０のノード１の「スマホは機種代が高い」と一致する。
【０１１７】
そこで、図５の基本シナリオの［ｓｕｂｊｅｃｔ］フィールドの優先順位に従い、ノード４の「パソコンより安い」は「反証：ｏｂｊｅｃｔ」の条件を満たすためノード４に遷移し、反証を示す「でも」を追加した発話「でも、パソコンより安いよ」を返答する。
【０１１８】
＜本発明の実施の形態に係る対話装置の作用＞
図８は、本発明の実施の形態に係る対話処理ルーチンを示すフローチャートである。
【０１１９】
入力部１００にユーザ発話が入力されると、対話装置１０において、図８に示す対話処理ルーチンが実行される。
【０１２０】
まず、ステップＳ１００において、入力部１００は、ユーザ発話の入力を受け付ける。
【０１２１】
ステップ１１０において、発話理解部１１０は、前回のユーザ発話により、ユーザシナリオが発動しているか否かを判定する。
【０１２２】
ユーザシナリオが発動している場合（ステップＳ１１０のＹＥＳ）、ステップ１２０において、知識遷移部１２０は、発動されたユーザシナリオを確認し、条件が一致するルールがあるかどうかを判定する。
【０１２３】
発動されたユーザシナリオに、条件が一致するルールがある場合（ステップＳ１２０のＹＥＳ）、ステップＳ１５０に進む。一方、発動されたユーザシナリオに、条件が一致するルールがない場合（ステップＳ１２０のＮＯ）、ステップＳ１３０に進む。
【０１２４】
また、ユーザシナリオが発動していない場合（ステップＳ１１０のＮＯ）、ステップＳ１３０に進む。
【０１２５】
ステップ１３０において、発話理解部１１０は、シナリオＤＢ１４０と、上記ステップＳ１００により受け付けたユーザ発話に基づいて、知識ベース１３０の複数のノードの中から、現在のノードを設定する。
【０１２６】
ステップ１４０において、知識遷移部１２０は、ユーザシナリオを確認し、一致する発動条件があるかどうかを判定する。
【０１２７】
発動条件が一致するユーザシナリオがある場合（ステップＳ１４０のＹＥＳ）、ステップ１５０において、知識遷移部１２０は、当該ユーザシナリオに従って、遷移先ノードを決定し、ステップＳ１７０に進む。
【０１２８】
一方、発動条件が一致するユーザシナリオがない場合（ステップＳ１４０のＮＯ）、ステップ１６０において、知識遷移部１２０は、基本シナリオに記述した遷移の優先順位を基に遷移先ノードを決定し、ステップＳ１７０に進む。
【０１２９】
ステップ１７０において、発話生成部１５０は、上記ステップＳ１５０又はＳ１６０により決定された遷移先ノードに含まれる知識に基づいて、システム発話を生成する。
【０１３０】
ステップ１８０において、出力部１６０は、上記ステップＳ１７０により生成されたシステム発話を出力する。
【０１３１】
以上説明したように、本実施形態に係る対話装置によれば、発話に対する知識と、発話間の関係を表わす関係ラベルとからなる知識ベースと、ユーザ発話と、現在の知識と、関係ラベルを用いて知識ベースの知識間の遷移方法を定めた基本シナリオを含む対話シナリオとに基づいて、次の知識を決定し、次の知識に基づいて、システム発話を生成することにより、対話シナリオの記述量を抑えつつ、多様な対話を実現することができる。
【０１３２】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【０１３３】
上述の実施形態において、知識ベースはノードとエッジとからなる木構造で表現したが、必ずしも木構造である必要はなく、リスト構造等、発話に対する知識と、知識間の関係とを定義することができる構造であれば何でもよい。
【０１３４】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
【符号の説明】
【０１３５】
１０   対話装置
１００ 入力部
１１０ 発話理解部
１２０ 知識遷移部
１３０ 知識ベース
１４０ シナリオＤＢ
１５０ 発話生成部
１６０ 出力部
【図１】
2019159489.tif 000003
【図２】
2019159489.tif 000004
【図３】
2019159489.tif 000005
【図４】
2019159489.tif 000006
【図５】
2019159489.tif 000007
【図６】
2019159489.tif 000008
【図７】
2019159489.tif 000009
【図８】
2019159489.tif 000010