添付図面を参照しながら本発明の実施形態を説明する。可能な場合には、同一部分には同一の符号を付して、重複する説明を省略する。
図1は、本実施形態の情報処理システムの機能を示すブロック図である。
図1に示すように、情報処理システムは、携帯電話等のユーザ端末30、質問回答フロントサーバ50、知識検索回答サーバ100、検索エンジン利用回答サービスサーバ150及び複数のその他回答サーバ60(その他回答サーバ60A、その他回答サーバ60B、・・・)から構成される。本実施形態では、ユーザ端末30が端末装置として機能し、知識検索回答サーバ100が情報処理装置として機能する。
ここでユーザ端末30、質問回答フロントサーバ50、知識検索回答サーバ100、検索エンジン利用回答サービスサーバ150、及びその他回答サーバ60はそれぞれネットワークを介して接続されているとしているが、ネットワークはインターネットなどの公衆通信網から専用線、ならびに同一物理装置内の通信バスでも構わず、その物理的な配置は問わない。また、質問回答フロントサーバ50や知識検索回答サーバ100の各機能も単一のサーバ装置内に配置されている必要はなく、物理的な構成は問わない。それぞれがLAN(Local Area Network)やインターネットで接続された別々のサーバ装置に配置されている場合も含む。
図2は、ユーザ端末30、質問回答フロントサーバ50、及び知識検索回答サーバ100のハードウェア構成図である。図2に示されるユーザ端末30、質問回答フロントサーバ50、及び知識検索回答サーバ100は、物理的には、図2に示すように、CPU11、主記憶装置であるRAM12及びROM13、入力デバイスであるキーボード及びマウス等の入力装置14、ディスプレイ等の出力装置15、ネットワークカード等のデータ送受信デバイスである通信モジュール16、ハードディスクまたは半導体メモリ等の補助記憶装置17などを含むコンピュータシステムとして構成されている。図1における各機能は、図2に示すCPU11、RAM12等のハードウェア上に所定のコンピュータソフトウェアを読み込ませることにより、CPU11の制御のもとで入力装置14、出力装置15、通信モジュール16を動作させるとともに、RAM12や補助記憶装置17におけるデータの読み出し及び書き込みを行うことで実現される。以下、図1に示す機能ブロックに基づいて各機能ブロックを説明する。
ユーザ端末30は、入力装置を介して、質問文を受け付けると、ネットワークを介して質問回答フロントサーバ50へ質問文を送信すると共に当該質問文の回答要求を行う。そして、ユーザ端末30は、質問回答フロントサーバ50から回答結果を受信し、当該回答結果を表示出力する。
質問回答フロントサーバ50は、回答サービス候補判定部51、回答生成部52、及びサービス制御部53を有する。
回答サービス候補判定部51は、ユーザ端末30から受け取った質問文を読み込み、知識検索回答サーバ100、及び複数のその他回答サーバ60の内、何れのサーバへ質問要求すべきかを判断する。本実施形態では、回答サービス候補判定部51は、質問文に含まれる単語によって回答要求対象のサーバを判定するものとする。
具体的に、回答サービス候補判定部51は、質問文の語尾が「教えて」である場合、知識検索回答サーバ100を回答候補サーバとする。回答サービス候補判定部51は、質問文の語尾が「行きたい」である場合、その他回答サーバ60Aを回答候補サーバとする。回答サービス候補判定部51は、質問文に「天気」が含まれている場合、その他回答サーバ60Bを回答候補サーバとする。
本実施形態では、質問回答フロントサーバ50は、全般的に歴史の事実などの一般的な知識に関する質問については、知識検索回答サーバ100に回答要求し、公共交通機関の経路検索についての質問については、その他回答サーバ60Aに回答要求し、天気予報に関する質問については、その他回答サーバ60Bに回答要求するものとする。
そして、回答候補サーバは、複数判定され得る。例えば「東京の天気を教えて」という質問については上記の判定方式の下では知識検索回答サーバ100及びその他回答サーバ60Bが回答候補サーバになる。
なお、その他回答サーバ60はここで述べた以外の様々なサービスを担当し得る。例えば、音楽データを検索するサービスであっても良いし、ナビゲーションシステムであっても良いし、ユーザ端末に搭載されているメーラ等の機能を起動する指示を判断するサービスであっても良い。
サービス制御部53は、ユーザ端末30とのデータの送受信や知識検索回答サーバ100とのデータの送受信を主に行う。サービス制御部53は、知識検索回答サーバ100及び複数のその他回答サーバ60から回答を受け取り、その回答種別に応じて次の回答候補サーバに回答要求するか否か判断する。回答種別には、何らかの意味のある答え(質問に対する正常な回答)が得られている場合、回答が0件の場合、回答対応範囲外である場合の三通りの種別が含まれる。
回答が0件の場合は、質問文を受け付けたサーバが回答するサービス範囲ではあるが、それを回答するに充分なデータが存在しなかったことを示し、回答対応範囲外の場合は、質問文を受け付けたサーバが回答するサービス範囲内の質問ではなかったことを示している。
実際に質問文に対応する回答を準備する各サーバがより詳しく質問文の内容と各サーバ自体が回答すべき範囲を比較した上で対応範囲外の回答をすることで、質問回答フロントサーバ50は各サーバの詳細な対応範囲を意識することなく質問文を転送することができる。
回答要求したサーバから、対応範囲外である旨の回答を取得した場合、サービス制御部53は、他の回答候補サーバへ質問の回答要求を送信し、回答を得る。たとえば「東京の天気を教えて」といった質問をいったん知識検索回答サーバ100へ送信した後、対応範囲外である旨の回答を得た場合、次にその他回答サーバ60へ質問の回答要求を送信し、回答を得る。
サービス制御部53は、全ての回答候補サーバから質問文に対する回答を得た結果、すべてのサーバから「対応範囲外」の回答を得た場合ならびに回答サービス候補判定部51によって回答サービス候補が無いと判定された場合は、回答生成部52に「対応範囲外」の信号を転送する。回答が0件もしくは何らかの意味のある回答が得られた場合は、サービス制御部53は、得られた回答をそのまま回答生成部52へ送信する。
回答生成部52は、サービス制御部53から得られた回答状況に応じてユーザ端末30へ転送するための回答ユーザインタフェースを作成する。回答ユーザインタフェースはタッチパネル等の画面へ出力するためのGUI(グラフィカルユーザインタフェース)であっても良いし、音声回答用の読み上げ文章データ、又はこれらの二つを組み合わせたものであっても良い。
回答生成部52は、回答に何らかの意味がある回答が得られている場合は、知識検索回答サーバ100やその他回答サーバ60から受信した情報(例えば、画面情報等)をそのままユーザ端末30に表示させる。ユーザ端末30は、「回答0件」ならびに「対応範囲外」である場合についてはその旨を区別してユーザに提示する。
図3に「回答0件」と「対応範囲外」をユーザ端末30で表示している例を示す。図3(A)は、回答0件である場合の画面例である。回答0件は暗にユーザが、対応サービスではあるが回答データが存在しない質問を送信した旨を意味している。図3(B)は、対応範囲外である場合の画面例である。対応範囲外の場合は、回答要求した質問を情報システムでは答えることができないことを意味している。ユーザ端末30は、これらの文字列を音声出力するようにしても良い。このように、回答が得られない場合に、回答が存在しないか、知識検索回答サーバ100で対応可能な質問ではなかったかを判別させることができる。
図4に、正常に回答結果を取得した場合の例を示す。図4(A)は、文字により回答する場合の例を示し、図4(B)は、画像を用いて回答する例を示す。このように、質問文に対する回答結果に応じてユーザインタフェースを変更するようにしても良い。また、質問のパターンに応じて、回答結果のユーザインタフェースを変更するようにしても良い。これにより、ユーザの理解度を向上させることができる。
続いて、図1に戻り、知識検索回答サーバ100の説明をする。知識検索回答サーバ100は、入出力制御部101(質問文取得手段、回答出力手段)、回答制御部102(回答生成手段)、サービス対象外判定部103、検索エンジン利用好適判定部104(質問文種類判定手段)、ルール型検索部105(定義型質問回答部)、正規表現型検索部106、エンティティ‐属性型検索部107(属性型質問回答部)、プログラム型回答生成部108(プログラム回答部)、ルール‐回答表110、エンティティ‐属性値表111、属性表示形式表112及び正規表現ルール表113から構成される。そして、ルール型検索部105、正規表現型検索部106、エンティティ‐属性型検索部107、及びプログラム型回答生成部108が回答手段として機能する。
入出力制御部101は、質問回答フロントサーバ50とのネットワークを介したデータの送受信を行う。具体的には、回答制御部102から取得した回答結果の出力をしたり、ユーザ端末30が送信した質問文を受け取った後に当該質問文を回答制御部102へ送信したりする。入出力制御部101は、回答制御部102が生成した質問文の回答結果(0件、対応範囲外、もしくはルール型・正規表現型・エンティティ-属性型・検索エンジン利用回答サービスのいずれかの検索結果)を受信し、当該回答結果を質問回答フロントサーバ50へ送信する。
回答制御部102は、質問文の回答生成に関する制御を行う。具体的には、サービス対象外判定部103に質問文がサービス対象外であるか否かを判定させたり、検索エンジン利用好適判定部104に検索エンジン利用回答サービスサーバ150に質問文を回答させた方が良いか否かを判定させたり、ルール型検索部105、正規表現型検索部106、及びエンティティ‐属性型検索部107に質問文の回答依頼をしたり、ルール型検索部105、正規表現型検索部106、及びエンティティ‐属性型検索部107から取得した回答に基づいた回答結果の生成をしたりする。
回答制御部102は、入出力制御部101から質問文を受け取り、サービス対象外判定部103に知識検索回答サーバ100が回答可能な質問であるか否かを判定させる。回答制御部102は、サービス対象外判定部103から「対象範囲外」との情報を取得した場合は、その旨を回答結果として入出力制御部101へ転送する。回答制御部102は、「対象範囲外」との情報を取得しなかった場合は、検索エンジン利用好適判定部104に質問文を送信する。
回答制御部102は、検索エンジン好適判定部104から検索エンジン利用回答サービスサーバ150での回答が好適であるとの返答が得られた場合、質問文を検索エンジン利用回答サービスサーバ150に送信し、検索エンジン利用回答サービスサーバ150へ回答依頼をする。回答制御部102は、検索エンジン利用回答サービスサーバ150から取得した結果(0件もしくは1件以上)を回答結果として、入出力制御部101へ送信する。
検索エンジン利用回答サービスサーバ150での回答を利用することが好適ではないとの返信が得られた場合、回答制御部102は、ルール型検索部105、正規表現型検索部106、エンティティ‐属性型検索部107のそれぞれに質問文を送信し、いずれかから回答が得られた時点で、得た回答に基づいて回答結果を生成し、生成した回答結果を入出力制御部101へ送信する。なお、回答制御部102は、ルール型検索部105、正規表現型検索部106、及びエンティティ‐属性型検索部107の内、複数から回答を得て、全ての回答結果を生成するようにしても良いし、予め定められた優先順位等に基づいて選択的に回答結果を生成するようにしても良い。
回答制御部102は、ルール型検索部105、正規表現型検索部106、エンティティ‐属性型検索部107の何れからも、正常な回答が得られなかった場合は、検索エンジン利用回答サービスサーバ150に質問文を送信し、その結果(0件もしくは1件以上)を回答結果として、入出力制御部101へ送信する。
サービス対象外判定部103は、質問文がサービス対象であるか否かを判定する。サービス対象外判定部103は、回答制御部102から質問文を受け取り、その質問が知識検索回答サーバ100で回答すべきものであるか否かを質問回答フロントサーバ50の回答サービス候補判定部51より詳細に判定する。
具体的に、サービス対象外判定部103は、「教えて」とは入っているが歴史の事実などの一般的な知識に関する質問ではないことが分かるようなキーワード(「かっこいい」「かわいい」などの主観的な質問を示すものなど)が含まれていた場合や、雑談を示すキーワード(ユーザ端末30の利用者の名前など)、不適切な話題(アダルト分野の質問や領土問題など政治的な主義・主張が関わるものなど)が入っていた場合に知識検索回答サーバ100のサービス対象外であると判定し、その旨を回答制御部102へ送信する。
検索エンジン利用好適判定部104は、質問文の内容に基づいて、検索エンジン利用回答サービスサーバ150に回答が好適であるか否かを判定する。検索エンジン利用好適判定部104は、回答制御部102から質問文を受け取り、知識検索回答サーバ100で対応すべきではあるが、静的なデータベースや固定のプログラムによる回答では回答できないような幅広い知識に関する質問であるか否かを判定する。本実施形態では、物事の理由を尋ねる質問をそのような質問として捉える。具体的には「何故」「なぜ」「理由」「わけ」といったキーワードが質問文に含まれている場合、検索エンジンを使った回答が好適であると判定し、判定結果を回答制御部102へ送信する。
なお、検索エンジン利用回答サービスサーバ150は、インターネット上のWebサイトをクローリングし、その内容から検索を行って結果を回答するサービスを行う。検索エンジン利用回答サービスサーバ150は、インターネットポータルページで提供されている一般的な検索エンジンを利用してサービス提供しても良いし、より用途に特化したユーザ参加型のQ&Aサービスを提供するようにしても良い。検索エンジン利用回答サービスサーバ150は、ルール型検索機能・正規表現型検索機能・エンティティ-属性型検索機能で回答を準備することを意図していない知識についての回答することを目的に設けられている。
回答制御部102が、検索エンジン利用回答サービスサーバ150へ質問文を送信すると、検索エンジン利用回答サービスサーバ150から質問文の内容を含むWebサイトの検索結果が返却される。検索エンジン利用回答サービスサーバ150は、より高い精度を提供する場合は、検索結果中に出現した単語を出現数の順に並べ、最も高いものを回答とするなど統計的な処理を行っても良い。
ルール型検索部105は、ルール‐回答表110に蓄積された情報に従って、ある特定の言い回しによる質問文に固定の回答を検索し、検索結果を回答制御部102へ送信する。なお、質問文から一意に定まる質問を定義型質問という。ルール‐回答表110の例を図5に示す。ルール‐回答表110は、ルール、回答、回答へ付与する敬称・単位を含む。ルール型検索部105は、質問文を検索条件として、ルール‐回答表110を検索する。具体的に、ルール型検索部105は、まず特定の語尾(「を教えて」「は誰」「は何」など)を質問文から削除した後、削除した質問文を検索キーとして、ルール‐回答表110のルールとの完全一致・前方一致検索もしくは部分一致検索を行う。
ルール型検索部105は、該当するレコードがある場合、当該レコードに含まれる回答と、回答への敬称・単位とを取り出して、取り出した情報を回答制御部102へ送信する。回答制御部102は、ルール型検索部105から取得した情報に基づいて回答結果を生成する。回答制御部102は、例えば”[質問文]についてお調べしたところ答えは[回答][回答の敬称・単位]です。”といった形で入力の質問文と回答、ならびに敬称・単位を連結した文章を回答結果として生成する。
具体例として、「世界一高い山は何」という質問文をルール型検索部105が受け付けた場合、まず、ルール型検索部105は、質問文の語尾を削除して「世界一高い山」という検索キーを作成する。ルール型検索部105は、検索キーを用いて、ルール‐回答表110のルールに対して検索すると、回答が「エベレスト」であり、回答への敬称・単位が、何もないレコードを検索する。ルール型検索部105は、検索したレコードに基づいた回答を回答制御部102へ送信する。ルール型検索部105が送信した内容に基づいて、回答制御部102が生成した回答結果は、「世界一高い山は何についてお調べしたところ答えはエベレストです。」となる。
一部のルール‐回答表110のレコードには回答にどのプログラムを起動すべきかと、それに引き渡す引数とを有するものが存在する。これは固定のデータではなく、後述するプログラム型回答生成部108により特定のプログラムを使って、回答を生成する必要があることを意味している。具体例として、「今何時」という質問文をルール型検索部105が受け付けた場合、ルール型検索部105は、プログラム型回答生成部108に、引数を「日本」としてプログラム1を起動することにより得られる回答を要求する。このように、ルール型検索部105は、質問文に対応するルール‐回答表110のルールの回答がプログラムの回答を必要とする場合、すなわち、質問文にプログラム演算を必要と解釈できる文言が含まれる場合、プログラム型回答生成部108による回答を要求する。なお、図5の例では、引数がルール‐回答表110中に定義されているが、質問文中から引数に対応する文言を抽出するようにしても良い。質問文中から引数部分を判定する処理の例は、後述する。
ルール型検索部105は、上述のような、起動プログラムや引数を有するレコードを検索した場合は、当該レコードに含まれるプログラム及び引数を、プログラム型回答生成部108へ送信し、プログラム型回答生成部108から取得した情報を回答の形に編集して回答制御部102へ送信する。
正規表現型検索部106は、いわゆる正規表現型で記載されている質問文に対する回答を行う。具体的には、正規表現型検索部106は、回答制御部102から得られる質問文に対し、正規表現ルール表113に保存された情報を参照して回答を生成し、当該回答を回答制御部102へ出力する。ここで、正規表現ルール表113を図6に示す。図6に示すように、正規表現ルール表113は、「正規表現パターン」と、「回答生成ルール」と、「回答への敬称・単位」とが対応付けられて保存されている。正規表現型検索部106は、正規表現と呼ばれる柔軟なパターンマッチを実現する表記方法に基づいた処理エンジンを使い、そのパターンに合致した場合にそれに対応するプログラムを起動する。正規表現の処理エンジンはJava(登録商標)などの様々な汎用プログラミング言語で標準のライブラリとして提供されており、本実施形態における正規表現型検索部106でもそれらをそのまま活用することを想定する。
正規表現型検索部106は、まず質問文に対応する、正規表現ルール表113の正規表現パターンが存在するか否かを判断する。図6の1行目の正規表現パターンは、任意の文字列に続き、「は今何時」という文字列が続いた場合にマッチすることを意味している。例えば「ロンドンは今何時」という質問が入力された場合このパターンにマッチする。
また、「正規表現パターン」の丸カッコで囲まれた部分は、その正規表現パターンに対応づいたプログラムに対する引数として使うことを意味している。この例では「ロンドン」が回答生成ルールの引数に使用される。
正規表現型検索部106は、質問文に対応する、正規表現ルール表113の正規表現パターンが存在する場合、その正規表現パターンに対応づいたプログラムを起動することを、プログラム型回答生成部108に通知する。
プログラム型回答生成部108は、引数とともに指定されたプログラムを起動し、回答を出力する。上記の例では対応する都市の時刻を生成(「9時59分」など)し正規表現型検索部106へ通知する。
正規表現型検索部106は、プログラム型回答生成部108から回答を取得すると、当該回答を回答制御部102へ送信する。回答制御部102は、取得した回答に基づいて、出力用の回答結果を生成する。回答制御部102は、例えばルール型検索部105と同様に「[質問文]についてお調べしました。答えは[プログラム型回答生成部から得られた回答][回答の敬称・単位]です。」といった文章を質問文・回答・回答の敬称・単位を使って作成する。
エンティティ‐属性型検索部107は、所定の対象物の属性を問い合わせる質問文(属性型質問)に対する回答を行う。具体的に、エンティティ‐属性型検索部107は、質問文から、その質問文でユーザが問い合わせようとしている対象物を表現するキー情報(エンティティ検索キー)ならびにその対象物の側面を示すキー情報(属性検索キー)を抽出する。
これらの抽出にはさまざまな方法が考えられるが、本実施形態では、エンティティ‐属性型検索部107は、キーワードの組合せの場合は一つ目のキーワードをエンティティ検索キー、二つめのキーワードを属性検索キーとして判断する。例えば「○△ 監督」というキーワードの場合は「○△」をエンティティ検索キー、「監督」を属性検索キーと判断する。
他にも自然文質問を対象とする場合は「○○の監督は誰」といった形のルール(○○の部分は任意の文字列)と属性を対応付けた形でシステムが受け入れ可能な属性について準備しておき、そのパターンに当てはまった場合のみ○○の部分をエンティティ検索キー、マッチしたパターンに対応付けられた属性をその質問の属性検索キーとする方法などが考えられる。
エンティティ‐属性型検索部107は、これらの検索キーを抽出したあと、エンティティ-属性値表111を参照して答えにあたる値を検索する。エンティティ-属性値表111の例を図7に示す。図7に示すように、エンティティ-属性値表111は、「対象」と「属性」と「値」とが関連付けられた情報を管理する。
エンティティ‐属性型検索部107は、エンティティに対してはエンティティ検索キーを部分一致検索条件、属性に対して属性検索キーを完全一致の検索条件として、行を抽出する。上記のエンティティ検索キーが「○△」、属性検索キーが「監督」であるような質問の場合、図7の例では「○△と秘密の部屋」の監督としてAAAAAA、「○△と△×の囚人」の監督としてBBBBBB、「○△と死の秘宝」の監督としてCCCCCCが抽出される。
続いて、エンティティ‐属性型検索部107は、属性表示形式表112に対して、エンティティ-属性値表111から検索した属性をキーにしてレコードを取り出す。属性表示形式表112の例を図8に示す。属性表示形式表112は、「属性」と、「エンティティへの敬称・単位」と、「値への敬称・単位」と、「プログラム回答有無」とが対応付けられた情報を管理している。エンティティ‐属性型検索部107は、エンティティ-属性値表111や属性表示形式表112から取り出したレコードの情報を回答として、回答制御部102へ送信する。
回答制御部102は、例えば「[抽出したエンティティ][エンティティの敬称・単位]の[属性]は、[値][値の敬称・単位]です。」といった形で文章を生成する。上記の例では、「○△と秘密の部屋の監督は、AAAAAAさんです。」「○△と△×の囚人の監督は、BBBBBBさんです。」「○△と死の秘宝の監督は、CCCCCCさんです。」の三つの文章が答えとなる。
また、エンティティ‐属性型検索部107は、質問文中から特定の属性検索キーが抽出された場合に、プログラム型回答生成部108にその旨を通知して、プログラム型回答生成部108からプログラムによる回答を取得しても良い。例えば、質問文が「次の満月は?」である場合、エンティティ‐属性型検索部107は、図8の属性表示形式表112の属性に「満月」を含むレコードを特定し、属性が「満月」であるレコードのプログラム回答有無にプログラム名が含まれているので、プログラム型回答生成部108に対して、引数を「次」として、プログラム3を用いた回答を要求する。そして、質問文が「来週の木曜日は?」である場合、エンティティ‐属性型検索部107は、質問文中に、週に関する情報である「来週」と、曜日である「木曜日」とが含まれるので、曜日から日付を回答要求していると判断し、図8の属性表示形式表112の属性が「曜日から日付」であるレコードを特定し、当該レコードのプログラム回答有無には、プログラム名が含まれているので、プログラム型回答生成部108に対して、引数を、「来週」及び「木曜日」として、プログラム4を用いた回答を要求する。そして、質問文が「来週木曜日は何の日?」である場合、エンティティ‐属性型検索部107は、「何の日」という文言から祝日・記念日の回答要求をしていると判断し、図8の属性表示形式表112の属性が「祝日・記念日」であるレコードを特定し、当該レコードのプログラム回答有無には、プログラム名が含まれているので、プログラム型回答生成部108に対して、引数を「来週木曜」として、プログラム5を用いた回答を要求する。
このように、エンティティ‐属性型検索部107は、質問文に対応する属性表示形式表112のレコードのプログラム回答有無の情報によりプログラムの回答を必要とすると判断できる場合、すなわち、質問文にプログラム演算を必要と解釈できる文言が含まれる場合、プログラム型回答生成部108による回答を要求する。
なお、引数部分を判定する処理は、正規表現ルール表113に正規表現パターンを利用するようにしても良い。例えば「○○は何の日」というパターンにマッチした場合、図6に示す正規表現ルールの二番目に存在するルールを起動し、その後の引数の処理を行うなどが考えられる。
プログラム型回答生成部108は、ルール型検索、正規表現型検索、エンティティ-属性型検索のそれぞれのルールからプログラムの識別子と引数を与えられ、対応するプログラムを起動し計算によって得られた回答を呼び出し元に返却する。プログラム型回答生成部108は、予め固定のデータによって回答ができないような質問に対して、動的に回答を生成して呼び出し元へ返却する。
例えば引数に都市名を受け入れ、その都市の現在時刻を返却するプログラムや、引数に絶対的・相対的な日付を受け入れ、その日付の祝日・記念日を返却するプログラムが考えられる。なお、プログラム型回答生成部108は、引数を取得することなく、プログラム演算結果を出力するだけでも良い。例えば、引数無しで現在時刻を出力するプログラムが該当する。
なお、サービス対象外判定部103、検索エンジン利用好適判定部104、ルール型検索部105、正規型表現検索部106、及びエンティティ-属性検索部107のそれぞれが行う、サービス対象外判定、検索エンジン利用好適判定、ルール型検索、正規表現型検索、及びエンティティ-属性検索は、この順に質問文を転送されるものとして記載をしたが、その一部を一つの機能としてまとめて実施しても構わない。例えばルール型検索の一部のルールにサービス対象外を示すフラグや検索エンジン利用好適を示すフラグを設定しておき、それにマッチした場合にサービス対象外の回答や検索エンジン利用回答サービスサーバ150への質問文を送信するようにしても良い。
また、エンティティ-属性型検索107がエンティティ-属性型検索をするために、サービス対象外を示す属性や検索エンジン利用回答サービスを使用することが好適である旨を示す属性をエンティティ‐属性値表111又は属性表示形式表112等に保持するようにしても良い。
続いて、上述のように構成された質問回答フロントサーバ50及び知識検索回答サーバ100の動作について説明する。
最初に質問回答フロントサーバ50の動作について図9に示すフローチャートを用いて説明する。
質問回答フロントサーバ50のサービス制御部53は、ユーザ端末30から質問文を受信すると、当該質問文を受け付ける(ステップS1)。
そして、回答サービス候補判定部51は、回答サービス候補の判定を行う(ステップS2)。回答サービス候補の判定処理の詳細は、後述する。
続いて、サービス制御部53は、回答サービス候補判定部51が候補としたサーバに対して、質問文を送信すると共に、回答要求を行う(ステップS3)。
サービス制御部53が回答要求を行ったサーバから回答結果を取得した結果、回答が得られた場合又は回答0件である場合(ステップS4;Yes)、回答生成部52は、回答結果をユーザ端末30へ送信し、ユーザ端末30は、当該回答結果を表示出力する(ステップS6)。
サービス制御部53が回答要求を行ったサーバから回答結果を取得した結果、回答が得られない場合(ステップS4;No)、回答サービス候補が他に有る場合には(ステップS5;Yes)、ステップS3へ移動し、回答サービス候補が他に無い場合には(ステップS5;No)、回答生成部52は、回答できない旨の情報をユーザ端末30へ送信する(ステップS7)。
続いて、回答サービス候補判定部51による回答サービス候補の判定を行う処理について、図10に示すフローチャートを用いて説明する。
回答サービス候補判定部51は、最初に質問文を受け付ける(ステップS21)。次に回答サービス候補判定部51は、質問文に「教えて」が含まれている場合(ステップS22;Yes)、回答サービス候補に知識検索回答サーバ100を追加し(ステップS23)、質問文に「行きたい」が含まれている場合(ステップS24;Yes)、回答サービス候補にその他回答サーバA60Aを追加し(ステップS25)、質問文に「天気」が含まれている場合(ステップS26;Yes)、回答サービス候補にその他回答サーバB60Bを追加する(ステップS27)。なお、ステップS22、ステップS24、及びステップS26のいずれの条件にも該当しない場合、回答サービス候補判定部51は、回答サービス候補が存在しない旨をサービス制御部53へ通知する。
続いて、知識検索回答サーバ100の処理を図11〜16に示すフローチャートを用いて説明する。
最初に、知識検索回答サーバ100の全体処理について図11に示すフローチャートを用いて説明する。
まず、入出力制御部101は、質問回答フロントサーバ50から回答要求を受け付けると共に、質問文を受け付ける(ステップS31)。
そして、入出力制御部101が質問文を受け付けると、回答制御部102が回答に関する制御を行う。回答制御部102は、サービス対象外判定部103に対して、質問文の内容がサービス対象外か否かの判定をさせる(ステップS32)。サービス対象外判定の詳細は、後述する。
サービス対象外判定部103が、知識検索回答サーバ100のサービス対象外と判定した場合(ステップS33;Yes)、回答制御部102は、対象外である旨の情報を回答結果として生成し、入出力制御部101は、当該回答結果を質問回答フロントサーバ50へ回答結果として出力する(ステップS41)。
サービス対象外判定部103が、知識検索回答サーバ100のサービス対象と判定した場合(ステップS33;No)、検索エンジン利用好適判定部104は、検索エンジン利用が好適であるか否かを判定する(ステップS35)。検索エンジン利用が好適であるか否かを判定する処理の詳細は、後述する。
検索エンジン利用好適判定部104が、検索エンジン利用が好適であると判定した場合(ステップS36;Yes)、回答制御部102は、検索エンジン利用回答サービスサーバ150へ質問文の回答依頼をする(ステップS37)。回答制御部102は、検索エンジン利用回答サービスサーバ150から回答を取得し、取得した回答を回答結果として生成する。入出力制御部101は、当該回答結果を質問フロントサーバ50へ送信する(ステップS41)。
検索エンジン利用好適判定部104が、検索エンジン利用が好適でないと判定した場合(ステップS36;No)、回答制御部102は、ルール型検索部105、正規表現型検索部106、及びエンティティ‐属性型検索部107のそれぞれに回答検索させる(ステップS38)。このように、知識検索回答サーバ100は、複数種類の検索部を有しているので、複数の質問パターンに対応させることができる。
ルール型検索部105、正規表現型検索部106、及びエンティティ‐属性型検索部107の検索処理の詳細は、後述する。
回答制御部102がルール型検索部105、正規表現型検索部106、及びエンティティ‐属性型検索部107のそれぞれに回答検索させた結果、1件以上の回答が得られた場合(ステップS39;Yes)、回答制御部102が回答から回答結果を生成し、入出力制御部101は、回答結果を質問回答フロントサーバ50へ送信する(ステップS41)。
回答制御部102がルール型検索部105、正規表現型検索部106、及びエンティティ‐属性型検索部107のそれぞれに回答検索させた結果、回答が得られなかった場合(ステップS39;No)、検索エンジン利用回答サービスサーバ150へ回答を依頼する(ステップS40)。回答制御部102は、検索エンジン利用回答サービスサーバ150から取得した回答に基づいて、回答結果を生成する。例えば、検索エンジン利用回答サービスサーバ150から0件である旨の回答を取得した場合には、回答制御部102は、その旨の情報の回答結果を生成する。入出力制御部101は、回答制御部102が生成した回答結果を質問回答フロントサーバ50へ送信する(ステップS41)。
続いて、サービス対象外判定の処理について図12に示すフローチャートを用いて説明する。
サービス対象外判定部103は、最初に回答制御部102から質問文を取得する(ステップS51)。次に、サービス対象外判定部103は、質問文に主観的なキーワードが含まれている場合(ステップS52;Yes)、質問文に雑談を示すキーワードが含まれている場合(ステップS53;Yes)、又は質問文に不適切なキーワードが含まれている場合(ステップS54;Yes)のいずれかに該当するときは、サービス対象外である旨を回答制御部102へ通知する(ステップS55)。
そして、サービス対象外判定部103は、質問文に主観的なキーワードが含まれていない場合であり(ステップS52;No)、質問文に雑談を示すキーワードが含まれていない場合であり(ステップS53;No)、且つ質問文に不適切なキーワードが含まれていない場合(ステップS54;No)、回答制御部102へサービス対象である旨を通知する(ステップS56)。
次に、検索エンジン利用好適判定部104が、検索エンジン利用が好適か否かを判定する処理について、図13に示すフローチャートを用いて説明する。
まず、検索エンジン利用好適判定部104は、質問文を回答制御部102から取得する(ステップS61)。次に検索エンジン利用好適判定部104は、質問文に理由を示すキーワードが含まれている場合(ステップS62;No)、検索エンジン利用が好適でない旨を回答制御部102へ通知し(ステップS63)、質問文に理由を示すキーワードが含まれていれば(ステップS62;Yes)、検索エンジン利用回答サービスでの回答が好適である旨を通知する(ステップS64)。このように、検索エンジン利用好適判定部104が、検索エンジン利用が好適か否かを判定するので、事実型質問でない質問であるにも関わらず、回答処理をしてしまうことを未然に防止することができる。
次に、ルール型検索部105が行うルール型検索処理について、図14に示すフローチャートを用いて説明する。
最初にルール型検索部105は、回答制御部102から質問文を受け付け(ステップS71)、次にルール型検索部105は、特定の語尾を削除し(ステップS72)、質問文の所定箇所を検索キーとして、ルール‐回答表110を検索する(ステップS73)。
ルール型検索部105は、回答を検索できない場合(ステップS74;No)、処理を終了し、回答を検索できた場合(ステップS74;Yes)、回答と、回答の敬称・単位の取り出しを行う(ステップS75)。
ルール型検索部105は、質問文中に、プログラム回答が必要な情報が含まれていない場合(ステップS76;No)、ステップS75で取り出した情報を回答制御部102へ送信し、回答制御部102は、取得した情報に基づいて回答結果を生成する(ステップS78)。
ルール型検索部105は、質問文中に、プログラム回答が必要な情報が含まれている場合(ステップS76;Yes)、プログラム型回答生成部108から情報を取得し(ステップS77)、ルール型検索部105は、取得した情報と、ステップS75で取り出した情報を回答制御部102へ送信し、回答制御部102は、取得した情報に基づいて回答結果を生成する(ステップS78)。このように、知識検索回答サーバ100は、定義型質問について、固定された回答だけでなく、プログラム演算を必要とする回答にも対応することができる。
次に、正規表現型検索部106が行う正規表現型検索処理について、図15に示すフローチャートを用いて説明する。
最初に正規表現型検索部106は、回答制御部102から質問文を取得し(ステップS81)、次に正規表現型検索部106は、正規表現表ルール表113を参照し、正規表現表のルールを質問文に適用する(ステップS82)。
正規表現型検索部106は、質問文中に正規表現ルール表113中のルールが含まれていない場合(ステップS83;No)、処理を終了し、質問文中に正規表現ルール表113中のルールが含まれている場合(ステップS83;Yes)、回答プログラムの識別子と、回答の敬称・単位を取り出し(ステップS84)、プログラム型回答生成部108から情報を取得し(ステップS85)、取得した情報を回答制御部102へ送信する。そして、回答制御部102は、回答結果を生成する(ステップS86)。
次に、エンティティ‐属性型検索部107が行うエンティティ属性型検索処理について、図16に示すフローチャートを用いて説明する。
最初に、エンティティ‐属性型検索部107は、回答制御部102から質問文を受け付ける(ステップS91)。そして、エンティティ‐属性型検索部107は、質問文からエンティティ検索キー、属性検索キーを抽出し、(ステップS92)、エンティティ属性情報を検索する(ステップS93)。
エンティティ‐属性型検索部107は、回答を検索できない場合(ステップS94;No)、処理を終了し、回答を検索できた場合(ステップS94;Yes)、エンティティへの敬称・単位、値への敬称・単位を取り出す(ステップS95)。
エンティティ‐属性型検索部107は、質問文中に、プログラム回答が必要な情報が含まれていない場合(ステップS96;No)、ステップS95で取り出した情報を回答制御部102へ送信し、回答制御部102は、取得した情報に基づいて回答結果を生成する(ステップS98)。
エンティティ‐属性型検索部107は、質問文中に、プログラム回答が必要な情報が含まれている場合(ステップS96;Yes)、プログラム型回答生成部108から情報を取得し(ステップS97)、エンティティ‐属性型検索部107は、取得した情報と、ステップS95で取り出した情報を回答制御部102へ送信し、回答制御部102は、取得した情報に基づいて回答結果を生成する(ステップS98)。このように、知識検索回答サーバ100は、属性型質問について、固定された回答だけでなく、プログラム演算を必要とする回答にも対応することができる。
次に、本実施形態に係る知識検索回答サーバ100の作用効果について説明する。知識検索回答サーバ100によれば、入出力制御部101が質問文を取得し、ルール型検索部105、正規表現型検索部106、エンティティ‐属性型検索部107、及びプログラム型回答生成部108が質問文の回答をし、回答制御部102が、上記回答内容に基づいて、回答結果を生成し、入出力制御部101が回答結果を出力する。
このように、知識検索回答サーバ100は、複数パターンの事実型質問(例えば、定義型質問や属性型質問)の回答部を有しているので、それぞれのパターンの質問の回答を行うことができる。すなわち、様々な種類の事実型質問に対して柔軟に回答を行うことができる。
質問文が定義型質問又は属性型質問であり、さらに質問文中にプログラム演算を必要と解釈できる文言を含む場合、回答制御部102は、プログラム型回答生成部108による回答と、ルール型検索部105又はエンティティ‐属性型検索部107のいずれか1つによる回答とに基づいた回答結果を生成する。
この場合、定義型質問や属性型質問について、固定された回答だけでなく、プログラム演算を必要とする回答にも対応することができる。
プログラム型回答生成部108は、引数に対応するプログラム演算結果を出力する。この場合、引数を利用したプログラム演算の回答をすることができるので、当該引数を用いて動的に変動し得る回答を生成することができる。
検索エンジン利用好適判定部104は、質問文が事実型質問であるか否かを判定する。検索エンジン利用好適判定部104によって質問文が事実型質問でないと判定された場合、知識検索回答サーバ100は、検索エンジン利用回答サービスサーバ150へ質問文の回答依頼をする。この場合、知識検索回答サーバ100は、質問文が事実型質問ではない場合、他の装置へ質問文の回答依頼をするので、予め回答を作成するためのデータやロジックを用意することが難しい分野に対してもインターネット上に存在するWebサイトから回答を生成することができる。また、事実型質問であるか否かを予め判断しているので、事実型質問でない質問であるにも関わらず、回答処理をしてしまうことを未然に防止することができる。
回答制御部102は、回答がない場合と、回答不能な質問である場合とを識別可能な回答結果を生成する。この場合、回答が得られない場合に、回答が存在しないか、知識検索回答サーバ100で対応可能な質問ではなかったかを利用者に判別させることができる。
回答制御部102は、質問文の種類に応じて、回答結果のユーザインタフェースを切り替える。この場合、質問文の種類に応じて回答結果のインタフェースを変更するので、ユーザの理解度を向上させることができる。
回答制御部102は、ルール型検索部105やエンティティ‐属性型検索部107から値や敬称等の付記的情報を取得した場合、当該付記的情報も付加した回答結果を生成する。この場合、質問文で聞かれている対象について、敬称や単位を付記的情報として付加するので、関係者への配慮や異なる単位への変換を実施することができる。
(他の実施形態)
上述の実施形態では、質問回答フロントサーバ50と知識検索回答サーバ100を分けて構成する場合について述べたが、質問回答フロントサーバ50と知識回答サーバ100とを一体としたサーバとしても良い。