以下に、本願に係る学習装置、情報処理装置、学習方法及び学習プログラムを実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る学習装置、情報処理装置、学習方法及び学習プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略する。
〔1.学習処理の一例〕
まず、図1を用いて、本願に係る学習装置が実行する学習処理の一例について説明する。図1は、実施形態に係る学習装置が実行する処理の一例を示す図である。なお、以下の説明では、実施形態に係る学習装置である学習装置100が実行する処理として、ユーザU1の発話に対する応答を生成するためのモデルに関する学習処理の一例について説明する。すなわち、実施形態では、学習装置100は、ユーザU1との対話を実現する対話処理に関する学習を行う。より具体的には、学習装置100は、対話処理におけるスロット抽出に関する学習を行う。
〔1−1.学習装置及び学習装置と通信する装置〕
図1に示す学習装置100は、インターネット等の所定のネットワークを介して、ユーザ端末10やクラウドサーバ200と通信可能な情報処理装置であり、例えば、サーバ装置である。なお、学習装置100は、ネットワークを介して、任意の数のユーザ端末10や、任意の数のクラウドサーバ200と通信可能であってよい。
ユーザ端末10は、対話システムで対話を行うユーザが使用する情報処理装置であり、PC(Personal Computer)、スマートフォン、タブレット端末といった情報処理装置により実現される。図1に示した例では、ユーザ端末10は、ユーザの一例であるユーザU1によって利用される。ユーザ端末10は、ユーザU1が発話した音声の入力を受け付ける。そして、ユーザ端末10は、入力された音声を学習装置100に送信する。なお、ユーザ端末10は、発話の代替として、ユーザU1が入力した文字列(テキストデータ)を学習装置100へ送信してもよい。
ユーザ端末10から発話を受け付けた学習装置100は、受け付けた発話を解析し、発話の内容(すなわち、ユーザU1の意図)を推定する。そして、学習装置100は、推定した内容に応じて、ユーザU1に応答するテキストを生成し、生成したテキストデータや、テキストデータを音声として出力するための音声データをユーザ端末10へと送信する。ユーザ端末10は、応答された内容を画面に表示したり、各種テキストの読み上げ技術や音声データを再生したりすることによって、ユーザU1との対話を実現する。
クラウドサーバ200は、学習装置100が利用するための知識データを提供する情報処理装置である。例えば、クラウドサーバ200は、所定のデータベースを有する。あるいは、クラウドサーバ200は、ネットワークを介して検索処理を行い、学習装置100から問い合わせを受けた情報に対して応答を行う。例えば、クラウドサーバ200は、所定のデータベースを参照して、問い合わせを受けたクエリに対応する回答を学習装置100に送信する。より具体的には、クラウドサーバ200は、クエリとして文字列を受信した場合に、当該文字列に対応付けられる特徴情報(例えば、語句の属性情報)を辞書データベースから参照し、参照した特徴情報を学習装置100へ提供する。
なお、クラウドサーバ200は、辞書データベースを提供する装置に限られず、問い合わせに対して任意の情報を提供するサービスを提供する装置であってもよい。また、クラウドサーバ200は、それぞれ異なる複数のサービスを提供する複数のサーバ装置によって実現されてもよい。また、クラウドサーバ200は、例えばAPI(Application Programming Interface)を介して、学習装置100から受け付けた各種文字列に応じた情報を生成し、生成した情報を学習装置100へと提供してもよい。
〔1−2.スロット抽出処理〕
ここで、学習装置100が実行する対話処理の基本的な流れについて説明する。なお、以下の説明は、実施形態を限定するものではなく、学習装置100は、以下に説明するスロットフィリングの技術を用いてユーザU1の発話に対する応答を生成するのであれば、以下に説明する対話処理以外にも、任意の態様で応答の生成を行ってよい。
例えば、学習装置100は、ユーザU1の発話を受け付けると、発話の内容が施設検索に関する内容であるか、天気に関する内容であるかというように、発話の内容が属するドメイン(分野)を推定する。そして、学習装置100は、推定結果の尤度に基づいて、発話が属するドメインを判定する。例えば、学習装置100は、発話のパターンを学習した学習器(モデル)を利用して、発話がどのようなドメインに属するかの尤度を出力し、出力した結果に基づいてドメインを判定する。
続いて、学習装置100は、判定したドメインに応じたユーザの発話の内容を推定する言語理解処理を実行する。例えば、学習装置100は、言語理解処理として、発話が示すユーザU1の意図を推定し、推定した意図を示す文字列を意図情報として生成する。そして、学習装置100は、生成した意図情報を用いて、発話に対する応答を生成し、生成した応答をユーザ端末10からユーザU1に提供する。なお、このようなドメインの判定や、意図情報の生成及び応答の生成等は、それぞれ個別のモデルにより実現されてもよい。
学習装置100は、いわゆるスロットフィリングの技術を用いて、ユーザU1に対する応答を生成する。例えば、学習装置100は、所定の条件を有する意図情報がスロット値として格納される1つ以上のスロットを含むモジュールを記憶する。そして、学習装置100は、発話から生成した意図情報を対応するスロットに格納し、全てのスロットに意図情報が格納されたモジュールが存在する場合は、かかるモジュールと対応する処理を実行し、実行結果を示す応答の生成を行う。
例えば、学習装置100は、場所を示す文字列がスロット値として登録されるスロットと、施設のタイプを示す文字列がスロット値として登録されるスロットとを有するモジュールを記憶する。具体的には、学習装置100は、場所を示す文字列と、料理名や料理の種別がスロット値として登録されるスロットとを有する施設検索用のモジュール(より具体的には、飲食施設の検索を行うためのモジュール)を記憶する。この場合、学習装置100は、発話の文字列から場所を示す文字列や施設の対応を示す文字列をスロット値(すなわち、ユーザU1の意図を示す意図情報)として検索する。言い換えれば、学習装置100は、発話の文字列から、所定の条件を満たす文字列をスロット値として抽出する。このような文字列の抽出は、例えば、形態素解析や辞書データとの比較による単語の意味特定技術等により実現可能である。
また、学習装置100は、ユーザU1との対話を随時進めることで、モジュールに含まれる各スロットに対応するスロット値を格納してもよい。すなわち、学習装置100は、ユーザU1から受け付けた複数の発話から、所定の条件を満たす文字列をスロット値として抽出する。そして、学習装置100は、施設検索モジュールに含まれる全てのスロットにスロット値が格納された場合に、格納されたスロット値を用いて施設検索モジュールに予め設定された情報処理を実行し、ユーザU1への応答を生成してもよい。
例えば、学習装置100は、施設検索モジュールに、場所(地名)を示すスロット値「赤坂」と、料理名を示すスロット値「スパゲッティ」とが格納された場合は、地名「赤坂」にある施設のうち、料理名「スパゲッティ」に対応する料理を提供する施設をウェブ検索する。例えば、学習装置100は、スロット値をクエリとして所定の検索エンジンAPIに問い合わせることで、ウェブ検索の結果を取得する。そして、学習装置100は、取得したウェブ検索の結果を示す応答を生成して、ユーザ端末10に送信する。
〔1−3.実施形態に係る学習処理〕
上記のようなスロット抽出処理に係るモデルは、例えば、属性情報がラベル付けされた語句を学習データとした機械学習によって生成される。具体的には、学習装置100は、「赤坂」が「地名」であるという属性情報や、「スパゲッティ」が「料理名」であるという属性情報が対応付けられた(ラベル付けされた)学習データを学習することで、スロット抽出の精度を向上させたモデルを生成することができる。このように、対話のような文字列を学習データとする学習では、対話に含まれる語句の属性情報が機械学習における強力な手がかりとなる。例えば、学習装置100は、辞書データ等を参照して、予め「赤坂」が「地名」であることや、「スパゲッティ」が「料理名」であるということが対応付けられているデータを学習する場合、「赤坂」が「地名」であることや、「スパゲッティ」が「料理名」であるということが不明なデータを学習した場合に比べて、学習の効率を高めることができる。
一般に、語句の属性情報は、辞書データのような知識データベースから取得される。すなわち、学習装置100は、辞書データを有するデータベース(図1の例ではクラウドサーバ200)に問い合わせを行うことにより、不明な語句の属性情報を取得する。そして、学習装置100は、取得した属性情報に基づいて、スロット抽出に関する学習を行う。
しかしながら、ネットワークを介して行われる対話処理等に関する学習では、通信環境や通信量等によって学習の効率が低下する場合がある。例えば、学習装置100が保持する辞書(クラウドサーバ200との区別のため、「ローカル辞書」と表記する)において、「赤坂」や「スパゲッティ」という語句に対応付けられる属性情報が記憶されていないものとする。この場合、学習装置100は、例えば、「赤坂」について、「あ」や、「あか」や、「あかさ」や、「あかさか」といった語句を順にクラウドサーバ200に問い合わせる場合がある。また、学習装置100は、「スパゲッティ」という語句や、その他の属性情報が不明な語句についても、語句を構成する文字ごとに問い合わせを行うことを要する場合がある。また、対話処理の解析では、予め全ての語句にラベル付けされている学習データを用いることが好ましいため、受け付けた対話の全ての語句に対して、正解データを問い合わせるような場合も起こり得る。かかる状況下では、学習装置100とクラウドサーバ200の間の問い合わせ処理が頻繁に発生する。このため、かかる処理では、問い合わせ処理の負荷が高くなり、学習の効率を低下させるおそれがある。また、学習装置100とクラウドサーバ200との間の通信環境(例えば、所定時間に送受信可能な通信量)も、学習の効率に影響を及ぼすと想定される。
学習装置100が、自身が保持するローカル辞書によってすべての語句の特徴情報を対応付けることができればよいが、実社会では日々新たな語句が生まれたり、既存の語句に新たな意味が生じたりすることから、ローカル側で全ての情報を保持することは現実的には難しい。また、特に対話処理のような分野では、いわゆるIoT(Internet of Things)機器に入力された発話に対して、複数のサーバ(API)が連携して処理を行う場合がある。このように、ネットワークを介した通信を前提とする処理では、知識データベースへのアクセス処理や問い合わせ処理の頻度が、学習処理におけるボトルネックとなりうる。また、対話処理に用いるIoT機器の構成によっては、充分な量のメモリを有さないために、辞書データのような比較的情報量の多いデータを保持することが難しいという場合もありうる。
そこで、実施形態に係る学習装置100は、以下の学習処理を実行する。まず、学習装置100は、学習処理に用いられる第1データ(図1の例では、ユーザU1の発話)から、当該第1データの一部を構成する部分データ(図1の例では、属性情報が不明であると仮定する「あかさか」や「スパゲッティ」の文字列)に対応付けられる特徴情報を所定のデータベースに問い合わせるためのクエリを生成する。そして、学習装置100は、生成されたクエリを所定のデータベース(図1では、クラウドサーバ200)に問い合わせることで、部分データに対応付けられる特徴情報を取得する。さらに、学習装置100は、取得した特徴情報に基づいて、第1データを学習データとして所定のモデルを生成するための学習を行う。
すなわち、学習装置100は、学習に利用する第1データの全てをクラウドサーバ200に問い合わせるのではなく、特徴情報が不明確な部分データに対応付けられる特徴情報を取得するためのクエリを生成し、生成したクエリによる問い合わせを行う。そして、学習装置100は、生成したクエリを知識データベースに問い合わせることで、特徴情報が不明確な部分データに関する特徴情報を取得する。そして、学習装置100は、取得した特徴情報に基づいて学習を行う。これにより、学習装置100は、不明な語句を含む対話データを学習データとする場合であっても、無駄な問い合わせ処理を排除した高速な学習処理を実現することができる。以下、図1を用いて、実施形態に係る学習処理の流れについて説明する。なお、以下で説明する学習処理には、種々の既知の技術が用いられてもよい。例えば、対話におけるスロット抽出処理は、任意の分類技術により実現可能である。例えば、学習装置100は、SVM(Support Vector Machine)やDNN(Deep Neural Network)等、任意の学習器又は分類器等のモデルを用いて、スロット抽出を行ってよい。
図1の例において、まず、ユーザ端末10は、ユーザU1から発話を受け付ける。そして、ユーザ端末10は、受け付けた発話を学習装置100に送信する(ステップS01)。例えば、ユーザ端末10は、「赤坂にあるスパゲッティのお店教えて」といったユーザU1の発話を送信する。
学習装置100は、ユーザ端末10から受け付けた発話を解析する。例えば、学習装置100は、「赤坂にあるスパゲッティのお店教えて」といったユーザU1の発話を形態素解析する(ステップS02)。なお、図1の例では、学習装置100は、「赤坂」や「スパゲッティ」に対応付けられる特徴情報(例えば、地名や料理名等の属性情報)の知識をローカル側で保持していないと仮定する。すなわち、学習装置100にとって、「赤坂(あかさか)」や「スパゲッティ」という文字列は非自明なものであり、そのため属性情報のラベル付けが行われない文字列であるものとする。
この場合、学習装置100は、例えば、ユーザU1の発話を、「あかさか」「に」「ある」「スパゲッティ」「の」「お店」「教えて」や、「あか」「さか」「に」「ある」「スパゲッティ」「の」「お店」「教えて」や、「あかさか」「に」「ある」「スパ」「ゲッティ」「の」「お店」「教えて」等、形態素解析の結果としていくつかの候補を出力する。そして、学習装置100は、形態素解析の結果から、ユーザU1の発話に関するドメインを判定する(ステップS03)。
例えば、学習装置100は、既存のドメイン判定モデルを用いて、発話のドメインを判定する。具体的には、学習装置100は、発話のパターンとドメインとの関係性を学習したドメイン判定モデルを用いて、ユーザU1の発話が属するドメインの尤度を出力する。そして、学習装置100は、例えば最も尤度の高いドメインのモジュールにユーザU1の発話を入力する。図1の例では、学習装置100は、例えばパターンマッチングが学習されたドメイン判定モデルにより、ユーザU1の発話は施設検索に関するドメインに属するものであると判定されたものとする。この場合、学習装置100は、施設検索モジュールのスロットにユーザU1の発話を入力することを試みる。なお、上記では、形態素解析ののちにドメインを判定する処理を行う例を示しているが、学習装置100は、形態素解析を行わずに発話のパターンからドメインを判定してもよい。
図1に示す例では、施設検索モジュールは、例えば、「地名」と、「料理名」もしくは「料理種別」等の属性情報に対応付けられた語句が入るスロットを有するものとする。この場合、学習装置100は、スロットに入る語句(以下、「スロット値」と表記する場合がある)を抽出するための処理を行う。まず、学習装置100は、発話に含まれる語句の属性情報を判定する(ステップS04)。そして、学習装置100は、発話に含まれる語句のうち、対応付けられる属性情報が不明である語句を抽出する(ステップS05)。
属性情報が不明である語句を抽出する手法の一例として、学習装置100は、形態素解析された語句に対する属性情報の対応付け(系列ラベリング)によるn−best解を出力し、相違する箇所の語句を抽出するといった手法を採りうる。図1に示す例では、学習装置100は、ユーザU1の発話に、「あかさか」「に」「ある」「スパゲッティ」「の」「お店」「教えて」や、「あか」「さか」「に」「ある」「スパゲッティ」「の」「お店」「教えて」や、「あかさか」「に」「ある」「スパ」「ゲッティ」「の」「お店」「教えて」等の語句が含まれると解析している。かかる語句に対して、学習装置100が属性情報を対応付けした場合に、複数の候補が存在し、その尤度により順位付けされた上位所定数の候補が、対応付けにおけるn−best解である。図1に示した例では、学習装置100にとって不明な文字列である「あかさか」や「スパゲッティ」については、対応付けされる属性情報の候補が複数存在し、学習装置100が属性情報を決定しきれない可能性が高い語句である。一方、「お店」や「教えて」等の語句については、発話における順序や品詞等に基づいて、比較的、一意に属性情報が対応付けされ易い語句である。このため、上記した3つの例のように、「あかさか」や「スパゲッティ」の区切りが異なる出力結果がn−best解として出力され易いと想定される。
そして、学習装置100は、n−best解のうち、相違する箇所の語句を抽出する。説明を簡単にするため、2つの候補を例に挙げて説明する。例えば、「あかさか」「に」「ある」「スパゲッティ」「の」「お店」「教えて」と、「あか」「さか」「に」「ある」「スパ」「ゲッティ」「の」「お店」「教えて」の2つの候補の相違箇所は、「スパゲッティ」と、「スパ」「ゲッティ」の部分である。これは、「赤(あか)」や「坂(さか)」が、各々に個別の意味を有する語句であること、また、「スパ」が温泉等を意味する既知の語句であることから、属性情報の対応付けの結果として相違する結果が出力されたことを意味する。学習装置100は、相違する箇所の文字列(部分データ)である「あかさか」と「スパゲッティ」を抽出する。これは、言い換えれば、現時点の処理において、学習装置100が、「あかさか」や「スパゲッティ」という文字列に対して一意に属性情報を決定しきれていない状況を示す。
そこで、学習装置100は、抽出した文字列に基づいて、外部の知識データベースであるクラウドサーバ200に問い合わせるためのクエリを生成する(ステップS06)。例えば、学習装置100は、「あかさか」という一連の文字列を抽出したうえで、かかる文字列から、問い合わせのためのクエリを生成する。具体的には、学習装置100は、属性情報を決定するための確度が低い(言い換えれば、属性情報を決定しきれない)文字列に基づいて、問い合わせのためのクエリを生成する。例えば、学習装置100は、「赤(あか)」や「坂(さか)」が既知の語句であり、その語句に対する属性情報の確度が高い場合には、問い合わせのクエリとはせず、残った語句のうち、属性情報が不明な語句であり確度が低い「あかさか」をクエリとして生成する。また、学習装置100は、「スパゲッティ」という一連の文字列を抽出したうえで、かかる文字列から、問い合わせのためのクエリを生成する。例えば、学習装置100は、「スパ」が既知の語句であり、その属性情報の確度が高い場合には、問い合わせのクエリとはせず、残った語句のうち、属性情報が不明であり確度が低い語句である「ゲッティ」と「スパゲッティ」を、問い合わせのクエリとして生成する。なお、学習装置100は、文字列に対応付けられる属性情報が既知であっても、いずれの属性情報を対応付けるかといった判断に迷う場合(例えば、同程度の確度である場合)には、その文字列に基づいて問い合わせのクエリを生成してもよい。また、学習装置100は、文字列に対応付けられる属性情報が不明であったとしても、いずれかの属性情報を一意に対応付けることができると判断した場合(例えば、任意の属性情報の確度が高い場合)には、その文字列を問い合わせるためのクエリを生成しなくてもよい。
そして、学習装置100は、生成したクエリである「あかさか」、「ゲッティ」及び「スパゲッティ」をクラウドサーバ200に送信する(ステップS07)。クラウドサーバ200は、地名辞書や料理名辞書等、種々の分野における辞書データベースを有する。そこで、クラウドサーバ200は、クエリに対応する辞書データから属性情報を検索する(ステップS08)。
クラウドサーバ200は、地名辞書データを参照し、例えば、「あかさか」の属性情報が「地名」であることを参照する。また、クラウドサーバ200は、料理名辞書データを参照し、例えば、「スパゲッティ」の属性情報が「料理名」であることを参照する。また、クラウドサーバ200は、種々の辞書データを参照し、「ゲッティ」の属性情報については「なし(もしくは不明)」であることを参照する。そして、クラウドサーバ200は、問い合わせられたクエリに対応する属性情報を学習装置100に送信する(ステップS09)。
学習装置100は、クラウドサーバ200から取得した属性情報に基づいて、ユーザU1の発話から施設検索モジュールのスロットに入力するスロット値を抽出する。具体的には、学習装置100は、スロット値として、地名の属性を有する「赤坂」と、料理名の属性を有する「スパゲッティ」とを抽出する。そして、学習装置100は、抽出した語句に基づいて、発話に対する応答を生成し、生成した応答をユーザ端末10に送信する(ステップS10)。例えば、学習装置100は、施設検索モジュールに予め設定された処理に従い、「「赤坂」にある「スパゲッティ」を提供するレストラン」を検索し、検索結果をユーザ端末10に送信する。
その後、ユーザ端末10は、所定のフィードバックを学習装置100に送信してもよい(ステップS11)。例えば、ユーザ端末10は、ユーザU1が提示されたレストランのいずれかにアクセスしたことや、予約を行ったこと等を学習装置100に送信する。この場合、学習装置100は、学習装置100の応答(スロット抽出)が正解であったと判定する。すなわち、かかるスロット抽出は、学習処理における正例となりうる。
あるいは、ユーザ端末10は、学習装置100から送信された応答を提示した直後に、ユーザU1から異なる内容の発話を受け付けたこと等を学習装置100に送信する。この場合、ユーザU1は自身が意図していた内容と異なる応答を提示されたため、さらに異なる発話をユーザ端末10に入力したと推定される。言い換えれば、学習装置100の応答(スロット抽出)は、不正解であったと推定される。すなわち、かかるスロット抽出は、学習処理における負例となりうる。
上記のようなスロット抽出、応答、及びフィードバックの受信を経て、学習装置100は、スロット抽出に係る学習を行う(ステップS12)。例えば、学習装置100は、スロット抽出に係るモデルを生成するための処理や、既存のモデルを更新する処理を行う。なお、学習装置100は、クラウドサーバ200に問い合わせて取得した結果をローカル辞書に追加してもよい。
このように、実施形態に係る学習装置100は、学習処理に用いられるユーザU1の発話から、当該発話の一部を構成する部分データに対応付けられる特徴情報をクラウドサーバ200に問い合わせるためのクエリを生成する。また、学習装置100は、生成したクエリをクラウドサーバ200に問い合わせることで、部分データに対応付けられる特徴情報を取得する。そして、学習装置100は、取得した特徴情報に基づいて、ユーザU1の発話を学習データとして所定のモデルを生成するための学習を行う。
すなわち、学習装置100は、受け付けた発話の全てを知識データベースに問い合わせず、任意の部分データからクエリを生成したうえで、生成したクエリを知識データベースに問い合わせる。これにより、学習装置100は、ネットワークを介して知識データベースの情報を得るような機械学習において、通信のスループットが比較的低い環境下であっても、効率的に学習を行うことができる。
なお、学習装置100は、ユーザU1の発話からスロット値を抽出する処理において、発話に対応する文字列に関する情報のみならず、ユーザU1に関する他の情報を考慮した学習処理を行ってもよい。例えば、学習装置100は、ユーザ端末10が所在する位置情報や、ユーザU1との過去の対話、ユーザU1のデモグラフィック属性やバイオグラフィック属性等を考慮して、ユーザU1の発話に含まれる語句の属性情報を推定する処理や、スロット抽出に関する処理を行ってもよい。
また、学習装置100は、発話の内容と、ユーザU1の属性とに基づいて、スロット値を選択してもよい。例えば、学習装置100は、発話を行ったユーザU1が男性である場合には、比較的ボリュームが多い食事を提供するレストランを検索し、ユーザU1が女性である場合は、カフェなどの雰囲気が良いレストランの検索を行ってもよい。
また、学習装置100は、上述した情報以外にも、ユーザU1の住所や年齢等といったデモグラフィック属性や趣味趣向等のサイコグラフィック属性に基づいて、学習処理を行ってもよい。例えば、学習装置100は、ユーザU1の各種属性に基づいて、ユーザU1の意図をより強く示すと推定される候補を優先的に選択するように、スロット抽出を行う際の重みづけを設定してもよい。また、学習装置100は、ユーザU1が発話した時間帯等、他の情報を考慮して、スロット値の抽出を行ってもよい。
また、学習装置100は、上述した処理以外にも、任意の処理を合わせて実行してもよい。例えば、上述した説明では、学習装置100は、発話の文字列からスロット値の抽出や選択を行った。しかしながら、実施形態は、これに限定されるものではない。例えば、学習装置100は、発話の文字列を作成するような音声認識を実行せず、音声の波形データから直接スロット値の抽出や選択を行ってもよい。例えば、学習装置100は、スロット値として登録される波形の特徴をスロット値の条件として保持し、発話の音声の波形から、スロット値の条件として保持した特徴を有する波形部分を抽出し、抽出した波形部分をスロット値としてもよい。また、学習装置100は、音声の波形と、文字列または音声の波形により実現されるスロット値の候補との間の関係性の特徴を学習したDNN等を用いて、発話の音声波形から、スロット値の選択を行ってもよい。
〔2.学習処理システムの構成〕
次に、図2を用いて、実施形態に係る学習装置100が含まれる学習処理システム1の構成について説明する。図2は、実施形態に係る学習処理システム1の構成例を示す図である。図2に例示するように、実施形態に係る学習処理システム1には、ユーザ端末10と、学習装置100と、クラウドサーバ200が含まれる。これらの各種装置は、ネットワークN(例えば、インターネット)を介して、有線又は無線により通信可能に接続される。なお、図2に示した学習処理システム1には、複数台のユーザ端末10や、複数台のクラウドサーバ200が含まれてもよい。
ユーザ端末10は、例えば、スマートフォンや、デスクトップ型PC(Personal Computer)や、ノート型PCや、タブレット型端末や、携帯電話機、PDA(Personal Digital Assistant)、ウェアラブルデバイス(Wearable Device)等の情報処理装置である。ユーザ端末10は、ユーザから発話を受け付けたり、受け付けた発話のデータを学習装置100に送信したりする。なお、本明細書中においては、ユーザとユーザ端末10とを同一視する場合がある。例えば、「ユーザに応答を送信する」とは、実際には、「ユーザが利用するユーザ端末10に応答を送信する」ことを意味する場合がある。
学習装置100は、所定の学習処理を行うサーバ装置である。実施形態では、学習装置100は、対話処理におけるスロット抽出に係る学習を行う。学習装置100は、学習処理において利用される知識データのうち自身が保持しない情報に関しては、所定のデータベース(例えばクラウドサーバ200)に問い合わせを行いつつ学習処理を行う。
クラウドサーバ200は、学習装置100が利用するための知識データを提供する情報処理装置である。クラウドサーバ200は、単独のサーバ装置であってもよいし、複数のサーバから構成されるクラウドシステムであってもよい。例えば、クラウドサーバ200は、それぞれ異なる複数のサービスを提供する複数のサーバ装置によって実現されてもよい。また、クラウドサーバ200は、ウェブサーバであってもよい。例えば、クラウドサーバ200は、ウェブ検索エンジンを実行することによって、学習装置100から問い合わせを受けた情報に関する応答を行ってもよい。
〔3.学習装置の構成〕
次に、図3を用いて、実施形態に係る学習装置100の構成について説明する。図3は、実施形態に係る学習装置100の構成例を示す図である。図3に示すように、学習装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、学習装置100は、学習装置100を利用する管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110について)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。かかる通信部110は、ネットワークNと有線又は無線で接続され、ネットワークNを介して、ユーザ端末10や、クラウドサーバ200との間で情報の送受信を行う。
(記憶部120について)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。図3に示すように、記憶部120は、モジュールデータベース121と、ローカル辞書データベース122と、モデルデータベース123と、キャッシュデータベース124とを有する。
(モジュールデータベース121について)
モジュールデータベース121は、各モジュールの情報を記憶する。ここで、図4に、実施形態に係るモジュールデータベース121の一例を示す。図4は、実施形態に係るモジュールデータベース121の一例を示す図である。図4に示した例では、モジュールデータベース121は、「モジュールID」、「ドメイン」、「実行処理」、「スロット名」、「属性情報」といった項目を有する。
「モジュールID」とは、モジュールを識別する識別情報である。「ドメイン」は、モジュールが属するドメイン(分野)を示す。「実行処理」は、モジュールが実行する処理を示す。なお、図4では、「実行処理」の項目に「処理#1」といった概念的な情報が記憶される例を示したが、実際には、実行処理の項目には、「スロット値に対応する検索処理を行い、行った検索の結果をユーザに応答する」といった具体的な情報処理が記憶される。
「スロット名」は、モジュールが含むスロットの名称(識別情報)を示す。「属性情報」は、対応付けられた「スロット名」が示すスロットにスロット値として格納される文字列等の属性情報、言い換えれば、スロット値として格納される文字列の条件を示す情報である。なお、図4に示す「属性情報#地名」とは、属性情報の一例である「地名」が対応付けられた文字列がスロット値として抽出されることを示す。
すなわち、図4では、モジュールデータベース121に格納される情報の一例として、モジュールIDが「M01」のモジュールは、ドメインが「施設検索」に関するものであり、実行する処理は「処理#1」であることを示している。また、当該モジュールは、スロット名が「地名」と「料理名/料理種別」のスロットを有しており、「地名」のスロット値として抽出される語句は、属性情報として「属性情報#地名」が対応付けられている語句であり、「料理名/料理種別」のスロット値として抽出される語句は、属性情報として「属性情報#料理名」、あるいは「属性情報#料理種別」が対応付けられている語句であることを示している。
(ローカル辞書データベース122について)
ローカル辞書データベース122は、学習装置100が有する辞書データの情報を記憶する。ここで、図5に、実施形態に係るローカル辞書データベース122の一例を示す。図5は、実施形態に係るローカル辞書データベース122の一例を示す図である。図5に示した例では、ローカル辞書データベース122は、「語句ID」、「語句」、「品詞」、「属性情報」といった項目を有する。
「語句ID」とは、語句(文字列)を識別する識別情報である。「語句」は、辞書データに登録されている具体的な語句を示す。「品詞」は、辞書データに登録されている品詞を示す。「属性情報」は、辞書データに登録されている属性情報を示す。なお、図5に示す例では、「語句#1」、「品詞#1」、「属性情報#1」等といった概念的な値を記載したが、実際には、各項目には、具体的な語句の文字列や、具体的な品詞の種類や、具体的な属性情報の種別等が記憶される。
すなわち、図5では、ローカル辞書データベース122に格納される情報の一例として、語句IDが「W01」である語句は、「語句#1」という文字列からなる語句であり、その品詞は「品詞#1」であり、属性情報が「属性情報#1」であることを示している。
(モデルデータベース123について)
モデルデータベース123は、学習装置100が生成したモデルの情報を記憶する。ここで、図6に、実施形態に係るモデルデータベース123の一例を示す。図6は、実施形態に係るモデルデータベース123の一例を示す図である。図6に示した例では、モデルデータベース123は、「モデル種別」、「ドメイン」、「学習データ」といった項目を有する。
「モデル種別」とは、モデルの種別を示す。「ドメイン」は、モデルの処理の対象となるドメインを示す。「学習データ」は、モデルの生成に用いられる学習データを示す。なお、図6に示す例では、「学習データ#1」といった概念的な値を記載したが、実際には、学習データには、ユーザの発話に対応する文字列や、当該文字列の各々の語句に対応してラベル付けされた属性情報が記憶される。また、学習データは、学習装置100が発話を受け付けるたびに、発話と、発話に対応する文字列が含む語句に対応付けられた属性情報とのセットが追加され、更新されてもよい。また、学習データには、スロット値として抽出した語句が正例であったか負例であったかといった結果情報を含んでもよい。
すなわち、図6では、モデルデータベース123に格納される情報の一例として、モデル種別が「スロット抽出モデル」であるモデルのドメインは「施設検索」に関するものであり、当該モデルの生成及び更新に利用される学習データは「学習データ#1」であることを示している。
なお、図6での図示は省略したが、モデルデータベース123は、スロット抽出モデル以外にも、実施形態に係る処理を実現するための種々のモデルを記憶してもよい。具体的には、モデルデータベース123は、ドメイン判定モデルや、音声を認識して文字列へ変換するための音声認識モデルや、ユーザから受け付けた発話に対して自然な応答を行うための対話モデル等を記憶する。
(キャッシュデータベース124について)
キャッシュデータベース124は、学習装置100が取得した特徴情報のキャッシュを記憶する。ここで、図7に、実施形態に係るキャッシュデータベース124の一例を示す。図7は、実施形態に係るキャッシュデータベース124の一例を示す図である。図7に示した例では、キャッシュデータベース124は、「語句ID」、「語句」、「キャッシュ情報」といった項目を有する。また、「キャッシュ情報」は、「登場回数」、「品詞」、「属性情報」といった小項目を有する。
「語句ID」及び「語句」は、図5に示した同一の項目に対応する。「キャッシュ情報」は、クラウドサーバ200に問い合わせを行い、得られた特徴情報のキャッシュを示す。「登場回数」は、ユーザから受け付けた発話に語句が登場した回数を示す。「品詞」は、クラウドサーバ200への問い合わせによって得られた、語句の品詞を示す。「属性情報」は、クラウドサーバ200への問い合わせによって得られた、語句の属性情報を示す。なお、「品詞」や「属性情報」は、一つの情報のみならず、複数の情報が格納されてもよい。すなわち、同一の語句であっても、例えば、問い合わせる辞書データによっては、異なる品詞や属性情報が応答される場合がある。このような場合、学習装置100は、問い合わせのキャッシュとして、複数の情報を格納するようにしてもよい。
すなわち、図7では、キャッシュデータベース124に格納される情報の一例として、語句IDが「W11」である語句は、「語句#11」という文字列からなる語句であり、これまでの発話に登場した回数が「200」回であることを示している。また、語句IDが「W11」である語句は、問い合わせの結果として、品詞が「名詞」であり、属性情報が「属性情報#地名」であるという情報が得られていることを示している。
なお、実施形態では、ローカル辞書データベース122と、キャッシュデータベース124とを異なるデータテーブルとして記載したが、キャッシュデータベース124に格納される情報は、学習装置100がローカルで保持する情報としてローカル辞書データベース122内に記憶されてもよい。
(制御部130について)
制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、学習装置100内部の記憶装置に記憶されている各種プログラム(学習プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
図3に示すように、制御部130は、受付部131と、ドメイン判定部132と、クエリ生成部133と、取得部134と、学習部135とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部130が有する各処理部の接続関係は、図3に示した接続関係に限られず、他の接続関係であってもよい。
(受付部131について)
受付部131は、各種情報を受け付ける。例えば、受付部131は、ユーザ端末10から送信される発話を受け付ける。なお、受付部131は、発話に限らず、ユーザ端末10から送信される文字列(テキストデータ)を受け付けてもよい。
(ドメイン判定部132について)
ドメイン判定部132は、受付部131によって受け付けられた発話のドメインを判定する。すなわち、ドメイン判定部132は、ユーザの発話を分類し、ユーザの発話が属するドメインを特定する。
例えば、ドメイン判定部132は、ユーザの発話をテキストデータに変換する。なお、ドメイン判定部132は、音声データをテキストデータへと変換する所定の外部サーバを介して、ユーザの発話をテキストデータに変換してもよい。そして、ドメイン判定部132は、各種の文字解析技術や分類技術を用いて、当該テキストデータがどのような分野に属する内容であるかを判定する。例えば、ドメイン判定部132は、SVM等により生成された任意のドメイン判定モデルを用いて、ユーザの発話がどのような分野に属する内容であるかを判定する。
(クエリ生成部133について)
クエリ生成部133は、学習処理に用いられる第1データから、当該第1データの一部を構成する部分データに対応付けられる特徴情報を所定のデータベースに問い合わせるためのクエリを生成する。なお、第1データとは、学習処理に用いられる一の学習データ(実施形態では、ユーザの発話)を概念的に示すものである。例えば、後述する学習部135は、複数の第1データを学習データとして、スロット抽出モデル等を生成するための学習を行う。なお、クエリ生成部133が生成するクエリとは、具体的な文字列であってもよいし、所定の語句に対応付けられる特徴情報を取得するためのプログラムや命令文であってもよい。すなわち、クエリとは、所定の語句に対応付けられる特徴情報を所定のデータベースに問い合わせるための情報であれば、その態様はどのようなものであってもよい。
クエリ生成部133は、所定のデータベースに依らずに第1データを構成する各部分データの特徴情報を対応付けることが可能か否かを判定した結果に基づいて、クエリを生成する。例えば、クエリ生成部133は、学習装置100がローカルで保持する情報を参照し、第1データが含む部分データに対応付けられる特徴情報を判定する。具体的には、クエリ生成部133は、ローカル辞書データベース122等を参照して、第1データである文字列が含む各語句の属性情報が自明であるか否かを判定する。なお、クエリ生成部133は、かかる処理を行う場合には、ユーザの発話を形態素解析し、解析された各語句に対応付けられる属性情報を判定してもよい。
この場合、クエリ生成部133は、第1データを構成する部分データに対応付けられる特徴情報の候補が複数存在する場合に、部分データに基づいてクエリを生成するようにしてもよい。
例えば、図1に示したように、「赤坂」や「スパゲッティ」という語句が自明でないと仮定すると、「あかさか」や「スパゲッティ」という文字列は、「あか」、「さか」、「あかさか」、「スパ」、「ゲッティ」、「スパゲッティ」といったような、複数の語句の候補を含む。このため、かかる部分に対応付けられる特徴情報の候補も複数存在することになる。クエリ生成部133は、このように部分データにおいて対応付けられる特徴情報が複数存在する場合に、かかる部分データに対応付けられる特徴情報を取得するためのクエリを生成する。上記の例では、クエリ生成部133は、「スパゲッティ」の部分データに対応する特徴情報(すなわち、語句にラベル付けされる属性情報)を取得するため、クラウドサーバ200に問い合わせるクエリとして「ゲッティ」や「スパゲッティ」を生成する。
また、ローカル辞書によっては、「赤坂」や「スパゲッティ」の語句に対して、複数の属性情報が付与されている場合もありうる。具体的には、一の語句は、地名でもあり料理名でもあるような、複数の属性を有する場合がありうる。この場合、クエリ生成部133は、ローカル側では、当該語句に対応付ける属性情報を決定できない可能性がある(例えば、語句に対応付ける属性情報が複数あり、それぞれの尤度(確度)が同じくらいであると判断される場合など)。このような場合、クエリ生成部133は、当該語句をクラウドサーバ200に問い合わせるためのクエリを生成する。すなわち、クエリ生成部133は、ローカル側の処理において、特徴情報の候補が複数存在する場合には、語句に対応付ける特徴情報を確定させるために、当該語句に関するクエリを生成する。なお、図1で示したように、クエリ生成部133は、一の語句に対応付け(系列ラベリング)される属性情報の候補が複数存在する場合には、当該属性情報が対応付けられる確度の高い順に所定数の候補を抽出して(n−best解を出力して)クエリを生成するようにしてもよい。例えば、クエリ生成部133は、ローカル辞書データや、語句の前後の文字列のパターン、既知のラベル判定モデル等によって属性情報が対応付けられる確度を判定する。
ここで、クエリ生成部133は、所定のデータベースとの間の通信に関する情報に基づいて、クエリを生成する量を調整してもよい。例えば、学習装置100とクラウドサーバ200との間の通信環境が良好である場合(例えば、所定時間に送受信できる通信量が所定の閾値を超える場合)、クエリ生成部133は、ユーザから受け付けた発話の全てをクエリとしてクラウドサーバ200に送信し、発話の解析や、解析された語句にラベル付けされる属性情報の全てを取得してもよい。一方で、クエリ生成部133は、学習装置100とクラウドサーバ200との間の通信環境が良好でない場合(例えば、所定時間に送受信できる通信量が所定の閾値以下である場合)、クエリ生成部133は、特徴情報が不明な部分データのうち、所定数の部分データを問い合わせるように、選択的にクエリを生成してもよい。あるいは、クエリ生成部133は、特徴情報が不明な部分データのうち、無作為に所定数の部分データを抽出し、抽出した部分データからクエリを生成してもよい。
また、クエリ生成部133は、第1データが含む所定の部分データにおいて、語句として抽出される候補が複数存在する場合には、形態素解析における尤度の高い順に所定数の候補を抽出してクエリを生成するようにしてもよい。
例えば、図1で示したように、「赤坂」と「スパゲッティ」という語句が自明でない場合であって、「赤坂にあるスパゲッティのお店教えて」という発話が形態素解析される場合、「あかさか」という部分は、種々の語句に解析される可能性がある。例えば、「あかさか」という部分は、「あ」と「かさか」や、「あか」と「さか」や、「あかさ」と「か」や、「あかさか」といった語句に解析される可能性がある。しかしながら、形態素解析において、1文字だけが語句として解析される尤度は低いと推定されること、また、「赤」や「坂」が既知の語句であることから、「あかさか」という部分が解析される尤度としては、「あか」と「さか」、及び、「あかさか」とが比較的高いと推定される。そして、「あ」や「か」等の一文字だけのクエリで問い合わせを行うよりも、形態素解析の尤度の高い語句「あか」や「さか」や「あかさか」を問い合わせた方が、学習に有用な情報が得られる可能性が高いと推定される。このため、クエリ生成部133は、形態素解析において尤度の高い「あか」や「さか」や「あかさか」に対応付ける属性情報を問い合わせるためのクエリを生成する。
なお、クエリ生成部133は、文字列である第1データから無作為に語句を抽出し、抽出された語句に基づいてクエリを生成してもよい。すなわち、ユーザの発話が含む全ての語句に対応付けられる属性情報が特定されていなくても、学習処理に影響を与えない可能性もある。このため、通信負荷を抑制するため、クエリ生成部133は、ユーザの発話のうち、無作為に語句を抽出し、抽出された語句に対応付ける属性情報を問い合わせるためのクエリを生成してもよい。
(取得部134について)
取得部134は、クエリ生成部133によって生成されたクエリを所定のデータベースに問い合わせることで、部分データに対応付けられる特徴情報を取得する。
具体的には、取得部134は、第1データがユーザの発話に対応する文字列である場合、特徴情報として、クエリ生成部133によって生成されたクエリに対応付けられる属性情報をクラウドサーバ200から取得する。
取得部134は、取得した情報を学習部135に送る。また、取得部134は、取得した情報を記憶部120内に格納する。例えば、取得部134は、取得した属性情報と語句とを対応付けて、キャッシュデータベース124に格納する。
(学習部135について)
学習部135は、取得部134によって取得された特徴情報に基づいて、第1データを学習データとして所定のモデルを生成するための学習を行う。具体的には、学習部135は、第1データがユーザの発話に対応する文字列である場合、取得部134によって取得された属性情報であって、文字列に含まれる語句に対応付けられる属性情報に基づいて学習を行う。
なお、学習部135は、過去の問い合わせによって特徴情報が記憶部120に保持されている場合には、記憶部120に保持されている特徴情報に関して所定のデータベースへの新たな問い合わせを発生させることなく学習を行ってもよい。すなわち、学習部135は、ローカルで保持されているキャッシュを利用することにより、クラウドサーバ200との通信処理を極力発生させないようにすることで、学習の効率性を向上させることができる。
例えば、実施形態に係る学習部135は、対話処理におけるモジュールのスロット抽出を学習し、スロット抽出モデルを生成する。そして、学習部135は、記憶部120に記憶されるスロット抽出モデルに従った情報処理により、スロット抽出モデルの入力層に入力されたユーザの発話に対し、スロット抽出モデルが有する係数(すなわち、スロット抽出モデルが学習した特徴に対応する係数)に基づく演算を行う。そして、学習部135は、スロット抽出モデルの出力層から、ユーザの発話に対応するモジュールのスロット値として抽出される語句の尤度、すなわち、スロット値として適切であることを定量的に示す値(スコア)を出力する。学習部135は、かかるスコアに基づいて、モジュールのスロットに入る語句を抽出する。また、学習部135は、抽出した語句がスロット値として適切であったか否かのフィードバックに基づいて、さらにスロット抽出に関する学習を行う。すなわち、学習部135は、スロット抽出モデルの更新及び改良を継続的に行う。
具体的には、学習部135は、スロット抽出を行う場合には、発話に含まれる語句が所定の条件を満たすと判定される場合に、応答の生成に用いるための語句を発話から抽出する。例えば、学習部135は、モジュールデータベース121に格納された属性情報を参照することで、スロット値としてスロットに格納されうる語句が満たすべき属性情報を特定する。そして、学習部135は、特定した属性を有する語句を抽出する。その後、学習部135は、抽出した文字列をスロット値としてモジュールに格納する。例えば、学習部135は、モジュールIDと、スロット名と、抽出したスロット値とを対応付けて所定のメモリに格納する。
なお、学習部135は、発話の内容と、その発話よりも前にユーザから受け付けた発話の内容とに基づいて、応答の生成に用いる語句を候補の中から選択してもよい。すなわち、学習部135は、ユーザとの過去の対話に基づいて、スロット値の候補の絞り込みを行い、絞り込んだスロット値の候補の中から、最後の発話に基づいて、スロット値の選択を行ってもよい。また、学習部135は、発話の内容と、ユーザの属性とに基づいて、応答の生成に用いる文字列を候補から選択してもよい。例えば、学習部135は、ユーザの属性に基づいて、スロット値の候補の絞り込みを行ってもよい。
また、学習部135は、抽出された語句を用いて、発話に対する応答を生成する。例えば、学習部135は、学習部135がスロット値を抽出する度に、モジュールの全てのスロットにスロット値が格納されたか否かを判定する。そして、学習部135は、いずれかのモジュールの全てのスロットにスロット値が格納された場合は、係るモジュールと対応する実行処理の処理内容をモジュールデータベース121から特定し、特定した処理内容の処理を実行する。
例えば、学習部135は、処理対象となるモジュールの各スロットのスロット名とスロット値とを対応付けた検索クエリを生成し、生成した検索クエリに基づいてウェブ検索処理を行うことで、ユーザの発話に基づく検索処理を実行する。そして、学習部135は、検索結果を取得すると、取得した検索結果をユーザに対して説明する内容の応答を生成する。具体的には、学習部135は、ユーザが発話によって尋ねた目的に合致する応答(図1の例では、「赤坂にあるスパゲッティのお店教えて」というユーザの発話に対する応答結果)を生成し、ユーザ端末10に送信する。
なお、学習部135は、全てのスロットにスロット値が格納されたモジュールが存在しない場合、もしくは、全てのスロットにスロット値が格納されたモジュールが複数存在する場合は、さらにユーザに発話の意図を問い合わせる内容の応答を生成してもよい。あるいは、学習部135は、発話が示すユーザの意図と関連する可能性が所定の閾値を超える候補が存在しない場合、もしくは、発話が示すユーザの意図と関連する可能性が所定の閾値を超える候補の数が所定の数を超える場合には、発話の意図をユーザに対して問い合わせる内容の応答を生成してもよい。
その後、学習部135は、送信した応答に関するフィードバックをユーザ端末10から取得する。例えば、学習部135は、応答を受信したユーザが採った行動をフィードバックとして取得する。そして、学習部135は、自身が抽出したスロット値が正例であったか負例であったかを判定し、かかる結果に基づいてスロット抽出モデルの学習を行う。
〔4.クラウドサーバの構成例〕
次に、図8を用いて、実施形態に係るクラウドサーバ200の構成について説明する。図8は、実施形態に係るクラウドサーバ200の構成例を示す図である。図8に示すように、クラウドサーバ200は、通信部210と、記憶部220と、制御部230とを有する。
通信部210は、例えば、NIC等によって実現される。そして、通信部210は、ネットワークNと有線または無線で接続され、ユーザ端末10や学習装置100との間で情報の送受信を行う。
記憶部220は、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。そして、記憶部220は、機械学習に用いられる知識データベースを記憶する。具体的には、記憶部220は、地名辞書221や、料理名辞書222等を記憶する。なお、記憶部220に記憶される辞書は、図8に例示したものに限らず、種々の辞書であってもよい。また、クラウドサーバ200は、所定の検索処理を行い、辞書データを適宜更新してもよい。例えば、クラウドサーバ200は、ウェブコンテンツをクロールすることによって辞書に登録されていない単語を収集したり、クラウドサーバ200の管理者等から入力される情報を受け付けたりすることにより、辞書データを更新する。
制御部230は、コントローラであり、例えば、CPUやMPU等によって、クラウドサーバ200内部の記憶装置に記憶されている各種プログラムがRAMを作業領域として実行されることにより実現される。また、制御部230は、コントローラであり、例えば、ASICやFPGA等の集積回路により実現される。
図8に示すように、制御部230は、受信部231と、応答部232とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部230の内部構成は、図8に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部230が有する各処理部の接続関係は、図8に示した接続関係に限られず、他の接続関係であってもよい。
受信部231は、学習装置100から送信されるクエリを受信する。例えば、受信部231は、属性情報が不明である文字列(語句)によって構成されるクエリを受信する。
応答部232は、受信部231によって受信されたクエリによる問い合わせに応答する。例えば、応答部232は、記憶部220内の辞書データを参照して、クエリに関する情報を取得する。具体的には、応答部232は、文字列であるクエリが既知の語句である場合には、語句の品詞や、語句に対応付けられる属性情報等を取得する。そして、応答部232は、取得した情報を学習装置100に応答する。なお、応答部232は、問い合わせられたクエリに対応する情報が辞書に存在しない場合には、所定の検索処理を行い、所定の外部サーバ等から情報を取得してもよい。また、応答部232は、問い合わせられたクエリに対応する情報が辞書に存在しない旨を学習装置100に応答するようにしてもよい。
〔5.処理手順〕
次に、図9を用いて、実施形態に係る学習装置100による処理の手順について説明する。図9は、実施形態に係る処理手順を示すフローチャートである。
図9に示すように、学習装置100は、ユーザ端末10から発話を受け付ける(ステップS101)。続けて、学習装置100は、発話が属するドメインを判定する(ステップS102)。
そして、学習装置100は、発話を構成する各部分データに属性情報を対応付けることが可能か否かを判定する(ステップS103)。言い換えれば、学習装置100は、発話において、属性情報が不明な部分データが存在するか否かを判定する。
各部分データに属性情報を対応付けることができないと判定した場合(ステップS103;No)、学習装置100は、属性情報が不明な部分データを特定する(ステップS104)。例えば、学習装置100は、形態素解析された語句に対する属性情報の対応付けの結果として出力される候補のうち、所定数の上位の候補(n−best解)を参照し、結果が相違する箇所の部分データを特定する。
そして、学習装置100は、特定した部分データの属性情報を問い合わせるためのクエリを生成する(ステップS105)。そして、学習装置100は、クラウドサーバ200にクエリを送信することで、生成したクエリによる問い合わせを実行する(ステップS106)。
その後、学習装置100は、クラウドサーバ200から問い合わせの応答を受信することにより、部分データの属性情報を取得する(ステップS107)。そして、学習装置100は、取得した属性情報に基づいて、スロット値を抽出する(ステップS108)。なお、ステップS103において、発話の各部分データに属性情報を対応付けることが可能であった場合には(ステップS103;Yes)、学習装置100は、ステップS104からステップS107の処理をスキップして、ステップS108に処理を進めてもよい。
その後、学習装置100は、スロット値の抽出結果に関する学習を行う(ステップS109)。例えば、学習装置100は、ユーザからのフィードバックを受信し、受信した結果に基づいて、抽出した結果の正例又は負例を判定することにより、抽出処理の学習を行う。なお、学習装置100は、必ずしもユーザからのフィードバックを用いて学習を行うのではなく、学習装置100の管理者によって与えられる報酬や正解データに基づいて学習を行ってもよい。
〔6.変形例〕
上述した学習装置100は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、学習装置100の他の実施形態について説明する。
〔6−1.学習処理の例〕
上記実施形態では、学習装置100が、対話におけるスロット抽出処理の学習を行う例を示した。ここで、学習装置100が行う学習処理は、対話におけるスロット抽出処理に限られない。すなわち、学習装置100は、所定のデータベース等から知識データを取得しながら学習を行う処理であれば、いずれの分野における学習を行ってもよい。
例えば、学習装置100は、ユーザの発話の分類処理に関する学習を行ってもよい。具体的には、学習装置100は、ユーザの発話がポジティブなものであるか(例えば、ユーザが対象に対して高評価を抱いていることを示す発話)、ネガティブなものであるか(例えば、ユーザが対象に対して低評価を抱いていることを示す発話)であるかを分類する学習を行ってもよい。
例えば、学習装置100は、ユーザの発話が対象についてポジティブな意見を述べているか、もしくは、ネガティブな意見を述べているかの分類の学習を行う。以下では、ユーザがレビューサイト等に自身の意見を投稿する場合を例に挙げる。ユーザは、例えば、「赤坂のXXX飯店は麻婆豆腐がとてもおいしい」という発話をユーザ端末10に入力する。ユーザ端末10は、かかる発話を学習装置100に送信する。
学習装置100は、受け付けた発話を解析する。このとき、学習装置100は、解析した語句の属性情報として肯定表現や否定表現が含まれるか否かに基づいて、発話がポジティブなものであるか、あるいは、ネガティブなものであるかを分類する。
かかる例において、学習装置100は、肯定表現や否定表現を判定するための辞書(以下、「肯定否定表現辞書」と表記する)を有しておらず、個々の語句の属性情報である肯定表現や否定表現を判定できないものとする。このため、学習装置100は、問い合わせのクエリを生成し、生成したクエリをクラウドサーバ200に送信して、クエリに対応付けられる属性情報を取得する。
例えば、学習装置100は、ユーザの発話を形態素解析した結果及び品詞との関係性に基づいて、クラウドサーバ200に問い合わせるためのクエリを生成してもよい。例えば、学習装置100は、「赤坂」「の」「XXX飯店」「は」「麻婆豆腐」「が」「とても」「おいしい」という形態素解析の候補や、「赤坂」「の」「XXX」「飯店」「は」「麻婆豆腐」「が」「とてもおいしい」という形態素解析の候補を得る。このとき、学習装置100は、「赤坂」や「麻婆豆腐」が名詞であり、「おいしい」が形容詞であるという情報は取得可能である。また、学習装置100は、「の」や「は」や「が」が助詞であり、「とても」が副詞であるという情報は取得可能である。
一方で、学習装置100は、「XXX飯店」や、「XXX」や、「飯店」という文字例については、品詞が不明である(既知の語句ではない)と判定する可能性がある。この場合、学習装置100は、「XXX飯店」をクエリとして生成する。また、学習装置100は、名詞よりも形容詞の方が肯定否定表現に該当する可能性が高いと判定する(かかる判定基準は、例えば、発話の属するモジュール等に予め設定される)。
そして、学習装置100は、肯定否定表現が含まれる可能性が高い「おいしい」や、そもそも品詞や属性が不明である「XXX飯店」等をクエリとして生成する。そして、学習装置100は、クラウドサーバ200から属性情報を取得する。例えば、学習装置100は、「おいしい」が肯定表現である一方で、「XXX飯店」は肯定表現でも否定表現でもないという情報を取得する。
そして、学習装置100は、取得した情報に基づいて、ユーザの発話を分類する。上記の例では、学習装置100は、「おいしい」という肯定表現が含まれていることから、ユーザの発話をポジティブな発話に分類する。このような処理により、学習装置100は、ユーザの発話の全てをクラウドサーバ200に問い合わせることなく、学習処理に必要と推定される箇所のみを問い合わせることができる。これにより、学習装置100は、効率の良い学習を行うことができる。
他の例として、学習装置100は、文節の係り受けの分類の学習において、上記処理を適用してもよい。具体的には、学習装置100は、ユーザの発話のうち、対象の語句がどの文節に係っているかという係り先を判定するためのモデルを学習する。この場合、学習装置100は、例えば検索エンジンのインデックスを知識データベースとして判定を行う。検索エンジンのインデックスとは、例えば、検索エンジンのAPIを利用し、入力したクエリが、ウェブ上においてどのくらいの検索結果数を得ることができるかといった数を記憶するデータベースである。
ユーザは、例えば、「クロールで泳いでいる彼女を見た」という発話をユーザ端末10に入力する。ユーザ端末10は、かかる発話を学習装置100に送信する。学習装置100は、先頭の語句が、文におけるどの文節に係っているかを判定する処理を行う。この例では、ユーザの発話の先頭は「クロールで」であるため、学習装置100は、「クロールで」の係り先を判定するものとする。
ここで、学習装置100は、「クロールで」以降の文字列の全てをクエリとするのではなく、係り先となる箇所を形態素解析等によって事前に判別する。なお、説明を簡単にするために、この例では、学習装置100は、「クロールで」「泳いでいる」「彼女を」「見た」という形態素解析の結果を一つ取得したとする。この場合、学習装置100は、「クロールで」の係り先を、「泳いでいる」、「彼女を」、「見た」という3つの候補に絞ることができる。そして、学習装置100は、対象の語句と3つの候補とを組み合わせて、「クロールで泳いでいる」、「クロールで彼女を」、「クロールで見た」という3つのクエリを生成する。
そして、学習装置100は、生成した3つのクエリをクラウドサーバ200に問い合わせる。クラウドサーバ200は、検索エンジンのインデックスを参照して、それらのクエリが「より係り先として適切であるか」を示す属性情報を検索する。具体的には、クラウドサーバ200は、検索エンジンに「クロールで泳いでいる」、「クロールで彼女を」、「クロールで見た」という3つのクエリを入力し、各々のウェブ検索結果の数を計数する。例えば、クラウドサーバ200は、「クロールで泳いでいる」では10万件、「クロールで彼女を」では500件、「クロールで見た」では1000件といった検索数を得る。
そして、クラウドサーバ200は、検索数を属性情報として、学習装置100に応答する。学習装置100は、クラウドサーバ200から取得した属性情報に基づいて、「クロールで」の係り先としての適切性を判定する。この例では、学習装置100は、最も検索数の多い「クロールで泳いでいた」が、「クロールで」の係り先として最も適切であると判定する。そして、学習装置100は、かかる判定結果を学習し、種々の語句の係り先を判定するためのモデルを生成する。
上記のように、学習装置100は、語句の係り先を判定するための学習においても、事前に発話を解析し、所定数のクエリを生成してから知識データベースに問い合わせを行うことで、効率のよい学習を行うことができる。なお、上記の処理に関して、学習装置100は、さらに問い合わせるクエリを絞り込む処理を行ってもよい。例えば、学習装置100は、ローカル側において検索APIを利用して解析を行った結果として、n−best解を得る。具体的には、学習装置100は、上記3つのクエリのうち、最上位の候補として「泳いでいる」を選択し、「見た」を次点の候補として選択する。そして、学習装置100は、選択した2つのクエリのみを知識データベースに問い合わせるようにしてもよい。このように、学習装置100は、予め問い合わせのクエリを選択することで、問い合わせの発生回数を抑えることができるので、知識データベースとの通信のスループットが低い場合であっても、効率よく学習データを得ることができる。
なお、学習装置100は、文字列以外の学習処理にかかる処理を適用させてもよい。例えば、学習装置100は、ユーザの状況に応じてユーザの本人性を判定するための本人認証モデル等の学習に上記処理を用いてもよい。具体的には、学習装置100は、ローカル側でユーザの本人性が確認できなかった場合にのみ、所定のデータベースに問い合わせを発生させ、ユーザの本人性を確認するための情報との照合を行う、等の処理を行ってもよい。
〔6−2.変換モデル〕
上述した実施形態では、学習装置100が、ユーザの発話を文字列に変換して処理を行う例を示した。この場合、発話の変換に用いる変換モデルは、例えばドメインごとに、ある発話を入力した際に、その発話を行ったユーザの意図を出力するようにモデルの学習を行うことで実現可能であり、このような学習手法については、任意の学習技術が採用可能である。
また、学習装置100は、発話からユーザの意図を示す文字列へと変換することができるのであれば、任意の変換モデルを用いて発話の変換を行ってよい。例えば、学習装置100は、word2vec等、単語を単語の相対的な意味に基づくベクトル表現へと変換する技術を用いて、発話の文字列を発話の意味を示すベクトル表現に変換し、変換したベクトル表現を、ユーザの意図を示す単語のベクトル表現へと変換する変換モデルを用いて、発話の変換を行ってもよい。
また、学習装置100は、ユーザの属性を考慮した学習が行われた変換モデルを用いてもよい。例えば、学習装置100は、ある発言とその発言を行ったユーザの属性とを入力した際に、そのユーザの意図を示す文字列へと変換するように学習が行われた変換モデルを保持してもよい。例えば、学習装置100は、ある発言を、その発言をある属性を有するユーザが発言した際のそのユーザの意図を示す文字列へと変換するように学習が行われた変換モデルを、属性ごとに保持してもよい。そして、学習装置100は、ユーザの属性に応じて、使用する変換モデルを選択し、選択した変換モデルを用いて、発言の変換を行ってもよい。また、学習装置100は、ドメインとユーザの属性との組合せごとに、異なる変換モデルを用いてもよく、各ユーザ専用の変換モデルを用いてもよい。
〔6−3.対話処理の構成〕
上述した学習装置100は、いわゆるスロットフィリングの結果を用いて応答を生成した。しかしながら、実施形態は、これに限定されるものではない。例えば、学習装置100は、ユーザの発話の意図を特定し、特定した意図からユーザとの対話の状況を判定し、判定した状況に応じた応答を生成するといった処理により、ユーザとの応答を生成するといった対話処理を実行する場合がある。このような対話処理において、学習装置100は、ユーザの発話の意図を特定する際に、上述したスロットフィリングの技術を適用し、スロットフィリングの結果に応じて、ユーザとの対話の状況を判定し、判定した状況に応じた応答を生成してもよい。すなわち、学習装置100は、ユーザの発話からユーザの意図を反映させたスロット値を得るのであれば、他の任意の処理と組み合わせて、発話に対する応答を生成してよい。
〔6−4.知識データベース〕
上述した実施形態では、学習装置100が、ネットワークを介して接続されるクラウドサーバ200を知識データベースとして利用する例を示した。しかし、知識データベースは、必ずしもクラウドのように広域ネットワークを前提とするものでなくてもよい。例えば、学習装置100は、自社のデータベースや自装置内のデータベース等、ローカルネットワークや自装置におけるデータベースを知識データベースとして利用してもよい。すなわち、学習装置100は、学習処理において、知識データベースへの問い合わせがボトルネックとなることを防止するために、ローカルネットワークや自装置におけるデータベースを利用した学習処理においても、上記実施形態に係る学習処理を実行してもよい。
〔6−5.抽出処理〕
上述した実施形態では、学習装置100が、発話からスロット値を抽出するための学習を行う例を示した。しかし、学習装置100は、上述した処理を用いて、発話からスロット値を抽出せずに発話の応答を生成する処理に関する学習を行ってもよい。例えば、学習装置100は、任意の発言の内容に基づいて、スロット値の候補からスロット値を選択してよい。例えば、学習装置100は、「腰が痛い」といった発話を受け付けた場合は、検索する施設の候補の中から「整体病院」等といったスロット値、すなわち、発話の内容と連想関係を有するスロット値を選択し、選択したスロット値「整体病院」を用いて、ユーザU1の近傍にある整体病院の情報を応答として提供してもよい。なお、このようなスロット値の選択は、連想関係を学習させたモデルにより実現可能である。
また、学習装置100は、発話からスロット値を抽出可能であるか否かを判定する処理と、発話からスロット値を抽出可能である場合に、発話からスロット値を抽出する処理と、発話からスロット値を抽出できない場合に、スロット値の候補の中からスロット値を選択する処理とを実行するように、DNN等のモデルの学習を行い、学習したモデルを用いて、上述した処理を実行してもよい。また、学習装置100は、モデルがスロット値を抽出できなかった場合には、所定の応答をユーザU1に送信し、新たな発話をユーザU1から受け付ける処理を行ってもよい。
〔6−6.クエリ生成の応用〕
上述した実施形態では、学習装置100が、部分データに対応付けられる特徴情報を所定のデータベースに問い合わせるためのクエリを生成し、生成されたクエリによる問い合わせにより取得された特徴情報に基づいて学習を行う例を示した。
ここで、実施形態に係るクエリ生成処理及び取得処理は、学習処理のみならず、ユーザへの発話の応答など、モデルを利用する処理に応用されてもよい。モデルを利用する処理は、例えば、実施形態に係るクエリ生成部133及び取得部134を少なくとも有する情報処理装置によって行われる。なお、情報処理装置と学習装置100とは説明のために区別しているのみであり、以下で説明する情報処理装置の処理は、学習装置100によって行われてもよい。
情報処理装置は、情報処理に用いられる第1データから、第1データの一部を構成する部分データに対応付けられる特徴情報を所定のデータベースに問い合わせるためのクエリを生成する。そして、情報処理装置は、生成されたクエリを所定のデータベースに問い合わせることで、部分データに対応付けられる特徴情報を取得するとともに、取得した特徴情報が対応付けられた第1データを所定のモデルに入力することで所定の結果情報を取得する。
すなわち、実施形態に係る処理は、必ずしも学習処理に利用するのみならず、発話の応答の生成等、学習されたモデルを利用する処理に応用されてもよい。例えば、情報処理装置は、受け付けた発話の全てを知識データベースに問い合わせず、任意の部分データからクエリを生成したうえで、生成したクエリを知識データベースに問い合わせる。具体的には、情報処理装置は、受け付けた発話の全ての語句を問い合わせることなく、属性情報が不明な語句や、対応付けられる属性情報の候補が複数存在する語句のみを問い合わせる。そして、情報処理装置は、問い合わせによって取得された属性情報が対応付けられた第1データをモデルに入力して、所定の出力(結果情報)を取得する。例えば、情報処理装置は、属性情報の対応付けが完了した発話を所定の応答生成モデルに入力して、対話におけるユーザへの応答を取得する。
一般に、対話システム等においては、学習のみならず、応答の生成処理においても、高精度な処理を行うために辞書データのような知識データベースを利用することを要する。そして、実施形態に係る処理は、部分データからクエリを生成して知識データベースへの問い合わせの発生を抑制する処理であることから、学習処理に限らず、応答の生成等の様々な情報処理に応用することが可能である。
〔7.ハードウェア構成〕
上述してきた実施形態に係る学習装置100や情報処理装置やユーザ端末10やクラウドサーバ200は、例えば図10に示すような構成のコンピュータ1000によって実現される。以下、学習装置100を例に挙げて説明する。図10は、学習装置100の機能を実現するコンピュータ1000の一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM1300、HDD1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
CPU1100は、ROM1300又はHDD1400に記憶されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を記憶する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を記憶する。通信インターフェイス1500は、通信網500(図3に示したネットワークNに対応)を介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータを、通信網500を介して他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、入出力インターフェイス1600を介して生成したデータを出力装置へ出力する。
メディアインターフェイス1700は、記録媒体1800に記憶されたプログラム又はデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が実施形態に係る学習装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、HDD1400には、記憶部120内のデータが記憶される。コンピュータ1000のCPU1100は、これらのプログラムを記録媒体1800から読み取って実行するが、他の例として、他の装置から通信網500を介してこれらのプログラムを取得してもよい。
〔8.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図3に示した受付部131とドメイン判定部132とは統合されてもよい。また、例えば、記憶部120に記憶される情報は、ネットワークNを介して、外部に備えられた所定の記憶装置に記憶されてもよい。
また、上記実施形態では、学習装置100が、例えば、クエリを生成する生成処理や、属性情報を取得する取得処理や、スロット抽出を学習する学習処理等を行う例を示した。しかし、上述した学習装置100は、学習装置100は、発話を分類する分類サーバ、発話を文字列へと変換する変換サーバ、発話からスロット値を抽出できるか否かを判定する判定サーバ、発話からクエリを生成する生成サーバ、発話からスロット値を抽出する抽出サーバ等が連携して動作することにより、実現されてもよい。この場合、上記の学習装置100による処理は、各サーバを含む学習処理システム1によって実現される。
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
〔9.効果〕
上述してきたように、実施形態に係る学習装置100は、クエリ生成部133(生成部の一例)と、取得部134と、学習部135とを有する。クエリ生成部133は、学習処理に用いられる第1データから、当該第1データの一部を構成する部分データに対応付けられる特徴情報を所定のデータベースに問い合わせるためのクエリを生成する。取得部134は、クエリ生成部133によって生成されたクエリを所定のデータベースに問い合わせることで、部分データに対応付けられる特徴情報を取得する。学習部135は、取得部134によって取得された特徴情報に基づいて、第1データを学習データとして所定のモデルを生成するための学習を行う。
このように、実施形態に係る学習装置100は、第1データの部分データからクエリを生成し、生成したクエリによる問い合わせを発生させる。これにより、学習装置100は、例えばネットワークを介して知識データベースの情報を得るような機械学習において、通信のスループットが比較的低い環境下であっても、効率的に学習を行うことができる。
また、クエリ生成部133は、所定のデータベースに依らずに第1データを構成する各部分データの特徴情報を対応付けることが可能か否かを判定した結果に基づいて、クエリを生成する。
このように、実施形態に係る学習装置100は、いわゆるローカル側の処理において、第1データに対応付け(ラベル付け)が可能か否かを判定した結果に基づいて、クエリを生成する。このため、学習装置100は、第1データの全てを問い合わせるのではなく、例えば特徴情報が自明でない部分データのみを問い合わせることができるので、学習処理の効率を向上させることができる。
また、クエリ生成部133は、第1データを構成する部分データに対応付けられる特徴情報の候補が複数存在する場合に、当該部分データに基づいてクエリを生成する。
このように、実施形態に係る学習装置100は、複数の候補が存在する部分データに基づいてクエリを生成する。これにより、学習装置100は、学習に利用する優先度の高い部分や、ローカル側で不明な部分などを選択して、クエリを生成することができる。このため、学習装置100は、知識データベースに問い合わせる通信量を抑えることができるので、効率的に学習を行うことができる。
また、学習部135は、過去の問い合わせによって特徴情報が所定の記憶部(例えば、記憶部120)に保持されている場合には、当該所定の記憶部に保持されている特徴情報に関して所定のデータベースへの新たな問い合わせを発生させることなく学習を行う。
このように、実施形態に係る学習装置100は、過去に問い合わせを行った場合には、ローカル側で保持されている情報(キャッシュ)を利用して学習を行ってもよい。これにより、学習装置100は、問い合わせの発生頻度を抑えることができるので、学習を迅速に行うことができる。
また、クエリ生成部133は、所定のデータベースとの間の通信に関する情報に基づいて、クエリを生成する量を調整する。
このように、実施形態に係る学習装置100は、通信環境等に応じて生成するクエリを調整してもよい。これにより、学習装置100は、通信環境に合わせて知識データベースへの問い合わせの通信量等を調整することができるので、学習処理の効率を最適化することができる。
また、クエリ生成部133は、文字列である第1データから語句を抽出し、抽出された語句に基づいてクエリを生成する。取得部134は、クエリ生成部133によって生成されたクエリに対応付けられる属性情報を取得する。学習部135は、取得部134によって取得された属性情報に基づいて学習を行う。
このように、実施形態に係る学習装置100は、文字列を第1データとした学習を行う。これにより、学習装置100は、ユーザの発話に対する応答の生成等の分野における学習を効率良く進めることができる。
また、クエリ生成部133は、第1データが含む所定の部分データにおいて、語句として抽出される候補が複数存在する場合には、形態素解析における尤度の高い順に所定数の候補を抽出してクエリを生成する。
このように、実施形態に係る学習装置100は、形態素解析において複数の候補が生じるような場合に、その部分を抽出してクエリを生成する。これにより、学習装置100は、ローカル側で属性情報を決定しきれない箇所等を選択的に問い合わせることができるため、学習処理の効率を向上させることができる。
また、クエリ生成部133は、文字列である第1データから無作為に語句を抽出し、抽出された語句に基づいてクエリを生成する。
このように、実施形態に係る学習装置100は、ランダムに抽出した語句をクエリとして生成してもよい。これにより、学習装置100は、学習に用いる全データを順に問い合わせるような処理を発生させないため、通信に係る負荷を抑制した学習を行うことができる。
また、実施形態に係る情報処理装置は、クエリ生成部133(生成部の一例)と、取得部134とを有する。クエリ生成部133は、情報処理に用いられる第1データから、当該第1データの一部を構成する部分データに対応付けられる特徴情報を所定のデータベースに問い合わせるためのクエリを生成する。取得部134は、クエリ生成部133によって生成されたクエリを所定のデータベースに問い合わせることで、部分データに対応付けられる特徴情報を取得するとともに、取得した特徴情報が対応付けられた第1データを所定のモデルに入力することで所定の結果情報を取得する。
このように、実施形態に係る情報処理装置は、第1データの部分データからクエリを生成し、生成したクエリによる問い合わせを発生させる。これにより、情報処理装置は、例えばネットワークを介して知識データベースの情報を得ることを経て行われる情報処理において、通信のスループットが比較的低い環境下であっても、効率的にモデルからの出力を得ることができる。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、推定部は、推定手段や推定回路に読み替えることができる。