以下、図面と共に本発明に係る機能実行指示システム及び機能実行指示方法の実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
図1に本実施形態に係る機能実行指示システム1を示す。機能実行指示システム1は、機能実行指示サーバ10と音声認識サーバ20とを備えて構成される。機能実行指示システム1は、通信端末30に対して予め設定された1つ以上の機能の実行を指示するシステムである。機能実行指示システム1から通信端末30に対して実行が指示される機能は、例えば、乗換案内、電話帳検索、グルメ検索、画像検索、音楽検索、音楽プレーヤ、スケジューラ、メール、メモ、ルート案内、地図検索が相当する。なお、本実施形態では、実行される機能をタスクと呼ぶ。具体的には、乗換案内、電話帳検索、グルメ検索、画像検索、音楽検索、地図検索に関しては、例えば、通信端末30において案内や検索結果の情報が表示出力される。
また、メール作成、音楽プレーヤ、スケジューラ、電話の発着信、カメラ等に関しては、通信端末30においてそれらのタスクを実行するためのアプリケーションプログラムが起動される。更に指示の内容によっては、アプリケーションプログラム起動後の動作も行われる。例えば、メール作成のタスクでは、メール本文や宛先への情報の入力が行われる。
通信端末30は、通信網(例えば、移動体通信網)を介して機能実行指示サーバ10及び音声認識サーバ20等と通信を行うことができる装置であり、例えば、携帯電話機やPC(Personal Computer)に相当する。また、通信端末30は、自動車等の車両で用いられるカーナビゲーション機能を搭載する端末であってもよい。本実施形態では、通信端末30がカーナビゲーション機能を搭載する端末として説明する。例えば、通信端末30は、車両に対して着脱可能に構成されており、車両に装着されて搭載された場合にカーナビゲーション機能を発揮することができる。なお、通信端末30は、車両に装着されない場合(例えば、単に車両内に置かれる場合や車両に乗車しているユーザが携帯している場合)であっても、カーナビゲーション機能を発揮できてもよい。
上記のタスクは、ユーザの音声をトリガとして実行されるため、通信端末30はユーザの音声を入力する機能を有している。また、通信端末30は、機能実行指示システム1からの指示を受けてタスクを実行する機能、例えば、情報の受信機能、情報処理機能及び表示機能等を有している。
即ち、通信端末30は、1つ以上の(あるいは複数の)タスクを実行する機能実行手段を有している。具体的には、通信端末30は、タスクに対応するアプリケーションプログラムを予め記憶しておき、記憶したアプリケーションプログラムを実行(起動)することによってタスクを実行する。通信端末30によって実行されるタスクは、後述するように機能実行指示サーバ10によって指示される。また、タスクの実行は、アプリケーションを実行する以外にも、ネットワークからタスクに応じた情報を取得することで行われてもよい。
機能実行指示システム1による通信端末30に対するタスクの実行の指示は、次のように行われる。まず、通信端末30がユーザの音声を入力する。入力された音声は、通信端末30から音声認識サーバ20に送信される。音声認識サーバ20は、通信端末30から音声を受信し、受信した音声に対して音声認識を行う。音声認識サーバ20は、音声認識の結果である文章あるいは単語の集合を通信端末30に送信する。通信端末30は、音声認識の結果を受信して、更に機能実行指示サーバ10に送信する。機能実行指示サーバ10は、当該音声認識の結果を受信して、その音声認識の結果に基づいて実行すべきタスクを決定して、当該タスクを実行するように通信端末30に指示する。例えば、機能実行指示サーバ10は、実行すべきタスクを示す情報を通信端末30に送信する。通信端末30は、機能実行指示サーバ10からの指示を受信して、当該指示に応じたタスクを実行する。なお、音声認識の結果である文章あるいは単語の集合はいったん通信端末30に送られることなく、音声認識サーバ20から機能実行指示サーバ10へ直接送信されてもよい。更に、機能実行指示サーバ10と音声認識サーバ20は一体であってもよい。
例えば、通信端末30のユーザが「東京駅の乗換」と発話した場合には、機能実行指示サーバ10において、通信端末30の現在位置の最寄り駅から東京駅までの乗換案内のタスクが実行されるものと判断されて、乗換案内のタスクの実行が通信端末30に指示される。なお、上記のように乗換案内のタスクが実行される場合には、そのタスクの実行の際に通信端末30の現在位置の取得が行われる。このように、タスクによっては必要に応じて付加的な情報の取得が行われる。以上が、本実施形態に係る機能実行指示システム1の概要である。
引き続いて、本実施形態に係る機能実行指示システム1の機能について説明する。音声認識サーバ20は、音声を入力して、入力した音声に対して音声認識を行い、音声認識を行った結果を出力する音声認識手段である装置である。具体的には、上述したように音声認識サーバ20は、通信端末30から音声データを受信する。音声認識サーバ20は、音声認識エンジンを有しており、当該音声認識エンジンを用いて音声認識を行う。音声認識自体は、従来の任意の音声認識方法を利用することができる。音声認識サーバ20は、音声認識結果を単語の集合(1以上の単語からなる単語群)あるいは文章として取得して、通信端末30に送信する。
図1に示すように、機能実行指示サーバ10は、機能実行指示部11と、単語入力部12と、カテゴリ特定部13と、実行機能決定部14と、実行機能記憶部15とを備えて構成される。
機能実行指示部11は、通信端末30に対して、1つあるいは複数のタスクの実行を指示する機能実行指示手段である。具体的には、機能実行指示部11は、タスクを実行させるコマンドを通信端末30に送信することでタスクの実行を指示する。機能実行指示部11によって実行が指示されるタスクは、後述するように実行機能決定部14によって決定される。
タスクは、タスク毎に予め設定されたカテゴリに関連する(対応付けられている)。カテゴリは、例えば、単語を属性毎に区分けするものである。例えば、カテゴリは、「駅(駅名)」、「商業施設名」、「海外旅行」、「料理名」及び「人名」である。例えば、乗換案内のタスクであれば、「駅」のカテゴリに関連する(対応付けられている)。また、グルメ検索のタスクであれば、「料理名」のカテゴリに関連する(対応付けられている)。また、電話帳検索のタスクであれば、「人名」のカテゴリに関連する(対応付けられている)。また、タスクは、予め設定した単語に対応付けられていてもよい。例えば、乗換案内のタスクであれば、「乗換」という単語に対応付けられている。これらの対応付けは、例えば、予め機能実行指示システム1の管理者等によって機能実行指示サーバ10に入力されて記憶されている。これらの関連及び対応付けは、後述するように実行が指示されるタスクの判断に用いられる。具体的にどのように用いられるかは後述する。
また、実行が指示されるタスクには、単語を入力(引数)とする機能がある。これをタスクのスロットと呼ぶ。スロットは予め定められている。例えば、図2に示すように乗換案内のタスクであれば、発駅や着駅をスロットへの入力としてタスクが実行される。あるいは、グルメ検索のタスクであれば、料理名をスロットへの入力として、入力された料理に関しての店舗が検索される。また、電話帳検索のタスクであれば、人名をスロットへの入力として、入力された人名に対応付けられた電話番号等の情報が検索される。なお、タスクには0個以上のスロットが定義されている。即ち、スロットがないタスクもある。
図2に示すように、スロットには、それぞれ「スロット型」、「サイズ」、「必須?」、「引き継ぐ?」の情報が対応付けられている。「スロット型」は、スロットに入力されるカテゴリ(スロットに受け入れることができる単語の型)を特定する情報等であり、例えばカテゴリIDの情報等を示している(保持している)。即ち、スロットには、単語のカテゴリが対応付けられる。図2の例では、着駅及び発駅に対応するスロットのスロット型として「type_station」が保持されているが、これは当該スロットに対して、単語のカテゴリとして「駅」が入力可能であることを表している。また、スロット型は、単語が特定の表現だった場合に単語を入力可能とするものとしてもよい。例えば「〜まで」(図2の着駅のto.*type_stationに相当)や「〜から」(図2の着駅のfrom.*type_stationに相当)等の表現の場合に「〜」に対応する単語をスロットに入力するものであってもよい。また、「スロット型」は、特定のカテゴリを特定するものでなくてもよく、任意のカテゴリの単語が入力できるようになっていてもよい。「サイズ」は、スロットに入力される単語の数を示している。「必須?」は、当該タスクを実行する際に単語の入力が必須であるか否かを示している。もし、「必須?」の欄のTrueのスロットに入力される単語が無い場合には、タスクを実行せずにスロット内容を聞き返して、ユーザに対して当該スロットへの入力を促すこととしてもよい。
「引き継ぐ?」は、後述するように当該タスクが引き続き実行される場合にスロットへの入力も引き継ぐか否かを示している。また、各スロットには、スロットへの単語の入力が無かった場合に予め設定された単語(デフォルトの単語)が入力されるかを示す情報が対応付けられていてもよい。例えば、乗換案内の場合は、発駅については、GPS(Global Positioning System)等で取得されるユーザの現在位置から最も近い駅の駅名をデフォルトの単語として入力することとしてもよい。
単語入力部12は、単語を含む情報を入力する単語入力手段である。具体的には、単語入力部12は、通信端末30から、音声認識サーバ20による音声認識の結果である1つ以上の単語を示す情報を受信することで上記の情報を入力する。あるいは、音声認識サーバ20による音声認識の結果が文章(入力文)である場合には、単語入力部12は、文章を受信して、文章から単語を抽出する、又は文書を単語に切り分けることで単語を取得する。なお、文章から単語を取得する方法は、形態素辞書を用いた形態素解析等の従来の任意の方法を用いることができる。単語入力部12に入力される単語は、通信端末30に対するユーザの発話単位である。即ち、一回の発話に含まれる単語群を一つの単位として扱う。単語入力部12は、取得した単語を示す情報をカテゴリ特定部13に入力する。
カテゴリ特定部13は、単語入力部12から入力された単語のカテゴリを特定するカテゴリ特定手段である。具体的には例えば、カテゴリ特定部13は、図3に示すように単語のカテゴリを特定するための情報(辞書)を予め記憶しておき、その情報に基づいてカテゴリの特定を行う。この情報は、例えば、予め機能実行指示システム1の管理者等によって機能実行指示サーバ10に入力されて記憶されている。この情報は、図3に示すようにカテゴリを特定する情報であるカテゴリID及びカテゴリタグ(カテゴリ名)に単語が対応付けられたものである。1つのカテゴリID及びカテゴリタグには、1つ以上の単語が対応付けられている。例えば、カテゴリIDが「type_station」でカテゴリタグが「駅」というカテゴリには、「大阪」、「大阪駅」、「東京」、「東京駅」、「横浜」及び「横浜駅」という単語が対応付けられている。
なお、上記の辞書においては、同一の単語が複数のカテゴリに対応付けられていてもよい。例えば、「駅」カテゴリには、東京、渋谷、品川、横浜…といった単語が対応付けられている。また、「人名」カテゴリには、笹本、小林、渋谷…といった単語が対応付けられている。上記の例のように、渋谷との単語が、「駅」カテゴリ及び「人名」カテゴリの両方に対応付けられていてもよい。
カテゴリ特定部13は、単語入力部12から入力された単語それぞれについて、図3に示す情報に含まれる単語と一致しているか否かを判断して、一致していた場合にはその単語に対応付けられたカテゴリを、単語入力部12から入力された単語のカテゴリと特定する。また、カテゴリ特定部13は、図3に示すようなカテゴリと単語との対応関係を示す情報を用いずに、例えば、固有表現抽出(Named Entity Extraction)の技術によってカテゴリを特定することとしてもよい。また、チャンキング(chunking)によってカテゴリを特定することとしてもよい。また、カテゴリ特定部13は、予め正規表現を記憶しておき、単語が記憶した正規表現に合致するか否かでカテゴリを特定することとしてもよい。例えば、単語がある正規表現に合致した場合は、その単語はその正規表現に合致するカテゴリであると特定される。あるいは、カテゴリ特定部13は、通信端末30が記憶した電話帳データを取得し、単語が電話帳データに含まれる単語か否かを判断することでカテゴリを特定することとしてもよい。例えば、単語が電話帳データに含まれる場合は、その単語は電話帳データに存在する単語のカテゴリであると特定される。カテゴリ特定部13は、単語入力部12から入力された単語、及び特定した当該単語のカテゴリを示す情報を実行機能決定部14に出力する。なお、必ずしも全て単語についてカテゴリを特定する必要はなく、カテゴリが特定されていない単語があってもよい。
実行機能決定部14は、カテゴリ特定部13によって特定されたカテゴリに応じて、機能実行指示部11によって実行が指示されるタスクを決定する実行機能決定手段である。例えば、実行機能決定部14は、上述したようなタスクとカテゴリとの関連(対応付け)に基づいて実行が指示されるタスクを決定する。具体的には、タスク毎にカテゴリのスコアを記憶しておき、ユーザの発話単位で入力された単語のスコアを特定して、特定したスコアに基づいて実行が指示されるタスクを決定する。各カテゴリのスコアは、タスクとの関連度合に応じて定められている。
例えば、ユーザの発話が「東京までの乗換」というものであったとする。この場合、図4に示すように、ユーザの発話は、「東京」、「まで」、「の」、「乗換」という単語に分けられる。そして、タスク毎に各単語に対応づけられたカテゴリのスコアを求め、それらが合計されてタスク毎のスコアが算出される。図4に示すように各単語のスコアを特定し、それらを合計することで各タスク(図4の例では「乗換案内」、「グルメ検索」、「地図検索」のタスク)のスコアが合計される。スコアは、カテゴリだけでなく単語単位で定められていてもよい。例えば、「乗換」という単語は「乗換案内」のタスクに強く関連付けられるので、「乗換案内」のタスクには「乗換」という単語自体のスコアが対応付けられている。このように、単語入力部12によって入力された単語及び予め設定した単語にも基づいて、実行が指示されるタスクが決定されてもよい。
実行機能決定部14は、例えば、スコアが最も高いタスクを、機能実行指示部11によって実行が指示されるタスクとして決定する。実行機能決定部14は、機能実行指示部11に対して、決定したタスクを通知する。この通知がされると、機能実行指示部11から通信端末30に対してタスクの実行が指示される。また、この通知の際に、単語入力部12によって入力された単語のうち、実行されるタスクのスロットへの入力となる単語(カテゴリがスロットのカテゴリと一致する単語)も合わせて通知することとしてもよい。スロットへの入力となる単語も、機能実行指示部11から通信端末30に対してタスクの実行の指示と合わせて送信される。例えば、「東京までの乗換」という発話によって「乗換案内」のタスクが実行される場合には、「駅」カテゴリである「東京」という単語が、「駅」カテゴリの単語に対応付けられた着駅のスロットの入力とされる。この場合、発駅のスロットには、ユーザの現在位置から最も近い駅の駅名がデフォルトの単語として入力される。これにより、ユーザの現在位置から最も近い駅から東京駅までの乗換が検索されて、その結果がユーザに提示される。なお、タスクの実行の上でスロットへの入力が不足している場合には、その時点でユーザにスロットへの入力を促して、改めてスロットに入力する単語を入力することとしてもよい。
上記のように、実行機能決定部14は、これから機能実行指示部11によって実行が指示されるタスクを決定するが、このタスクの決定を過去に機能実行指示部11によって実行が指示されたタスクに基づくこととしてもよい。具体的には、過去に実行が指示されたタスクを引き続いて実行するか否かを判断する。例えば、過去に「乗換案内」のタスクの実行が指示されて(当該タスクが実行されて)おり、その後、ユーザの発話に基づく単語の入力が機能実行指示サーバ10に対してあった場合、「乗換案内」のタスクの実行を引き続いて指示するか否かを判断する。そのための構成を以下に説明する。
実行機能記憶部15は、機能実行指示部11によって実行が指示されたタスクを記憶する実行機能記憶手段である。例えば、実行機能記憶部15は、機能実行指示部11から実行が指示されたタスクを示す情報(例えば、タスク名)を入力して、入力したタスクを示す情報を記憶する。この際、タスクの実行指示時刻を合わせて記憶しておいてもよい。また、実行機能記憶部15は、タスクの実行指示の際にスロットに入力された単語も合わせて機能実行指示部11から入力して、当該単語も実行されたタスクと合わせて記憶しておいてもよい。実行機能記憶部15に記憶された情報は、以下のように実行機能決定部14によって適宜参照される。
実行機能決定部14は、カテゴリ特定部13によって特定されたカテゴリ、及び実行機能記憶部15によって記憶された過去に機能実行指示部11によって実行が指示されたタスクに関連する(対応付いた)カテゴリに基づいて、当該過去に機能実行指示部11によって実行が指示されたタスクをこれから実行指示するか否か判断する。このとき、引き続いて実行指示するか否かを判断するタスクは、単語の入力が機能実行指示サーバ10に対してなされた直前に機能実行指示部11によって実行が指示されたタスク(1回前に実行が指示されたタスク)の実行を指示するか否か判断することとしてもよい。即ち、2回以上前に実行が指示されたタスクは、引き続き実行が指示されるタスクの対象とならないこととしてもよい。更に、単語の入力から遡って予め設定した一定時間以内(例えば、1時間以内)に実行が指示されたタスクのみを引き続いて実行が指示される候補のタスクとすることとしてもよい。
具体的には、実行機能決定部14は、実行機能記憶部15によって記憶された過去に機能実行指示部11によって実行が指示されたタスクに関連する(対応付いた)カテゴリと、カテゴリ特定部13によって特定されたカテゴリとが一致しているか否かを判断して、当該判断に応じて当該過去に機能実行指示部11によって実行が指示された機能の実行を指示するか否かを判断する。例えば、実行機能決定部14は、カテゴリ特定部13によって特定された単語のカテゴリが、過去に機能実行指示部11によって実行が指示されたタスクのスロットに対応付いたカテゴリと一致している(カテゴリ特定部13によって特定された単語がタスクのスロットに入力可能である)か否かを判断することで上記の判断を行う。カテゴリ特定部13によって特定された単語のカテゴリが、過去に機能実行指示部11によって実行が指示されたタスクのスロットに対応付いたカテゴリと一致していると判断された場合、当該過去に実行指示されたタスクを引き続いて実行指示すると判断し、一致していないと判断された場合、タスクの引き続きの実行指示が行われない、即ち、新たなタスクの実行を指示すると判断する。
このとき、カテゴリ特定部13によって特定された単語のカテゴリが、過去に機能実行指示部11によって実行が指示されたタスクのスロットに対応付いたカテゴリ全てと一致する場合のみ引き続いてタスクの実行を指示するとしてもよいし、スロットの一部に対応付いたカテゴリと一致する場合に引き続いてタスクの実行を指示するとしてもよい。また、カテゴリ特定部13によって特定された単語のカテゴリ全てが、過去に機能実行指示部11によって実行が指示されたタスクのスロットの何れかに対応付いたカテゴリと一致する場合のみ引き続いてタスクの実行を指示する(即ち、カテゴリ特定部13によって特定された単語のカテゴリ全てが、過去に機能実行部11によって実行が指示されたタスクのスロットの何れかに対応付いたカテゴリと一致し、かつ、入力文の中に、いずれのカテゴリとも対応づいておらず、従っていずれのスロットと対応づかない名詞がひとつも存在しない場合のみ引き続いてタスクを実行指示する)としてもよいし、カテゴリ特定部13によって特定された単語の一部のカテゴリが、過去に機能実行指示部11によって実行が指示されたタスクのスロットの何れかに対応付いたカテゴリと一致する場合に引き続いてタスクの実行を指示するとしてもよい。なお、過去に機能実行指示部11によって実行が指示されたタスクのスロットが、カテゴリを特定するタイプでない場合(任意のカテゴリの単語を入力できるタイプである場合、例えば、「画像検索」のタスクに対する「検索ワード」のスロット)には、どのカテゴリの単語が入力されても常に引き続きのタスクの実行が指示されてしまうおそれがあるため、上記の判断を行わないこととしてもよい。
但し、この場合であっても、入力された単語のカテゴリが、過去に機能実行指示部11によって実行が指示されたタスクのスロットに入力された単語のカテゴリと一致するか否かを判断して、それらが一致したと判断された場合(直前の発話の単語のカテゴリと入力された単語のカテゴリとが一致した場合)には、引き続いてタスクの実行を指示するとしてもよい。この構成によれば、スロットに任意のカテゴリの単語を入力できるタスクであっても適切にタスクの引き継ぎを判断することができる。
また、実行機能決定部14は、過去に機能実行指示部11によって実行が指示されたタスクをこれから実行指示する(タスクを引き続き実行する)と判断した場合に、カテゴリがスロットに対応付けられたカテゴリと一致した単語をスロットへの入力として機能実行指示部11に実行を指示させる。また、実行機能決定部14は、タスクのスロットの一部(あるいは全部)について、実行機能記憶部15によって記憶された過去のスロットへの入力とされた単語を当該タスクへの入力とすることとしてもよい。この場合、図2に示すタスクの各スロットにおいて、「引き継ぐ?」の欄の情報が、単語の入力を引き継ぐこと示すもの(True)であった場合のみに単語の入力の引き継ぎが行われてもよい。実行機能決定部14は、上記の判断によってタスクの引き続きの実行が行われないと判断した場合には、上述したスコアによるタスクの実行の指示を判断する。
上述した例のように「東京までの乗換」という発話によって「乗換案内」のタスクの実行が指示された場合、実行機能記憶部15に、過去に実行が指示されたタスクとして「乗換案内」が記憶されており、着駅のスロットの入力として「東京」という単語が記憶されている。その後のユーザの発話が「やっぱり横浜」というものであったとする。この場合、「横浜」という単語が「駅」カテゴリであるため、過去に実行された「乗換案内」のタスクの着駅のスロットに対応付いたカテゴリと一致すると判断される。従って、過去に実行された「乗換案内」のタスクが引き続いて再度実行が指示されるものと判断される。その際、着駅のスロットには「横浜」が入力される。なお、発駅については、「東京までの乗換」の際と同様にユーザの現在位置から最も近い駅の駅名が引き継がれる(図2に示すように発駅の「引き継ぐ」の欄はTrueになっている)。
一方で上述のような実行機能決定部14によるタスクを引き続き実行指示するか否かの判断を行わず、「やっぱり横浜」という発話によってスコアを決定する場合について説明する。この場合、図5に示すように、ユーザの発話は、「やっぱり」、「横浜」という単語に分けられる。そして、上述した例と同様にタスク毎に各単語のスコアが特定されて、それらが合計されてタスク毎のスコアが算出される。この場合、ユーザの発話には「乗換案内」に関連が高い単語が含まれていないため、最も高いスコアは、「乗換案内」ではなく「横浜」という地名だけでスコアが高くなる「地図検索」となる。「東京までの乗換」とユーザが発話した後、「やっぱり横浜」とユーザが発話した場合には、ユーザは横浜駅までの乗換を知りたいと考えられる。上述したようにタスクの引き継ぎを判断した場合、適切に「乗換案内」のタスクの実行が指示される。一方で、(本実施形態とは異なり)上記のようにユーザの発話から独立して実行されるタスクを判断すると、ユーザの意図とは異なる「地図検索」というタスクが実行されることとなる。
また、「東京までの乗換」との発話後のユーザの発話が「カレー」というものであったとする。この場合、「カレー」という単語が「料理名」カテゴリであるため、過去に実行の指示がされた「乗換案内」のタスクのスロットに対応付いたカテゴリと一致しないと判断される。従って、過去に実行が指示された「乗換案内」のタスクが引き続いて再度実行されないと判断される。
この場合、実行機能決定部14は、「カレー」という発話によるスコアを計算することで、実行を指示するタスクを決定する。図6に示すように、ユーザの発話は、「カレー」という単語のみから構成される。そして、上述した例と同様にタスク毎に各単語に対応付けられたカテゴリのスコアが特定されて、それらが合計されてタスク毎のスコアが算出される。この場合、「グルメ検索」が最も高いスコアとなり、「グルメ検索」のタスクが実行されるものと判断される。「東京までの乗換」とユーザが発話した後、「カレー」とユーザが発話した場合には、全く異なる話題であるため、「乗換案内」ではなく「カレー」に関する情報を知りたいと考えられる。上述したように、この場合はタスクを引き継ぐものとは判断されずに、ユーザの発話からタスクのスコアが算出されて「グルメ検索」のタスクの実行が指示されることとなる。
別の例として、過去に実行が指示されたタスクがカレーに関する「グルメ検索」であり、グルメ検索の対象となる地域を示すスロットに「東京」が入力されていた場合には、「やっぱ大阪」との入力があった場合には、「東京」の部分が「大阪」で上書きされてカレーに関する「グルメ検索」の実行が指示されるものと判断される。
なお、タスクの遷移については、特定の場合には強制的に行うことができるようにしておくこととしてもよい。例えば、通信端末30に対するユーザの操作によって通信端末30から新たなタスクに遷移させる旨の情報を受信した場合には、タスクの遷移を強制的に行わせることとしてもよい(タスクの引き継ぎを行わない)。
実行機能決定部14による実行が指示されるタスクの判断は、以下のように行われてもよい。入力される単語群(ユーザの発話)から、実行が指示されるタスクを判断する場合、上述したようにタスク毎に単語に応じたスコアを出していたが、必ずしもスコアを算出する必要はない。例えば、タスクと単語(カテゴリ)とを対応付けておき、タスク毎に入力された単語群にタスクに対応付けられた単語(カテゴリ)が含まれているか否かを判断して、含まれていると判断された場合当該タスクの実行を指示することとしてもよい。
また、入力した単語や文章中に特定のタスクと強い関連性を持つキーワード(強いキーワード)があると判断した場合(スコアが極めて大きい値となる場合)には、過去に実行を指示したタスクを引き継ぐことはせず、新たに入力した単語や文章から実行を指示するタスクを判断してもよい。即ち、強制的にタスク遷移させてもよい。例えば、「乗換」という単語が含まれていたら、関連性の強い「乗換案内」のタスクを実行するようにする。
また、タスクを引き継がずに新たなタスクの実行を指示した場合、即ち、タスクが遷移した場合であっても、スロットに入力される単語を引き継ぐこととしてもよい。この場合、タスク遷移前のスロット内容から引継ぎ可能な単語を全て取り出す。切り替え後のタスクにおいては、スロット内容は一旦全て空になっている。上記の取り出された引継ぎ可能な単語を、切り替え後のタスクのスロットに入力する(埋める)ことを試みる(入力できない単語は捨てる)。入力された単語をスロット入力のルールに従ってスロットに入力する。
上記のようにタスクの引き継ぎを行う場合、タスクの引き継ぎを行うか否かを判断するための、発話内の単語が複数のカテゴリに属する場合(複数の属性を有する場合)、適切にタスクの引き継ぎが判断でいないおそれがある。例えば、以下のようなシチュエーションが考えられる。「笹本さんの電話番号」とのユーザの発話に基づき、本実施形態に係る機能実行指示システム1によって、電話帳検索のタスクが実行され、電話帳検索により笹本さんの電話番号が調べられる。ユーザは、その電話番号によって電話の発信を行う。ユーザは、その電話で笹本さんと渋谷で待ち合わせをしたので終話後、渋谷までの乗換案内を実行しようと思い、続けて「渋谷まで行く」と発話する。
この発話は、例えば、「渋谷:名詞(「人名」カテゴリ、「駅」カテゴリ)、まで:助詞、行く:動詞」というように単語に分けられる。本実施形態に係る機能実行指示システム1は、発話に含まれる「渋谷」を「人名」カテゴリの単語であると特定する。前に実行された電話帳検索のタスクには、「人名」カテゴリが関連付いているので、本実施形態に係る機能実行指示システム1は、電話帳検索のタスクを引き継ぐと判断し、「渋谷」を入力とした電話帳検索が実行されてしまう。なお、この場合、「渋谷」は、「駅」カテゴリ及び「人名」カテゴリの両方に属している。この場合、ユーザは乗換案内のタスクを実行したいので、再度電話帳検索のタスクが実行されることは望ましくない。
上記のような場合に対応するため、カテゴリ特定部13は、単語入力部12から入力された単語のカテゴリを、当該単語と同じ発話(単語群)に含まれる当該単語以外の単語に基づいて特定する。即ち、単語のカテゴリを、その単語のみからではなく当該単語と同じ発話を考慮して特定する。
具体的には、カテゴリ特定部13は、単語入力部12から入力された情報(発話)に含まれる特定対象の単語と当該情報に含まれる当該単語以外の単語とが同一の情報に含まれる度合いを示す情報に基づいて、特定対象の単語のカテゴリを特定する。更に具体的には、カテゴリ特定部13は、カテゴリ毎に当該カテゴリの単語と別の単語とが同一の情報(発話)に含まれる度合いを記憶しておき、当該度合いに基づいて特定対象の単語以外の単語を当該別の単語としたときの特定対象の単語についてのカテゴリ毎のスコアを特定して、当該スコアに基づいて特定対象の単語のカテゴリを特定する。上記の度合いは、共起確率のスコアを用いることができる。共起確率のスコアは、その値が高いほど、そのカテゴリの単語と別の単語とが同一の情報に含まれる度合いが高いことを示している。
例えば、カテゴリ特定部13は、図7に示すようなテーブルを保持しており、当該テーブルに情報を格納することで共起確率のスコアを記憶しておく。このテーブルには、特定のカテゴリの単語と共起する(同一の発話に含まれる)要素と、それらの単語及び要素の共起確率のスコアとが対応付けられている。図7(a)は、「駅」カテゴリの単語と共起する(同一の発話に含まれる)要素の共起確率のスコアを示している。図7(b)は、「人名」カテゴリの単語と共起する(同一の発話に含まれる)要素の共起確率のスコアを示している。例えば、「行く」という単語については、「駅」カテゴリの単語に対しては共起確率のスコアは0.51、「人名」カテゴリの単語に対しては共起確率のスコアは0.04である。上記のように「行く」という単語については、「駅」カテゴリの単語の方が共起確率のスコアが高い。即ち、「行く」という単語が同一の発話に含まれる単語は、「駅」カテゴリの単語である可能性が高いことを示している。なお、共起する要素は、単語そのものであってもよいし、カテゴリ(そのカテゴリ全体の単語)であってもよい。また、共起する要素を複数組み合わせたものに対してスコアが対応付けられていてもよい。
なお、このスコアは、例えば、予め機能実行指示システム1の管理者等によって機能実行指示サーバ10に入力されて記憶されている。また、機械学習によって得られたものであってもよい。
カテゴリ特定部13は、上記のように図3に示す辞書あるいはチャンキング等により、単語のカテゴリの特定を行った結果、複数のカテゴリに特定された(属するものと判断された)単語について共起確率のスコアに基づくカテゴリの限定を行う。例えば、上記のように「渋谷まで行く」との発話の場合、「渋谷」という単語については、辞書あるいはチャンキング等によるカテゴリの特定では「駅」カテゴリと「人名」カテゴリとの2つのカテゴリに特定される。カテゴリ特定部13は、複数のカテゴリに特定された単語であるカテゴリ特定対象の単語と共起する単語から、図7に示す共起確率のスコアに基づいてカテゴリ毎のスコアを算出する。カテゴリ特定部13は、カテゴリ特定対象の単語と共起する単語の各カテゴリのスコアを、カテゴリ毎に合計することでカテゴリ毎のスコアを算出する。カテゴリ特定部13は、算出したスコアが最も高いカテゴリを、当該特定対象の単語のカテゴリと特定する。なお、共起する要素が動詞である場合には、動詞の活用が考慮されてもよい。例えば、「行き(たい)」との単語を「行く」と同様に扱ってもよい。
なお、図7の共起確率のスコアは、上記のように図3に示す辞書あるいはチャンキング等により特定されたカテゴリについてのもののみを用いればよい。上記の「渋谷まで行く」の例の場合には、「渋谷」という単語は、「駅」カテゴリと「人名」カテゴリとのカテゴリに特定されるため、「駅」カテゴリと「人名」カテゴリとの共起確率のスコアを用いる。また、「渋谷」には、「まで」と「行く」との単語が共起しているので、それらのカテゴリ毎のスコアを図7のテーブルに基づいて特定する。「駅」カテゴリについては、「行く」のスコア0.51、「まで」のスコア0.34、及び「行く」と「まで」との組み合わせのスコア0.26が合計され、合計のスコアが1.11とされる。「人名」カテゴリについては、「行く」のスコア0.04、「まで」のスコア0.3、及び「行く」と「まで」との組み合わせのスコア0が合計され、合計のスコアが0.34とされる。「駅」カテゴリの合計のスコアの方が、「人名」カテゴリの合計のスコアよりも高いので、「渋谷」のカテゴリは「駅」であるものと特定(限定)される。
なお、カテゴリ特定部13は、辞書あるいはチャンキング等によるカテゴリの特定をせずに、共起確率のスコアのみに基づいて単語のカテゴリの特定を行うこととしてもよい。その場合、全てのカテゴリについて、共起確率のスコアに基づく単語のスコアを算出する。以上が、本実施形態に係る機能実行指示システム1の機能構成である。
図8に本実施形態に係る機能実行指示サーバ10及び音声認識サーバ20を構成するサーバ装置のハードウェア構成を示す。図8に示すように当該サーバ装置は、CPU(Central Processing Unit)101、主記憶装置であるRAM(RandomAccess Memory)102及びROM(Read Only Memory)103、通信を行うための通信モジュール104、並びにハードディスク等の補助記憶装置105等のハードウェアを備えるコンピュータを含むものとして構成される。これらの構成要素がプログラム等により動作することにより、上述した機能実行指示サーバ10及び音声認識サーバ20の機能が発揮される。以上が、本実施形態に係る機能実行指示システム1の構成である。
引き続いて、図9のフローチャートを用いて、本実施形態に係る機能実行指示システム1で実行される処理である機能実行指示方法を説明する。本処理では、まず、本実施形態に係る機能実行指示システム1による機能実行の指示を受けるための通信端末30に対するユーザの操作が行われて、通信端末30に、機能を実行させるためのユーザの音声(発話)が入力される。続いて、当該音声が通信端末30から音声認識サーバ20に送信される。音声認識サーバ20では、当該音声が受信されて入力される(S01、音声認識ステップ)。続いて、音声認識サーバ20では、入力された音声に対して音声認識が行われる(S02、音声認識ステップ)。音声認識結果である単語の集合あるいは文章を示す情報が音声認識サーバ20から通信端末30に送信される。通信端末30では、その情報が受信されて、機能実行指示サーバ10に送信される。
機能実行指示サーバ10では、単語入力部12によって、音声認識結果である単語を含む情報が受信されて入力される(S03、単語入力ステップ)。入力された情報は、単語入力部12からカテゴリ特定部13に出力される。続いて、カテゴリ特定部13によって、単語入力部12から入力された情報に含まれる単語のカテゴリが特定される(S04、カテゴリ特定ステップ)。
ここで、図10のフローチャートを用いて、単語のカテゴリの特定の処理(S04)について詳細に説明する。本処理では、まず、上述したように図3に示す辞書による方法、あるいはチャンキングによる方法により、単語のカテゴリが特定される(S41)。このカテゴリの特定において、複数のカテゴリに特定される単語がなかった場合には、単語のカテゴリの特定の処理(S04)は終了する。このカテゴリの特定において、複数のカテゴリに特定される単語があった場合には、その単語について、それらの複数のカテゴリの中から図7の共起確率のスコアに基づいてカテゴリが1つに特定(限定)される(S42)。特定されたカテゴリの情報は単語と共にカテゴリ特定部13から実行機能決定部14に出力される。
図9に戻り、続いて、実行機能決定部14によって、実行が指示されるタスクの候補が決定される(S05、実行機能決定ステップ)。タスク候補の決定は、図4〜図6を用いて説明したように入力された単語及び当該単語のカテゴリに基づいて、タスク毎にスコアが算出されることによって行われる。最も高いスコアのタスクが実行されるタスク候補となる。
続いて、実行機能決定部14によって、カテゴリ特定部13によって特定されたカテゴリ、及び実行機能記憶部15によって記憶された過去に機能実行指示部11によって実行が指示されたタスクのスロットに対応付いたカテゴリに基づいて、当該過去に機能実行指示部11によって実行が指示されたタスクの実行をこれから指示するか否かが判断される(S06、実行機能決定ステップ)。即ち、直前に実行が指示されたタスクを引き続いて実行指示するか、新たなタスクを実行指示するか(タスク遷移するか)が判断される。なお、過去に実行が指示されたタスクが無い場合や、過去に実行指示されたタスクがあっても、過去に実行指示されたタスクが一定期間以前の実行指示であるため判断に利用しないものである場合等には、上記の判断は行われなくてよい。この場合、S03で入力された単語に基づいて実行が指示されるタスクが決定される。
直前に実行が指示されたタスクの実行を引き続いて指示すると判断した場合、当該タスクが実行指示されるタスクとして決定される(S07、実行機能決定ステップ)。一方で、タスク遷移すると判断された場合、S05においてタスク候補とされたタスクが実行指示されるタスクとして決定される(S07、実行機能決定ステップ)。続いて、決定したタスクの実行を指示するように実行機能決定部14から機能実行指示部11に指示が行われる。この際、タスクのスロットに入力される単語も合わせて機能実行指示部11に出力される。続いて、指示を受けた機能実行指示部11によって通信端末30に対してタスクの実行が指示される(S08、機能実行指示ステップ)。通信端末30では、この指示が受け付けられ、指示に係るタスクが実行される。
続いて、機能実行指示部11によって実行が指示されたタスクを示す情報が、実行機能記憶部15によって記憶される(S09、実行機能記憶ステップ)。ここで記憶されたタスクを示す情報は、次にユーザの音声によってタスクの実行が指示される際に、実行が指示されるタスクの決定の際(S06)に参照される。音声によるタスクの実行(起動)の処理(S01〜S09の処理)は繰り返し行われえる。以上が本実施形態に係る機能実行指示システム1で実行される処理である機能実行指示方法である。
上述したように本実施形態では、タスクに関連する(対応付けられた)カテゴリと入力された単語のカテゴリとに基づいて、過去に実行が指示されたタスクの実行をこれから指示するか否かが判断される。これにより、例えば、過去に実行されたタスクを引き続いて実行すべきか、新たなタスクを実行すべきか適切に判断される。
上述した例のように「乗換案内」のタスクによって、東京駅までの乗換が調べられた後、「やっぱり横浜」と発話された場合には、タスクの引き継ぎが行われて横浜駅までの乗換が調べられる。一方で、「カレー」と発話された場合には、タスクの引き継ぎが行われず「グルメ検索」のタスクが実行される。本実施形態とは異なり、一律にタスクを引き継ぐとした場合は、「カレー」と発話された場合、「乗換案内」と「カレー」とが対応しないため、「カレー」が無視され、ユーザの意図とは異なり再度東京駅までの乗換が調べられてしまう。また、本実施形態とは異なり、一律にタスクを引き継がないとした場合は、「やっぱり横浜」と発話された場合、ユーザの意図とは異なり上述したように「地図検索」のタスクが実行されてしまう。上記のように本実施形態では、タスクの引き継ぎ、あるいはタスク遷移が、ユーザの意図に沿って適切に行われて適切なタスクが実行される。
また、本実施形態においては、入力された単語のカテゴリが、当該単語が含まれる情報に含まれる当該単語以外の単語に基づいて特定されるため、適切にカテゴリが特定される。具体的には、上述したように図7に示す共起確率のスコアに基づいてカテゴリが特定される。上述した例のように「笹本さんの電話番号」とのユーザによる発話がなされて電話帳検索のタスクが実行された後(例えば、「笹本さんの電話番号はxxxxです」といったユーザへの通知が行われた後)、乗換案内のタスクの実行を意図して「渋谷に行きたい」とのユーザによる発話がなされた場合を考える。
図7に示す共起確率のスコアに基づくカテゴリの特定(限定)がなされない場合には、電話帳検索のタスクが引き継がれてしまう。しかし、本実施形態では、共起確率のスコアに基づくカテゴリの特定が行われ、「渋谷」との単語のカテゴリが「駅」カテゴリとして特定される。これにより、電話帳検索のタスクは引き継がれず、新たなタスクとして乗換案内のタスクが実行される(例えば、「渋谷駅までの乗換案内はこちらです」といったユーザへの通知が行われる)。このようにユーザの期待通りの動作が行われる。即ち、本実施形態によれば、連続して入力された単語による機能の実行を適切に行うことができる。
また、本実施形態のように「乗換」といった特定タスクとの関連が強いキーワードを予め設定した単語として設定しておき、上記キーワードに基づいて実行されるタスクが決定されることとしてもよい。この構成によれば、例えば、機能に深く関連する単語に基づいて、適切にタスクを実行することができる。
また、上述した例のように直前に実行されたタスクを引き継いで実行するか判断することとしてもよい。この構成によれば、例えば、直前に実行されたタスクを引き続いて実行すべきか、新たなタスクを実行すべきか適切に判断され、連続して入力された単語による機能の実行を適切に行うことができる。但し、必ずしも、直前に実行されたタスクのみを引き継ぎの判断対象とする必要はなく、例えば、一定時間以内に実行された複数のタスクを引き継ぎの対象としてもよい。
また、本実施形態のようにタスクにスロットを設けて、単語入力部12によって入力された単語をスロットに入力する構成としてもよい。この構成によれば、タスクの実行と合わせて、単語入力部12によって入力された単語を当該タスクへの入力とすることができ、適切なタスクの実行が可能となり、ユーザの利便性を向上させることができる。例えば、上述した「乗換案内」のタスクの実行と合わせて、入力された駅名による案内を行うことができる。
また、本実施形態のようにタスクの引き継ぎの判断は、タスクに関連する(対応付いた)カテゴリ(スロットのカテゴリ)と、入力された単語のカテゴリとを比較して、それらが一致しているか判断することによって行うこととしてもよい。この構成によれば、より適切に過去に実行が指示されたタスクを実行指示するか否かを判断することができ、より適切に本発明を実施することができる。
また、スロットに入力した単語を記憶しておき、記憶した単語を次にタスクの実行が指示されるときのスロットへの入力とすることとしてもよい。この構成によれば、過去に実行が指示されたタスクで用いられた単語を新たに実行される機能への入力とすることができ、更にユーザの利便性を向上させることができる。例えば、上述した「乗換案内」のタスクにおいて、着駅のみを変更した案内を行うことができる。
また、本実施形態のように音声を入力して音声認識を行って、音声認識結果を入力される単語を含む情報とすることとしてもよい。この構成によれば、ユーザの音声によって機能を実行することが可能となる。
但し、本実施形態においては、機能実行指示システム1において、音声認識サーバ20を含むこととしていたが、必ずしも音声認識サーバ20を含む必要はない。この場合、音声認識された結果、あるいは音声認識によらない単語群や文章が機能実行指示システム1に入力される。また、本実施形態では、機能実行指示サーバ10と音声認識サーバ20とが別体として構成されていたが、それらが一体として構成されていてもよい。この場合、音声認識結果を、通信端末30を介して送受信する必要がない。また、通信端末30等のユーザに用いられる端末に、機能実行指示サーバ10あるいは音声認識サーバ20の機能が備えられていてもよい。その場合、当該端末が本発明の一実施形態に係る機能実行指示システムとなる。あるいは、機能実行指示サーバ10がタスクを実行する機能を有しており、タスクの実行結果を通信端末30に提供する構成であってもよい。
また、上述した実施形態では、機能実行指示部11によって実行が指示されたタスクを示す情報が、実行機能記憶部15に入力されて記憶されていた。しかしながら、実行機能記憶部15に記憶される情報は、機能実行指示部11からではなく、通信端末30から送信されて、機能実行指示サーバ10に受信されることとしてもよい。この場合、上述したような機能実行指示サーバ10の実行機能記憶部15の機能は必ずしも必要ない。
この場合、通信端末30は、機能実行指示サーバ10(の機能実行指示部11)から直前に実行を指示されたタスク(当該指示によって実行された、あるいは実行されているタスク)を示す情報を、上記の音声認識の結果と合わせて機能実行指示サーバ10に送信する。例えば、通信端末30は、「やっぱり横浜」あるいは「カレー」という発話の情報と、実行中のタスクを示す「乗換案内」の情報とを機能実行指示サーバ10に送信する。機能実行指示サーバ10では、当該情報が受信されて、実行機能決定部14が受信された情報に基づいて上記と同様に実行が指示される機能を決定する。また、機能実行指示サーバ10の実行機能決定部14は、上記の情報以外の実行機能記憶部15に記憶される情報(例えば、直前に実行されたタスクのスロットに入力された情報)を、通信端末30から受信して、実行が指示される機能の決定及び実行の指示に用いることとしてもよい。