(57)【要約】【課題】質問に対して適切な回答を生成することができる。【解決手段】エンティティ検出部２６が、入力されたテキストをテキストベクトルに変換すると共に、エンティティを検出し、エンティティ状態更新部２８が、テキストベクトルに基づいて、メモリプール３０に記憶されているエンティティの状態ベクトルを更新する。関連エンティティ検索部３２が、メモリプール３０から、入力された質問に関連するエンティティを検索し、出力素性ベクトル生成部３４が、検索されたエンティティの状態ベクトルに基づいて、出力素性ベクトルを生成し、応答生成部３６が、出力素性ベクトルに基づいて、応答を生成する。【選択図】図２
2017211785.tif 000002
【特許請求の範囲】
【請求項１】
入力されたテキストをテキストベクトルに変換すると共に、前記テキストに含まれるエンティティを検出するエンティティ検出部と、
前記エンティティ検出部によって変換された前記テキストベクトルに基づいて、各エンティティの状態ベクトルを記憶するメモリプールに記憶されている、前記検出されたエンティティの状態ベクトルを更新するエンティティ状態更新部と、
前記メモリプールに記憶されている各エンティティの状態ベクトルに基づいて、入力された質問に関連するエンティティを検索する関連エンティティ検索部と、
前記関連エンティティ検索部によって検索されたエンティティの状態ベクトルに基づいて、出力素性ベクトルを生成する出力素性ベクトル生成部と、
前記出力素性ベクトル生成部によって生成された前記出力素性ベクトルに基づいて、応答を生成する応答生成部と、
を含む質問応答生成装置。
【請求項２】
前記関連エンティティ検索部は、前記メモリプールに記憶されている各エンティティの状態ベクトルと、繰り返し状態ベクトルとに基づいて、入力された質問に関連するエンティティを検索し、検索されたエンティティに基づいて、前記繰り返し状態ベクトルを更新することを繰り返し、
前記出力素性ベクトル生成部は、前記関連エンティティ検索部によって繰り返し検索されたエンティティの状態ベクトルに基づいて、前記出力素性ベクトルを生成する請求項１記載の質問応答生成装置。
【請求項３】
前記関連エンティティ検索部は、前記メモリプールに記憶されている各エンティティの状態ベクトルと、前記繰り返し状態ベクトルとに基づいて求められる、各エンティティの選択確率に従って、入力された質問に関連するエンティティを選択し、前記選択されたエンティティの選択確率に基づいて、前記繰り返し状態ベクトルを更新することを繰り返し、
前記出力素性ベクトル生成部は、前記関連エンティティ検索部によって繰り返し選択された前記エンティティの状態ベクトル及び前記エンティティの選択確率に基づいて、前記出力素性ベクトルを生成する請求項２記載の質問応答生成装置。
【請求項４】
エンティティ検出部が、入力されたテキストをテキストベクトルに変換すると共に、前記テキストに含まれるエンティティを検出し、
エンティティ状態更新部が、前記エンティティ検出部によって変換された前記テキストベクトルに基づいて、各エンティティの状態ベクトルを記憶するメモリプールに記憶されている、前記検出されたエンティティの状態ベクトルを更新し、
関連エンティティ検索部が、前記メモリプールに記憶されている各エンティティの状態ベクトルに基づいて、入力された質問に関連するエンティティを検索し、
出力素性ベクトル生成部が、前記関連エンティティ検索部によって検索されたエンティティの状態ベクトルに基づいて、出力素性ベクトルを生成し、
応答生成部が、前記出力素性ベクトル生成部によって生成された前記出力素性ベクトルに基づいて、応答を生成する
質問応答生成方法。
【請求項５】
前記関連エンティティ検索部が検索することでは、前記メモリプールに記憶されている各エンティティの状態ベクトルと、繰り返し状態ベクトルとに基づいて、入力された質問に関連するエンティティを検索し、検索されたエンティティに基づいて、前記繰り返し状態ベクトルを更新することを繰り返し、
前記出力素性ベクトル生成部が生成することでは、前記関連エンティティ検索部によって繰り返し検索されたエンティティの状態ベクトルに基づいて、前記出力素性ベクトルを生成する請求項４記載の質問応答生成方法。
【請求項６】
前記関連エンティティ検索部が検索することでは、前記メモリプールに記憶されている各エンティティの状態ベクトルと、前記繰り返し状態ベクトルとに基づいて求められる、各エンティティの選択確率に従って、入力された質問に関連するエンティティを選択し、前記選択されたエンティティの選択確率に基づいて、前記繰り返し状態ベクトルを更新することを繰り返し、
前記出力素性ベクトル生成部が生成することでは、前記関連エンティティ検索部によって繰り返し選択された前記エンティティの状態ベクトル及び前記エンティティの選択確率に基づいて、前記出力素性ベクトルを生成する請求項５記載の質問応答生成方法。
【請求項７】
コンピュータを、請求項１〜請求項３のいずれか１項に記載の質問応答生成装置を構成する各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、質問応答生成装置、方法、及びプログラムに係り、特に、質問応答を生成する質問応答生成装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
質問応答は、テキストに関する深い理解が必要になる。多くの既存のシステムは本質的に深い理解ができていない。従来の研究は一般的にデータ駆動型であり、テキストの異なる構成要素の関係を深く解析せずに、品詞や単語集合 (bag of words) のような表層的な素性を用いている。これに対してメモリネットワークは、テキストにおける談話構造を解析する強力なツールを提供する。
【０００３】
非特許文献１は、あとで質問に答えられるようにすべての入力を記憶するメモリプール(memory pool)が主要な構成要素であるメモリネットワークモデルを提案している。
【０００４】
非特許文献２は、さらに注意機構(attention mechanism)をメモリネットワークに導入している。メモリを検索する際に、既存の関連するメモリに従って次に関連するメモリを予測する。
【０００５】
メモリプールを構築することによって、上記２つのモデルでは、テキストにおける長距離依存を扱うことができる。この利点により、これらのモデルは、理解型質問応答(comprehension question answering)を含む幾つかのタスクにおいて精度向上を達成している。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Sainbayar Sukhbaatar, Arthur Szlam, Jason Weston, Rob Fergus, End-To-End Memory Networks,  NIPS 2015.
【非特許文献２】Ankit Kumar, Ozan Irsoy, Peter Ondruska, Mohit Iyyer, James Bradbury, Ishaan Gulrajani, Victor Zhong, Romain Paulus, Richard Socher, Ask Me Anything: Dynamic Memory Networks for Natural Language Processing, arXiv:1506.07285 2016.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明では、質問に対して適切な回答を生成することができる質問応答生成装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明に係る質問応答生成装置は、入力されたテキストをテキストベクトルに変換すると共に、前記テキストに含まれるエンティティを検出するエンティティ検出部と、前記エンティティ検出部によって変換された前記テキストベクトルに基づいて、各エンティティの状態ベクトルを記憶するメモリプールに記憶されている、前記検出されたエンティティの状態ベクトルを更新するエンティティ状態更新部と、前記メモリプールに記憶されている各エンティティの状態ベクトルに基づいて、入力された質問に関連するエンティティを検索する関連エンティティ検索部と、前記関連エンティティ検索部によって検索されたエンティティの状態ベクトルに基づいて、出力素性ベクトルを生成する出力素性ベクトル生成部と、前記出力素性ベクトル生成部によって生成された前記出力素性ベクトルに基づいて、応答を生成する応答生成部と、を含んで構成されている。
【０００９】
本発明に係る質問応答生成方法は、エンティティ検出部が、入力されたテキストをテキストベクトルに変換すると共に、前記テキストに含まれるエンティティを検出し、エンティティ状態更新部が、前記エンティティ検出部によって変換された前記テキストベクトルに基づいて、各エンティティの状態ベクトルを記憶するメモリプールに記憶されている、前記検出されたエンティティの状態ベクトルを更新し、関連エンティティ検索部が、前記メモリプールに記憶されている各エンティティの状態ベクトルに基づいて、入力された質問に関連するエンティティを検索し、出力素性ベクトル生成部が、前記関連エンティティ検索部によって検索されたエンティティの状態ベクトルに基づいて、出力素性ベクトルを生成し、応答生成部が、前記出力素性ベクトル生成部によって生成された前記出力素性ベクトルに基づいて、応答を生成する。
【００１０】
また、本発明のプログラムは、コンピュータを、上記の質問応答生成装置を構成する各部として機能させるためのプログラムである。
【発明の効果】
【００１１】
以上説明したように、本発明の質問応答生成装置、方法、及びプログラムによれば、テキストベクトルに基づいて、メモリプールに記憶されているエンティティの状態ベクトルを更新し、入力された質問に関連するエンティティを検索し、検索されたエンティティの状態ベクトルに基づいて生成された出力素性ベクトルに基づいて、応答を生成することにより、質問に対して適切な回答を生成することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態の概要を説明するための図である。
【図２】本発明の実施の形態に係る質問応答生成装置の構成を示すブロック図である。
【図３】本発明の実施の形態に係る質問応答生成装置におけるメモリプール更新処理ルーチンの内容を示すフローチャートである。
【図４】本発明の実施の形態に係る質問応答生成装置における質問応答生成処理ルーチンの内容を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１４】
＜本発明の実施の形態の概要＞
本発明で提案するモデルは、図１に示すように、入力モジュール、生成モジュール、出力素性モジュール、及び応答モジュールから構成される。
【００１５】
入力モジュールは、一つのテキストを入力とし、これを一つのベクトルに変換する。それと同時に、テキストに含まれるすべてのエンティティを抽出する。
【００１６】
生成モジュールは、入力されたテキストに従って、関連するエンティティの状態を更新する。メモリプールに含まれていないエンティティに対して新しいメモリスロットを作成する。
【００１７】
出力素性モジュールは、入力された質問に従って、関連するエンティティを検索し、出力素性ベクトルを作成する。
【００１８】
応答モジュールは、出力素性ベクトルに従って応答を作成する。
【００１９】
このように、本発明で提案するモデルは、各入力テキストに対して、そのテキストに含まれるすべてのエンティティを検出し、メモリプール中のスロットに対応するそれらのエンティティの状態を入力テキストの内容に従って更新する。質問に対しては、関連するエンティティをメモリプールから検索し出力素性ベクトルを生成する。最終的な応答はこの出力素性ベクトルに基づいて予測される。
【００２０】
＜本発明の実施の形態の原理＞
本発明の実施の形態では、テキストをＳ1,Ｓ2,...,Ｓnとし、これに含まれるエンティティをｅ1,ｅ2,...,ｅmとする。本発明では、まず各テキストＳiをベクトル表現
2017211785.tif 000003
に変換する。各テキストについて、それに含まれるエンティティを収集し、各エンティティについて、メモリプールにおける状態ベクトルを
2017211785.tif 000004
に基づいて
【００２１】
【数１】
2017211785.tif 000005
により更新する。すべてのテキストを処理した後に、その状態により入力テキストに含まれていた情報を表現できるようなエンティティから構成されるメモリプールを構築する。
与えられたテキストを用いて答えることができるような質問qに対して、本発明の実施の形態では注意モデル (attention model)
【００２２】
【数２】
2017211785.tif 000006
【００２３】
を用いて関連するエンティティを検索する。p(ｅi, ｑ)は、エンティティｅiが質問ｑに応答するための素性ベクトルを構成する要素として選ばれる確率である。Ｑi-1は直前の繰り返しにおいて選択されたエンティティに従って計算されたベクトルである。Ｑは、p(ｅi, ｑ)を用いて新しいエンティティを調べるたびに更新される。
【００２４】
何回かの繰り返しの後に、質問qに回答するのに必要なすべての関連するエンティティを検索し、出力素性ベクトル
【００２５】
【数３】
2017211785.tif 000007
【００２６】
を生成する。そして応答 (通常は一つの単語)を
【００２７】
【数４】
2017211785.tif 000008
【００２８】
により決定する。ａ(ｑ)はその各要素が語彙中の一つの単語に対応するベクトルを生成する。ａ(ｑ)iは単語 wordiが正解である確率を示し、これが最も確率が大きい単語を回答として選ぶ。
【００２９】
本発明の実施の形態は教師ありモデルであり、その学習に注釈付きデータ (annotated data)を必要とする。注釈付きデータは、入力テキスト、(複数の) 質問、(複数の) 回答から構成される。さらに入力テキスト中のエンティティは人手または自動的に注釈付けされ、応答 (answer)に関連するエンティティも人手または自動的に注釈付けされる。
【００３０】
本発明の実施の形態では、テキストＳiをベクトル
2017211785.tif 000009
に変換するのにオートエンコーダ(autoencoder)を使用する。同じオートエンコーダを質問qをベクトル
2017211785.tif 000010
へ変換する際にも使用する。その他のパラメタは以下の（１）式〜（５）式のようにして決定する。
【００３１】
【数５】
2017211785.tif 000011
（１）
2017211785.tif 000012
（２）
2017211785.tif 000013
（３）
2017211785.tif 000014
（４）
2017211785.tif 000015
（５）
【００３２】
ここでは tanhを活性化関数 (activation function) として使用しているが、他の活性化関数を使用することも可能である。また a(q)としてソフトマックス関数の代わりにリカレントニューラルネットワーク(recurrent neural network) を使用すれば、回答として文を生成することも可能である。この場合、学習データにおける回答も文である必要がある。
【００３３】
非特許文献1と同様に、本発明の実施の形態では、入力テキストＳi、質問ｑ、正しい応答wordk、及び関連するエンティティ
2017211785.tif 000016
に対して、パラメタＵ*,ｂ*に関する以下の関数を勾配降下法 (gradient descent)により最小化する。
【００３４】
【数６】
2017211785.tif 000017
（６）
【００３５】
ここでγは学習中に決定されるマージンである。また|Θ2|はすべてのパラメタの二乗和 (squared sum)であり、正則化のために使用される。
【００３６】
＜質問応答生成装置のシステム構成＞
次に、本発明の実施の形態に係る質問応答生成装置の構成について説明する。図２に示すように、本発明の実施の形態に係る質問応答生成装置１００は、ＣＰＵと、ＲＡＭと、後述するメモリプール更新処理ルーチン及び質問応答生成処理ルーチンを実行するためのプログラムや各種データを記憶したＲＯＭと、を含むコンピュータで構成することが出来る。この質問応答生成装置１００は、機能的には図２に示すように入力部１０と、演算部２０と、出力部４０とを備えている。
【００３７】
入力部１０は、訓練データの入力を受け付ける。ここで、訓練データは、入力テキストＳi、質問ｑ、正しい応答wordk、および関連するエンティティ
2017211785.tif 000018
からなる複数のデータセットである。
【００３８】
また、入力部１０は、複数の入力テキストと、質問とを受け付ける。
【００３９】
演算部２０は、学習部２２と、パラメタ記憶部２４と、エンティティ検出部２６と、エンティティ状態更新部２８と、メモリプール３０と、関連エンティティ検索部３２と、出力素性ベクトル生成部３４と、応答生成部３６とを備えている。
【００４０】
学習部２２は、入力部１０により受け付けた訓練データに基づいて、上記（６）式の値を最小化するように、上記（１）式〜（５）式に含まれるパラメタＵ*,ｂ*を学習する。
【００４１】
学習部２２による学習で得られたパラメタＵ*,ｂ*が、パラメタ記憶部２４に格納される。
【００４２】
エンティティ検出部２６は、入力部１０により受け付けた複数の入力テキストＳiの各々について、入力テキストＳiをテキストベクトル
2017211785.tif 000019
に変換すると共に、入力テキストＳiに含まれるエンティティｅjを検出する。エンティティとして、例えば、入力テキストに含まれる動詞や名詞などの内容語を検出すればよい。
【００４３】
エンティティ状態更新部２８は、エンティティ検出部２６によって検出されたエンティティｅjの各々について、当該エンティティｅjを含む入力テキストＳiのテキストベクトル
2017211785.tif 000020
に基づいて、上記（１）式に従って、メモリプール３０に記憶されている、当該エンティティｅjの状態ベクトル
2017211785.tif 000021
を更新する。なお、エンティティｅjが、メモリプール３０に記憶されていない場合には、新しいメモリスロットを作成して、当該エンティティｅjの状態ベクトル
2017211785.tif 000022
を格納する。
【００４４】
メモリプール３０は、各エンティティｅjについて、当該エンティティｅjの状態ベクトル
2017211785.tif 000023
を記憶している。
【００４５】
関連エンティティ検索部３２は、メモリプール３０に記憶されている各エンティティｅjの状態ベクトル
2017211785.tif 000024
と、ｉ−１回目の繰り返しで得られた繰り返し状態ベクトルＱi-1とに基づいて上記（２）式で求められる、各エンティティｅjの選択確率ｐ（ｅi,ｑ）に従って、入力部１０で受け付けた質問ｑに関連するエンティティｅiを選択し、選択されたエンティティｅiの選択確率ｐ（ｅi,ｑ）に基づいて、上記（３）式に従って、繰り返し状態ベクトルＱiを更新する。関連エンティティ検索部３２は、上記の関連するエンティティｅiの選択及び繰り返し状態ベクトルＱiの更新を所定回数だけ繰り返す。
【００４６】
出力素性ベクトル生成部３４は、関連エンティティ検索部３２によって繰り返し検索されたエンティティｅiの状態ベクトル
2017211785.tif 000025
、エンティティｅiの選択確率ｐ（ｅi,ｑ）、及び最終的に得られた繰り返し状態ベクトルＱに基づいて、上記（４）式に従って、出力素性ベクトルｏqを生成する。
【００４７】
応答生成部３６は、出力素性ベクトル生成部３４によって生成された出力素性ベクトルｏqに基づいて、上記（５）式に従って、単語ｗｏｒｄiが正解である確率ａ（ｑ）iを計算し、応答となる単語を選択し、出力部４０により出力する。
【００４８】
＜質問応答生成装置の作用＞
次に、本実施の形態に係る質問応答生成装置１００の作用について説明する。まず、訓練データが、質問応答生成装置１００に入力されると、質問応答生成装置１００の学習部２２によって、上記（１）式〜（５）式に含まれるパラメタＵ*,ｂ*が学習され、パラメタ記憶部２４に格納される。
【００４９】
また、複数の入力テキストが、質問応答生成装置１００に入力されると、質問応答生成装置１００によって、図３に示すメモリプール更新処理ルーチンが実行される。
【００５０】
まず、ステップＳ１００において、入力テキストＳiをテキストベクトル
2017211785.tif 000026
に変換すると共に、入力テキストＳiに含まれるエンティティｅjを検出する。
【００５１】
そして、ステップＳ１０２において、上記ステップＳ１００で検出されたエンティティｅjについて、当該エンティティｅjを含む入力テキストＳiのテキストベクトル
2017211785.tif 000027
に基づいて、上記（１）式に従って、メモリプール３０に記憶されている、当該エンティティｅjの状態ベクトル
2017211785.tif 000028
を更新する。
【００５２】
ステップＳ１０４では、上記ステップＳ１００で検出されたエンティティｅjの全てについて、上記ステップＳ１０２の処理を実行したか否かを判定し、上記ステップＳ１０２の処理を実行していないエンティティｅjが存在する場合には、上記ステップＳ１０２へ戻り、当該エンティティｅjを対象として、上記ステップＳ１０２の処理を実行する。一方、上記ステップＳ１００で検出されたエンティティｅjの全てについて、上記ステップＳ１０２の処理を実行した場合には、ステップＳ１０６において、全ての入力テキストについて、上記ステップＳ１００〜Ｓ１０４の処理を実行したか否かを判定し、上記ステップＳ１００〜Ｓ１０４の処理を実行していない入力テキストが存在する場合には、上記ステップＳ１００へ戻り、当該入力テキストを対象として、上記ステップＳ１００〜Ｓ１０４の処理を実行する。一方、全ての入力テキストについて、上記ステップＳ１００〜Ｓ１０４の処理を実行した場合には、メモリプール更新処理ルーチンを終了する。
【００５３】
次に、質問ｑが、質問応答生成装置１００に入力されると、質問応答生成装置１００によって、図４に示す質問応答生成処理ルーチンが実行される。
【００５４】
ステップＳ１１０において、メモリプール３０に記憶されている各エンティティｅjの状態ベクトル
2017211785.tif 000029
と、繰り返し状態ベクトルの初期値Ｑ0又は前回のステップＳ１１２で更新された繰り返し状態ベクトルＱi-1とに基づいて上記（２）式で求められる、各エンティティｅjの選択確率ｐ（ｅi,ｑ）に従って、入力部１０で受け付けた質問ｑに関連するエンティティｅiを選択する。
【００５５】
そして、ステップＳ１１２において、上記ステップＳ１１０で選択されたエンティティｅiの選択確率ｐ（ｅi,ｑ）に基づいて、上記（３）式に従って、繰り返し状態ベクトルＱiを更新する。
【００５６】
ステップＳ１１４では、上記ステップＳ１１０、Ｓ１１２の処理を所定回数だけ繰り返したか否かを判定し、所定回数繰り返していない場合には、上記ステップＳ１１０へ戻る。一方、上記ステップＳ１１０、Ｓ１１２の処理を所定回数だけ繰り返した場合には、ステップＳ１１６において、上記ステップＳ１１０で繰り返し選択されたエンティティｅiの状態ベクトル
2017211785.tif 000030
、エンティティｅiの選択確率ｐ（ｅi,ｑ）、及び最終的に得られた繰り返し状態ベクトルＱに基づいて、上記（４）式に従って、出力素性ベクトルｏqを生成する。
【００５７】
そして、ステップＳ１１８では、上記ステップＳ１１６で生成された出力素性ベクトルｏqに基づいて、上記（５）式に従って、単語ｗｏｒｄiが正解である確率ａ（ｑ）iを計算し、応答となる単語を選択し、出力部４０により出力して、質問応答生成処理ルーチンを終了する。
【００５８】
以上説明したように、本発明の実施の形態に係る質問応答生成装置によれば、テキストベクトルに基づいて、メモリプールに記憶されているエンティティの状態ベクトルを更新し、入力された質問に関連するエンティティを検索し、検索されたエンティティの状態ベクトルに基づいて生成された出力素性ベクトルに基づいて、応答を生成することにより、質問に対して適切な回答を生成することができる。
【００５９】
また、本発明の実施の形態では、テキストが持っている情報は、テキストに含まれるエンティティを用いて表現できると仮定し、エンティティの状態は分散表現(distributed representation)を用いて表現する。エンティティに基づくメモリネットワークモデルは、テキストが持っている情報に従ってエンティティの状態を更新するよう学習され、質問に対する応答は、エンティティの状態に基づいて生成される。このように、新たに考案されたエンティティに基づくメモリネットワーク(entity-based memory network)を用いて質問応答(question answering)の品質を向上することができる。
【００６０】
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【００６１】
例えば、パラメタ記憶部２４及びメモリプール３０は、外部に設けられ、質問応答生成装置１００とネットワークで接続されていてもよい。
【００６２】
上述の質問応答生成装置１００は、内部にコンピュータシステムを有しているが、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
【００６３】
例えば、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
【符号の説明】
【００６４】
１０   入力部
２０   演算部
２２   学習部
２４   パラメタ記憶部
２６   エンティティ検出部
２８   エンティティ状態更新部
３０   メモリプール
３２   関連エンティティ検索部
３４   出力素性ベクトル生成部
３６   応答生成部
４０   出力部
１００ 質問回答生成装置
【図１】
2017211785.tif 000031
【図２】
2017211785.tif 000032
【図３】
2017211785.tif 000033
【図４】
2017211785.tif 000034