以下、本発明の実施形態におけるエンティティ自動生成装置の一例について、図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
実施形態におけるエンティティ自動生成装置は、例えば、サーバである。サーバは、例えば、情報検索等のサービスを提供する企業内のサーバであるが、クラウドサーバやASPサーバ等でもよく、そのタイプは問わない。サーバは、例えば、LANやインターネット等のネットワーク、無線または有線の通信回線などを介して、1または2以上の端末(図示しない)と通信可能に接続される。端末は、例えば、情報検索等のサービスを利用するユーザの携帯端末であるが、据え置き型のPC等でもよく、そのタイプは問わない。携帯端末は、例えば、タブレット端末、スマートフォン、携帯電話機、ノートPC等であるが、これらに限定されるものではない。
ただし、エンティティ自動生成装置は、例えば、スタンドアロンの端末でもよく、その実現手段はこれらに限定されるものではない。図1は、実施形態におけるエンティティ自動生成装置100のブロック図である。エンティティ自動生成装置100は、格納部1、受付部2、処理部3、および出力部4を備える。格納部1は、テーブル格納部11、インテント格納部12、API情報格納部13、エンティティ格納部15、エンティティマッピング情報格納部16、PK項目格納部17、エンティティ知識データベース(DB)51、インテント知識データベース(DB)52、コーパス知識データベース(DB)53を備える。受付部2は、会話文受付手段21と文字列受付手段53を備える。会話文受付手段21は、音声受付手段211、および音声認識手段212を備える。
処理部3は、パラメータ化手段30、インテント決定手段31、会話文情報決定手段32、エンティティ取得部33、パラメータ取得部34、API情報取得手段35、問合情報構成部36、および検索結果取得手段37を備える。パラメータ取得部34は、判断手段341、エンティティ名取得手段343、翻訳項目名取得手段344、テーブル識別子取得手段345、主キー識別子取得手段346、および変換パラメータ取得手段347を備える。出力部4は、検索結果出力手段41を備える。
格納部1は、各種の情報を格納するデータベースである。各種の情報とは、例えば、テーブル、インテント、API情報、コーパス、エンティティ、エンティティマッピング情報、PK項目、および日変換情報などである。なお、テーブル等の情報については後述する。また、その他の情報については、適時説明する。
テーブル格納部11には、1または2以上のテーブルが格納される。テーブルは、例えば、表形式のデータベースであってもよい。テーブルには、例えば、1または2以上の項目名が登録され、さらに、当該1以上の項目名ごとに、1または2以上の値が登録される。なお、項目名は、属性名といってもよいし、一の項目名に対応する1以上の各値は、属性値といってもよい。また、テーブルは、例えば、リレーショナルデータベースのテーブル、TSV、エクセル、CSV、ニューラルネットワーク等であるが、その種類はこれらに限定されるものではない。
インテント格納部12には、1または2以上のインテントが格納される。インテントとは、処理動作ごとに管理される情報である。処理動作ごとに管理されることは、例えば、処理動作を特定する情報に対応付けて、インテント格納部12に格納されることであってもよい。なお、処理動作を特定する情報は、通常、後述するアクション名およびウェブフックであるが、その形式はこれらに限定されるものではない。また、対応付くことは、例えば、インテントが、処理動作を特定する情報を有する場合も含む。インテント格納部12には、インテントに加え、後述するアクション決定情報や指示動作も格納される。
処理動作とは、業務に関する処理以外に、あらゆる行動や生活に関する処理も含む。業務は、例えば、定時までの勤務、定時後の残業、休暇、欠勤、A案件、B案件、経理、製造などであるが、その種類はこれらに限定されるものではない。処理動作は、例えば、情報の検索である。なお、検索は、例えば、照会といってもよい。検索される情報は、例えば、残業時間や勤務時間等の勤怠情報であるが、残高や株価等の金融情報、または製造ラインの稼働情況などでもよく、これらに限定されるものではない。
ただし、処理動作は、例えば、情報の登録、または情報に基づく処理(例えば、勤怠情報に基づく給与計算、財務情報に基づく金融取引等)などでもよく、これらに限定されるものではない。
インテントは、通常、処理動作を特定するアクション名およびウェブフックを有する。アクション名とは、アクションの名称である。アクションとは、通常、APIを介して実行される処理動作である。ただし、アクションは、例えば、SQL文に応じて実行される処理動作であってもよい。
なお、アクション名は、通常、後述するAPI情報にも対応付いている。従って、インテントは、例えば、アクション名を介して、API情報に対応付けられる、と考えてもよい。
また、インテントは、通常、インテント名も有する。インテント名とは、インテントの名称である。従って、インテントは、インテント名または当該インテント名で特定されるインテントと、アクション名または当該アクション名で特定されるアクションとを対応付ける情報である、と考えることもできる。
アクション名は、具体的には、例えば、「残業時間照会」、「勤務時間データ照会」等であるが、処理動作を特定し得る情報であれば何でもよい。
API情報格納部13には、1または2以上のAPI情報が格納される。API情報とは、APIに関する情報である。APIとは、プログラムの機能を利用するためのインターフェースである。APIは、例えば、関数、メソッド、または実行モジュールなどのソフトウェアである。APIは、例えば、WebAPIであるが、それ以外のAPIでもよい。WebAPIとは、HTTPやHTTPSなどのWeb通信のプロトコルを用いて構築されたAPIである。なお、WebAPI等のAPIについては、公知技術であるので、詳しい説明を省略する。
API情報は、インテントに対応付いている情報である。API情報は、前述したように、例えば、アクション名およびウェブフックを介して、インテントに対応付いている。
API情報は、通常、情報検索を行うための情報である。ただし、API情報は、例えば、情報の登録、または情報に基づく処理などを行うための情報であってもよい。
API情報は、1または2以上のパラメータ特定情報を有する。パラメータ特定情報とは、パラメータを特定する情報である。パラメータとは、特定の属性を有する値である、といってもよい。値は、通常、変数である。変数は、引数といってもよい。
パラメータは、通常、エンティティを変換した情報であるが、エンティティそのものでもよい。パラメータは、例えば、APIに与える引数、またはSQL文の変数などである。
パラメータ特定情報は、例えば、パラメータ名である。パラメータ名とは、パラメータの名称である。または、パラメータ特定情報は、例えば、属性名であるが、パラメータを特定し得る情報であれば何でもよい。
またAPI情報は、例えば、SQL文でもよい。SQL文とは、データベースに対して問い合わせを行うための文である、といってもよい。または、API情報は、例えば、URLとメソッドとの組などでもよく、その構造はこれらに限定されるものではない。
エンティティ情報が有するエンティティは、当該エンティティ情報が有するエンティティ名に対応する1または2以上のエンティティの中の代表値である。代表値は、一のエンティティ名に対応する1以上のエンティティ中の、例えば、先頭のエンティティであるが、どのエンティティでもよい。
エンティティ名とは、エンティティの名称である。エンティティ名は、例えば、「社員エンティティ」、「日付エンティティ」、「残業時間エンティティ」、「天候エンティティ」等であるが、エンティティの属性を表現し得る情報であれば、その形式はこれらに限定されるものではない。社員エンティティとは、社員に関するエンティティである。日付エンティティとは、日付に関するエンティティである。残業時間エンティティとは、残業時間に関するエンティティである。
またエンティティ情報は、テキストデータがテンプレートの場合、例えば、エンティティ名、および順序情報を有していてもよい。順序情報とは、テンプレートに含まれる1以上の変数において、当該エンティティ名が何番目の変数に対応するかを示す値である。ただし、エンティティ情報の構造は、これに限定されるものではない。
なお、実施形態におけるコーパスとは、例えば、インテント格納部12に格納されている1以上のテキストデータの各々と考えてもよいし、1以上のテキストデータ、および各テキストデータに対応付いているエンティティ情報の集合と考えることもできる。
エンティティ格納部15には、1または2以上のエンティティが格納される。エンティティとは、テキストデータに対応付けられた1または2以上の各単語である。単語とは、文を構成する単位である。単語は、例えば、単に「語」、または「ことば」などと呼んでもよいし、形態素の一種(例えば、後述する自立語)と考えてもよい。
エンティティ格納部15には、例えば、1以上の各エンティティ名に対応付けて、1または2以上のエンティティが格納される。
エンティティは、通常、インテント格納部12に格納されている1以上のテキストデータの中のいずれか1つ又は2以上のテキストデータに対応付いている。従って、エンティティ格納部15には、例えば、インテント格納部12に格納されている1以上のテキストデータごとに、1または2以上のエンティティが格納されてもよい。上述した「社員エンティティ」、「日付エンティティ」、「残業時間エンティティ」、「天候エンティティ」等がこのエンティティ格納部15に格納される。
テキストデータに対応付く単語は、通常、自立語である。自立語とは、単独でも文節を構成し得る語であり、例えば、名詞であるが、動詞、形容詞等でもよい。ただし、対応付く単語は、付属語でもよい。付属語とは、単独では文節を構成し得ず、他の自立語を伴って文節を構成する語であり、例えば、助動詞、助詞などである。つまり、対応付く単語は、通常、自立語であるが、付属語を伴った自立語であってもよい。
また、対応付く単語は、例えば、連語でもよい。連語とは、2以上の自律語が結び付いて一定の意味を表す語であり、複合語といってもよい。連語は、例えば、“残業”と“時間”が結合した“残業時間”や、“A”と“案件”が結合した“A案件”等であるが、“中村一郎”といった氏と名の組でもよく、2以上の語の組であれば何でもよい。
なお、対応付く単語は、テキストデータが例文の場合は、当該例文に含まれている1または2以上の各単語(つまり、テキストデータ内の情報)あるが、テキストデータがテンプレートの場合は、当該テンプレートに含まれる1または2以上の各変数の位置に挿入されるべき単語(つまり、テキストデータに付加される情報)である。
エンティティマッピング情報格納部16には、1または2以上のエンティティマッピング情報が格納される。エンティティマッピング情報とは、テーブル識別子および翻訳項目名をエンティティ名に対応付ける情報である、といってもよい。
エンティティマッピング情報は、例えば、テーブル識別子と、翻訳項目名と、エンティティ名とを有する。テーブル識別子とは、テーブル格納部11に格納されている1以上の各テーブルを識別する情報である。テーブル識別子は、例えば、“MST_SHAIN”や“TRN_TIME_CARD”等であるが、テーブルを識別し得る情報であれば何でもよい。
翻訳項目名とは、テーブル識別子で識別されるテーブル内の属性名であり、変換されるエンティティを特定する情報である。変換されるエンティティとは、パラメータに変換されるエンティティ(例えば、パラメータ“shain_code=1”に変換されるエンティティ“中村一郎”や、パラメータ“sta_date=20190401,end_date=20190430”に変換されるエンティティ“先月”等)である。
翻訳項目名は、例えば、テーブル識別子で識別されるテーブルが有する1以上の項目名のうち、主キー以外のキーに対応する項目名であり、主キーに対応する項目名に変換される項目名であってもよい。主キーに対応する項目名とは、例えば、主キー識別子である。
翻訳項目名は、例えば、“SHAIN_CODE”や“TIME_CARD_DATE”等であるが、変換されるエンティティを特定し得る情報であれば何でもよい。
PK項目格納部17には、1または2以上のPK項目が格納される。PK項目とは、主キーに対応する項目である。PK項目は、例えば、テーブル識別子と、主キー識別子とを有する。主キー識別子とは、テーブル識別子で識別されるテーブルの主キーを特定する情報である。
主キー識別子は、例えば、テーブル識別子“MST_SHAIN”で識別されるテーブル(以下、社員マスタ)の場合は“SHAIN_CODE”であり、テーブル識別子“TRN_TIME_CARD”で識別されるテーブル(以下、勤務時間テーブル)の場合は“SHAIN_CODE”と“TIME_CARD_DATE”の2つである。
エンティティ知識DB51は、言葉からエンティティを自動生成する為に必要な語句、意味及びエンティティ抽出の為のアルゴリズムを有するデータベースである。エンティティ知識DB51は、会話文に含まれる単語をエンティティを介してパラメータ化する上で、予めその単語に見合うエンティティが登録されていない場合において参照するためのデータベースである。図2は、エンティティ知識DB51の例である。エンティティ知識DB51は、各単語に対してエンティティ決定情報がそれぞれ紐付けられている。このエンティティ決定情報は、単語の意味を示すものであり、実際の概念辞書や類義語辞書において各単語について紐付けられた情報が反映されていてもよく、各単語が示す内容、概念、コンセプトが当該単語毎に紐付けてテーブル化されている。一の単語に複数の意味が紐づけられていてもよいし、一の意味に複数の単語が紐づけられていてもよい。また、エンティティ決定情報は、単語の意味以外に、固有名詞や、カテゴリー(例えば、商品、人称等)、法則やルール等で構成されるものであってもよい。以下の説明では、エンティティ決定情報として意味を紐付ける場合を例にとり説明をする。会話文に含まれる単語をパラメータ化する上で、予めエンティティが登録されていない場合、このエンティティ知識DB51を参照することで、そのエンティティの候補となりえる意味を抽出することができる。
インテント知識DB52は、言葉からインテントを自動生成する為に必要な語句、意味及びインテント抽出の為のアルゴリズムを有するデータベースである。インテント知識DB52は、会話文に含まれる指示動作にインテントを割り当てる上で、予めその指示動作(動詞)に見合うインテントが登録されていない場合において参照するためのデータベースである。図3は、インテント知識DB52の例である。インテント知識DB52は、各指示動作に対してアクション決定情報がそれぞれ紐付けられている。このアクション決定情報は、例えば意味であり、実際の概念辞書や類義語辞書において各指示動作について紐付けられた情報が反映されていてもよく、各指示動作が示す内容、概念、コンセプトが当該単語毎に紐付けてテーブル化されている。またアクション決定情報は、意味に限定されるものでは無く、動詞のカテゴリー(例えば、役務に使用される動詞、生活に使用される動詞)等であってもよいし、法則やルール等で構成されるものであってもよい。また、このアクション決定情報としては、指示動作に応じて具体的にいかなる処理動作を実行するかを示す情報が記述されていてもよいし、具体的な処理動作を実行するためのプログラム群が紐付けられていてもよい。またアクション決定情報は、実際にプログラムを実行するためのAPIやこれらに紐付けられたウェブフック等の情報が含められていてもよい。またアクション決定情報としては、これら以外にアクション名、ウェブフック(処理アルゴリズム)、コンテキスト(インテント間のデータやりとり)、デフォルト応答テキスト(アクションがない時)、会話の終わり等の様々な情報が格納されている。ウェブフックとはアクション名とアクションを紐づけ実行する仕組みである。
以下の説明では、エンティティ決定情報として具体的な処理動作を実行するためのプログラム群を紐付ける場合を例にとり説明をする。一の指示動作に複数のプログラム群が紐づけられていてもよいし、一のプログラム群に複数の指示動作が紐づけられていてもよい。会話文に含まれる指示動作をパラメータ化する上で、予めインテントが登録されていない場合、このインテント知識DB52を参照することで、そのインテントの候補となりえるプログラム群を抽出することができる。
コーパス知識DB53は、言葉からコーパスを自動生成する為に必要な語句、意味及びコーパス抽出の為のアルゴリズムを有するデータベースである。図4は、コーパス知識DB53の例である。コーパス知識DB53は、テキストデータと、エンティティやインテントからなるコーパス決定情報とが互いに対応させて格納されている。このとき、一のコーパス決定情報に対して少なくとも一のテキストデータが対応付けされて格納されていてもよいが、これに限定されるものでは無く、一のコーパス決定情報に対して2以上のテキストデータが対応付けされて格納されていてもよい。
受付部2は、各種の情報を受け付ける。各種の情報とは、例えば、会話文や文字列からなる電子データである。受付部2は、会話文等の情報を、例えば、端末から受信するが、キーボードやタッチパネルやマイクロフォン等の入力デバイスを介して受け付けてもよい。または、受付部2は、例えば、ディスクや半導体メモリ等の記録媒体から読み出された情報を受け付けてもよく、その受け付けの態様は特に限定されるものではない。
会話文受付手段21は、会話文を受け付ける。会話文とは、人が会話する文であり、自然言語による文といってもよい。会話文の受け付けは、例えば、音声での受け付けであるが、テキストデータでの受け付けでもよい。音声とは、人が発した声である。テキストデータとは、人が発した声を音声認識した文字列である。文字列は、1または2以上の文字の配列で構成される。
音声受付手段211は、会話文の音声を受け付ける。音声受付手段211は、会話文の音声を、例えば、端末から、端末識別子と対に受信するが、マイクロフォンを介して受け付けてもよい。端末識別子とは、端末を識別する情報である。端末識別子は、例えば、MACアドレス、IPアドレス、IDなどであるが、端末を識別し得る情報であれば何でもよい。なお、端末識別子は、端末のユーザを識別するユーザ識別子でもよい。ユーザ識別子は、例えば、メールアドレス、電話番号等であるが、IDや住所・氏名等でもよく、ユーザを識別し得る情報であれば何でもよい。
音声認識手段212は、音声受付手段211が受け付けた音声に対して音声認識処理を行い、文字列である会話文をテキストデータとして取得する。なお、音声認識処理は公知技術であり、詳しい説明を省略する。
文字列受付手段213は、紙媒体や電子媒体に記載されている文字列からテキストデータを取得する。文字列受付手段213は、紙媒体から読み取った文字列をOCR技術で文字認識してテキストデータ化してもよいし、電子媒体に含まれる文字列をそのままテキストデータとして取得してもよい。文字列受付手段213により取得されるテキストデータは、データベース内にあるデータ、もしくはメール文章、ドキュメントファイル等から取得するようにしてもよい。
処理部3は、各種の処理を行う。各種の処理とは、例えば、パラメータ化手段30、インテント決定手段31、会話文情報決定手段32、エンティティ取得部33、パラメータ取得部34、API情報取得手段35、問合情報構成部36、検索結果取得手段37、判断手段341、エンティティ名取得手段343、翻訳項目名取得手段344、テーブル識別子取得手段345、主キー識別子取得手段346、および変換パラメータ取得手段347などの処理である。また、各種の処理には、例えば、フローチャートで説明する各種の判別なども含まれる。
処理部3は、例えば、会話文受付手段21が会話文を受け付けたことに応じて、パラメータ化手段30及びインテント決定手段31等の処理を行う。なお、1以上の各端末から、端末識別子と対に会話文が送信される場合、処理部3は、インテント決定手段31等の処理を、1以上の端末識別子ごとに行う。
パラメータ化手段30は、会話文受付手段21が受け付けた1以上の会話文に含まれる1以上のエンティティをパラメータ化する。なお、パラメータ化手段30は、会話文情報決定手段32が決定したテキストデータに対応するエンティティをパラメータ化してもよい。
詳しくは、パラメータ化手段30は、音声として入力された会話文に含まれるエンティティ、一例として自立語をパラメータ化する。例えば、「大塚の先月の残業時間を教えて」という会話文と「先月の大塚の残業時間を教えて」という会話文を比較すると、「大塚」と「先月」の単語が入れ替わっている点以外、2つの会話文に異なる点は無い。しかしながら、これまでの検索結果では、異なる意味を持つ会話文として、必ずしも同じ意味内容であると認識されていないことがあった。そこで、パラメータ化手段30は、これらの会話文に含まれる「大塚」、「先月」、「残業時間」という自立語、即ちエンティティをパラメータ化する。
インテント決定手段31は、会話文受付手段21が受け付けた会話文に対応するインテントを決定する。
詳しくは、インテント決定手段31は、最初、例えば、会話文受付手段21が受け付けた会話文に対応するテキストを取得する。テキストは、前述したように、例えば、会話文受付手段21が受け付けた会話文を音声認識した結果であるが、会話文受付手段21が受け付けた会話文そのものでもよい。
すなわち、インテント決定手段31は、音声である会話文が受け付けられた場合、当該会話文を音声認識し、テキストを取得する。なお、テキストである会話文が受け付けられた場合、インテント決定手段31は、当該テキストを取得すればよい。
次に、インテント決定手段31は、取得したテキストに対して、例えば、自然言語解析を行うことにより、当該テキストから1以上の自立語を取得する。なお、自然言語解析は公知技術であり、詳しい説明を省略する。
そして、インテント決定手段31は、取得した1以上の自立語と同一または類似する単語を有するアクション名およびウェブフックを有するインテントを決定する。
詳しくは、学習済み言語解析モデルを介して解析された結果、インテントが決定されるとともにエンティティも導出される。インテントは{残業時間参照}、エンティティは、{日付エンティティ}と{残業時間エンティティ}が導出される。
パラメータ取得部34は、エンティティ取得部33が取得した1以上の各エンティティに対応する1以上のパラメータを取得する。
エンティティ名取得手段343は、エンティティ取得部33が取得した1以上のエンティティごとに、当該エンティティに対応するエンティティ名をエンティティ格納部15から取得する。
当該エンティティに対応するエンティティ名とは、当該エンティティが取得された会話文において、当該エンティティに対応するエンティティの位置に一致または類似する開始位置および終了位置と対になるエンティティ名である。エンティティ名取得手段343は、エンティティ取得部33が取得した1以上のエンティティごとに、例えば、当該エンティティに対応付いたエンティティ情報を用いて、当該エンティティに対応するエンティティ名をエンティティ格納部15から取得してもよい。
具体的には、例えば、受け付けられた会話文「大塚の先月の残業時間を教えて」から3つのエンティティ「大塚」、「先月」、および「残業時間」が取得された場合、エンティティ名取得手段343は、インテント格納部12に格納されているテキストデータ「中村の先月の残業時間を教えて」において、当該テキストデータに対応付けて格納されている3つのエンティティ情報のうち、受け付けられた会話文「大塚の先月の残業時間を教えて」における「大塚」と同じ開始位置“1”および終了位置“2”を有する1つ目のエンティティ情報を用いて、「中村」に対応付いた「社員エンティティ」を取得する。
また、エンティティ名取得手段343は、例えば、上記3つのエンティティ情報のうち、会話文「大塚の先月の残業時間を教えて」における「先月」と同じ開始位置“4”および終了位置“5”を有する2つ目のエンティティ情報を用いて、「先月」に対応付いた「日付エンティティ」を取得し、さらに、会話文「大塚の先月の残業時間を教えて」における「残業時間」と同じ開始位置“7”および終了位置“10”を有する3つ目のエンティティ情報を用いて、「残業時間」に対応付いた「残業時間エンティティ」を取得する。
テーブル識別子取得手段345は、エンティティ名取得手段343が取得した1以上のエンティティ名ごとに、当該エンティティ名と対になるテーブル識別子をエンティティマッピング情報格納部16から取得する。
主キー識別子取得手段346は、テーブル識別子取得手段345が取得したテーブル識別子と対になる主キー識別子をPK項目格納部17から取得する。
変換パラメータ取得手段347は、テーブル識別子取得手段345が取得したテーブル識別子で識別されるテーブルから、翻訳項目名取得手段344が取得した翻訳項目名の属性値が、エンティティ取得部33が取得したエンティティと一致するレコードに含まれる属性値であり、主キー識別子取得手段346が取得した主キー識別子の属性値である、変換されたパラメータを取得する。
API情報取得手段35は、インテント決定手段31が決定したインテントに対応するAPI情報をAPI情報格納部13から取得する。
API情報取得手段35は、例えば、インテント決定手段31が決定したインテントに対応するアクション名およびウェブフックを有するAPI情報を、API情報格納部13から取得する。
問合情報構成部36は、パラメータ取得部34が取得した1以上のパラメータと、API情報取得手段35が取得したAPI情報とを用いて、問合情報を構成する。問合情報とは、情報検索するための情報であり、通常、実行可能な情報である。問合情報は、例えば、引数が挿入された関数またはメソッドであるが、完成されたSQL文でもよいし、URLとパラメータの組でもよい。
問合情報構成部36は、例えば、API情報取得手段35が取得したAPI情報が有する1以上の各変数の箇所に、各箇所に対応付くパラメータであり、パラメータ取得部34が取得したパラメータを配置することにより、問合情報を構成する。
出力部4は、各種の情報を出力する。各種の情報とは、例えば、検索結果である。
出力部4は、例えば、受付部2が端末識別子と対に会話文等の情報を受信したことに応じて処理部3が各種の処理を行った結果である検索結果等の情報を、当該端末識別子で識別される端末に送信する。または、例えば、受付部2がタッチパネルやマイクロフォン等の入力デバイスを介して会話文等の情報を受け付けたことに応じて、出力部4は、検索結果等の情報を、ディスプレイやスピーカ等の出力デバイスを介して出力してもよい。
ただし、出力部4は、各種の情報を、例えば、プリンタでプリントアウトしたり、記録媒体に蓄積したり、他のプログラムに引き渡したり、外部の装置に送信したりしてもよく、その出力の態様は特に限定されるものではない。
検索結果出力手段41は、検索結果取得手段37を介して取得した検索結果を出力する。検索結果出力手段41は、例えば、会話文受付手段21が端末識別子と対に会話文を受信したことに応じて検索結果取得手段37が取得した検索結果を、当該端末識別子で識別される端末に送信する。または、検索結果出力手段41は、例えば、会話文受付手段21がマイクロフォン等の入力デバイスを介して会話文を受け付けたことに応じて検索結果取得手段37が取得した検索結果を、ディスプレイやスピーカ等の出力デバイスを介して出力してもよい。
格納部1、テーブル格納部11、インテント格納部12、API情報格納部13、コエンティティ格納部15、エンティティマッピング情報格納部16、PK項目格納部17は、例えば、ハードディスクやフラッシュメモリといった不揮発性の記録媒体が好適であるが、RAMなど揮発性の記録媒体でも実現可能である。
格納部1等に情報が記憶される過程は、特に限定されるものではない。例えば、記録媒体を介して情報が格納部1等で記憶されるようになってもよく、ネットワークや通信回線等を介して送信された情報が格納部1等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部1等で記憶されるようになってもよい。入力デバイスは、例えば、キーボード、マウス、タッチパネル、マイクロフォン等、何でもよい。
受付部2、会話文受付手段21、音声受付手段211、および音声認識手段212、文字列受付手段213は、入力デバイスを含むと考えても、含まないと考えてもよい。受付部2等は、入力デバイスのドライバーソフトによって、または入力デバイスとそのドライバーソフトとで実現され得る。
出力部4、および検索結果出力手段41は、ディスプレイやスピーカ等の出力デバイスを含むと考えても含まないと考えてもよい。出力部4等は、出力デバイスのドライバーソフトによって、または出力デバイスとそのドライバーソフトとで実現され得る。
なお、受付部2等の受信機能は、通常、無線または有線の通信手段(例えば、NIC(Network interface controller)やモデム等の通信モジュール)で実現されるが、放送を受信する手段(例えば、放送受信モジュール)で実現されてもよい。また、出力部4等の送信機能は、通常、無線または有線の通信手段で実現されるが、放送手段(例えば、放送モジュール)で実現されてもよい。
次に、エンティティ自動生成装置100の動作について説明する。以下において説明する処理動作は、CPUやMPU等のプロセッサが、HDDや不揮発性メモリ(例えば、フラッシュメモリ)等の記憶媒体に格納されているプログラムを読み込むことにより実現される。
図5に示すように、先ずステップS11において、受付部2は、テキストデータを取得する。次にステップS12に移行し、公知の自然言語解析を行う。この自然言語解析では、形態素解析、必要に応じて構文解析を行うことにより、指示動作(動詞)と、これに係り受けする少なくとも単語(名詞又は名詞句)を抽出する。例えば、テキストデータが「今日は雨なので傘がよく売れるでしょう」であれば、これを自然言語解析することにより、単語(名詞又は名詞句)としては、「今日」、「雨」、「傘」を抽出し、指示動作として、「売れる」を抽出する。
このようにして抽出した単語については、それぞれエンティティ格納部15に問い合わせ、その単語に最も適合するエンティティを割り当てる。同様に、抽出した指示動作については、インテント格納部12に問い合わせ、その指示動作に最も適合するインテントを割り当てる。またコーパスについては、インテント格納部12に問い合わせ、その会話文に最も適合するコーパスを割り当てる。
その結果、抽出した単語に適合するエンティティがエンティティ格納部15に格納されていれば、そのエンティティを割り当てることができる。同様に、抽出した指示動作に適合するインテントがインテント格納部12に格納されていれば、そのインテントを割り当てることができる。
一方、抽出した単語に適合するエンティティがエンティティ格納部15に格納されていない場合、単語にエンティティを割り当てることができない。同様に、抽出した指示動作に適合するインテントがインテント格納部12に格納されていない場合、指示動作にインテントを割り当てることができない。
ステップS13において、ステップS12における自然言語解析の結果、正しく解析ができればインテントとエンティティが割り当てられるので、かかる場合には、ステップS23に移行する。これに対してステップS12における自然言語解析の結果、インテント、エンティティの何れか、または両方について割り当てることができなかった場合には、正しく解析ができなかったものと判断し、ステップS14へ移行する。
ステップS14に移行した場合において、エンティティが正しく割り当てられたか否かを確認する。その結果、エンティティが正しく割り当てられている場合にはステップS16へ移行する。これに対して、エンティティが正しく割り当てられていない場合には、ステップS15へ移行する。
ステップS15に移行した場合には、エンティティの自動生成を行う。かかる場合には、エンティティ知識DB51にアクセスする。エンティティ知識DB51では、上述したように、各単語に対してエンティティ決定情報としての「意味」がそれぞれ紐付けられている。ステップS15では、エンティティ知識DB51を参照し、エンティティが正しく割り当てられていない単語と関連度が深いエンティティ決定情報(意味)を探索する。
仮に、ステップS12において自然言語解析した単語のうち、「今日」についてエンティティが正しく割り当てられていない場合には、このエンティティ知識DB51を参照し、単語「今日」に紐付けられている意味を探索する。その結果、このエンティティ知識DB51では、単語「今日」に対しては、意味「日付」が割り当てられているため、これを単語「今日」に対するエンティティとしてエンティティ格納部15に登録する。
同様に、ステップS12において自然言語解析した単語のうち、「雨」についてエンティティが正しく割り当てられていない場合には、このエンティティ知識DB51を参照し、単語「雨」に紐付けられている意味を探索する。その結果、このエンティティ知識DB51では、単語「雨」に対しては、意味「天候」が割り当てられているため、これを単語「雨」に対するエンティティとしてエンティティ格納部15に登録する。
同様に、ステップS12において自然言語解析した単語のうち、「傘」についてエンティティが正しく割り当てられていない場合には、このエンティティ知識DB51を参照し、単語「傘」に紐付けられている意味を探索する。その結果、このエンティティ知識DB51では、単語「傘」に対しては、意味「雨具」が割り当てられているため、これを単語「傘」に対するエンティティとしてエンティティ格納部15に登録する。
このようにして単語に対して新たにエンティティを割り当てる都度、エンティティ格納部15に対して割り当てたエンティティを順次登録していく。図6(a)は、このエンティティ格納部15において新たに割り当てたエンティティを登録する例を示している。新たに割り当てられたエンティティ「日付」に対しては、これに対応する単語「今日」がエンティティ値として紐付けられる。新たに割り当てられたエンティティ「雨具」に対しては、これに対応する単語「傘」がエンティティ値として紐付けられる。新たに割り当てられたエンティティ「天候」に対しては、これに対応する単語「雨」がエンティティ値として紐付けられる。つまり、エンティティ決定情報を単語のエンティティとして登録するとともに、当該単語をエンティティ値として登録する。
なお、このエンティティの登録については、各単語に対して意味がそれぞれ1対1で紐付けられた図2に示すエンティティ知識DB51を利用する場合に限定されるものではなく、図7に示すように、単語に対する実際のエンティティ決定情報(意味)が3段階以上の連関度を以って関連付けられた学習済モデルを利用して解探索を行うようにしてもよい。
この学習済モデルでは、参照用の単語と、エンティティ決定情報(意味)との3段階以上の連関度が予め設定されていることが前提となる。入力データとして例えば参照用の単語P01~P03であるものとする。例えば、この単語P01が「今日」、単語P02が「雨」、単語P03が「決算書」等であるものとする。このような入力データとしての参照用の単語P01~P03は、出力としてのエンティティ決定情報(意味)に連結している。
このような参照用の単語は、この出力解としての意味(例えば、「雨具」、「請求書」、「天候」、「日付」等))に対して3段階以上の連関度を通じて互いに連関しあっている。単語がこの連関度を介して左側に配列し、各意味が連関度を介して右側に配列している。連関度は、左側に配列された単語に対して、何れの意味と関連性が高いかの度合いを示すものである。換言すれば、この連関度は、各単語が、いかなる意味に紐付けられる可能性が高いかを示す指標であり、単語から最も確からしい意味を選択する上での的確性を示すものである。図7の例では、連関度としてw13~w19が示されている。このw13~w19は以下の表1に示すように10段階で示されており、10点に近いほど、中間ノードとしての各組み合わせが出力としての意味と互いに関連度合いが高いことを示しており、逆に1点に近いほど中間ノードとしての各組み合わせが出力としての意味と互いに関連度合いが低いことを示している。
このような図7に示す3段階以上の連関度w13~w19を予め取得しておく。つまり実際の探索解の判別を行う上で、単語と、意味の何れが採用、評価されたか、過去のデータセットを蓄積しておき、これらを分析、解析することで連関度を作り上げておく。
例えば、過去において単語P01に対して意味として「日付」が最も適合性が高いと判断され、評価されたものとする。このようなデータセットを集めて分析することにより、参照用の単語との連関度が強くなる。
この分析、解析は人工知能により行うようにしてもよい。かかる場合には、例えば単語P01である場合に、過去のデータセットに基づいて分析する。単語P01である場合に、「日付」の事例が多い場合には、この意味につながる連関度をより高く設定し、「天候」の事例が多い場合には、この意味につながる連関度をより高く設定する。例えば単語P01の例では、「日付」と、「天候」にリンクしているが、以前の事例から「日付」につながるw13の連関度を7点に、「天候」につながるw14の連関度を2点に設定している。
また、この連関度は、人工知能における機械学習を通じて学習させるためのニューラルネットワークのノードで構成されるものであってもよい。即ち、このニューラルネットワークのノードが出力に対する重み付け係数が、上述した連関度に対応することとなる。またニューラルネットワークに限らず、人工知能を構成するあらゆる意思決定因子で構成されるものであってもよい。
かかる場合には、図8に示すように、入力データとして単語が入力され、出力データとして意味が出力され、入力ノードと出力ノードの間に少なくとも1以上の隠れ層が設けられ、機械学習させるようにしてもよい。入力ノード又は隠れ層ノードの何れか一方又は両方において上述した連関度が設定され、これが各ノードの重み付けとなり、これに基づいて出力の選択が行われる。そして、この連関度がある閾値を超えた場合に、その出力を選択するようにしてもよい。
このような連関度が、人工知能でいうところの学習済みデータとなる。このような学習済みデータを作った後に、実際にこれから新たに単語から意味の探索を行うこととなる。かかる場合には、正しいエンティティを割り当てられていない単語について、これに見合う意味を探索する。かかる場合には、予め取得した図7(表1)に示す連関度を参照する。例えば、新たに取得した単語がP02と同一かこれに類似するものである場合には、連関度を介して「天候」がw15、「請求書」が連関度w16で関連付けられている。かかる場合には、連関度の最も高い「天候」を最適解として選択する。但し、最も連関度の高いものを最適解として選択することは必須ではなく、連関度は低いものの連関性そのものは認められる「請求書」を最適解として選択するようにしてもよい。また、これ以外に矢印が繋がっていない出力解を選択してもよいことは勿論であり、連関度に基づくものであれば、その他いかなる優先順位で選択されるものであってもよい。
このときエンティティ知識DB51に類義語辞書を格納しておくようにしてもよい。類義語辞書とは、類義語に関する辞書である。類義語辞書には、エンティティ知識DB51に格納されている1以上の各単語と、当該単語の1または2以上の類義語とが登録されている。具体的には、例えば、単語「傘」に対応付けて、「レインコート」、「合羽」などが登録されていてもよい。そして、この類義語辞書を介して、新たに取得した単語が参照用の単語と類似するか否かを判別することができる。仮に参照用の単語が「合羽」である場合において、新たに取得した単語が「傘」である場合、類義語辞書において類似するものとして予め登録されていることから「雨具」に対応するものと判断することが可能となる。
このような連関度を参照することにより、テキストデータから抽出した単語がいかなる意味に該当するものであるのかを精度良く判別することができる。
上述のようなステップS15におけるエンティティの自動生成処理が終了した場合には、ステップS16へ移行する。
ステップS16では、インテント、コーパスが正しく割り当てられたか否かを確認する。その結果、インテント、コーパスが正しく割り当てられている場合にはステップS20へ移行する。これに対して、インテント、コーパスが正しく割り当てられていない場合には、ステップS17へ移行する。
ステップS17に移行した場合には、インテントの自動生成を行う。かかる場合には、先ずステップS11において取得したテキストデータをそのままインテントとして登録する。例えば、入力されたテキストデータが「今日は雨なので傘がよく売れるでしょう」であればそれをコーパスとみなしてそのままインテントとして登録する。次にインテント知識DB52にアクセスする。インテント知識DB52では、上述したように、各指示動作に対してアクション決定情報がそれぞれ紐付けられている。ステップS17では、インテント知識DB52を参照し、インテントが正しく割り当てられていない指示動作と関連度が深いアクション決定情報(意味)を探索する。
仮に、ステップS12において自然言語解析した指示動作のうち、「売れる」についてインテントが正しく割り当てられていない場合には、このインテント知識DB52を参照し、指示動作「売れる」に紐付けられているアクション決定情報を探索する。その結果、このインテント知識DB52では、指示動作「売れる」に対しては、アクション決定情報「販売処理」が割り当てられているため、これを指示動作「売れる」に対するアクション決定情報としてインテント格納部12に登録する。
このようにして指示動作に対して新たにインテントを割り当てる都度、インテント格納部12に対して割り当てたインテントとアクション決定情報とを順次登録していく。図6(b)は、このインテント格納部12において新たに割り当てたインテントとアクション決定情報を登録する例を示している。新たに割り当てられたインテントに対しては、これに対応するアクション決定情報として販売処理が紐付けられる。
なお、このインテントの登録については、各単語(行為)に対してアクション決定情報がそれぞれ1対1で紐付けられた図3に示すインテント知識DB52を利用する場合に限定されるものではなく、図9に示すように、指示動作に対するアクション決定情報が3段階以上の連関度を以って関連付けられた学習済モデルを利用して解探索を行うようにしてもよい。
この学習済モデルでは、参照用の指示動作と、アクション決定情報(意味)との3段階以上の連関度が予め設定されていることが前提となる。入力データとして例えば参照用の指示動作P04~P06であるものとする。例えば、この指示動作P04が「売れる」であるものとする。このような入力データとしての参照用の指示動作P04~P06は、出力としてのアクション決定情報に連結している。
このような参照用の指示動作は、この出力解としてのアクション決定情報(例えば、「販売」、「着衣」、「要否」、「体感」等))に対して3段階以上の連関度を通じて互いに連関しあっている。指示動作がこの連関度を介して左側に配列し、各アクション決定情報が連関度を介して右側に配列している。連関度は、左側に配列された指示動作に対して、何れのアクション決定情報と関連性が高いかの度合いを示すものである。換言すれば、この連関度は、各指示動作が、いかなるアクション決定情報に紐付けられる可能性が高いかを示す指標であり、指示動作から最も確からしいアクション決定情報を選択する上での的確性を示すものである。図9の例では、連関度としてw13~w19が示されている。
このような図9に示す3段階以上の連関度w13~w19を予め取得しておく。つまり実際の探索解の判別を行う上で、指示動作と、アクション決定情報の何れが採用、評価されたか、過去のデータセットを蓄積しておき、これらを分析、解析することで連関度を作り上げておく。
例えば、過去において指示動作P04に対してアクション決定情報として「販売」が最も適合性が高いと判断され、評価されたものとする。このようなデータセットを集めて分析することにより、参照用の指示動作との連関度が強くなる。
この分析、解析は人工知能により行うようにしてもよい。かかる場合には、例えば指示動作P04である場合に、過去のデータセットに基づいて分析する。指示動作P04である場合に、「販売」の事例が多い場合には、このアクション決定情報につながる連関度をより高く設定し、「要否」の事例が多い場合には、このアクション決定情報につながる連関度をより高く設定する。例えば指示動作P04の例では、「販売」と、「要否」にリンクしているが、以前の事例から「販売」につながるw13の連関度を7点に、「要否」につながるw14の連関度を2点に設定している。
また、この連関度は、人工知能における機械学習を通じて学習させるためのニューラルネットワークのノードで構成されるものであってもよい。即ち、このニューラルネットワークのノードが出力に対する重み付け係数が、上述した連関度に対応することとなる。またニューラルネットワークに限らず、人工知能を構成するあらゆる意思決定因子で構成されるものであってもよい。
かかる場合には、図10に示すように、入力データとして指示動作が入力され、出力データとしてアクション決定情報(意味)が出力され、入力ノードと出力ノードの間に少なくとも1以上の隠れ層が設けられ、機械学習させるようにしてもよい。入力ノード又は隠れ層ノードの何れか一方又は両方において上述した連関度が設定され、これが各ノードの重み付けとなり、これに基づいて出力の選択が行われる。そして、この連関度がある閾値を超えた場合に、その出力を選択するようにしてもよい。
このような連関度が、人工知能でいうところの学習済みデータとなる。このような学習済みデータを作った後に、実際にこれから新たに指示動作からアクション決定情報の探索を行うこととなる。かかる場合には、正しいインテントを割り当てられていない指示動作について、これに見合うアクション決定情報を探索する。かかる場合には、予め取得した図9(表1)に示す連関度を参照する。例えば、新たに取得した指示動作がP01と同一かこれに類似するものである場合には、連関度を介して「販売」がw13、「要否」が連関度w14で関連付けられている。かかる場合には、連関度の最も高い「販売」を最適解として選択する。但し、最も連関度の高いものを最適解として選択することは必須ではなく、連関度は低いものの連関性そのものは認められる「要否」を最適解として選択するようにしてもよい。また、これ以外に矢印が繋がっていない出力解を選択してもよいことは勿論であり、連関度に基づくものであれば、その他いかなる優先順位で選択されるものであってもよい。
このときインテント知識DB52に類義語辞書を格納しておくようにしてもよい。類義語辞書とは、類義語に関する辞書である。類義語辞書には、インテント知識DB52に格納されている1以上の各指示動作と、当該指示動作の1または2以上の類義語とが登録されている。具体的には、例えば、指示動作「売れる」に対応付けて、「直販」、「売れ行き」などが登録されていてもよい。そして、この類義語辞書を介して、新たに取得した指示動作が参照用の指示動作と類似するか否かを判別することができる。仮に参照用の指示動作が「売れ行き」である場合において、新たに取得した指示動作が「売れる」である場合、類義語辞書において類似するものとして予め登録されていることから「販売」に対応するものと判断することが可能となる。
このような連関度を参照することにより、テキストデータから抽出した指示動作がいかなるアクション決定情報に該当するものであるのかを精度良く判別することができる。
上述のようなステップS17におけるインテントの自動生成処理が終了した場合には、ステップS19へ移行する。
ステップS19に移行した場合には、コーパスの自動生成を行う。かかる場合には、ステップS11において入力されたテキストデータを、エンティティ及びインテントからなるコーパス決定情報と対応させてコーパス知識DB53に格納する。このコーパス決定情報を構成するエンティティとは、ステップS15においてエンティティ格納部15に格納されたエンティティであってもよい。また、このコーパス決定情報を構成するインテントとは、ステップS17においてインテント格納部12に格納されたインテントであってもよい。
また、エンティティが正しく割り当てられている場合には、その正しく割り当てられたエンティティでコーパス決定情報を構成するようにしてもよい。同様にインテントが正しく割り当てられている場合には、その正しく割り当てられたインテントでコーパス決定情報を構成するようにしてもよい。
例えば、ステップS11において入力されたテキストデータが「今日は雨なので傘がよく売れるでしょう」であれば、そのテキストデータと、当該テキストデータから登録され、或いは割り当てられたエンティティとインテントとして{日付}{雨具}{天候}{今日は雨なので傘がよく売れるでしょう}がコーパス決定情報としてコーパス知識DB53に格納される。
次に、コーパス知識DB53にコーパス決定情報と紐づけて格納したテキストデータ「今日は雨なので傘がよく売れるでしょう」を、コーパスとして、インテント格納部12に格納する。即ち、コーパス知識DB53にコーパス決定情報と紐づけて格納したテキストデータをそのままコーパスとして生成する。図6(b)は、インテント格納部12に格納されるコーパスの例を示している。インテント格納部12のNo.1において、コーパス知識DB53にコーパス決定情報と紐づけて格納したテキストデータ「今日は雨なので傘がよく売れるでしょう」がコーパスとして格納されているのが分かる。
なお、コーパス知識DB53は、コーパス決定情報に基づいて、コーパス決定情報としてのエンティティ及びインテントに基づいて、格納したテキストデータと同義となる他のテキストデータを生成し、これを当該コーパス決定情報と対応させて格納するようにしてもよい。ここでいう同義となる他のテキストデータとは、格納したテキストデータと同一又は類似の意味を持つテキストデータである。図4の例によれば、格納したテキストデータ「今日は雨なので傘がよく売れるでしょう」に対して同義となる他のテキストデータの例として「今日は傘がよく売れるでしょう。雨なので」が挙げられる。この同義となる他のテキストデータは、今日、傘、雨等の単語の順序が変わっているだけで意味としては同義である。この同義となる他のテキストデータについても、コーパス決定情報としてのエンティティやインテントは、{日付}{雨具}{天候}{今日は雨なので傘がよく売れるでしょう}であり、このエンティティやインテントの順序を入れ替えるのみで、他のテキストデータを順次生成するようにしてもよい。この生成した他のテキストデータは、コーパス知識DB53において、当該コーパス決定情報と対応させて格納する。
このとき、他のテキストデータを生成する上で、各エンティティに紐づけられた単語を、エンティティ知識DB51や、エンティティ格納部15から読み出して生成するようにしてもよい。同様に、他のテキストデータを生成する上で、各インテントに紐づけられた指示動作を、インテント知識DB52や、インテント格納部15から読み出して生成するようにしてもよい。これにより、{日付}{雨具}{天候}{今日は雨なので傘がよく売れるでしょう}等のエンティティやインテントに紐づけられた単語や指示動作から、様々なテキストデータを作り出すことが可能となる。{日付}{雨具}{天候}{今日は雨なので傘がよく売れるでしょう販売}等のエンティティやインテントと紐付けられた既に格納されているテキストデータの単語や指示動作を抽出しその順序を入れ替えることで、これと同義の他のテキストデータを生成するようにしてもよい。
なお、他のテキストデータを生成する上では、エンティティやインテントの順序を入れ替える上で、またエンティティに紐づけられた単語や、インテントに紐づけられた指示動作を入れ替える上では、公知のテキスト生成技術、公知のアルゴリズムを利用して行うようにしてもよい。このようなアルゴリズム等もコーパス知識DB53に格納しておくことにより、他のテキストデータを生成することができる。このようにして新たに生成された他のテキストデータは、同様にインテント格納部12においてコーパスとして登録される。
コーパス知識DB53は、格納したテキストデータと同義となる他のテキストデータを生成することは必須ではなく、実際に他のテキストデータを生成しなくてもよい。かかる場合において、取得した新たなテキストデータからエンティティ格納部15に登録したエンティティ、インテント格納部12に登録したインテントが、既にコーパス知識DB53に登録されているコーパス決定情報としてのエンティティやインテントと適合する場合には、コーパス知識DB53は、当該コーパス決定情報と対応させて新たなテキストデータを格納するようにしてもよい。
例えば、図4に示すNo.1のテキストデータとして「今日は雨なので傘がよく売れるでしょう」のみがコーパス決定情報としての{日付}{雨具}{天候}{今日は雨なので傘がよく売れるでしょう}と関連付けて格納されているものとする。このとき、新たに「今日は傘がよく売れるでしょう。雨なので」というテキストデータが入力されるものとする。このテキストデータから登録された、又は割り当てられたエンティティ、インテントも{日付}{雨具}{天候}{今日は雨なので傘がよく売れるでしょう}であるから、コーパス決定情報と適合する。このため、コーパス知識DB53は、このコーパス決定情報{日付}{雨具}{天候}{今日は雨なので傘がよく売れるでしょう}と対応させて、この新たに入力されたテキストデータ「今日は傘がよく売れるでしょう。雨なので」をNo.2に格納する。コーパス知識DB53に格納されたテキストデータは、コーパスとしてインテント格納部12に登録する。
なお、コーパス決定情報が適合しているか否かの判断は、コーパス決定情報としてのエンティティ、インテントが同一である場合のみならず、類似の場合も適合しているものと判断するようにしてもよい。
一方、コーパス決定情報が適合していない場合は、新たに入力されたテキストデータとこれについて登録された、又は割り当てられたエンティティやインテントと対応させて、別途コーパス知識DB53に格納する。例えば、「昨日は暖かかったので花粉が沢山飛んでいた。」というテキストデータを取得した場合には、それから登録されるエンティティやインテントは、図4に示すコーパス決定情報と明らかに相違するため、新たにそのテキストデータを、これに基づくエンティティやインテントを新たなコーパス決定情報として対応付けて格納する。コーパス知識DB53に格納されたテキストデータは、コーパスとしてインテント格納部12に登録する。
次にステップS21へ移行し、テキストデータから特定した、エンティティ、インテント、コーパスを入力することで学習させる。このステップS21において学習させるのはニューラルネットワーク(ディープラーニング)で、新たに特定したエンティティ、インテント、コーパスを入力することで、これらに基づいて生成されるべきテキストデータを出力する。即ち、ステップS21において学習させるニューラルネットワークは入力がエンティティ、インテント、コーパスであり、出力がテキストデータである。これらのデータセットを順次学習させる。
次にステップS21における自然言語解析処理の結果を出力する。その結果、ステップS22において、正しく言語解析ができる場合には、ステップS23へ移行し、正しく言語解析ができない場合には、ステップS11へ戻る。
なお、ステップS20~S22の処理動作は省略するようにしてもよい。
このようにして、新たなテキストデータを取得する都度、正しく解析ができない単語、指示動作、コーパスが存在していた場合には、これらに最も関係の深いエンティティ、インテント、コーパスを割り当てることが可能となる。
これら新たに登録されたエンティティは、エンティティ格納部15に、インテントは、インテント格納部12に、コーパスはインテント格納部12に保存される。このため、これらにアクセスすることで(ステップS23)、新たにテキストデータを取得した場合、これに含まれるエンティティをパラメータ化し、或いは会話文に対応する、処理動作を特定するアクション名およびウェブフックを有するインテントを決定し、更にこれらエンティティやインテント等により特定される処理動作を実行するための情報をパラメータとしたAPIを介してデータベースを検索することも可能となる。
このように、本発明では、テキストデータを取得した際に、これに対応するエンティティやインテント、コーパスが予め登録されていない場合には、より最適なエンティティやインテント、コーパスを人手を介することなく自動的に探索して割り当てることができる。このため、エンティティやインテント、コーパスを登録するために必要な作業の負担の軽減を図ることができ、作業時間を大幅に減らすことが可能となる。
また、本発明によれば、データベース内にあるデータ、メール文章、ドキュメントファイル等があればこれに順次アクセスすることにより、テキストデータを連続して抽出することができ、この抽出したテキストデータに対して最適なエンティティやインテントを自動的に探索して割り当てることができる。このため、エンティティ格納部15、インテント格納部12、インテント格納部12には、自然にエンティティやインテント等が蓄積されてくることとなる。その結果、データベース内にあるデータ、メール文章、ドキュメントファイル等にアクセスするのみで、エンティティ格納部15、インテント格納部12、インテント格納部12にエンティティやインテント等を膨大な量にわたり蓄積することが可能となる。
第1発明に係るエンティティとインテントの自動生成装置は、文書又は会話文からテキストデータを取得するテキストデータ取得手段と、上記テキストデータ取得手段により取得されたテキストデータを自然言語解析することにより、指示動作と、これに係り受けする少なくとも単語を抽出する抽出手段と、単語とエンティティ決定情報とが互いに関連付けられたエンティティ知識データベースを参照し、上記抽出手段により抽出された単語と関連するエンティティ決定情報を探索して抽出するエンティティ候補探索手段と、上記エンティティ候補探索手段により抽出されたエンティティ決定情報を上記単語のエンティティとして登録するとともに、当該単語をエンティティ値として登録するエンティティ登録手段と、上記テキストデータをインテントとして登録するとともに、少なくとも指示動作とアクション決定情報とが互いに関連付けられたインテント知識データベースを参照し、上記抽出手段により抽出された指示動作に対応したアクション決定情報を登録するインテント登録手段とを備え、上記エンティティ候補探索手段は、単語とエンティティ決定情報とが3段階以上の連関度を以って関連付けられたエンティティ知識データベースを参照し、上記抽出手段により抽出された単語と関連するエンティティ決定情報を探索することを特徴とする。
第2発明に係るエンティティとインテントの自動生成装置は、文書又は会話文からテキストデータを取得するテキストデータ取得手段と、上記テキストデータ取得手段により取得されたテキストデータを自然言語解析することにより、指示動作と、これに係り受けする少なくとも単語を抽出する抽出手段と、単語とエンティティ決定情報とが互いに関連付けられたエンティティ知識データベースを参照し、上記抽出手段により抽出された単語と関連するエンティティ決定情報を探索して抽出するエンティティ候補探索手段と、上記エンティティ候補探索手段により抽出されたエンティティ決定情報を上記単語のエンティティとして登録するとともに、当該単語をエンティティ値として登録するエンティティ登録手段と、上記テキストデータをインテントとして登録するとともに、少なくとも指示動作とアクション決定情報とが互いに関連付けられたインテント知識データベースを参照し、上記抽出手段により抽出された指示動作に対応したアクション決定情報を登録するインテント登録手段とを備え、上記インテント登録手段は、指示動作とアクション決定情報とが3段階以上の連関度を以って関連付けられたインテント知識データベースを参照し、上記抽出手段により抽出された指示動作と関連するアクション決定情報を探索することを特徴とする。
第4発明に係るエンティティとインテントの自動生成装置は、第1発明~第3発明において、上記テキストデータ取得手段により取得されたテキストデータを、上記エンティティ登録手段により登録されたエンティティ及び上記インテント登録手段により登録されたインテントからなるコーパス決定情報と対応させて格納するコーパス知識データベースと、上記コーパス知識データベースに格納されたテキストデータをそのままコーパスとして登録するコーパス登録手段とを備えることを特徴とする。
第5発明に係るエンティティとインテントの自動生成装置は、第4発明において、上記コーパス知識データベースは、上記コーパス決定情報としてのエンティティ及びインテントに基づいて、上記格納したテキストデータと同義となる他のテキストデータを生成し、これを当該コーパス決定情報と対応させて格納することを特徴とする。
第6発明に係るエンティティとインテントの自動生成装置は、第4発明又は第5発明において、上記コーパス知識データベースは、上記テキストデータ取得手段により取得した新たなテキストデータから上記エンティティ登録手段により登録されたエンティティ及び上記インテント登録手段により登録されたインテントが、既に格納した上記コーパス決定情報と適合する場合には、当該コーパス決定情報と対応させて上記新たなテキストデータを格納することを特徴とする。
第7発明に係るインテント自動生成装置は、文書又は会話文からテキストデータを取得するテキストデータ取得手段と、上記テキストデータ取得手段により取得されたテキストデータを自然言語解析することにより、指示動作と、これに係り受けする少なくとも単語を抽出する抽出手段と、上記テキストデータをインテントとして登録するとともに、少なくとも指示動作とアクション決定情報とが互いに関連付けられたインテント知識データベースを参照し、上記抽出手段により抽出された指示動作に対応したアクション決定情報を登録するインテント登録手段とを備え、上記インテント登録手段は、指示動作とアクション決定情報とが3段階以上の連関度を以って関連付けられたインテント知識データベースを参照し、上記抽出手段により抽出された指示動作と関連するアクション決定情報を探索することを特徴とする。
第8発明に係るエンティティ自動生成装置は、文書又は会話文からテキストデータを取得するテキストデータ取得手段と、上記テキストデータ取得手段により取得されたテキストデータを自然言語解析することにより、指示動作と、これに係り受けする少なくとも単語を抽出する抽出手段と、単語とエンティティ決定情報とが互いに関連付けられたエンティティ知識データベースを参照し、上記抽出手段により抽出された単語と関連するエンティティ決定情報を探索して抽出するエンティティ候補探索手段と、上記エンティティ候補探索手段により抽出されたエンティティ決定情報を上記単語のエンティティとして登録するとともに、当該単語をエンティティ値として登録するエンティティ登録手段とを備え、上記エンティティ候補探索手段は、単語とエンティティ決定情報とが3段階以上の連関度を以って関連付けられたエンティティ知識データベースを参照し、上記抽出手段により抽出された単語と関連するエンティティ決定情報を探索することを特徴とする。
第9発明に係るエンティティとインテントの自動生成プログラムは、文書又は会話文からテキストデータを取得するテキストデータ取得ステップと、上記テキストデータ取得ステップにより取得したテキストデータを自然言語解析することにより、指示動作と、これに係り受けする少なくとも単語を抽出する抽出ステップと、単語とエンティティ決定情報とが互いに関連付けられたエンティティ知識データベースを参照し、上記抽出ステップにおいて抽出した単語と関連するエンティティ決定情報を探索して抽出するエンティティ候補探索ステップと、上記エンティティ候補探索ステップにおいて抽出したエンティティ決定情報を上記単語のエンティティとして登録するとともに、当該単語をエンティティ値として登録するエンティティ登録ステップと、上記テキストデータをインテントとして登録するとともに、少なくとも指示動作とアクション決定情報とが互いに関連付けられたインテント知識データベースを参照し、上記抽出ステップにおいて抽出した指示動作に対応したアクション決定情報を登録するインテント登録ステップとを有し、上記エンティティ候補探索ステップでは、単語とエンティティ決定情報とが3段階以上の連関度を以って関連付けられたエンティティ知識データベースを参照し、上記抽出ステップにおいて抽出した単語と関連するエンティティ決定情報を探索することをコンピュータに実行させることを特徴とする。