以下、図面を参照して本発明の実施形態を詳細に説明する。本実施形態においては、利用者とシステムの音声対話によって、利用者の目的達成を図るサービスを想定する。以下、利用者発話とは、サービスの利用者による音声発話を指し、これを正しくテキストに変換した文を「利用者発話文」と呼ぶ。音声認識エンジンにおいて、利用者発話を認識した結果、複数の利用者発話文の候補が得られることがあり、これを「認識候補文」と呼ぶ。また、システムが音声を合成して発話することを「システム発話」と呼び。合成の元となるテキストを「システム発話文」と呼ぶ。
<本実施形態に係る単語選択装置の原理>
まず、本実施形態に係る単語選択装置の原理について説明する。本実施形態に係る単語選択装置は、利用者から入力される音声の音声認識結果の複数候補を解析し、問返しの必要有無や問返しで提示する選択股の抽出を行う。なお、本実施形態に係る単語選択装置は、通常の対話を行うために事前に記述された対話戦略を用いる。
次に、本実施形態に係る単語選択装置の説明において用いる用語について説明する。
「問返し」とは、利用者発話文を正しく設定するために、システム発話で選択股を提示し、利用者に選択してもらう対話を通して、システムが利用者発話文を決定することである。例えば、下記(1)、及び(2)に示すような2つの認識候補文があるとする。
(1)「タイカレーのレシピが知りたい」
(2)「野菜カレーのレシピが知りたい」
上記(1)及び(2)の2つの認識候補文から利用者発話文を選定する行為は、利用者の発話意図を特定することに繋がる。もし、誤った認識候補文を選定した場合、システムから提示される検索結果は利用者の意図とは異なるものとなり、利用者の満足度低下に繋がる。そこで、問返しの対話を通じて、正しい認識候補文を利用者に選んでもらうことを考える。
問返しの戦略には、全文問返しと単語問返しとの2種類が考えられる。全文問返しとは、複数の認識候補文をそのまま羅列して問い返す方法である。この場合、「タイカレーのレシピが知りたい、ですか、野菜カレーのレシピが知りたい、ですか」というシステム発話文を生成し、これを合成して発話する。利用者は違いを意識しながら再度発話し、それを受けてシステムが利用者発話文を決定する。全文問返しの戦略は、利用者の発話を一字一句間違えないように入力するような場面で有効であり、音声入力によるメール作成サービスなどでの利用が想定される。
一方、単語問返しとは、複数の認識候補文のうち、内容が異なる部分のみを抽出し、それを羅列して問い返すことで、利用者発話文の一部を選択するだけで利用者発話文を決定することである。例えば、上記(1)、及び(2)の例の場合、「タイカレーですか、野菜カレーですか」というシステム発話文を生成し、これを合成して発話する。利用者は、選択肢として提示された単語を発話することで、利用者発話文を決定することができる。単語問返しの戦略は、各種ドメインのデータベース検索やウェブ検索などで有効であり、スマートフォン等の検索アプリやサイネージを用いた観光案内、カーナビでの行き先入力などでの利用が想定される。本実施形態に係る単語選択装置においては、この単語問返しに焦点を当てる。
単語問返しの戦略において、選択股として提示する単語は、利用者の発話意図に関わる単語のみに限定する必要がある。例えば、下記(3)〜(5)のような3つの認識候補文があるとする。
(3)「カレーのレシピが知りたい」
(4)「カレーのレシピを知りたい」
(5)「カレーのレシピを聞きたい」
上記(3)〜(5)の認識候補文の各々は、一部単語が異なっているが、全て、カレーのレシピを検索したいという利用者の意図は同じである。また、どの利用者発話文を受けても、カレーという料理名のキーワードでレシピデータベースを検索するというシステムの振る舞いも同じである。
よって、単語問返しの戦略が適するサービスの場合、一字一句間違いなく利用者発話文を決定することは不要であり、利用者の意図やシステムの振る舞いに関わる部分が正しく認識できていれば問題ない。通常のシステムは、利用者の意図によって振る舞いが決まるため、利用者の意図さえ正しく認識できれば、それ以外の部分が誤って認識されていても問題ないと考えられる。
しかし、認識候補文を比較して異なる単語を用いて単語問返しを行うと、上記(3)〜(5)の認識候補文の場合には、
「“が”ですか、“を”ですか」
「“知りたい”ですか、“聞きたい”ですか」
というような、利用者にとって不要な問返しをすることになる。この場合、利用者は何を聞かれているのかわからないと感じる場合があり、また、不要な問返しに不快感を感じる可能性がある。そのため、単語問返しの戦略をとる場合、各認識候補文から利用者の意図に関わる部分を抽出し、それを比較した上で問返しの有無を判定する必要がある。
「対話シナリオ」とは、対話の戦略を規定するものである。対話シナリオには、利用者発話に応じたシステムの振る舞いを、サービス提供者または運用者等が記述する。これをサービスに合わせて事前に準備し、当該対話シナリオに従って利用者とシステムの対話が制御される。具体的には、対話シナリオは、特定のキーとなる文字列、単語、形態素情報、又は時間等に基づいて、特定の動作を行う規則である。なお、本実施形態において用いる対話シナリオは、特定の文字列、又は単語に基づいて特定の動作を行う規則を規定しているものとする。
「対話関数」とは、対話シナリオを記述するための部品として用いられるものである。対話を行う上で必要な情報を利用者発話文から抽出する関数、あるいは、抽出した結果から適切な次のシステム応答文やシステムの動作を選択、生成する関数のことをいう。ここでは、関数という呼び方をしているが、対話シナリオに従って呼び出される機能であり、利用者発話文または認識候補文を入力とし、対話を進めるための処理を行う機能であれば、実装方法は問わない。また、対話関数により、対話シナリオに用いる特定のキーとなる文字列、単語、形態素情報、又は時間等を取得することができる。なお、本実施形態において用いる対話関数は、特定の文字列、又は単語を抽出する関数である。
本実施形態においては、利用者発話文または認識候補文とともに、そのテキスト解析結果も入力としているが、これに限らない。また、利用者発話文または認識候補文だけでなく、対話を進めるために必要な任意の情報も入力として与えてもよい。例えば、センサ情報や画像情報、過去の利用履歴、時刻情報や他サービス、他データベースから得られた情報などが挙げられる。
本実施形態においては、対話関数の出力を単語の配列とした例を示している。これは、複数の出力同士を比較する作業を簡単に行うためであり、出力形式はこれに限らない。対話関数の例を図1に示す。図1の例の対話関数は、レシピ検索とレストラン検索とが可能なサービスにおいて、対話シナリオを記述する際に用いられる対話関数の一部である。
この対話関数で抽出した単語を検索条件として用いて、項番1、及び項番2の場合はレシピデータベースを、項番3の場合はレストランデータベースを検索する検索式を生成する関数などと組み合わされ、実際に対話シナリオの中で用いられることを想定している。
ここでは、検索条件となる単語の抽出までを1つの対話関数として定義したが、抽出した結果で検索した結果を得るところまでを1つの対話関数としてもよい。対話関数は、入力された利用者発話文、又は認識候補文について、何らかの処理結果を出力されていれば、長さや定義の単位は問わない。また、対話関数は、問返しの機能を実現するために特別に作る必要はなく、既に対話シナリオの中で呼び出し関係がある関数を再利用することが想定される。
本実施形態に係る単語選択装置においては、各認識候補文が処理結果を得られる対話関数と、その処理結果を比較することで、利用者への問返しの必要有無や問返しに用いる選択肢を決定する。
<第1の実施形態に係る単語選択装置の構成>
次に、第1の実施形態に係る単語選択装置の構成について説明する。図2に示すように、第1の実施形態に係る単語選択装置100は、CPUと、RAMと、後述する単語選択処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することができる。この単語選択装置は、機能的には図2に示すように入力部10と、演算部20と、出力部90とを含んで構成されている。
入力部10は、マイクから入力された利用者の音声データを受け付ける。
演算部20は、対話関数記憶部22と、音声認識部24と、信頼度判定部26と、内容解析部28と、単語候補抽出部30と、問返し処理部32と、音声合成部34と、を含んで構成されている。
対話関数記憶部22には、第1の実施形態に係る単語選択装置100が対象とする対話システムについて、予め定められている対話関数fnの各々に対応する対話関数名nからなる対話関数名集合が記憶されている。具体的には、第1の実施形態において対象となる対話シナリオで呼び出し関係があり、後述する認識候補文を入力情報に含む、対話関数の対話関数名集合が記憶されている。また、対話関数記憶部22には、対話関数名nに対応する対話関数fnの各々が記憶されている。第1の実施形態においては、対話関数名nに基づいて、当該対話関数名に対応する対話関数fnを呼び出すことができる。
音声認識部24は、入力部10において受け付けた利用者の音声データについて、音声認識を行い、当該音声データについての信頼度が上位N個の認識候補文(N−best)に各認識候補文の信頼度を付加した認識候補の集合を認識候補群として取得し、信頼度判定部26に出力する。ここで、信頼度は、信頼度の値の絶対値に意味があり、値が高いほど認識候補は信頼できることを表す。また、信頼度の算出方法は、例えば、特許文献1の方法を用いて算出する。なお、音声認識部24における解析結果には、音声データをテキスト化したものが含まれていることが必須であり、かつ、認識候補群には、最も信頼度が高く、利用者発話文である可能性が高い1つの認識候補文に関する情報だけでなく、当該認識候補文を選ぶ元になる複数の認識候補文(N−best)の情報が含まれている必要がある。また、Nの値は予め定められているものとする。また、認識候補各々のデータの保持方法は問わない。
また、音声認識部24は、問返し処理部32の音声データの出力に対応して、入力部10において受け付けた利用者の音声データについて、音声認識を行い、反応利用者発話文を取得して、問返し処理部32に出力する。ここで、反応利用者発話文について、複数の認識候補が得られた場合、信頼度や認識候補文に含まれる単語などから認識候補を絞ったものを反応利用者発話文として用いる。
信頼度判定部26は、音声認識部24から入力される認識候補群に含まれる認識候補文を、当該認識候補文の信頼度に基づいて絞り込み、認識候補文群とする。また、信頼度判定部26は、取得した認識候補文群の問返し方法を、当該認識候補文群に含まれる認識候補文の数(要素数)に基づいて、「再発話」、「確定」、又は「保留」に設定し、認識候補文群と共に内容解析部28に出力する。ここで、「再発話」とは、“もう一度お願いします”のように、利用者に再度発話を促すためのシステム発話を再生し、最初の音声認識部24の処理に戻ることである。また、「確定」とは、問返しをすることなく利用者発話文を決定できる状態をいう。また、「保留」とは、現段階において問返しの方法を決定することができず、後述する処理において決定するという状態をいう。
具体的には、まず、信頼度判定部26は、認識候補群に含まれる認識候補の各々について、メモリ(図示省略)に記憶されている信頼度の閾値と、当該認識候補の信頼度とを比較し、閾値以上である場合に、当該認識候補に含まれる認識候補文を認識候補文群に追加する。そして、信頼度判定部26は、取得した認識候補文群に含まれる認識候補文の数(要素数)に基づいて、問返し方法を設定する。なお、認識候補文の数が0の場合、問返し方法を「再発話」に設定する。また、認識候補文の数が1である場合、問返し方法を「確定」に設定し、認識候補文群の認識候補文を、利用者発話文に設定する。また、認識候補文の数が1よりも大きい(2以上)場合、問返し方法を「保留」に設定する。
内容解析部28は、信頼度判定部26から入力された問返し方法が「保留」である場合、認識候補文群について、対話関数記憶部22に記憶されている対話関数の各々に基づいて、当該認識候補文群の問返しの方法を設定する。
具体的には、まず、内容解析部28は、認識候補文群に含まれる認識候補文の各々について、テキスト解析を行う。ここで、テキスト解析とは、形態素解析、係り受け解析、固有表現抽出、及び述部正規化などの言語処理や、分野単語のカテゴライズなど、認識候補文とそれに含まれる単語に関する分析であればよい。
次に、内容解析部28は、対話関数記憶部22に記憶されている対話関数名nの各々について、当該対話関数名nに基づいて呼び出される対話関数fnに、認識候補文tと、当該認識候補文のテキスト解析結果とを入力する。そして、対話関数fnから出力結果が得られた場合、出力された配列を内容配列оut(t,n)として生成する。図3、図4、及び図5に、内容配列оut(t,n)の例を示す。図3〜図5は、各々異なる3パターンの利用者発話を入力した場合の、各々の認識候補文群を対象とした例である。図3の例では、認識候補文が3つある場合の例を示しており、図1に示した対話関数に入力した場合の結果を表している。図4、及び図5の例では、認識候補文が2つである場合の例を示しており、図3と同様の結果を示している。
次に、内容解析部28は、取得した内容配列оut(t,n)の数に基づいて、問返し方法を設定する。ここで、内容配列оut(t,n)の数が0である場合には、問返し方法を「再発話」に設定する。また、内容配列оut(t,n)の数が1である場合には、問返し方法を「確定」に設定し、内容配列の要素に対応する認識候補文を利用者発話文として設定する。また、内容配列оut(t,n)の数が1よりも大きい(2以上)である場合には、問返し方法を「保留」に設定し、内容配列оut(t,n)の各々と、内容配列оut(t,n)の各々の要素に対応する対話関数名、及び認識候補文の各々と共に、単語候補抽出部30に出力する。
単語候補抽出部30は、内容解析部28から入力された問返し方法が「保留」である場合、入力された内容配列оut(t,n)の各々と、内容配列оut(t,n)の各々の要素に対応する対話関数名、及び認識候補文の各々とに基づいて、内容表を作成し、当該内容表に基づいて、「再発話」、「単語問返し」、又は「確定」の何れか1つの問返し方法を決定する。ここで、「単語問返し」とは、利用者発話の一部を羅列して問い返すシステム発話を再生し、利用者に選択させることで、利用者発話文を決定することである。
具体的には、まず、単語候補抽出部30は、入力された内容配列оut(t,n)の各々を一行とし、内容配列оut(t,n)に認識候補文tと対話関数名nとを対応づけた内容表を作成する。内容表は、内容配列оut(t,n)の数と同じ行数となる。各行において、要素がない列は空欄とする。内容表の例を図6、図7、及び図8に示す。図6は、図3の内容配列оut(t,n)に対応し、図7は、図4の内容配列оut(t,n)に対応し、図8は、図5の内容配列оut(t,n)に対応している。なお、図6〜図8の一列目の項番は説明の都合上記載したものであり、値の大きさは意味をなさない。
次に、単語候補抽出部30は、作成された内容表において、対話関数名nが複数種類あるか否かを判定する。ここで、単語候補抽出部30が、図8で示した例のように、対話関数名nが複数種類あると判定した場合には、問返し方法を「再発話」に設定する。一方、単語候補抽出部30が、図6、及び図7で示した例のように、対話関数名nが複数種類ないと判定した場合には、内容表において、内容配列оut(t,n)の要素が完全一致する行がある場合、一方の行を削除する。つまり、内容配列оut(t,n)の全要素の内容が重複する行を統合する。例えば、図6においては、項番1の行の内容配列оut(t1,Recipe_food_menu)の全要素と項番3の行の内容配列оut(t3,Recipe_food_menu)の全要素との、内容が完全一致する。そのため、項番1の行又は項番3の行の何れか一方を削除する。なお、削除するのはどちらでもよく、認識候補文に対応する信頼度の高い方を選ぶか、内容表の上に存在するものを選ぶなどの方法が考えられる。第1の実施形態においては、項番3の行を削除した場合について以後説明する。
次に、単語候補抽出部30は、内容表のうち、内容配列оut(t,n)の配列の内容と包含関係にある行がある場合、部分集合となる方の行(要素数が少ない方)を削除する。例えば、図7について説明すると。項番4の内容配列оut(t4,Recipe_food_menu)の配列の内容と項番5の内容配列оut(t5,Recipe_food_menu)の配列の内容とが包含関係にあるため、要素に含まれる特定の単語の数が少ない項番5の行を削除する。
次に、単語候補抽出部30は、内容表のうち、内容配列оut(t,n)の要素に対応する各列について、値の差異があるかどうかを判定する。単語候補抽出部30は、内容配列оut(t,n)の要素に対応する各列のうち、値に差異のある列をカウントし、cとする。例えば、図6の例の場合、残っている項番1の行の内容配列оut(t1,Recipe_food_menu)の要素と項番2の行の内容配列оut(t2,Recipe_food_menu)の要素とを比較すると、内容配列оut(t,n)の1つの要素に対応する列1のみが異なる値を持つことから、c=1となる。ここで、単語候補抽出部30は、c=0の場合、問返し方法を「確定」に設定し、内容表に残っている要素の認識候補文を利用者発話文に設定する。また、単語候補抽出部30は、c=1の場合、問返し方法を「単語問返し」設定し、差異のある列の値からなる単語候補配列を生成し、単語候補配列と内容表とを問返し処理部32に出力する。図6の例の場合、単語候補配列は、(“野菜カレー”,“タイカレー”)となる。また、単語候補抽出部30は、c>1(c≧2)の場合、問返し方法を「再発話」に設定する。
問返し処理部32は、信頼度判定部26、内容解析部28、又は単語候補抽出部30から入力される設定された問返し方法の種類に基づいて、必要に応じて利用者に問返しを行うシステム発話を行い、利用者発話文を確定し、出力部90から出力する。なお、問返し方法は必ず入力され、問返し方法が「確定」の場合には、利用者発話文、問返し方法が「単語問返し」の場合には、単語候補配列と内容表とが問返し処理部32に入力される。
具体的には、問返し処理部32は、入力された設定された問返し方法の種類が「単語問返し」の場合、問返し処理部32は、入力された単語候補配列を用いて、選択を促すシステム発話文を生成する。例えば、単語候補配列に含まれている単語の各々を読点でつなげ、最後に「どちらでしょうか。」という文をつなげると、図6の例の場合、「野菜カレー、タイカレー、どちらでしょうか。」という文が作成される。システム発話文は、単語候補配列の単語群からの選択を促すような文であればどのような文でも構わない。また、利用者に音声によって提示するのではなく画面で表示する場合、インタフェースに合わせた記述に変更する。
次に、問返し処理部32は、作成したシステム発話文を、音声合成部34に出力し、音声合成部34において生成された音声データを出力部90から出力して再生する。
次に、問返し処理部32は、音声認識部24から入力される反応利用者発話文に、単語候補配列の何れか1つの要素のみが含まれているか判定する。問返し処理部32が、取得した反応利用者発話文に、単語候補配列の何れか1つの要素のみが含まれていないと判定した場合には、再度同じ音声データを出力部90から出力して再生する処理を繰り返す。ここで、繰り返しを行う回数の上限値を予め設定し、上限値を超えた場合は問返し方法を「再発話」としてもよい。一方、問返し処理部32が、取得した反応利用者発話文に、単語候補配列の何れか1つの要素のみが含まれていると判定した場合には、含まれていると判定された単語候補に対応する認識候補文を内容表から取得し、利用者発話文として設定する。例えば、図6の例の場合、利用者が「野菜」と発話した場合、内容表の項番1の行の認識候補文「野菜カレーのレシピが知りたい」を利用者発話文として設定し、当該利用者発話文を出力部90から出力する。
また、問返し処理部32は、入力された設定された問返し方法が「確定」である場合、利用者発話文を出力部90から出力する。
また、問返し処理部32は、入力された設定された問返し方法が「再発話」である場合、再発話を促すシステム発話文を生成し、音声合成部34に出力する。次に、音声合成部34から取得した再発話を促すシステム発話文に対応する音声データを出力部90から出力して再生し、利用者発話文にnullを設定する。
音声合成部34は、与えられたテキストやその特徴に基づいて、合成音声データを生成し、出力する機能を持つ。第1の実施形態においては、問返し処理部32から入力されるテキスト形式のシステム発話文を入力とし、合成音声データ生成し、問返し処理部32に出力する。
入力には、声質、抑揚、アクセントなどの発音記号等、音声の属性に関するパラメータが含まれていてもよいし、システム発話文の中にこれらのパラメータを埋め込んだ1つのテキスト文でもよい。例えば、SSML形式などが挙げられる。合成音声データの形式は限定しない。音声合成部34は、システム発話文を含む情報を入力し、合成音声データが出力される機能であれば、どのような構成でも構わない。なお、第1の実施形態においては、特許文献3(特開2012−237925号公報)の技術を用いる。
<第1の実施形態に係る単語選択装置の作用>
次に、第1の実施形態に係る単語選択装置100の作用について説明する。入力部10においてマイクから入力された利用者の音声データを受け付けると、単語選択装置100によって図9〜図13に示す単語選択処理ルーチンを実行する。
まず、図9のステップS100で、音声認識部24は、対話関数記憶部22に記憶されている対話関数名集合を取得する。
次に、ステップS102で、音声認識部24は、入力部10において受け付けた音声データについて、音声認識を行い、N個の認識候補文を取得する。
次に、ステップS104で、音声認識部24は、ステップS102において取得したN個の認識候補文の各々について信頼度を算出する。
次に、ステップS106で、音声認識部24は、ステップS102において取得したN個の認識候補文の各々に、ステップS104において取得した当該認識候補文の信頼度を付加し、認識候補群を取得する。
次に、ステップS108で、信頼度判定部26は、ステップS106において取得した認識候補群から当該認識候補群に含まれる認識候補文の各々の信頼度に基づいて、認識候補文群を取得し、取得した認識候補文群に含まれる認識候補文の数に基づいて、問返し方法を設定する。
次に、ステップS110で、内容解析部28は、ステップS100において取得した対話関数名集合と、ステップS106において取得した、認識候補文群、及び問返し方法とに基づいて、問返し方法を設定する。
次に、ステップS112で、単語候補抽出部30は、ステップS110において取得した問返し方法に基づいて、問返し方法を決定する。
次に、ステップS114で、問返し処理部32は、ステップS112において取得した問返し方法に基づいて、問返し処理を実行し、単語選択処理を終了する。
上記ステップS108の信頼度に基づく問返し方法の判定処理について、図10において詳細に説明する。
図10のステップS200で、信頼度判定部26は、メモリ(図示省略)に記憶されている信頼度の閾値を取得する。
次に、ステップS202で、信頼度判定部26は、ステップS106において取得した認識候補群から処理対象となる認識候補を決定する。
次に、ステップS204で、信頼度判定部26は、処理対象となる認識候補の信頼度が、ステップS200において取得した閾値以上か否かを判定する。信頼度判定部26が、処理対象となる認識候補の信頼度が閾値以上であると判定した場合には、信頼度に基づく問返し方法の判定処理は、ステップS206へ移行する。一方、信頼度判定部26が、処理対象となる認識候補の信頼度が閾値未満であると判定した場合には、信頼度に基づく問返し方法の判定処理は、ステップS208へ移行する。
次に、ステップS206で、信頼度判定部26は、処理対象となる認識候補の認識候補文を認識候補文群に追加する。
次に、ステップS208で、信頼度判定部26は、ステップS106において取得した認識候補群に含まれる認識候補の全てについてステップS202〜ステップS204、又はステップS206までの処理を終了したか否かを判定する。信頼度判定部26が、ステップS106において取得した認識候補群に含まれる認識候補の全てについてステップS202〜ステップS204、又はステップS206までの処理を終了したと判定した場合には、信頼度に基づく問返し方法の判定処理は、ステップS210へ移行する。一方、信頼度判定部26が、ステップS106において取得した認識候補群に含まれる認識候補の全てについてステップS202〜ステップS204、又はステップS206までの処理を終了していないと判定した場合には、信頼度に基づく問返し方法の判定処理は、ステップS202へ移行し、処理対象となる認識候補を変更し、ステップS204〜ステップS208までの処理を繰り返す。
次に、ステップS210で、信頼度判定部26は、ステップS206において取得した認識候補文群に含まれる認識候補文の数が0であるか否かを判定する。信頼度判定部26が、認識候補文群に含まれる認識候補文の数が0であると判定した場合には、信頼度に基づく問返し方法の判定処理は、ステップS212へ移行する。一方、信頼度判定部26が、認識候補文群に含まれる認識候補文の数が0でないと判定した場合には、信頼度に基づく問返し方法の判定処理は、ステップS214へ移行する。
次に、ステップS212で、信頼度判定部26は、問返し方法を「再発話」に設定し、信頼度に基づく問返し方法の判定処理を終了する。
ステップS214で、信頼度判定部26は、ステップS206において取得した認識候補文群に含まれる認識候補文の数が1であるか否かを判定する。信頼度判定部26が、認識候補文群に含まれる認識候補文の数が1であると判定した場合には、信頼度に基づく問返し方法の判定処理は、ステップS216へ移行する。一方、信頼度判定部26が、認識候補文群に含まれる認識候補文の数が1でないと判定した場合には、信頼度に基づく問返し方法の判定処理は、ステップS220へ移行する。
次に、ステップS216で、信頼度判定部26は、問返し方法を「確定」に設定する。
次に、ステップS218で、信頼度判定部26は、ステップS206において取得した認識候補文群に含まれる認識候補文を利用者発話文として設定し、信頼度に基づく問返し方法の判定処理を終了する。
ステップS220で、信頼度判定部26は、問返し方法を「保留」に設定し、信頼度に基づく問返し方法の判定処理を終了する。
上記ステップS110の対話関数に基づく問返し方法の判定処理について、図11において詳細に説明する。
図11のステップS300で、内容解析部28は、ステップS108において取得した問返し方法が「保留」であるか否かを判定する。内容解析部28が、問返し方法が「保留」であると判定した場合には、対話関数に基づく問返し方法の判定処理は、ステップS302へ移行する。一方、内容解析部28が、問返し方法が「保留」でないと判定した場合には、対話関数に基づく問返し方法の判定処理を終了する。
次に、ステップS302で、内容解析部28は、ステップS206において取得した認識候補文群に含まれる認識候補文のうち、処理対象となる認識候補文を決定する。
次に、ステップS304で、内容解析部28は、処理対象となる認識候補文についてテキスト解析を行う。
次に、ステップS306で、内容解析部28は、ステップS100において取得した対話関数名集合から、処理対象となる対話関数名を決定する。
次に、ステップS307で、内容解析部28は、処理対象となる対話関数名nに基づいて呼び出される対話関数fnに、処理対象となる認識候補文tと、ステップS304において取得したテキスト解析結果とを入力する。
次に、ステップS308で、内容解析部28は、ステップS307において出力結果が得られたか否かを判定する。内容解析部28が、出力結果が得られたと判定した場合には、対話関数に基づく問返し方法の判定処理は、ステップS310へ移行する。一方、内容解析部28が、出力結果が得られなかったと判定した場合には、対話関数に基づく問返し方法の判定処理は、ステップS312へ移行する。
ステップS310で、内容解析部28は、ステップS307において取得した出力された配列を内容配列оut(t,n)として生成する。
ステップS312で、内容解析部28は、ステップS100において取得した対話関数名集合に含まれる全ての対話関数名についてステップS306〜ステップS308、又はステップS310までの処理を終了したか否かを判定する。内容解析部28が、対話関数名集合に含まれる全ての対話関数名についてステップS306〜ステップS308、又はステップS310までの処理を終了したと判定した場合には、対話関数に基づく問返しの判定処理は、ステップS314へ移行する。一方、内容解析部28が、対話関数名集合に含まれる全ての対話関数名についてステップS306〜ステップS308、又はステップS310までの処理を終了していないと判定した場合には、対話関数に基づく問返しの判定処理は、ステップS306へ移行し、処理対象となる対話関数名を変更し、ステップS307〜ステップS312までの処理を繰り返す。
次に、ステップS314で、内容解析部28は、ステップS206において取得した認識候補文群に含まれる全ての認識候補文について、ステップS302〜ステップS312までの処理を終了したか否かを判定する。内容解析部28が、全ての認識候補文について、ステップS302〜ステップS312までの処理を終了したと判定した場合には、対話関数に基づく問返し方法の判定処理は、ステップS316へ移行する。一方、内容解析部28が、全ての認識候補文について、ステップS302〜ステップS312までの処理を終了していないと判定した場合には、対話関数に基づく問返し方法の判定処理は、ステップS302へ移行し、処理対象となる認識候補文を変更し、ステップS304〜ステップS314までの処理を繰り返す。
次に、ステップS316で、内容解析部28は、ステップS310において取得した内容配列оut(t,n)の数が0であるか否かを判定する。内容解析部28が、取得した内容配列оut(t,n)の数が0であると判定した場合には、対話関数に基づく問返し方法の判定処理は、ステップS318へ移行する。一方、内容解析部28が、取得した内容配列оut(t,n)の数が0でないと判定した場合には、対話関数に基づく問返し方法の判定処理は、ステップS320へ移行する。
次に、ステップS318で、内容解析部28は、問返し方法を「再発話」に設定し、対話関数に基づく問返し方法の判定処理を終了する。
ステップS320で、内容解析部28は、ステップS310において取得した内容配列оut(t,n)の数が1であるか否かを判定する。内容解析部28が、取得した内容配列оut(t,n)の数が1であると判定した場合には、対話関数に基づく問返し方法の判定処理は、ステップS322へ移行する。一方、内容解析部28が、取得した内容配列оut(t,n)の数が1でないと判定した場合には、対話関数に基づく問返し方法の判定処理は、ステップS326へ移行する。
次に、ステップS322で、内容解析部28は、問返し方法を「確定」に設定する。
次に、ステップS324で、内容解析部28は、ステップS310において取得した唯一の内容配列оut(t,n)に対応する認識候補文を利用者発話文として設定し、対話関数に基づく問返し方法の判定処理を終了する。
ステップS326で、内容解析部28は、問返し方法を「保留」に設定して、対話関数に基づく問返し方法の判定処理を終了する。
上記ステップS112の問返し方法の決定処理について、図12において詳細に説明する。
図12のステップS400で、単語候補抽出部30は、ステップS108、又はステップS110において取得した問返し方法が「保留」であるか否かを判定する。単語候補抽出部30が、問返し方法が「保留」であると判定した場合には、問返し方法の決定処理は、ステップS402へ移行する。一方、単語候補抽出部30が、問返し方法が「保留」でないと判定した場合には、問返し方法の決定処理は終了する。
次に、ステップS402で、単語候補抽出部30は、ステップS310において取得した内容配列に基づいて、内容表を作成する。
次に、ステップS404で、単語候補抽出部30は、ステップS402において取得した内容表に含まれている対話関数名が複数種類存在するか否かを判定する。単語候補抽出部30が、内容表に含まれている対話関数名が複数種類存在すると判定した場合には、問返し方法の決定処理は、ステップS406へ移行する。一方、単語候補抽出部30が、内容表に含まれている対話関数名が1つだけ存在すると判定した場合には、問返し方法の決定処理は、ステップS408へ移行する。
次に、ステップS406で、単語候補抽出部30は、問返し方法を「再発話」に設定し、問返し方法の決定処理を終了する。
ステップS408で、単語候補抽出部30は、ステップS402において取得した内容表に、内容配列оut(t,n)の全要素が完全一致する行が存在するか否かを判定する。単語候補抽出部30が、内容表に、内容配列оut(t,n)の全要素が完全一致する行が存在すると判定した場合には、問返し方法の決定処理は、ステップS410に移行する。一方、単語候補抽出部30が、内容表に、内容配列оut(t,n)の全要素が完全一致する行が存在しない判定した場合には、問返し方法の決定処理は、ステップS412に移行する。
次に、ステップS410で、単語候補抽出部30は、ステップS408において取得した完全一致する行を一つだけ残すように統合し、その他の完全一致する行の各々を削除する。
次に、ステップS412で、単語候補抽出部30は、ステップS402、又は、ステップS410において取得した内容表の行ペアの間で、内容配列оut(t,n)からなる集合に包含関係が存在するか否かを判定する。単語候補抽出部30が、内容表の行ペアの間で、内容配列оut(t,n)からなる集合に包含関係が存在すると判定した場合には、問返し方法の決定処理は、ステップS414へ移行する。一方、単語候補抽出部30は、内容表の行ペアの間で、内容配列оut(t,n)からなる集合に包含関係が存在しないと判定した場合には、問返し方法の決定処理は、ステップS416へ移行する。
次に、ステップS414で、単語候補抽出部30は、ステップS412において取得した包含関係が存在する行ペアのうちについて、要素に含まれる単語の数が少ない行を削除する。
次に、ステップS416で、単語候補抽出部30は、ステップS402、ステップS410、又はステップS414において取得した内容表において、内容配列оut(t,n)の要素に対応する各列について値に差異があるか否かを判定する。単語候補抽出部30が、内容表において、内容配列оut(t,n)の要素に対応する各列について値の差異があると判定した場合には、問返し方法の決定処理は、ステップS422へ移行する。一方、単語候補抽出部30が、内容表において、内容配列оut(t,n)の要素に対応する各列について値の差異がないと判定した場合には、問返し方法の決定処理は、ステップS418へ移行する。
次に、ステップS418で、単語候補抽出部30は、問返し方法を「確定」に設定する。
次に、ステップS420で、単語候補抽出部30は、ステップS402、ステップS410、又はステップS414において取得した内容表に残っている要素の認識候補文を利用者発話文に設定し、問返し方法の決定処理を終了する。
ステップS422で、単語候補抽出部30は、ステップS416において取得した差異がある列数cをカウントする。
次に、ステップS424で、単語候補抽出部30は、ステップS422において取得した列数cが1であるか否かを判定する。単語候補抽出部30が、列数cが1であると判定した場合には、問返し方法の決定処理は、ステップS426へ移行する。一方、単語候補抽出部30が、列数cが1でないと判定した場合には、問返し方法の決定処理は、ステップS406へ移行する。
次に、ステップS426で、単語候補抽出部30は、問返し方法を「単語問返し」に設定する。
次に、ステップS428で、単語候補抽出部30は、ステップS416において取得した差異のある列の値からなる単語候補配列を生成し、問返し方法の決定処理を終了する。
上記ステップS114の問返しの実行処理について、図13において詳細に説明する。
図13のステップS500で、問返し処理部32は、ステップS108、ステップS110、又は、ステップS112において取得した問返し方法が「単語問返し」であるか否かを判定する。問返し処理部32が、取得した問返し方法が「単語問返し」であると判定した場合には、問返しの実行処理は、ステップS502へ移行する。一方、問返し処理部32が、取得した問返し方法が「単語問返し」でないと判定した場合には、問返しの実行処理は、ステップS518へ移行する。
次に、ステップS502で、問返し処理部32は、ステップS428において取得した単語候補配列に基づいて、選択を促すシステム発話文を生成し、音声合成部34に出力する。
次に、ステップS504で、音声合成部34は、ステップS502において取得したシステム発話文に対応する音声データを生成し、問返し処理部32に出力する。
次に、ステップS506で、問返し処理部32は、ステップS504において取得した音声データを、出力部90から出力して再生する。
次に、ステップS508で、音声認識部24は、利用者の発話を受け付けたか否かを判定する。音声認識部24が、利用者の発話を受け付けたと判定した場合には、問返しの実行処理は、ステップS510へ移行する。一方、音声認識部24が、利用者の発話を受け付けていないと判定した場合には、問返しの実行処理は、ステップS508を繰り返す。
次に、ステップS510で、音声認識部24は、ステップS508において取得した利用者の音声データについて、音声認識を行い、反応利用者発話文を取得する。
次に、ステップS512で、問返し処理部32は、ステップS508において取得した反応利用者発話文に、ステップS428において取得した単語候補配列の何れか1つの要素(単語候補)のみが含まれているか否かを判定する。問返し処理部32が、反応利用者発話文に、単語候補配列の何れか1つの要素のみが含まれている場合には、問返しの実行処理は、ステップS514へ移行する。一方、問返し処理部32が、反応利用者発話文に、単語候補配列の何れの要素も含まれていない場合、又は単語候補配列の2つ以上の要素が含まれている場合には、問返しの実行処理は、ステップS506へ移行し、処理を繰り返す。
次に、ステップS514で、問返し処理部32は、ステップS402、ステップS410、又はステップS414において取得した内容表から、ステップS512において取得した、反応利用者発話文に含まれていた単語候補に対応する認識候補文を取得し、当該認識候補文を利用者発話文として設定する。
次に、ステップS516で、問返し処理部32は、ステップS514、ステップS420、ステップS324、又はステップS218において取得した利用者発話文を出力部90から出力して問返しの実行処理を終了する。
ステップS518で、問返し処理部32は、ステップS108、ステップS110、又は、ステップS112において取得した問返し方法が「確定」であるか否かを判定する。問返し処理部32が、取得した問返し方法が「確定」であると判定した場合には、問返しの実行処理は、ステップS516へ移行する。一方、問返し処理部32が、取得した問返し方法が「確定」でないと判定した場合には、問返しの実行処理は、ステップS519へ移行する。
次に、ステップS519で、問返し処理部32は、再発話を促すシステム発話文を生成し、音声合成部34に出力する。
次に、ステップS520で、音声合成部34は、ステップS519で取得したシステム発話文に対応する音声データを生成し、問返し処理部32に出力する。
次に、ステップS522で、問返し処理部32は、ステップS520で取得した音声データを出力部90から出力して再生する。
次に、ステップS524で、問返し処理部32は、利用者発話文にnullを設定する。
次に、ステップS526で、音声認識部24は、利用者の発話を受け付けたか否かを判定する。音声認識部24が、利用者の発話を受け付けたと判定した場合には、問返しの実行処理は、図9のステップS102へ移行する。一方、音声認識部24が、利用者の発話を受け付けていないと判定した場合には、問返しの実行処理は、ステップS526を繰り返す。
以上説明したように、第1の実施形態に係る単語選択装置によれば、入力された利用者の音声データに対する音声認識結果である複数の認識候補文毎に、対話シナリオについて予め定められている、少なくとも1つの対話関数に基づいて、内容配列を生成し、生成された内容配列に格納された少なくとも1つの特定の文字列に基づいて利用者に対して問い返す単語を選択することにより、入力された発話内容を特定するための問い返す単語を適切に選択することができる。
また、外部の情報を用いることなく利用者発話の内容を絞り込むことができる。
また、問返しに特化した戦略を考えるのではなく、通常の対話戦略を流用することで、問返しのためだけの対話戦略を別途作るコストを軽減することができる。
また、対話戦略を用いて内容を判断することで、問返しの必要有無を認識候補文の表層だけでなく、内容に基づいて判断することもでき、不要な問返しを減らすことができる。
また、対話戦略を流用することで、対話を進める上で必要な内容のうち、どの部分の認識が曖昧かを特定できるため、利用者に選択股を提示して問返すことができる。
また、上述の内容解析部及び単語候補抽出部を有することにより、複数の認識候補文について、通常の対話戦略を実現する対話関数の処理結果を用いて内容を判断することで、不要な問返しをすることなく利用者発話文を決定することができる。また、問返しが必要な際に利用者に提示する単語の選択股を抽出し、選択行為によって利用者発話文を確保することができる。
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
例えば、第1の実施形態において、問返しの方法は、「単語問合せ」、「確定」、及び「再発話」の3種類を用いる場合について説明したが、これに限定されるものではなく、問返し方法は、「単語問合せ」、「確定」、及び「再発話」の3種類の何れかに限らず、他の種類とそれを判別する機能を組み合わせて利用してもよい。
また、第1の実施形態において、内容解析部28において、対話関数記憶部22に記憶されている対話関数を全て用いる場合について説明したが、これに限定されるものではない。例えば、対話関数記憶部22に記憶されている対話関数の各々に優先度が設定されている場合には、対象となる対訳候補文に当該優先度順に対話関数を用いて、一番最初に出力が得られた対話関数の結果のみを保持し、次の対象となる対訳候補文の処理に移行してもよい。このようにすることで、優先度を反映した結果を得ることができる。また、対話シナリオの中で、優先的に処理される対話がある場合、当該処理に対応する対話関数の名前を前に、優先度が低い対話関数の名前を後ろに並べることで、より対話戦略を反映した内容解析が可能になる。また、対話関数に優先度が設定されていない場合、出力が得られた全ての対話関数の結果を保持し、別の処理で、当該結果を比較する何らかの処理を加えてもよい。例えば、対話関数の出力結果である内容配列のうち当該内容配列に含まれる要素数が一番多いもののみ結果として保持してもよい。
また、第1の実施形態において、信頼度は、値の絶対値に意味がある信頼度を用いる場合について説明したが、これに限定されるものではない。例えば、値の絶対値に意味を持たないが、認識候補文間で信頼度の大きさ意を比較した差や割合に意味を持つ値等、性質が異なる信頼度を用いてもよい。この場合、上述の信頼度判定部26において、各因子気候補の信頼度同士を比較するなど、比較方法の変更が必要となる、信頼度判定部26の処理を一部変更する必要がある。なお、何らかの方法で信頼できる認識候補を選出することができれば、処理方法は問わない。
また、第1の実施形態において、認識候補は、認識候補文と当該認識候補文の信頼度との組み合わせの場合について説明したが、これに限定されるものではない。例えば、認識候補は、認識候補文と、テキストの読み仮名情報、品詞情報などの情報が付随してもよい。
また、第1の実施形態において、音声認識部は、音声データを入力し、認識候補群を出力する機能を有していれば、どのような構成をとっても構わない。例えば、特許文献1、又は特許文献2(特開2012−032538号公報)などの方法を用いてもよい。
また、第1の実施形態において、信頼度の閾値は、メモリに記憶されている固定値を用いる場合について説明したが、これに限定されるものではない。例えば、呼び出す毎に指定しても、サービスを利用する周囲の環境や、利用者等に応じて変更してもよい。
また、第1の実施形態においては、内容表は表の形で実現する場合について説明したが、これに限定されるものではない。例えば、各認識候補文における対話関数の出力結果を比較できる方法であればよい。
また、第1の実施形態においては、音声による問返しを想定したサービスの例について説明したが、これに限定されるものではない。例えば、サイネージやスマートフォンに問返し内容を表示する場合、システム応答文や選択を促す表示するインタフェースを作成し、画面に表示する機能として実現されるようにしてもよい。
また、第1の実施形態においては、システムが音声で返答することを想定しているがこれに限定されるものではない。例えば、画面に文章を表示するなど、システム側は音声以外のインタフェースを用いて利用者と対話を行ってもよい。
また、第1の実施形態においては、対話関数に基づいて出力される内容配列の各要素は単語である場合について説明したが、これに限定されるものではない。例えば、対話関数に基づいて出力される内容配列の各要素は文字列であってもよい。
次に、第2の実施形態に係る単語選択装置について説明する。
第2の実施形態においては、信頼度を用いない点が第1の実施形態と異なる。なお、第1の実施形態に係る単語選択装置と同様の構成及び作用については、同一の符号を付して説明を省略する。
<第2の実施形態に係る単語選択装置の構成>
次に、第2の実施形態に係る単語選択装置の構成について説明する。図14に示すように、第2の実施形態に係る単語選択装置200は、CPUと、RAMと、後述する単語選択処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することができる。この単語選択装置は、機能的には図14に示すように入力部10と、演算部220と、出力部90とを含んで構成されている。
演算部220は、対話関数記憶部22と、音声認識部224と、内容解析部28と、単語候補抽出部30と、問返し処理部32と、音声合成部34と、を含んで構成されている。
音声認識部224は、入力部10において受け付けた利用者の音声データについて、音声認識を行い、当該音声データについてN個の認識候補文(N−best)を認識候補文群として取得し、内容解析部28に出力する。また、音声認識部224は、問返し方法を「保留」と設定し、内容解析部28に出力する。なお、音声認識部224における他の処理については第1の実施の形態に係る単語選択装置における音声認識部24と同様の処理を行うため、説明を省略する。
<第2の実施形態に係る単語選択装置の作用>
次に、第2の実施形態に係る単語選択装置200の作用について説明する。入力部10においてマイクから入力された利用者の音声データを受け付けると、単語選択装置200によって図15に示す単語選択処理ルーチンを実行する。
まず、図15のステップS600で、音声認識部224は、ステップS102において取得したN個の認識候補文を認識候補文群とする。
次に、ステップS602で、音声認識部224は、問返し方法を「保留」に設定する。
以上説明したように、第2の実施形態に係る単語選択装置によれば、入力された利用者の音声データに対する音声認識結果である複数の認識候補文毎に、対話シナリオについて予め定められている、少なくとも1つの対話関数に基づいて、内容配列を生成し、生成された内容配列に格納された少なくとも1つの特定の文字列に基づいて利用者に対して問い返す単語を選択することにより、入力された発話内容を特定するための問い返す単語を適切に選択することができる。
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能であるし、ネットワークを介して提供することも可能である。