以下、情報生成装置、情報出力装置等の実施形態について図面を参照して説明する。なお、各実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
実施の形態1では、組織内で使われる会話文であり、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、情報検索が行える情報出力装置について説明する。
実施の形態2では、上記情報出力装置が用いるコーパスであり、組織内で使われる言葉をAPIパラメータに変換するためのインテント、1以上のエンティティ情報、および1以上の会話文情報を含むコーパスを、組織が持つ1以上のドキュメントを用いて自動生成する装置について説明する。特に、かかるコーパスを、第一ドキュメントの一種であるAPI設計書、および第二ドキュメントの一種であるテーブ情報を用いて自動生成する情報生成装置について説明する。
実施の形態3では、上記コーパスを、第一ドキュメントの一種であるDB設計書、および上記テーブ情報を用いて自動生成する情報生成装置について説明する。
実施の形態4では、API設計書、およびテーブ情報を用いて、インテント、1以上のエンティティ情報、および1以上の会話文情報を含むコーパスを自動生成し、当該コーパスを用いて、組織内で使われる会話文であり、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、情報検索することができる情報処理装置について説明する。
実施の形態5では、DB設計書、およびテーブ情報を用いて上記コーパスを自動生成し、当該コーパスを用いて、上記会話文を受け付け、情報検索することができる情報処理装置について説明する。
(実施の形態1)
本実施の形態における情報出力装置500は、例えば、サーバである。サーバは、例えば、情報検索等のサービスを提供する企業内のサーバであるが、クラウドサーバやASPサーバ等でもよく、そのタイプは問わない。サーバは、例えば、LANやインターネット等のネットワーク、無線または有線の通信回線などを介して、1または2以上の端末(図示しない)と通信可能に接続される。端末は、例えば、情報検索等のサービスを利用するユーザの携帯端末であるが、据え置き型のPC等でもよく、そのタイプは問わない。携帯端末は、例えば、タブレット端末、スマートフォン、携帯電話機、ノートPC等であるが、その種類は問わない。
ただし、情報出力装置500は、例えば、スタンドアロンの端末でもよく、その実現手段は問わない。
図1は、本実施の形態における情報出力装置500のブロック図である。情報出力装置500は、格納部1、受付部2、処理部3、および出力部4を備える。格納部1は、テーブル格納部11、インテント格納部12、API情報格納部13、会話文情報格納部14、エンティティ格納部15、エンティティマッピング情報格納部16、PK項目格納部17、および日変換情報格納部18を備える。受付部2は、会話文受付部21を備える。会話文受付部21は、音声受付手段211、および音声認識手段212を備える。
処理部3は、インテント決定部31、会話文情報決定部32、エンティティ取得部33、パラメータ取得部34、API情報取得部35、問合情報構成部36、および検索部37を備える。パラメータ取得部34は、判断手段341、日情報取得手段342、エンティティ名取得手段343、翻訳項目名取得手段344、テーブル識別子取得手段345、主キー識別子取得手段346、および変換パラメータ取得手段347を備える。出力部4は、検索結果出力部41を備える。
格納部1は、各種の情報を格納し得る。各種の情報とは、例えば、テーブル、インテント、API情報、コーパス、エンティティ、エンティティマッピング情報、PK項目、および日変換情報などである。なお、テーブル等の情報については後述する。また、その他の情報については、適時説明する。
テーブル格納部11には、1または2以上のテーブルが格納される。テーブルとは、業務処理に用いられるデータベースの一種である。データベースとは、コンピュータが検索や蓄積等を容易に行えるように構造化された情報の集合である、といってもよい。
業務処理とは、業務に関する処理である。業務は、例えば、会社や団体等の組織で行われる仕事である、といってもよい。業務は、例えば、定時までの勤務、定時後の残業、休暇、欠勤、A案件、B案件、経理、製造などであるが、その種類は問わない。業務処理は、例えば、情報の検索である。なお、検索は、例えば、照会といってもよい。検索される情報は、例えば、残業時間や勤務時間等の勤怠情報であるが、残高や株価等の金融情報、または製造ラインの稼働情況などでもよく、その内容は問わない。
ただし、業務処理は、例えば、情報の登録、または情報に基づく処理(例えば、勤怠情報に基づく給与計算、財務情報に基づく金融取引等)などでもよく、その種類は問わない。また、業務処理に用いられるデータベースとは、例えば、組織内のローカルなデータベースである、といってもよい。
テーブルは、例えば、表形式のデータベースであってもよい。テーブルには、例えば、1または2以上の項目名が登録され、さらに、当該1以上の各項目名ごとに、1または2以上の値が登録される。なお、項目名は、属性名といってもよいし、一の項目名に対応する1以上の各値は、属性値といってもよい。また、テーブルは、例えば、リレーショナルデータベースのテーブル、TSV、エクセル、CSV等であるが、その種類は問わない。属性名とは、属性の名称であり、属性値とは、属性が取り得る値である、といってもよい。属性とは、データが持つ性質であり、リレーショナルデータベースにおけるフィールドの各項目である、といてもよい。
ただし、テーブルは、予め表形式を有していなくてもよく、例えば、表形式に変換された又は表形式への変換が可能な文書ファイルのデータベースであってもよい。表形式への変換が可能な文書ファイルは、例えば、ワードファイルであるが、メールやチャットやテキスト等のファイルでもよく、その種類は問わない。ワード等の文書ファイルの場合、例えば、文字列中に区切りを設けることにより、表形式への変換が可能となる。さらに、テーブルは、業務処理に用いられるデータベースであり、表形式の又は表形式に変換された又は表形式への変換が可能なデータベースであれば、その種類は問わない。
格納されるテーブルは、具体的には、例えば、社員マスタ、業務マスタ、勤務時間テーブルなどである。社員マスタには、社員に関するマスタデータが登録される。社員に関するマスタデータとは、例えば、社員コード、社員名等のデータであるが、その種類は問わない。業務マスタには、業務に関するマスタデータが登録される。業務に関するマスタデータとは、例えば、業務ID、業務名等のデータであるが、その種類は問わない。
勤務時間テーブルには、勤務時間に関するデータが登録される。勤務時間に関するデータとは、例えば、日付、残業時間、合計勤務時間、業務ID等の可変的なデータであるが、その種類は問わない。なお、合計勤務時間とは、定時までの勤務時間と残業時間との合計である。
勤務時間テーブルには、通常、社員コードに対応付けて、上記のような勤務時間に関するデータが登録される。ただし、勤務時間に関するデータが対応付く情報は、例えば、社員名でもよく、社員を識別し得る情報でれば何でもよい。
インテント格納部12には、1または2以上のインテントが格納される。インテントとは、業務処理ごとに管理される情報である。業務処理ごとに管理されることは、例えば、業務処理を特定する情報に対応付けて、インテント格納部12に格納されることであってもよい。なお、業務処理を特定する情報は、通常、後述するアクション名であるが、その形式は問わない。また、対応付くことは、例えば、インテントが、業務処理を特定する情報を有する場合も含む。
インテントは、通常、業務処理を特定するアクション名を有する。アクション名とは、アクションの名称である。アクションとは、通常、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文の変数などである。
パラメータは、例えば、属性名と値との組で構成されてもよい。属性名と値との組とは、具体的には、例えば、“shain_code=2”、“sta_date=20190401,end_date=20190430”等であるが、その形式は問わない。
パラメータ特定情報は、例えば、パラメータ名である。パラメータ名とは、パラメータの名称である。または、パラメータ特定情報は、例えば、属性名であるが、パラメータを特定し得る情報であれば何でもよい。
API情報は、例えば、メソッドである。メソッドは、例えば、“serch_残業時間(社員コード=$1,開始日付=$2,終了日付=$3)”や“serch_業務時間(社員コード=$1,作業日付=$2,業務ID=$3)”等であるが、その形式は問わない。なお、メソッドについては、公知であるので詳しい説明を省略する。
または、API情報は、例えば、SQL文でもよい。SQL文とは、データベースに対して問い合わせを行うための文である、といってもよい。SQL文は、例えば、“select_残業時間_from_テーブル名=$1_where_社員コード=$2,業務日付=$3”等であるが、その構造は問わない。なお、SQL文については、公知であるので詳しい説明を省略する。
または、API情報は、例えば、URLとメソッドとの組などでもよく、その構造は問わない。URLとメソッドとの組は、具体的には、例えば、“http://develop.soppra・・・?社員コード=$1&開始日付=$2&終了日付=$3”等であるが、その形式は問わない。なお、この種のAPI情報は、例えば、WebAPI情報といってもよい。
会話文情報格納部14には、1または2以上の会話文情報が格納される。会話文情報とは、会話文の情報である。会話文情報は、通常、会話文の例文である。例文は、例えば、“中村の先月の残業時間を教えて”や“中村の昨日のA案件の勤務時間を教えて”等であるが、その内容は問わない。
ただし、会話文情報は、会話文のテンプレートであってもよい。テンプレートは、例えば、“{社員エンティティ}の{日付エンティティ}の{残業エンティティ}を教えて”や“{社員エンティティ}の{日付エンティティ}の{業務エンティティ}の{勤務時間エンティティ}を教えて”等であるが、その形式は問わない。なお、テンプレートに含まれる{社員エンティティ}等の“{”,“}”で表現される情報は、例えば、変数と呼んでもよい。また、エンティティ、および「社員エンティティ」等のエンティティ名については後述する。
会話文情報は、通常、インテントに対応付いている。すなわち、会話文情報格納部14には、例えば、インテント格納部12に格納されている1以上の各インテントごとに、1または2以上の会話文情報が格納される(図7参照:後述)。
また、会話文情報格納部14には、通常、格納されている1以上の各会話文情報ごとに、1または2以上のエンティティ情報も格納される。エンティティ情報とは、エンティティに関する情報である。エンティティ情報は、例えば、一の会話文情報に対応付いている1以上の各エンティティに関する情報である。エンティティ情報は、例えば、エンティティでもよいし、エンティティ名でもよいし、会話文における当該エンティティの位置または順序を示す情報でもよい。エンティティ情報は、例えば、エンティティ、およびエンティティ名を有する。エンティティ情報は、会話文情報が例文の場合、例えば、エンティティ、開始位置、終了位置、およびエンティティ名を有する。
エンティティ情報が有するエンティティは、当該エンティティ情報が有するエンティティ名に対応する1または2以上のエンティティの中の代表値である。代表値は、一のエンティティ名に対応する1以上のエンティティ中の、例えば、先頭のエンティティであるが、どのエンティティでもよい。
開始位置とは、会話文情報において当該エンティティが始まる位置である。開始位置は、例えば、会話文を構成する文字列において、当該エンティティの最初の文字が何番目の文字であるかを示す値(例えば、“1”や“4”等)で表現される。同様に、終了位置とは、会話文情報において当該エンティティが終わる位置であり、例えば、当該エンティティの最後の文字が何番目の文字であるかを示す値(例えば、“2”や“5”等)で表現される。ただし、開始位置や終了位置の表現形式は問わない。なお、開始位置および終了位置は、オフセットといってもよい。また、オフセットは、バイト数で表現されてもよく、その形式は問わない。
エンティティ名とは、エンティティの名称である。エンティティの名称とは、例えば、エンティティの属性名といってもよい。エンティティ名は、例えば、「社員エンティティ」、「日付エンティティ」、「残業時間エンティティ」等であるが、エンティティの属性を表現し得る情報であれば、その形式は問わない。社員エンティティとは、社員に関するエンティティである。日付エンティティとは、日付に関するエンティティである。残業時間エンティティとは、残業時間に関するエンティティである。
または、エンティティ情報は、会話文情報がテンプレートの場合、例えば、エンティティ名、エンティティ、および順序情報を有していてもよい。順序情報とは、テンプレートに含まれる1以上の変数において、当該エンティティ名が何番目の変数に対応するかを示す値である。ただし、エンティティ情報は、例えば、エンティティ名、および当該エンティティ名に対応付いた1または2以上のエンティティの組などでもよく、その構造は問わない。
会話文情報格納部14には、具体的には、例えば、会話文情報“中村の先月の残業時間を教えて”と、これに対応する3つのエンティティ情報“中村,1,2,社員エンティティ”,“先月,4,5,日付エンティティ”,および“残業時間,7,10,残業エンティティ”が格納されていてもよい。
なお、本実施の形態におけるコーパスとは、コンピュータが自然言語処理を行うための情報の集合であり、組織内で使われる会話文に関する情報の集合である。コーパスは、例えば、会話文情報格納部14に格納されている1以上の会話文情報の各々と考えてもよいし、1以上の会話文情報、および各会話文情報に対応付いているエンティティ情報の集合と考えることもできる。または、コーパスは、1以上の会話文情報等に加えて、例えば、当該1以上の会話文情報等を生成するためのインテント、エンティティ名、当該エンティティ名に対応付いた1以上のエンティティなども含むと考えてもよい。
エンティティ格納部15には、1または2以上のエンティティが格納される。エンティティとは、会話文情報に対応付けられた1または2以上の各単語である。単語とは、文を構成する単位である。単語は、例えば、単に「語」、または「ことば」などと呼んでもよいし、形態素の一種(例えば、後述する自立語)と考えてもよい。
エンティティ格納部15には、例えば、1以上の各エンティティ名に対応付けて、1または2以上のエンティティが格納される。
エンティティは、通常、会話文情報格納部14に格納されている1以上の会話文情報の中のいずれか1つ又は2以上の会話文情報に対応付いている。従って、エンティティ格納部15には、例えば、会話文情報格納部14に格納されている1以上の各会話文情報ごとに、1または2以上のエンティティが格納されてもよい。
会話文情報に対応付く単語は、通常、自立語である。自立語とは、単独でも文節を構成し得る語であり、例えば、名詞であるが、動詞、形容詞等でもよい。ただし、対応付く単語は、付属語でもよい。付属語とは、単独では文節を構成し得ず、他の自立語を伴って文節を構成する語であり、例えば、助動詞、助詞などである。つまり、対応付く単語は、通常、自立語であるが、付属語を伴った自立語であってもよい。
また、対応付く単語は、例えば、連語でもよい。連語とは、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つである。
日変換情報格納部18には、1または2以上の日変換情報が格納される。日変換情報とは、日単語を日付に変換するための情報である。日単語とは、日に関する単語である。日単語は、通常、エンティティ名「日付エンティティ」に対応付いた単語であり、例えば、「先月」、「昨日」、「先週」、「今年」、「今月」、「昨年」、「前期」、「今年度」などであるが、日付に変換し得る情報であれば何でもよい。
日変換情報は、日単語と、日情報取得情報とを有する。日情報取得情報とは、日情報を取得するための情報である。日情報とは、日単語に対応する日に関する情報であり、問合情報を構成する際に使用する情報である。日情報は、例えば、“4月1日”等の日付を示す情報でもよいし、“4/1〜4/30”等の開始日付から終了日付までの期間を示す情報でもよく、その形式は問わない。日情報取得情報は、例えば、関数名、またはメソッド名であるが、API情報でもよいし、プログラム自体でもよく、その形式は問わない。
具体的には、日単語「先月」に対する日情報取得情報は、例えば、現在時刻情報(例えば“2019年5月10日11時15分”:以下同様)を取得し、当該現在時刻情報が有する月(例えば“5月”)に対して前の月(例えば“4月”)を取得し、当該前の月のカレンダー情報を参照して、当該前の月の初日から末日までの日情報(例えば“4/1〜4/30”等)を取得するプログラム等でもよい。
また、日単語「今年」に対する日情報取得情報は、例えば、現在時刻情報を取得し、当該現在時刻情報が有する年(例えば“2019年”)のカレンダー情報を参照して、当該年の初日から、当該現在時刻情報が有する日までの日情報(例えば、“2019/1/1〜2019/5/10”)を取得するAPI情報等でもよい。
さらに、日単語「昨日」に対する日情報取得情報は、現在時刻情報を取得し、当該現在時刻情報が有する日の前の日の日情報(例えば、“5/9”)を取得するメソッド、またはそのメソッド名等でもよい。
受付部2は、各種の情報を受け付ける。各種の情報とは、例えば、会話文である。受付部2は、会話文等の情報を、例えば、端末から受信するが、キーボードやタッチパネルやマイクロフォン等の入力デバイスを介して受け付けてもよい。または、受付部2は、例えば、ディスクや半導体メモリ等の記録媒体から読み出された情報を受け付けてもよく、その受け付けの態様は問わない。
会話文受付部21は、会話文を受け付ける。会話文とは、人が会話する文であり、自然言語による文といってもよい。会話文の受け付けは、例えば、音声での受け付けであるが、テキストでの受け付けでもよい。音声とは、人が発した声である。テキストとは、人が発した声を音声認識した文字列である。文字列は、1または2以上の文字の配列で構成される。
音声受付手段211は、会話文の音声を受け付ける。音声受付手段211は、会話文の音声を、例えば、端末から、端末識別子と対に受信するが、マイクロフォンを介して受け付けてもよい。端末識別子とは、端末を識別する情報である。端末識別子は、例えば、MACアドレス、IPアドレス、IDなどであるが、端末を識別し得る情報であれば何でもよい。なお、端末識別子は、端末のユーザを識別するユーザ識別子でもよい。ユーザ識別子は、例えば、メールアドレス、電話番号等であるが、IDや住所・氏名等でもよく、ユーザを識別し得る情報であれば何でもよい。
音声認識手段212は、音声受付手段211が受け付けた音声に対して音声認識処理を行い、文字列である会話文を取得する。なお、音声認識処理は公知技術であり、詳しい説明を省略する。
処理部3は、各種の処理を行う。各種の処理とは、例えば、インテント決定部31、会話文情報決定部32、エンティティ取得部33、パラメータ取得部34、API情報取得部35、問合情報構成部36、検索部37、判断手段341、日情報取得手段342、エンティティ名取得手段343、翻訳項目名取得手段344、テーブル識別子取得手段345、主キー識別子取得手段346、および変換パラメータ取得手段347などの処理である。また、各種の処理には、例えば、フローチャートで説明する各種の判別なども含まれる。
処理部3は、例えば、会話文受付部21が会話文を受け付けたことに応じて、インテント決定部31等の処理を行う。なお、1以上の各端末から、端末識別子と対に会話文が送信される場合、処理部3は、インテント決定部31等の処理を、1以上の各端末識別子ごとに行う。
インテント決定部31は、会話文受付部21が受け付けた会話文に対応するインテントを決定する。
詳しくは、インテント決定部31は、最初、例えば、会話文受付部21が受け付けた会話文に対応するテキストを取得する。テキストは、前述したように、例えば、会話文受付部21が受け付けた会話文を音声認識した結果であるが、会話文受付部21が受け付けた会話文そのものでもよい。
すなわち、インテント決定部31は、音声である会話文が受け付けられた場合、当該会話文を音声認識し、テキストを取得する。なお、テキストである会話文が受け付けられた場合、インテント決定部31は、当該テキストを取得すればよい。
次に、インテント決定部31は、取得したテキストに対して、例えば、形態素解析を行うことにより、当該テキストから1以上の自立語を取得する。なお、形態素解析は公知技術であり、詳しい説明を省略する。
そして、インテント決定部31は、取得した1以上の自立語と同一または類似する単語を有するアクション名を有するインテントを決定する。
詳しくは、例えば、格納部1に類義語辞書が格納されている。類義語辞書とは、類義語に関する辞書である。類義語辞書には、インテント格納部12に格納されている1以上の各インテントを構成するアクション名ごとに、当該アクション名が有する単語と、当該単語の1または2以上の類義語とが登録されている。具体的には、例えば、アクション名「残業時間照会」が有する単語「残業時間」に対応付けて、「時間外」、「時間外時間」などが登録されていてもよい。
例えば、会話文受付部21が会話文「大塚の先月の残業時間を教えて」を受け付けた場合、インテント決定部31は、当該会話文から、「大塚」や「先月」や「残業時間」等の1以上の自立語を取得し、各自立語をキーにインテント格納部12を検索して、当該自立語と一致するアクション名を有するインテントがあるか否かを判断する。なお、一致は、例えば、完全一致であるが、部分一致でもよい。そして、当該自立語と一致する単語を有するアクション名を有するインテントがある場合、インテント決定部31は、当該インテントを決定する。本例では、自立語「残業時間」と一致する単語「残業時間」を有するアクション名「残業時間参照」を有するインテントがあるため、当該インテントが決定される。
なお、当該自立語と一致する単語を有するアクション名を有するインテントがない場合、例えば、インテント決定部31は、類義語辞書から、当該自立語に対応する1以上の類義語のうち、一の類義語を取得し、当該一の類義語をキーにインテント格納部12を検索して、当該当該一の類義語と一致する単語を有するアクション名を有するインテントがあるか否かを判断する。そして、当該一の類義語と一致する単語を有するアクション名を有するインテントがある場合、インテント決定部31は、当該インテントを決定する。かかるインテントがない場合、インテント決定部31は、他の類義語について、同様の処理を行い、インテントを決定する。どの類義語についても、かかるインテントがない場合、インテント決定部31は、インテントが決定されない旨を出力してもよい。
会話文情報決定部32は、インテント決定部31が決定したインテントをキーに会話文情報格納部14を検索し、当該インテントに対応する1以上の会話文情報の中から、会話文受付部21が受け付けた会話文に最も近似する会話文情報を決定する。
会話文に最も近似する会話文情報とは、例えば、会話文に対する類似度が最も高い会話文情報である。すなわち、会話文情報決定部32は、例えば、受け付けられた会話文と、決定されたインテントに対応する1以上の各会話文情報との類似度を算出し、類似度が最大の会話文情報を決定する。
または、会話文情報決定部32は、例えば、受け付けられた会話文の名詞の位置を変数にしたテンプレートに一致する会話テンプレートを検索してもよい。すなわち、会話文情報格納部14には、1または2以上の各エンティティ名を変数にしたテンプレートが格納されており、会話文情報決定部32は、受け付けられた会話文の1または2以上の各エンティティ名の位置を取得し、取得したエンティティ名の位置に対応するテンプレートを会話文情報に決定する。なお、会話文の1以上の各エンティティ名の位置とは、1以上の各エンティティ名を有するテンプレートにおいて、当該エンティティ名が何番目のエンティティ名かを示す情報である。
エンティティ取得部33は、会話文情報決定部32が決定した会話文情報に対応付いている1以上の各エンティティに対応し、会話文受付部21が受け付けた会話文が有する単語である1以上のエンティティを取得する。
エンティティ取得部33は、例えば、決定された会話文情報に対応付いている1以上の各エンティティごとに、当該エンティティの開始位置および終了位置を会話文情報格納部14から取得し、受け付けられた会話文から、当該開始位置および当該終了位置により特定される単語を取得する。
具体的には、前述したように、例えば、会話文情報格納部14に、会話文情報“中村の先月の残業時間を教えて”と、これに対応する3つのエンティティ情報“中村,1,2、社員エンティティ”,“先月,4,5、日付エンティティ”,および“残業時間,7,10,残業エンティティ”が格納されており、会話文受付部21が会話文「大塚の先月の残業時間を教えて」を受け付け、会話文情報決定部32が上記会話文情報「中村の先月の残業時間を教えて」を決定した場合、エンティティ取得部33は、受け付けられた会話文「大塚の先月の残業時間を教えて」から、1つ目のエンティティ情報が有する開始位置“1”および終了位置“2”で特定される単語「大塚」と、2つ目のエンティティ情報が有する開始位置“4”および終了位置“5”で特定される単語「先月」と、3つ目のエンティティ情報が有する開始位置“7”および終了位置“10”で特定される単語「残業時間」とを取得する。
パラメータ取得部34は、エンティティ取得部33が取得した1以上の各エンティティに対応する1以上のパラメータを取得する。
取得されるパラメータは、例えば、取得されたエンティティそのものであるが、取得されたエンティティを変換した情報でもよい。すなわち、例えば、取得された1以上のエンティティの中に日単語が含まれている場合、パラメータ取得部34は、当該日単語をパラメータである日情報に変換する。
パラメータ取得部34を構成する判断手段341は、エンティティ取得部33が取得した1以上のエンティティの中に日単語が存在するか否かを判断する。詳しくは、例えば、格納部1に、1または2以上の日単語が格納されており、判断手段341は、取得された1以上の各エンティティごとに、格納されているいずれかの日単語と一致するか否かの判別を行い、少なくとも1つのエンティティについての判別結果が一致を示す場合に、取得された1以上のエンティティの中に日単語が存在すると判断する。
日情報取得手段342は、取得された1以上のエンティティの中に日単語が存在すると判断手段341が判断した場合に、当該日単語に対応する日変換情報を日変換情報格納部18から取得し、当該日変換情報を用いて、パラメータである日情報を取得する。
具体的には、例えば、格納部1に、日単語「先月」等が格納されており、会話文「大塚の先月の残業時間を教えて」が受け付けられて、3つのエンティティ「大塚」、「先月」、および「残業時間」が取得された場合、判断手段341は、エンティティ「先月」が日単語「先月」と一致することから、取得された3のエンティティの中に日単語が存在すると判断する。例えば、現在時刻情報を取得し、日情報(例えば“4/1〜4/30”等)を取得する
日情報取得手段342は、当該日単語「先月」に対応する日情報取得情報(例えば、プログラム)を日変換情報格納部18から取得する。そして、日情報取得手段342は、当該日情報取得情報を用いて、MPUの内蔵時計やNTPサーバ等から現在時刻情報(例えば“2019年5月10日11時15分”)を取得し、当該現在時刻情報が有する月(例えば“5月”)に対して前の月(例えば“4月”)を取得する。そして、日情報取得手段342は、当該前の月のカレンダー情報を参照して、当該前の月の初日から末日までの日情報“4月1日〜4月30日”を取得する。
なお、会話文から取得された日単語が「今年」である場合、日情報取得手段342は、当該日単語「今年」に対応する日情報取得情報(例えば、API情報)を日変換情報格納部18から取得する。そして、日情報取得手段342は、当該日情報取得情報を用いて、内蔵時計等から現在時刻情報を取得し、当該現在時刻情報が有する年(例えば“2019年”)のカレンダー情報を参照して、当該年の初日から、当該現在時刻情報が有する日までの日情報(例えば、“2019/1/1〜2019/5/10”)を取得する。
また、取得された日単語が「昨日」である場合、日情報取得手段342は、当該日単語「昨日」に対応する日情報取得情報(例えば、メソッド)を日変換情報格納部18から取得する。そして、日情報取得手段342は、当該日情報取得情報を用いて、内蔵時計等から現在時刻情報を取得し、当該現在時刻情報が有する日の前の日の日情報(例えば、“5/9”)を取得する。
エンティティ名取得手段343は、エンティティ取得部33が取得した1以上の各エンティティごとに、当該エンティティに対応するエンティティ名をエンティティ格納部15から取得する。
当該エンティティに対応するエンティティ名とは、当該エンティティが取得された会話文において、当該エンティティに対応するエンティティの位置に一致または類似する開始位置および終了位置と対になるエンティティ名である。エンティティ名取得手段343は、エンティティ取得部33が取得した1以上の各エンティティごとに、例えば、当該エンティティに対応付いたエンティティ情報を用いて、当該エンティティに対応するエンティティ名をエンティティ格納部15から取得してもよい。
具体的には、例えば、受け付けられた会話文「大塚の先月の残業時間を教えて」から3つのエンティティ「大塚」、「先月」、および「残業時間」が取得された場合、エンティティ名取得手段343は、会話文情報格納部14に格納されている会話文情報「中村の先月の残業時間を教えて」において、当該会話文情報に対応付けて格納されている3つのエンティティ情報のうち、受け付けられた会話文「大塚の先月の残業時間を教えて」における「大塚」と同じ開始位置“1”および終了位置“2”を有する1つ目のエンティティ情報を用いて、「中村」に対応付いた「社員エンティティ」を取得する。
また、エンティティ名取得手段343は、例えば、上記3つのエンティティ情報のうち、会話文「大塚の先月の残業時間を教えて」における「先月」と同じ開始位置“4”および終了位置“5”を有する2つ目のエンティティ情報を用いて、「先月」に対応付いた「日付エンティティ」を取得し、さらに、会話文「大塚の先月の残業時間を教えて」における「残業時間」と同じ開始位置“7”および終了位置“10”を有する3つ目のエンティティ情報を用いて、「残業時間」に対応付いた「残業時間エンティティ」を取得する。
翻訳項目名取得手段344は、例えば、エンティティ名取得手段343が取得した1以上の各エンティティ名ごとに、当該エンティティ名と対になる翻訳項目名をエンティティマッピング情報格納部16から取得する。
具体的には、エンティティマッピング情報格納部16に、例えば、テーブル識別子“MST_SHAIN”と翻訳項目名“SHAIN_NAME”とエンティティ名“社員エンティティ”とを有するエンティティマッピング情報1、テーブル識別子“TRN_TIME_CARD”と翻訳項目名“TIME_CARD_DATE”とエンティティ名“日付エンティティ”とを有するエンティティマッピング情報2、およびテーブル識別子“TRN_TIME_CARD”と翻訳項目名“ZIKANGAI_TIME”とエンティティ名“残業エンティティ”とを有するエンティティマッピング情報3などが格納されており、エンティティ名取得手段343が3つのエンティティ名「社員エンティティ」、「日付エンティティ」、および「残業エンティティ」を取得した場合、翻訳項目名取得手段344は、当該3つのエンティティマッピング情報1〜3を用いて、エンティティ名「社員エンティティ」と対になる翻訳項目名“SHAIN_NAME”、エンティティ名「日付エンティティ」と対になる翻訳項目名“TIME_CARD_DATE”、および「残業エンティティ」と対になる翻訳項目名“ZIKANGAI_TIM”を取得する。
テーブル識別子取得手段345は、エンティティ名取得手段343が取得した1以上の各エンティティ名ごとに、当該エンティティ名と対になるテーブル識別子をエンティティマッピング情報格納部16から取得する。
具体的には、テーブル識別子取得手段345は、例えば、上記3つのエンティティマッピング情報1〜3を用いて、エンティティ名「社員エンティティ」と対になるテーブル識別子“MST_SHAIN”、エンティティ名「日付エンティティ」と対になるテーブル識別子“TRN_TIME_CARD”、およびエンティティ名「残業エンティティ」と対になるテーブル識別子“TRN_TIME_CARD”を取得する。
主キー識別子取得手段346は、テーブル識別子取得手段345が取得したテーブル識別子と対になる主キー識別子をPK項目格納部17から取得する。
具体的には、PK項目格納部17に、例えば、テーブル識別子“MST_SHAIN”と主キー識別子“SHAIN_CODE”とを有するPK項目1、テーブル識別子“TRN_TIME_CARD”と主キー識別子“SHAIN_CODE”とを有するPK項目2、テーブル識別子“TRN_TIME_CARD”と主キー識別子“TIME_CARD_DATE”とを有するPK項目3、およびテーブル識別子“MST_GYOUMU”と主キー識別子“GYOUMU_ID”とを有するPK項目4などが格納されており、主キー識別子取得手段346は、当該PK項目1〜4を用いて、テーブル識別子“MST_SHAIN”と対になる主キー識別子“SHAIN_CODE”、テーブル識別子“TRN_TIME_CARD”と対になる主キー識別子“SHAIN_CODE”、テーブル識別子“TRN_TIME_CARD”と対になる主キー識別子“TIME_CARD_DATE”、およびテーブル識別子“MST_GYOUMU”と対になる主キー識別子“GYOUMU_ID”を取得する。
変換パラメータ取得手段347は、テーブル識別子取得手段345が取得したテーブル識別子で識別されるテーブルから、翻訳項目名取得手段344が取得した翻訳項目名の属性値が、エンティティ取得部33が取得したエンティティと一致するレコードに含まれる属性値であり、主キー識別子取得手段346が取得した主キー識別子の属性値である、変換されたパラメータを取得する。
具体的には、変換パラメータ取得手段347は、取得されたテーブル識別子“MST_SHAIN”で識別される社員マスタから、取得された翻訳項目名“SHAIN_NAME”の属性値が、取得されたエンティティ“大塚”と一致するレコードに含まれる属性値であり、取得された主キー識別子“SHAIN_CODE”の属性値である、変換されたパラメータ“shain_code=2”を取得する。
また、変換パラメータ取得手段347は、取得されたテーブル識別子“TRN_TIME_CARD”で識別される勤務時間テーブルから、取得された2つの翻訳項目名“TIME_CARD_DATE”および“SHAIN_NAME”の属性値が、取得されたエンティティ“先月”を変換したエンティティ“4月1日〜4月30日”、および取得されたエンティティ“大塚”と一致するレコードに含まれる属性値であり、取得された2つの主キー識別子“SHAIN_CODE”および“TIME_CARD_DATE”の属性値である変換されたパラメータ“shain_code=2,sta_date=20190401,end_date=20190430”を取得する。
API情報取得部35は、インテント決定部31が決定したインテントに対応するAPI情報をAPI情報格納部13から取得する。
API情報取得部35は、例えば、インテント決定部31が決定したインテントに対応するアクション名を有するAPI情報を、API情報格納部13から取得する。
具体的には、API情報格納部13に、例えば、アクション名“残業時間照会”と3以上のパラメータ特定情報“社員コード,shain_code”,“開始日付,sta_date”,および“終了日付,end_date”などを有するAPI情報1、およびアクション名“勤務時間データ照会”と3以上のパラメータ特定情報“社員コード,shain_code”,“作業日付,time_card_date”,および“業務ID,gyoumu_id”などを有するAPI情報2が格納されており、インテント名「残業照会インテント」で特定されるインテントが取得された場合、API情報取得部35は、当該インテントが有するアクション名“残業時間照会”を有するAPI情報1を取得する。
問合情報構成部36は、パラメータ取得部34が取得した1以上のパラメータと、API情報取得部35が取得したAPI情報とを用いて、問合情報を構成する。問合情報とは、情報検索するための情報であり、通常、実行可能な情報である。問合情報は、例えば、引数が挿入された関数またはメソッドであるが、完成されたSQL文でもよいし、URLとパラメータの組でもよい。
問合情報構成部36は、例えば、API情報取得部35が取得したAPI情報が有する1以上の各変数の箇所に、各箇所に対応付くパラメータであり、パラメータ取得部34が取得したパラメータを配置することにより、問合情報を構成する。
具体的には、例えば、取得されたAPI情報1が有する3以上の各変数の箇所に、“shain_code=2”、sta_date=20190401”、およびend_date”=20190430が配置された問い合わせ情報“https://develop.soppra・・・?shain_code=2&sta_date=20190401&end_date=20190430”が構成されてもよい。
検索部37は、問合情報構成部36が構成した問合情報を実行し、検索結果を取得する。例えば、問合情報“https://develop.soppra・・・?shain_code=2&sta_date=20190401&end_date=20190430”が実行され、社員コード2で特定される社員「大塚二郎」の4月1日から4月30日までの各日付に対応する残業時間“0401=1,0402=0,・・・4030=2”が取得されてもよい。なお、SQL等の問合情報や、検索部37の詳しい動作については、具体例や変形例で説明する。
出力部4は、各種の情報を出力する。各種の情報とは、例えば、検索結果である。
出力部4は、例えば、受付部2が端末識別子と対に会話文等の情報を受信したことに応じて処理部3が各種の処理を行った結果である検索結果等の情報を、当該端末識別子で識別される端末に送信する。または、例えば、受付部2がタッチパネルやマイクロフォン等の入力デバイスを介して会話文等の情報を受け付けたことに応じて、出力部4は、検索結果等の情報を、ディスプレイやスピーカ等の出力デバイスを介して出力してもよい。
ただし、出力部4は、各種の情報を、例えば、プリンタでプリントアウトしたり、記録媒体に蓄積したり、他のプログラムに引き渡したり、外部の装置に送信したりしてもよく、その出力の態様は問わない。
検索結果出力部41は、検索部37が取得した検索結果を出力する。検索結果出力部41は、例えば、会話文受付部21が端末識別子と対に会話文を受信したことに応じて検索部37が取得した検索結果を、当該端末識別子で識別される端末に送信する。または、検索結果出力部41は、例えば、会話文受付部21がマイクロフォン等の入力デバイスを介して会話文を受け付けたことに応じて検索部37が取得した検索結果を、ディスプレイやスピーカ等の出力デバイスを介して出力してもよい。
格納部1、テーブル格納部11、インテント格納部12、API情報格納部13、会話文情報格納部14、エンティティ格納部15、エンティティマッピング情報格納部16、PK項目格納部17、および日変換情報格納部18は、例えば、ハードディスクやフラッシュメモリといった不揮発性の記録媒体が好適であるが、RAMなど揮発性の記録媒体でも実現可能である。
格納部1等に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部1等で記憶されるようになってもよく、ネットワークや通信回線等を介して送信された情報が格納部1等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部1等で記憶されるようになってもよい。入力デバイスは、例えば、キーボード、マウス、タッチパネル、マイクロフォン等、何でもよい。なお、格納部1等に関する上記事項は、実施の形態2で説明する格納部10等にも当てはまる。
なお、格納部1等は、情報出力装置500の外部にあってもよい。つまり、テーブル等の情報は、情報出力装置500のコンピュータがアクセス可能な外部の記録媒体に格納されてもよい。また、かかる事項は、実施の形態2で説明する格納部10等にも当てはまる。
受付部2、会話文受付部21、音声受付手段211、および音声認識手段212は、入力デバイスを含むと考えても、含まないと考えてもよい。受付部2等は、入力デバイスのドライバーソフトによって、または入力デバイスとそのドライバーソフトとで実現され得る。なお、かかる事項は、実施の形態2で説明する受付部20にも当てはまる。
処理部3、インテント決定部31、会話文情報決定部32、エンティティ取得部33、パラメータ取得部34、API情報取得部35、問合情報構成部36、検索部37、判断手段341、日情報取得手段342、エンティティ名取得手段343、翻訳項目名取得手段344、テーブル識別子取得手段345、主キー識別子取得手段346、および変換パラメータ取得手段347は、通常、MPUやメモリ等から実現され得る。処理部3等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。ただし、処理手順は、ハードウェア(専用回路)で実現してもよい。なお、かかる事項は、実施の形態2で説明する処理部30等、および実施の形態3で説明するインテント生成部301a等にも当てはまる。
出力部4、および検索結果出力部41は、ディスプレイやスピーカ等の出力デバイスを含むと考えても含まないと考えてもよい。出力部4等は、出力デバイスのドライバーソフトによって、または出力デバイスとそのドライバーソフトとで実現され得る。なお、かかる事項は、実施の形態2で説明する出力部40にも当てはまる。
なお、受付部2等の受信機能は、通常、無線または有線の通信手段(例えば、NIC(Network interface controller)やモデム等の通信モジュール)で実現されるが、放送を受信する手段(例えば、放送受信モジュール)で実現されてもよい。なお、かかる事項は、実施の形態2で説明する受付部20の受信機能にも当てはまる。また、出力部4等の送信機能は、通常、無線または有線の通信手段で実現されるが、放送手段(例えば、放送モジュール)で実現されてもよい。なお、かかる事項は、実施の形態2で説明する出力部40の送信機能にも当てはまる。
次に、情報出力装置500の動作について図2および図3のフローチャートを用いて説明する。
図2は、情報出力装置500の動作を説明するフローチャートである。なお、1以上の各端末から端末識別子と対に会話文が送信される場合、図2および図3のフローチャートは、1以上の各端末識別子ごとに実行される。
(ステップS201)処理部3は、会話文受付部21が会話文を受け付けたか否かを判別する。会話文受付部21が会話文を受け付けたと判断された場合はステップS202に進み、受け付けていないと判断された場合はステップS201に戻る。
(ステップS202)インテント決定部31は、インテント格納部12に格納されている1以上のインテントの中から、ステップS201で受け付けられた会話文に対応するインテントを決定する。
(ステップS203)会話文情報決定部32は、ステップS202で決定されたインテントに対応する1以上の会話文情報の中から、ステップS201で受け付けられた会話文に最も近似する会話文情報を決定する。
(ステップS204)エンティティ取得部33は、ステップS203で決定された会話文情報に対応付いている1以上の各エンティティに対応し、ステップS201で受け付けられた会話文が有する1以上のエンティティをエンティティ格納部15から取得する。
(ステップS205)パラメータ取得部34は、ステップS204で取得された1以上の各エンティティに対応する1以上のパラメータを取得する処理(以下、パラメータ取得処理と記す場合がある)を実行する。なお、パラメータ取得処理については、図3を用いて説明する。
(ステップS206)API情報取得部35は、ステップS202で決定されたインテントに対応するAPI情報をAPI情報格納部13から取得する。
(ステップS207)問合情報構成部36は、ステップS205で取得された1以上のパラメータと、ステップS206で取得されたAPI情報とを用いて、問合情報を構成する。
(ステップS208)検索部37は、ステップS207で構成された問合情報を実行し、検索結果を取得する。
(ステップS209)検索結果出力部41は、ステップS208で取得された検索結果を出力する。その後、ステップS201に戻る。
なお、図2のフローチャートにおいて、情報出力装置500の電源オンやプログラムの起動に応じて処理が開始し、電源オフや処理終了の割り込みにより処理は終了する。ただし、処理の開始または終了のトリガは問わない。
図3は、ステップS205のパラメータ取得処理を説明するフローチャートである。
(ステップS301)パラメータ取得部34は、変数iに初期値1をセットする。変数iとは、ステップS204で取得された1または2以上のエンティティのうち、未選択のエンティティを順番に選択していくための変数である。
(ステップS302)パラメータ取得部34は、i番目のエンティティがあるか否かを判別する。i番目のエンティティがあると判断された場合はステップS303に進み、i番目のエンティティがないと判別された場合は上位処理にリターンする。
(ステップS303)エンティティ名取得手段343は、i番目のエンティティに対応するエンティティ名をエンティティ格納部15から取得する。
(ステップS304)翻訳項目名取得手段344は、ステップS303で取得されたエンティティ名と対になる翻訳項目名をエンティティマッピング情報格納部16から取得する。
(ステップS305)テーブル識別子取得手段345は、ステップS303で取得されたエンティティ名と対になるテーブル識別子をエンティティマッピング情報格納部16から取得する。
(ステップS306)主キー識別子取得手段346は、ステップS305で取得されたテーブル識別子と対になる主キー識別子をPK項目格納部17から取得する。
(ステップS307)判断手段341は、i番目のエンティティが日単語であるか否かを判断する。i番目のエンティティが、日単語であると判断された場合はステップS308に進み、日単語でないと判断された場合はステップS309に進む。
(ステップS308)日情報取得手段342は、当該日単語に対応する日変換情報を日変換情報格納部18から取得し、取得した日変換情報を用いて、パラメータである日情報(開始日付,終了日付等)を取得する。
(ステップS309)変換パラメータ取得手段347は、ステップS305で取得されたテーブル識別子で識別されるテーブルから、翻訳項目名の属性値が、i番目のエンティティと一致するレコードに含まれる属性値であり、ステップS306で取得された主キー識別子の属性値である、変換されたパラメータ(Shain_code=1,sta_date=20190401,end_date=20190430等)を取得する。
(ステップS310)パラメータ取得部34は、変数iをインクリメントする。その後、ステップS302に戻る。
以下、本実施の形態における情報出力装置500の具体的な動作例について説明する。なお、以下の説明は、種々の変更が可能であり、本発明の範囲を何ら制限するものではない。
本例における情報出力装置500は、スタンドアロンの端末である。情報出力装置500のテーブル格納部11には、例えば、図4に示すような3つのテーブル情報が格納されている。図4は、テーブル情報のデータ構造図である。テーブル情報は、テーブル識別子、およびテーブルを有する。格納される各テーブル情報には、ID(例えば、“1”,“2”等)が対応付いている。
例えば、ID“1”に対応するテーブル情報(以下、テーブル情報1と記す場合がある)は、テーブル識別子“MST_SHAIN”、および第一のテーブル(社員マスタ)を有する。社員マスタには、第一の項目名“SHAIN_CODE”とそれに対応する2以上の値“1”,“2”・・・、および第2の項目名“SHAIN_CODE”とそれに対応する2以上の値“中村一郎”,“大塚二郎”・・・などが登録されている。
また、ID“2”に対応するテーブル情報2は、テーブル識別子“MST_GYOUMU”、および第二のテーブル(業務マスタ)を有する。業務マスタには、第一の項目名“GYOUMU_ID”とそれに対応する2以上の値“a”,“b”・・・、および第2の項目名“GYOUMU_NAME”とそれに対応する2以上の値“A案件”,“B案件”・・・などが登録されている。
さらに、テーブル情報3は、テーブル識別子“TRN_TIME_CARD”、および第三のテーブル(勤務時間テーブル)を有する。勤務時間テーブルには、第一の項目名“TRN_TIME_CARD”とそれに対応する2以上の値“4/1”,“4/1”・・・“4/2”,“4/2”・・・“4/30”,“4/30”・・・、第2の項目名“SHAIN_CODE”とそれに対応する2以上の値“1”,“2”・・・“1”,“2”・・・“1”,“2”、第3の項目名“ZIKANGAI_TIME”とそれに対応する2以上の値“2”,“1”・・・“1”,“0”・・・“3”,“2”、第4の項目名“TOTAL_TIME”とそれに対応する2以上の値“10”,“9”・・・“9”,“8”・・・“11”,“10”、および第5の項目名“GYOUMU_ID”とそれに対応する2以上の値“a”,“b”・・・“a”,“b”・・・“b”,“b”などが登録されている。
インテント格納部12には、例えば、図5に示すような2以上のインテントが格納される。図5は、インテントのデータ構造図である。インテントは、インテント名、およびアクション名を有する。格納される各インテントには、ID(例えば、“1”,“2”等)が対応付いている。
例えば、ID“1”に対応するインテント1は、インテント名“残業照会インテント”、およびアクション名“残業時間照会”を有する。また、インテント2は、インテント名“勤務照会データ照会インテント”、およびアクション名“勤務照会データ照会”を有する。
API情報格納部13には、例えば、図6に示すような、アクション名とAPI情報との対の集合が格納される。図6は、API情報格納部13の内容の一例を示す図である。アクション名とAPI情報との対とは、例えば、アクション名“残業時間照会”とAPI情報“serch_残業時間(社員コード,開始日付,終了日付)”との対、アクション名“勤務時間データ照会”とAPI情報“serch_勤務時間(社員コード,業務日付,業務ID)”との対などである。
会話文情報格納部14には、例えば、図7に示すように、1以上の各インテントに対応付けて、1または2以上の会話文情報が格納され、さらに、当該1以上の各会話文情報に対応付けて、1または2以上のエンティティ情報も格納される。図7は、会話文情報格納部14の内容の一例を示す図である。エンティティ情報は、エンティティ、開始位置、終了位置、およびエンティティ名を有する。
例えば、第一のインテント“残業時間照会インテント”には、5つの会話文情報1〜5が対応付いている。このうち、会話文情報1は、“中村の先月の残業時間を教えて”であり、会話文情報2は、“先月の中村の残業時間を教えて”であり、会話文情報3は、“中村の残業時間を教えて”であり、会話文情報4は、“先月の残業時間を教えて”であり、会話文情報5は、“残業時間を教えて”である。
“残業時間照会インテント”に対応付いた会話文情報1には、エンティティ“中村”,開始位置“1”,終了位置“2”,およびエンティティ名“社員エンティティ”を有する第一のエンティティ情報と、エンティティ“先月”,開始位置“4”,終了位置“5”,およびエンティティ名“日付エンティティ”を有する第二のエンティティ情報と、エンティティ“残業時間”,開始位置“7”,終了位置“10”,およびエンティティ名“残業エンティティ”を有する第三のエンティティ情報とが対応付いている。
また、会話文情報2には、エンティティ“先月”,開始位置“1”,終了位置“2”,およびエンティティ名“日付エンティティ”を有する第四のエンティティ情報と、エンティティ“中村”,開始位置“4”,終了位置“5”,およびエンティティ名“社員エンティティ”を有する第五のエンティティ情報と、エンティティ“残業時間”,開始位置“7”,終了位置“10”,およびエンティティ名“残業エンティティ”を有する第六のエンティティ情報とが対応付いている。
また、会話文情報3には、エンティティ“中村”,開始位置“1”,終了位置“2”,およびエンティティ名“社員エンティティ”を有する第七のエンティティ情報と、エンティティ“残業時間”,開始位置“4”,終了位置“7”,およびエンティティ名“残業エンティティ”を有する第八のエンティティ情報とが対応付いている。
また、会話文情報4には、エンティティ“先月”,開始位置“1”,終了位置“2”,およびエンティティ名“日付エンティティ”を有する第九のエンティティ情報と、エンティティ“残業時間”,開始位置“4”,終了位置“7”,およびエンティティ名“残業エンティティ”を有する第十のエンティティ情報とが対応付いている。
さらに、会話文情報5には、エンティティ“残業時間”,開始位置“1”,終了位置“4”,およびエンティティ名“残業エンティティ”を有する第十一のエンティティ情報が対応付いている。
他方、第二のインテント“勤務時間データ照会インテント”には、例えば、15の会話文情報1〜15が対応付いている。このうち、会話文1は、“中村一郎の昨日のA案件の勤務時間を教えて”であり、会話文2は、“中村一郎のA案件の昨日の勤務時間を教えて”であり、最後の会話文15は、“勤務時間を教えて”である。なお、会話文2以下は、会話文1に対し、語順の変更、または一部の語の省略を行った文である。
“勤務時間データ照会インテント”に対応付いた会話文情報1には、エンティティ“中村一郎”,開始位置“1”,終了位置“4”,およびエンティティ名“社員エンティティ”を有する第一のエンティティ情報と、エンティティ“昨日”,開始位置“6”,終了位置“7”,およびエンティティ名“日付エンティティ”を有する第二のエンティティ情報と、エンティティ“勤務時間”,開始位置“13”,終了位置“16”,およびエンティティ名“勤務時間エンティティ”を有する第三のエンティティ情報とが対応付いている。なお、会話文2〜15の各々にも、同様に構成された1以上のエンティティ情報が対応付いている。
エンティティ格納部15には、例えば、図8に示すように、1以上の各エンティティ名に対応付けて、1または2以上のエンティティが格納される。図8は、各エンティティ名に対応する1以上のエンティティ(以下、エンティティ群と記す場合がある)の例を示す図である。なお、前述したように、エンティティ名とエンティティ群の組をエンティティ情報と考えてもよい。
例えば、エンティティ名“社員エンティティ”に対応するエンティティ群は、“中村一郎”,“大塚二郎”などを含む。エンティティ名“日付エンティティ”に対応するエンティティ群は、“先月”,“昨日”などを含む。エンティティ名“残業エンティティ”に対応するエンティティ群は、“残業時間”,“残業”などを含む。エンティティ名“業務エンティティ”に対応するエンティティ群は、“A案件”,“B案件”などを含む。エンティティ名“勤務時間エンティティ”に対応するエンティティ群は、“勤務時間”,“勤務”などを含む。
エンティティマッピング情報格納部16には、例えば、図9に示すような2以上のエンティティマッピング情報(エンティティマッピング情報1〜4など)が格納される。図9は、エンティティマッピング情報のデータ構造図である。エンティティマッピング情報は、テーブル識別子と、翻訳項目名と、エンティティ名とを有する。
なお、エンティティマッピング情報1〜3については、前述したので繰り返さない。エンティティマッピング情報4は、テーブル識別子“MST_GYOUMU”と、翻訳項目名“GYOUMU_ID”と、エンティティ名“業務エンティティ”とを有する。
PK項目格納部17には、例えば、図10に示すような、2以上のPK項目(PK項目1〜4など)が格納される。図10は、PK項目のデータ構造図である。PK項目は、テーブル識別子と、主キー識別子とを有する。なお、PK項目1〜4については、前述したので繰り返さない。
日変換情報格納部18には、日単語と日情報取得情報との対の集合(図示しない)が格納される。日単語と日情報取得情報との対とは、例えば、日単語「先月」と日情報取得情報1との対、日単語「昨日」と日情報取得情報2との対などである。例えば、日単語「先月」に対応する日情報取得情報1は、現在時刻情報を取得し、当該現在時刻情報が有する月に対して前の月を取得し、当該前の月のカレンダー情報を参照して、当該前の月の初日から末日までの日情報を取得するプログラムである。日単語「昨日」に対応する日情報取得情報2は、現在時刻情報を取得し、当該現在時刻情報が有する日の前の日の日情報を取得するメソッドである。
現在時刻は、2019年5月10日11時15分である。いま、ユーザが端末に対して「大塚の先月の残業時間を教えて」を音声入力したとする。
情報出力装置500において、音声受付手段211がマイクロフォンを介して上記音声を受け付け、音声認識手段212は、当該音声に対して音声認識処理を行い、会話文「大塚の先月の残業時間を教えて」を取得する。
インテント決定部31は、インテント格納部12に格納されている2以上のインテント1,2・・・の中から、当該会話文に対応するインテントを決定する。詳しくは、インテント決定部31は、例えば、形態素解析によって、当該会話文から3つの自立語「大塚」、「先月」および「残業時間」を取得し、各自立語をキーにインテント格納部12を検索して、「残業時間」と部分一致するアクション名“残業時間参照”を有するインテント1を決定する。
会話文情報決定部32は、会話文情報格納部14(図7)を参照して、決定されたインテント1に対応する5つの会話文情報1〜5の中から、当該会話文に最も近似する会話文情報を決定する。ここでは、当該会話文に対して、開始位置“1”および終了位置“2”で特定される社員エンティティである「中村」のみが異なり、その他のエンティティは同じである会話文情報1が決定される。
エンティティ取得部33は、決定された会話文情報1に対応付いている3つのエンティティ「中村」、「先月」、および「残業時間」に対応するエンティティであり、当該会話文が有する3のエンティティである「大塚」、「先月」、および「残業時間」をエンティティ格納部15から取得する。
詳しくは、会話文情報決定部32は、会話文情報1に対応する第一〜第三の3つのエンティティ情報のうち、第一のエンティティ情報を参照して、当該会話文中の開始位置“1”および終了位置“2”で特定される「大塚」が社員エンティティであると判断する。次に、会話文情報決定部32は、エンティティ格納部15を参照して、エンティティ名「社員エンティティ」に対応するエンティティ群から、“大塚”と部分一致するエンティティ「大塚二郎」を取得する。
また、会話文情報決定部32は、第二のエンティティ情報を参照して、当該会話文中の開始位置“4”および終了位置“5”で特定される「先月」が日付エンティティであると判断し、エンティティ名「日付エンティティ」に対応するエンティティ群から、“先月”と完全一致するエンティティ「先月」を取得する。
さらに、会話文情報決定部32は、第三のエンティティ情報を参照して、当該会話文中の開始位置“7”および終了位置“10”で特定される「残業時間」が残業エンティティであると判断し、エンティティ名「残業エンティティ」に対応するエンティティ群から、“残業時間”と完全一致するエンティティ「残業時間」を取得する。
こうして、当該会話文に対応する3のエンティティ「大塚二郎」、「先月」、および「残業時間」が取得されると、パラメータ取得部34は、当該3つのエンティティに対応する3つのパラメータを取得する。
詳しくは、まず、1番目のエンティティ「大塚二郎」に関し、パラメータ取得部34を構成するエンティティ名取得手段343が、第一のエンティティ情報を用いて、エンティティ名「社員エンティティ」をエンティティ格納部15から取得する。次に、翻訳項目名取得手段344は、取得されたエンティティ名「社員エンティティ」と対になる翻訳項目名「SHAIN_NAME」をエンティティマッピング情報格納部16からエンティティマッピング情報1を用いて取得する。また、テーブル識別子取得手段345は、取得されたエンティティ名「社員エンティティ」と対になるテーブル識別子“MST_SHAIN”をエンティティマッピング情報格納部16からエンティティマッピング情報1を用いて取得する。
次に、主キー識別子取得手段346は、取得されたテーブル識別子“MST_SHAIN”と対になる主キー識別子“SHAIN_CODE”を、PK項目格納部17からPK項目1を用いて取得する。また、判断手段341は、1番目のエンティティ「大塚」が日単語でないと判断し、それに応じて、変換パラメータ取得手段347は、取得されたテーブル識別子“MST_SHAIN”で識別されるテーブル(社員マスタ)から、翻訳項目名「SHAIN_NAME」の属性値が、1番目のエンティティ「大塚二郎」と一致するレコードに含まれる属性値であり、取得された主キー識別子“SHAIN_CODE”の属性値である、1つ目の変換されたパラメータ“shain_code=2”を取得する。
次に、2番目のエンティティ「先月」に関し、エンティティ名取得手段343が、「先月」に対応するエンティティ名「日付エンティティ」を取得し、翻訳項目名取得手段344は、取得されたエンティティ名「日付エンティティ」と対になる翻訳項目名「TIME_CARD_DATE」をエンティティマッピング情報2を用いて取得する。テーブル識別子取得手段345は、取得されたエンティティ名「日付エンティティ」と対になるテーブル識別子“TRN_TIME_CARD”をエンティティマッピング情報格納部16からエンティティマッピング情報2を用いて取得する。
次に、主キー識別子取得手段346は、取得されたテーブル識別子“TRN_TIME_CARD”と対になる2つの主キー識別子“SHAIN_CODE”および“TIME_CARD_DATE”を、2つのPK項目2および3を用いて取得する。判断手段341は、2番目のエンティティ「先月」が日単語であると判断し、これに応じて、日情報取得手段342が、当該日単語「先月」に対応する日変換情報を日変換情報格納部18から取得し、取得した日変換情報を用いて、日情報“4/1〜4/30”を取得する。
詳しくは、日情報取得手段342は、内蔵時計等から現在時刻情報“2019年5月10日11時15分”を取得し、現在時刻情報が有する“5月”の前の月である4月のカレンダー情報を参照して、開始日付“4/1”から終了日付“4/30”までの30日を示す日情報“4/1〜4/30”を取得する。
変換パラメータ取得手段347は、取得されたテーブル識別子“TRN_TIME_CARD”で識別されるテーブル(勤務時間テーブル)から、翻訳項目名「TIME_CARD_DATE」の属性値が、2番目のエンティティ「先月」に対応する開始日付“4/1”および終了日付“4/30”と一致するレコードに含まれる属性値であり、取得された2つの主キー識別子“SHAIN_CODE”および“TIME_CARD_DATE”の属性値である、2つ目および3つ目の変換されたパラメータ“sta_date=20190401”および“end_date=20190430”を取得する。
次に、3番目のエンティティ「残業時間」に関し、エンティティ名取得手段343が、「残業時間」に対応するエンティティ名「残業エンティティ」を取得し、翻訳項目名取得手段344は、取得されたエンティティ名「残業エンティティ」と対になる翻訳項目名「ZIKANGAI_TIME」をエンティティマッピング情報3を用いて取得する。また、テーブル識別子取得手段345は、取得されたエンティティ名「残業エンティティ」と対になるテーブル識別子“TRN_TIME_CARD”をエンティティマッピング情報3を用いて取得する。
なお、取得されたテーブル識別子“TRN_TIME_CARD”と対になる2つの主キー識別子“SHAIN_CODE”および“TIME_CARD_DATE”は、取得済みであるため、主キー識別子取得手段346は、通常、これらを取得しないが、再度取得してもよい。
また、判断手段341は、3番目のエンティティ「残業時間」が日単語でないと判断し、変換パラメータ取得手段347は、取得されたテーブル識別子“TRN_TIME_CARD”で識別される勤務時間テーブルが有する翻訳項目名「ZIKANGAI_TIME」に対応する、4つ目の変換されたパラメータ“zikangai_time”を取得する。
こうして、当該会話文「大塚の先月の残業時間を教えて」に対応する4つのパラメータ“shain_code=2”,“sta_date=20190401”,“end_date=20190430”および“zikangai_time”が取得されると、API情報取得部35は、決定されたインテント1が有するアクション名“残業時間照会”に対応するAPI情報“serch_残業時間(社員コード,開始日付,終了日付)”をAPI情報格納部13から取得する。
問合情報構成部36は、取得された上記4つのパラメータを、取得されたAPI情報“serch_残業時間(社員コード,開始日付,終了日付)”の対応する変数に代入することにより、問合情報“serch_zikangai_time(shain_code=2,sta_date=20190401,end_date=20190430”を構成する。
検索部37は、構成された問合情報を実行し、検索結果を取得する。ここでは、テーブル識別子“TRN_TIME_CARD”で識別される残業時間テーブルから、項目名“TIME_CARD_DATE”の値が“4/1”〜“4/30”であり、かつSHAIN_CODEの値が“2”である30個のレコードから、項目名“ZIKANGAI_TIME”に対応する30個の値“1,0,・・・2”が取得され、当該30個の値を合計した検索結果“20時間”が取得される。
検索結果出力部41は、取得された検索結果“20時間”を含む応答文を出力する。出力される応答文は、例えば、“20時間です”や“大塚様の4月の残業時間は20時間です”等であってもよい。詳しくは、例えば、格納部1に、応答文のテンプレートが格納されており、検索結果出力部41は、当該テンプレートの変数に、上記の検索結果“20時間”、上記会話文から取得された“大塚”、および検索の過程で取得された“4月”などを代入することによって、応答文を構成してもよい。
なお、詳細な説明は省略するが、会話文「大塚二郎のA案件の昨日の勤務時間を教えて」に対しては、例えば、4つのパラメータ“shain_code=2”,“time_card_date=20190509”,“gyoumu_id=a”,および“total_time”が取得され、問合情報“serch_total_time(shain_code=2,time_card_date=20190509,gyoumu_id=a”が構成されてもよい。
(変形例1)なお、API情報がSQL文“select_残業時間_from_テーブル名_where_社員コード,業務日付”である場合、パラメータ取得部34は、4つのパラメータ“shain_code=2”,“time_caed_date=20190509”,“trn_time_card”,および“zikangai_time”を取得し、問合情報構成部36は、問合情報“select_zikangai_time_from_trn_time_card_where_shain_code=2,time_caed_date=20190509”を構成してもよい。
(変形例2)なお、API情報がURLおよびメソッドの組“http://develop.soppra・・・?社員コード&開始日付&終了日付”である場合、パラメータ取得部34は、4つのパラメータ“shain_code=2”,“sta_date=20190401”,“end_date=20190430”,および“zikangai_time”を取得し、問合情報構成部36は、問合情報“http://develop.soppra・・・?shain_code=2&sta_date=20190401&end_date=20190430”を構成してもよい。
以上、本実施の形態によれば、インテント格納部12に、業務処理ごとに管理される情報であり、業務処理を特定するアクション名を有する情報である1以上のインテントが格納され、API情報格納部13に、インテントに対応付いている情報であり、情報検索を行うための情報であり、1以上の変数であるパラメータを特定する情報を有する情報である1以上のAPI情報が格納され、会話文情報格納部14に、インテントに対応付く情報であり、会話文の情報である1以上の会話文情報が格納され、エンティティ格納部15に、いずれか1以上の会話文情報に対応付く単語である1以上のエンティティが格納され、情報出力装置500は、会話文を受け付け、受け付けた会話文に対応するインテントを決定し、決定したインテントに対応する1以上の会話文情報の中から、受け付けた会話文に最も近似する会話文情報を決定し、決定した会話文情報に対応付いている1以上の各エンティティに対応し、受け付けた会話文が有する単語である1以上のエンティティを取得し、取得した1以上の各エンティティに対応する1以上のパラメータを取得し、決定したインテントに対応するAPI情報をAPI情報格納部13から取得し、取得した1以上のパラメータと、取得したAPI情報とを用いて、情報検索するための問合情報を構成し、構成した問合情報を実行し、検索結果を取得し、取得した検索結果を出力することにより、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、情報検索することができる。
また、情報出力装置500は、受け付けた会話文に対応するテキストを取得し、テキストから1以上の自立語を取得し、1以上の自立語と同一または類似する単語を有するアクション名を有するインテントを決定することにより、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、情報検索することができる。
また、日変換情報格納部18に、日に関する単語である日単語と、日単語に対応する日に関する情報であり、問合情報を構成する際に使用する情報である日情報を取得するための日情報取得情報とを有する1以上の日変換情報が格納され、情報出力装置500は、取得した1以上のエンティティの中の日単語に対応する日変換情報を日変換情報格納部18から取得し、日変換情報を用いて、パラメータである日情報を取得することにより、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、適切に情報検索することができる。
なお、上記構成において、情報出力装置500は、取得した1以上のエンティティの中に日単語が存在するか否かを判断し、日単語が存在すると判断した場合に、日単語に対応する日変換情報を日変換情報格納部18から取得し、日変換情報を用いて、パラメータである日情報を取得してもよい。これにより、日単語の有無によらず、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、適切に情報検索することができる。
また、エンティティ格納部15のエンティティは、エンティティの名称であるエンティティ名に対応付いており、エンティティマッピング情報格納部16に、テーブルを特定するテーブル識別子と、テーブル識別子で識別されるテーブル内の属性名であり、変換されるエンティティを特定する情報である翻訳項目名と、エンティティ名とを有する1以上のエンティティマッピング情報が格納され、PK項目格納部17に、テーブル識別子とテーブル識別子で識別されるテーブルの主キーを特定する主キー識別子とを有する1以上のPK項目が格納され、情報出力装置500は、取得したエンティティに対応するエンティティ名を取得し、取得したエンティティ名と対になる翻訳項目名をエンティティマッピング情報格納部16から取得し、取得したエンティティ名と対になるテーブル識別子をエンティティマッピング情報格納部16から取得し、取得したテーブル識別子と対になる主キー識別子をPK項目格納部17から取得し、取得したテーブル識別子で識別されるテーブルから、取得した翻訳項目名の属性値が、取得したエンティティと一致するレコードに含まれる属性値であり、取得した主キー識別子の属性値である変換されたパラメータを取得することにより、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、適切に情報検索することができる。
また、情報出力装置500は、取得したAPI情報が有する1以上の各変数の箇所に、各箇所に対応付くパラメータであり、取得したパラメータを配置し、問合情報を構成することにより、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、情報検索することができる。
また、情報出力装置500は、会話文の音声を受け付け、音声に対して音声認識処理を行い、文字列である会話文を取得することにより、同じ検索結果を求める問合せでも動的に変化する音声による会話文を受け付け、情報検索することができる。
さらに、本実施の形態における処理は、ソフトウェアで実現してもよい。そして、このソフトウェアをソフトウェアダウンロード等により配布してもよい。また、このソフトウェアをCD−ROMなどの記録媒体に記録して流布してもよい。なお、このことは、本明細書における他の実施の形態においても該当する。
なお、本実施の形態における情報出力装置500を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、業務処理ごとに管理される情報であり、業務処理を特定するアクション名を有する情報である1以上のインテントが格納されるインテント格納部12、インテントに対応付いている情報であり、情報検索を行うための情報であり、1以上の変数であるパラメータを特定する情報を有する情報である1以上のAPI情報が格納されるAPI情報格納部13、インテントに対応付く情報であり、会話文の情報である1以上の会話文情報が格納される会話文情報格納部14、およびいずれか1以上の会話文情報に対応付く単語である1以上のエンティティが格納されるエンティティ格納部15にアクセス可能なコンピュータを、会話文を受け付ける会話文受付部21と、前記会話文受付部21が受け付けた会話文に対応するインテントを決定するインテント決定部31と、前記インテント決定部31が決定したインテントに対応する1以上の会話文情報の中から、前記会話文受付部21が受け付けた会話文に最も近似する会話文情報を決定する会話文情報決定部32と、前記会話文情報決定部32が決定した会話文情報に対応付いている1以上の各エンティティに対応し、前記会話文受付部21が受け付けた会話文が有する単語である1以上のエンティティを取得するエンティティ取得部33と、前記エンティティ取得部33が取得した1以上の各エンティティに対応する1以上のパラメータを取得するパラメータ取得部34と、前記インテント決定部31が決定したインテントに対応するAPI情報を前記API情報格納部13から取得するAPI情報取得部35と、前記パラメータ取得部34が取得した1以上のパラメータと、前記API情報取得部35が取得したAPI情報とを用いて、情報検索するための問合情報を構成する問合情報構成部36と、前記問合情報構成部36が構成した問合情報を実行し、検索結果を取得する検索部37と、前記検索部37が取得した検索結果を出力する検索結果出力部41として機能させるためのプログラムである。
図11は、本実施の形態におけるプログラムを実行して、情報出力装置500を実現するコンピュータシステム900の外観図である。本実施の形態は、コンピュータハードウェアおよびその上で実行されるコンピュータプログラムによって実現され得る。図11において、コンピュータシステム900は、ディスクドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、ディスプレイ904と、マイクロフォン917と、スピーカ918とを備える。なお、キーボード902やマウス903やディスプレイ904やマイクロフォン917やスピーカ918をも含むシステム全体をコンピュータと呼んでもよい。
図12は、コンピュータシステム900の内部構成の一例を示す図である。図12において、コンピュータ901は、ディスクドライブ905に加えて、MPU911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM913と、アプリケーションプログラム、システムプログラム、およびデータを記憶するストレージ914と、MPU911、ROM912等を相互に接続するバス915と、外部ネットワークや内部ネットワーク等のネットワークへの接続を提供するネットワークカード916と、を備える。ストレージ914は、例えば、ハードディスク、SSD、フラッシュメモリなどである。
コンピュータシステム900に、情報出力装置500の機能を実行させるプログラムは、例えば、DVD、CD−ROM等のディスク921に記憶されて、ディスクドライブ905に挿入され、ストレージ914に転送されてもよい。これに代えて、そのプログラムは、ネットワークを介してコンピュータ901に送信され、ストレージ914に記憶されてもよい。プログラムは、実行の際にRAM913にロードされる。なお、プログラムは、ディスク921、またはネットワークから直接、ロードされてもよい。また、ディスク921に代えて他の着脱可能な記録媒体(例えば、DVDやメモリカード等)を介して、プログラムがコンピュータシステム900に読み込まれてもよい。
プログラムは、コンピュータの詳細を示す901に、情報出力装置500の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
なお、上述したコンピュータシステム900は、サーバまたは据え置き型のPCであるが、情報出力装置500は、例えば、タブレット端末やスマートフォンやノートPCといった、携帯端末で実現されてもよい。この場合、例えば、キーボード902およびマウス903はタッチパネルに、ディスクドライブ905はメモリカードスロットに、ディスク921はメモリカードに、それぞれ置き換えられてもよい。ただし、以上は例示であり、情報出力装置500を実現するコンピュータのハードウェア構成は問わない。
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
なお、上述したコンピュータシステム900は、以下で説明する実施の形態2および3の情報生成装置、ならびに実施の形態4および5の情報処理装置も実現し得る。
(実施の形態2)
本実施の形態における情報生成装置100は、例えば、ネットワークや通信回線等を介して、実施の形態1で説明した情報出力装置500と通信可能に接続される。情報生成装置100も、情報出力装置500と同様、例えば、情報検索等のサービスを提供する企業内のサーバであるが、スタンドアロンの端末でもよく、その実現手段は問わない。なお、かかる事項は、実施の形態3にも共通する。
情報生成装置100は、実施の形態1で説明した情報出力装置500が用いるインテント、1以上の会話文情報、および1以上のエンティティ等の情報を生成する装置である。生成されたンテント、1以上の会話文情報、および1以上のエンティティ等の情報は、情報生成装置100から情報出力装置500に引き渡され又は送信され、情報出力装置500のインテント格納部12、会話文情報格納部14、およびエンティティ格納部15等に蓄積される。
図13は、本実施の形態における情報生成装置100のブロック図である。情報生成装置100は、格納部10、受付部20、処理部30、および出力部40を備える。格納部10は、ドキュメント格納部101、テンプレート格納部102、インテント格納部12a、API情報格納部13a、会話文情報格納部14a、エンティティ格納部15a、エンティティマッピング情報格納部16a、およびPK項目格納部17aを備える。なお、テーブル格納部11aは、ドキュメント格納部101に含まれると考えてもよい。つまり、テーブルは、後述するドキュメントの一種と考えてもよい。
処理部30は、インテント生成部301、エンティティ生成部302、会話文情報生成部303、エンティティマッピング情報生成部304、PK項目生成部305、および蓄積部306を備える。インテント生成部301は、API情報抽出手段3011、アクション名取得手段3012、およびインテント生成手段3013を備える。エンティティ生成部302は、エンティティ名生成手段3021、およびエンティティ生成手段3022を備える。会話文情報生成部303は、エンティティ取得手段3031、および会話文生成手段3032を備える。蓄積部306は、インテント蓄積手段3061、エンティティ蓄積手段3062、会話文情報蓄積手段3063、エンティティマッピング情報蓄積手段3064、およびPK項目蓄積手段3065を備える。
格納部10には、各種の情報が格納される。各種の情報とは、例えば、ドキュメント、設計書、テンプレート、テーブル、インテント、会話文情報、エンティティ、エンティティマッピング情報、PK項目などである。なお、ドキュメント、API設計書、およびテンプレートについては後述する。また、テーブル、インテント、会話文情報、エンティティ、エンティティマッピング情報、およびPK項目については、実施の形態1で説明したので繰り返さない。
格納部10を構成するドキュメント格納部101には、1または2以上のドキュメントが格納される。ドキュメントとは、コンピュータによって処理される情報の集合であり、自然言語の文または単語を構成する1または2以上の文字列を含む情報の集合である、といってもよい。
ドキュメントは、例えば、アクション名またはアクション名の一部を有する文字列を含むことは好適である。なお、アクション名については、実施の形態1で説明したので繰り返さない。以下では、アクション名またはアクション名の一部を有する文字列を含むドキュメントを「第一ドキュメント」と記す場合がある。
第一ドキュメントは、例えば、文書ファイルである。文書ファイルとは、文書に関するファイルである。文書は、例えば、設計書である。設計書とは、ソフトウェアの設計に関する文書であり、例えば、仕様書、定義書などといってもよい。ソフトウェアは、例えば、APIであるが、データベース等でもよく、その種類は問わない。なお、API、およびデータベースについては、前述したので繰り返さない。設計書は、例えば、後述するAPI設計書であるが、DB設計書でもよい。なお、DB設計書については、実施の形態3で説明する。ただし、文書は、設計書に限らず、例えば、日報や業務指示書や企画書等の社内文書でもよいし、注文書や納品書のような、社外とやり取りされる文書でもよく、その種類は問わない。
なお、文書ファイルは、前述したように、例えば、ワードやエクセル等のファイルであるが、ハイパーテキストでもよく、その形式は問わない。ハイパーテキストとは、HTMLやXML等のマークアップ言語で記述された文書であり、当該文書中の単語を他の文書と関連付ける組み(リンクともいう)を有する文書ファイルである、といってもよい。
または、ドキュメントは、例えば、属性名および当該属性名に対応する1以上の単語を有していてもよい。なお、属性名等については、前述したので繰り返さない。属性名および当該属性名に対応する1以上の単語は、例えば、エンティティ名およびそれに対応する1以上のエンティティを生成し得る単語、といってもよい。以下では、属性名および当該属性名に対応する1以上の単語を有するドキュメントを「第二ドキュメント」と記す場合がある。ただし、第二ドキュメントは、例えば、属性名のみを有し、当該属性名に対応する1以上の単語を有していなくてもよい。
第二ドキュメントは、例えば、テーブル格納部11aに格納されている1以上のテーブル以外のデータベースである。ただし、第二ドキュメントは、テーブル格納部11aに格納されている1以上のテーブルも含む、と考えてもよい。または、第二ドキュメントは、例えば、文書ファイルでもよく、その種類は問わない。例えば、第一ドキュメントがハイパーテキストであり、第二ドキュメントは、第一ドキュメント中の1または2以上の単語とリンクされた1または2以上の各文書ファイルでもよい。
ただし、第一ドキュメントと第二ドキュメントとは、一のドキュメントでもよい。第一ドキュメントと第二ドキュメントとは、例えば、一の文書ファイルでもよい。つまり、一のドキュメント(例えば、一の文書ファイル)が、アクション名またはアクション名の一部と、属性名とを有していてもよいし、さらに、当該属性名に対応する1以上の単語をも有していてもよい。なお、アクション名またはアクション名の一部と属性名とを有するドキュメントの一例である文書ファイル、および当該文書ファイルからインテント、エンティティ名、およびテンプレート等のコーパスを生成する動作例について、具体例2で説明する。
また、第一または第二のいずれのドキュメントも、表形式を有することは好適であるが、表形式を有さなくてもよい。表形式を有するドキュメントは、例えば、エクセル等の表計算ソフトで作成されたドキュメントであるが、ワード等の文書作成ソフトで作成された文書を表形式に変換したドキュメントでもよく、その形式や作成方法は問わない。
表形式を有さないドキュメントは、例えば、ワードの文書ファイルであるが、メールやチャット等の文書ファイルでも構わない。ワード等の文書ファイルは、例えば、構造化されていることは好適であるが、構造化されてなくてもよい。構造化されていることは、例えば、HTMLやXML等のマークアップ言語で記述されていることである。または、構造化は、例えば、見出しや番号等の付与、記号やスペース等の挿入、改行などによって実現されてもよく、その実現方法は問わない。
本実施の形態において、ドキュメント格納部101に格納されるドキュメントは、例えば、API設計書である。API設計書とは、APIに関する設計書である。API設計書は、例えば、1または2以上のAPI情報を有する。なお、API情報については、実施の形態1で説明したので繰り返さない。API情報は、通常、アクション名に対応付いている。
API設計書は、例えば、図6に示したような、アクション名とAPI情報との対の集合を含んでいてもよい。なお、図6、およびアクション名とAPI情報との対については、実施の形態1で説明したので繰り返さない。
また、API設計書は、通常、パラメータ名、テーブル識別子、主キー識別子等の情報も含む。なお、パラメータ名、テーブル識別子、主キー識別子等については前述したので繰り返さない。ただし、API設計書の構造は問わない。
テンプレート格納部102には、1または2以上のテンプレートが格納される。格納されるテンプレートは、会話文のテンプレートであり、1または2以上の変数を有する。例えば、実施の形態1で説明したように、変数を“{}”とすると、テンプレートは、例えば、“{}の{}の{}を教えて”等であってもよい。
テンプレート格納部102には、例えば、アクション名に対応付けて、1以上のテンプレートが格納されてもよい。ただし、1以上のテンプレートが対応付く情報は、例えば、インテント名でもよいし、テーブル名や属性名等でも構わない。
テンプレートが有する1以上の各変数には、例えば、“社員エンティティ”,“日付エンティティ”,“残業エンティティ”等のエンティティ名が対応付いていることは好適である。具体的には、例えば、エンティティ名が対応付いた変数を“{社員エンティティ}”,“{日付エンティティ}”,“{残業エンティティ}”とすると、テンプレートは、例えば、“{社員エンティティ}の{日付エンティティ}の{残業エンティティ}を教えて”であってもよい。
テンプレート格納部102には、例えば、図14に示すような、エンティティ名が対応付けられた1以上の変数を有するテンプレートであり、変数の位置または数が異なる2以上のテンプレートが、例えば、アクション名に対応付けて格納され得る。
アクション名“残業時間照会”に対応付いた2以上のテンプレートは、例えば、第一のテンプレート“{社員エンティティ}の{日付エンティティ}の{残業エンティティ}を教えて”、第二のテンプレート“{日付エンティティ}の{社員エンティティ}の{残業エンティティ}を教えて”、第三のテンプレート“{社員エンティティ}の{残業エンティティ}を教えて”、第四のテンプレート“{日付エンティティ}の{残業エンティティ}を教えて”、および第五のテンプレート“{残業エンティティ}を教えて”であってもよい。
アクション名“勤務時間データ照会”に対応付いた2以上のテンプレートは、例えば、第一のテンプレート“{社員エンティティ}の{日付エンティティ}の{業務エンティティ}の{勤務時間エンティティ}を教えて”、第二のテンプレート“{社員エンティティ}の{業務エンティティ}の{日付エンティティ}の{勤務時間エンティティ}を教えて”、第三のテンプレート“{日付エンティティ}の{社員エンティティ}の{業務エンティティ}の{勤務時間エンティティ}を教えて”、第四のテンプレート“{日付エンティティ}の{業務エンティティ}の{社員エンティティ}の{勤務時間エンティティ}を教えて”、第五のテンプレート“{業務エンティティ}の{日付エンティティ}の{社員エンティティ}の{勤務時間エンティティ}を教えて”、第六のテンプレート“{業務エンティティ}の{社員エンティティ}の{日付エンティティ}の{勤務時間エンティティ}を教えて”、第七のテンプレート“{社員エンティティ}の{日付エンティティ}の{勤務時間エンティティ}を教えて”、第八のテンプレート“{社員エンティティ}の{業務エンティティ}の{勤務時間エンティティ}を教えて”、第九のテンプレート“{日付エンティティ}の{社員エンティティ}の{勤務時間エンティティ}を教えて”、第十のテンプレート“{日付エンティティ}の{業務エンティティ}の{勤務時間エンティティ}を教えて”、第十一のテンプレート“{業務エンティティ}の{日付エンティティ}の{勤務時間エンティティ}を教えて”、第十二のテンプレート“{業務エンティティ}の{社員エンティティ}の{勤務時間エンティティ}を教えて”、第十三のテンプレート“{社員エンティティ}の{勤務時間エンティティ}を教えて”、第十四のテンプレート“{日付エンティティ}の{勤務時間エンティティ}を教えて”、第十五のテンプレート“{業務エンティティ}の{勤務時間エンティティ}を教えて”、第十六のテンプレート“{勤務時間エンティティ}を教えて”であってもよい。
テンプレート格納部102には、例えば、当初、“{}の{}の{}を教えて”といった、各変数にエンティティ名が対応付いていないテンプレート(以下、初期テンプレートと記す場合がある)が格納されており、後述するエンティティ生成部302が1以上のエンティティ名(例えば、“社員エンティティ”,“日付エンティティ”,“残業エンティテ”等)を生成したことに応じて、処理部30が、生成された1以上のエンティティ名を初期テンプレートに対応付けることにより、上記第一のテンプレート“{社員エンティティ}の{日付エンティティ}の{残業エンティティ}を教えて”を生成してもよい。さらに、処理部30は、生成した第一のテンプレートから、変数の位置または数を異ならせた1以上のテンプレート(例えば、上記第二〜第五のテンプレート)を生成し、テンプレート格納部102に蓄積してもよい。
なお、各変数にエンティティ名が対応付いたテンプレートは、会話文情報の一種と考えてもよい。この場合、テンプレート格納部102には、各変数にエンティティ名が対応付いていない初期テンプレートが予め格納され、当該各変数にエンティティ名が対応付けられたテンプレートである会話文情報は、例えば、会話文情報格納部14aに蓄積されてもよい。
テーブル格納部11aは、1または2以上のテーブル情報が格納される。格納される1以上のテーブル情報は、通常、実施の形態1でテーブル格納部11に格納された1以上のテーブル情報と同じ情報である。なお、テーブル情報については、前述したので繰り返さない。テーブル格納部11aには、具体的には、例えば、図4に示したテーブル情報1〜3が格納されてもよい。
なお、テーブル情報は、例えば、テーブル名をも有していてもよい。テーブル名とは、テーブルの名称である。テーブル名は、例えば、アクション名の少なくとも一部を構成し得る情報を含む。アクション名の少なくとも一部を構成し得る情報とは、例えば、“社員”,“勤務時間”,“業務”等である。テーブル情報1〜3が有するテーブル名は、具体的には、例えば、“社員マスタ”,“業務マスタ”,“残業時間テーブル”等であるが、その形式は問わない。
インテント格納部12aには、1または2以上のインテントが格納される。なお、インテントについては、前述したので繰り返さない。格納される1以上のインテントは、通常、実施の形態1でインテント格納部12に格納された1以上のインテントと同じ情報である。1以上のインテントは、後述するインテント生成部301により生成され、後述するインテント蓄積手段3061によりインテント格納部12aに蓄積される。インテント格納部12aには、具体的には、例えば、図5に示したインテント1および2等が格納されてもよい。
API情報格納部13aには、1または2以上のAPI情報が格納される。なお、API情報については、前述したので繰り返さない。格納される1以上のAPI情報は、通常、実施の形態1でAPI情報格納部13に格納された1以上のAPI情報と同じ情報である。1以上のAPI情報は、後述するAPI情報抽出手段3011によりAPI設計書から抽出され、後述する蓄積部306によりAPI情報格納部13aに蓄積される。API情報格納部13aには、具体的には、例えば、図6に示した2以上のAPI情報が格納されてもよい。
会話文情報格納部14aには、インテントに対応付けて、1または2以上の会話文情報が格納される。なお、会話文情報については、前述したので繰り返さない。格納される1以上の会話文情報は、通常、実施の形態1で会話文情報格納部14に格納された1以上の会話文情報と同じ情報である。1以上の会話文情報は、後述する会話文情報生成部303により生成され、後述する会話文情報蓄積手段3063により会話文情報格納部14aに蓄積される。
具体的には、会話文情報格納部14aには、例えば、図7に示したように、インテント“残業時間照会インテント”に対応付けて、2以上の会話文情報(ここでは、5つの会話文情報1〜5)が格納されてもよい。また、会話文情報格納部14aには、インテント“勤務時間データ照会インテント”に対応付けて、2以上の会話文情報(ここでは、会話文情報1,2等)も格納されてもよい。
エンティティ格納部15aには、エンティティ名に対応付けて、1以上のエンティティが格納される。なお、エンティティ名およびエンティティについては、前述したので繰り返さない。エンティティ名に対応付けて格納される1以上のエンティティは、通常、実施の形態1でエンティティ名に対応付けてエンティティ格納部15に格納された1以上のエンティティと同じ情報である。
エンティティ名は、後述するエンティティ名生成手段3021によって生成され、1以上のエンティティは、後述するエンティティ生成手段3022によって生成される。生成された1以上のエンティティは、生成されたエンティティ名に対応付けて、エンティティ蓄積手段3062によりエンティティ格納部15aに蓄積される。
具体的には、エンティティ格納部15aには、例えば、図8に示したように、エンティティ名“社員エンティティ”に対応付けて、1以上のエンティティ“中村一郎”および“大塚二郎”等が格納され、また、エンティティ名“日付エンティティ”に対応付けて、1以上のエンティティ“先月”および“昨日”等が格納され、さらに、エンティティ名“残業エンティティ”に対応付けて、1以上のエンティティ“残業時間”および“残業”等が格納されてもよい。なお、“社員エンティティ”に対応する1以上のエンティティは、氏名の一部でもよい。氏名の一部とは、例えば、“中村”,“大塚”等の苗字でもよいし、前からm文字(例えば、前から3文字である“中村一”,“大塚二”等)でもよい。
エンティティマッピング情報格納部16aには、1または2以上のエンティティマッピング情報が格納される。なお、エンティティマッピング情報については、前述したので繰り返さない。格納される1以上のエンティティマッピング情報は、通常、実施の形態1でエンティティマッピング情報格納部16に格納された1以上のエンティティマッピング情報と同じ情報である。1以上のエンティティマッピング情報は、後述するエンティティマッピング情報生成部304により生成され、後述するエンティティマッピング情報蓄積手段3064によりエンティティマッピング情報格納部16aに蓄積される。
具体的には、エンティティマッピング情報格納部16aは、例えば、図9に示したような1以上のエンティティマッピング情報(例えば、エンティティティマッピング情報1〜4等)が格納されてもよい。
PK項目格納部17aには、1または2以上のPK項目が格納される。なお、PK項目については、前述したので繰り返さない。格納される1以上のPK項目は、通常、実施の形態1でPK項目格納部17に格納された1以上のPK項目と同じ情報である。1以上のPK項目は、後述するPK項目生成部305により生成され、後述するPK項目蓄積手段3065によりPK項目格納部17aに蓄積される。
具体的には、PK項目格納部17aには、例えば、図10に示したような2以上のPK項目(例えば、PK項目1〜4等)が格納されてもよい。
受付部20は、各種の情報を受け付ける。各種の情報とは、例えば、API設計書、テンプレートなどである。受付部20は、API設計書等の情報を、例えば、端末から受信するが、キーボードやタッチパネル等の入力デバイスを介して受け付けてもよい。または、受付部20は、例えば、ディスクや半導体メモリ等の記録媒体から読み出された情報を受け付けてもよく、その受け付けの態様は問わない。
処理部30は、各種の処理を行う。各種の処理とは、例えば、インテント生成部301、API情報抽出手段3011、アクション名取得手段3012、インテント生成手段3013、エンティティ生成部302、エンティティ名生成手段3021、エンティティ生成手段3022、会話文情報生成部303、エンティティ取得手段3031、会話文生成手段3032、エンティティマッピング情報生成部304、PK項目生成部305、蓄積部306、インテント蓄積手段3061、エンティティ蓄積手段3062、会話文情報蓄積手段3063、エンティティマッピング情報蓄積手段3064、およびPK項目蓄積手段3065などの処理である。
なお、処理部30は、例えば、受付部20が受け付けたAPI設計書等の情報を、ドキュメント格納部101等に蓄積する処理も行う。
また、テーブル格納部11に格納されているテーブ情報が有するテーブルが、例えば、ワード等の文書ファイルであり、表形式に変換されていない文書ファイルである場合に、処理部30は、当該文書ファイルの文字列中に設けられた区切りを基に、当該文書ファイルを表形式に変換する処理を行ってもよい。なお、ワード等の文書ファイルを表形式に変換する処理は公知であり、説明を省略する。
また、処理部30は、例えば、後述するエンティティ生成部302が生成した1以上のエンティティ名を初期テンプレートに対応付けて、第一のテンプレートを生成する処理を行ってもよい。例えば、初期テンプレートが“{}の{}の{}を教えて”であり、3つのエンティティ名“社員エンティティ”,“日付エンティティ”,および“残業エンティティ”が取得された場合、処理部30は、当該3つのエンティティ名を当該初期テンプレートに対応付けて、第一のテンプレート“{社員エンティティ}の{日付エンティティ}の{残業エンティティ}を教えて”を生成してもよい。
さらに、処理部30は、生成した第一のテンプレートから、変数の位置または数を異ならせた1以上のテンプレート(例えば、第二〜第五のテンプレート等)を生成し、テンプレート格納部102に蓄積してもよい。
詳しくは、処理部30は、例えば、第一のテンプレートに対して、1番目の変数と2番目の変数とを入れ換えることにより、第二のテンプレートを生成する。また、テンプレート生成部は、例えば、第一のテンプレートに対して、2番目の変数およびそれに続く助詞“の”を削除することにより、第三のテンプレートを生成する。また、テンプレート生成部は、例えば、第一のテンプレートに対して、1番目の変数およびそれに続く助詞“の”を削除することにより、第四のテンプレートを生成する。さらに、テンプレート生成部は、例えば、第一のテンプレートに対して、1番目の変数およびそれに続く助詞“の”と、2番目の変数およびそれに続く助詞“の”とを削除することにより、第五のテンプレートを生成する。そして、処理部30は、生成した第一〜第五のテンプレートを、例えば、アクション名取得手段3012が取得したアクション名またはインテント生成手段3013が生成したインテント名に対応付けて、テンプレート格納部102に蓄積する。
インテント生成部301は、ドキュメント格納部101に格納されている第一ドキュメントを用いて、アクション名を取得し、取得したアクション名を有するインテントを生成する。なお、生成されるインテントは、取得されたアクション名と同じでもよい。つまり、インテントの生成は、例えば、アクション名の取得でもよい。
前述したように、第一ドキュメントは、アクション名またはアクション名の一部を有する。インテント生成部301は、例えば、アクション名を有する第一ドキュメントからアクション名を取得し、当該取得したアクション名を有するインテントを生成する。または、インテント生成部301は、第一ドキュメントからアクション名の一部を取得し、当該一部を変形してアクション名を構成し、当該アクション名を有するインテントを取得してもよい。
変形は、例えば、当該一部に対する予め決められた文字列の付加であるが、当該一部を構成する文字列の別の種類の文字列への変換でもよく、その態様は問わない。付加は、例えば、当該一部を構成する文字列の末尾への付加であるが、当該文字列の先頭への付加でもよいし、当該文字列内への付加でもよく、その位置は問わない。変換は、例えば、漢字の文字列から仮名の文字列への変換、漢字・仮名混じりの文字列からアルファベットの文字列への変換等であるが、その種類は問わない。
例えば、格納部10に、アクション名辞書が格納されている。アクション名辞書とは、アクション名に関する辞書である。アクション名辞書には、例えば、1または2以上のアクション名が登録されている。または、アクション名辞書には、アクション名と1または2以上の語彙の組が、1組または2組以上、登録されていてもよい。アクション名辞書は、例えば、具体例2で説明するインテント名辞書でもよい。
インテント生成部301は、例えば、第一ドキュメントに対して形態素解析を行い、1以上の単語を取得する。次に、インテント生成部301は、取得した1以上の各単語ごとに、当該単語と、アクション名辞書に登録されている1以上の各アクション名(または、当該アクション名に対応する1以上の各語彙)との類似度を取得する。次に、インテント生成部301は、こうして1以上の単語と1以上のアクション名等との全ての組み合わせに対して取得した1以上の類似度のうち、最も高い類似度に対応する単語とアクション名等との組み合わせを特定する。そして、インテント生成部301は、当該特定した組み合わせを構成する単語またはアクション名等を有するインテントを生成する。
インテント生成部301は、例えば、ドキュメント格納部101に格納されているAPI設計書から、例えば、上記のような手順でアクション名を取得し、取得したアクション名を有するインテントを生成する。例えば、格納されているAPI設計書がアクション名“残業時間照会”を有している場合、インテント生成部301は、当該API設計書から当該アクション名“残業時間照会”を取得して、その末尾に“照会”を付加することにより、当該アクション名“残業時間照会”を有するインテント“残業時間照会インテント”を生成してもよい。
または、例えば、格納されているAPI設計書が1または2以上のAPI情報を含んでおり、当該1以上の各API情報が、アクション名の一部を構成し得る情報を含む場合、インテント生成部301を構成するAPI情報抽出手段3011は、当該API設計書から当該1以上のAPI情報を抽出する。アクション名の一部を構成し得る情報とは、API設計書に含まれるAPI情報が、例えば、図6に示された“serch_残業時間(社員コード、開始日付,終了日付)”や“serch_勤務時間(社員コード、作業日付,業務ID)”等のようなSQL文である場合、“serch”と“(”とで挟まれた“残業時間”や“勤務時間”等の文字列である。
アクション名取得手段3012は、抽出された1以上の各API情報ごとに、当該API情報から、アクション名の一部を構成し得る情報を取得する。例えば、API情報“serch_残業時間(社員コード、開始日付,終了日付)”からは、“serch”と“(”とで挟まれた文字列“残業時間”が取得される。アクション名取得手段3012は、こうして取得した情報の末尾に“照会”を付加することで、アクション名“残業時間照会”を取得する。
インテント生成手段3013は、アクション名取得手段3012が取得した1以上の各アクション名ごとに、その末尾に“インテント”を付加することで、当該アクション名を有するインテントを生成する。例えば、取得されたアクション名“残業時間照会”に対し、インテント生成手段3013は、その末尾に“インテント”を付加することで、当該アクション名を有するインテント“残業時間照会インテント”を生成する。同様に、アクション名“勤務時間データ照会”からは、当該アクション名を有するインテント“勤務時間データ照会インテント”が生成される。
エンティティ生成部302は、例えば、ドキュメント格納部101に格納されている第二ドキュメントを用いて、属性名であるエンティティ名を生成する。なお、エンティティ名の生成は、例えば、第二ドキュメントからの属性名の取得でもよい。
詳しくは、エンティティ生成部302は、例えば、属性名を有する第二ドキュメントから属性名を取得し、取得した属性名であるエンティティ名を生成してもよい。または、エンティティ生成部302は、例えば、属性名および当該属性名に対応する1以上の単語を有する第二ドキュメントから、属性名および当該属性名に対応する1以上の単語を取得し、取得した属性名であるエンティティ名、および、取得した1以上の単語である1以上のエンティティを生成してもよい。
または、エンティティ生成部302は、例えば、テーブル格納部11aに格納されている1以上のテーブル情報を用いて、属性名であるエンティティ名を生成してもよい。
例えば、格納部10に、属性名辞書が格納されている。属性名辞書とは、属性名に関する辞書である。属性名辞書には、例えば、1または2以上の属性名が登録されている。または、属性名辞書には、属性名と1または2以上の語彙の組が、1組または2組以上、登録されていてもよい。属性名辞書は、例えば、具体例2で説明するエンティティ名辞書でもよい。
エンティティ生成部302は、例えば、第二ドキュメントに対して形態素解析を行い、1以上の単語を取得する。次に、エンティティ生成部302は、当該取得した1以上の各単語ごとに、当該単語と、属性名辞書に登録されている1以上の各属性名(または、当該属性名に対応する1以上の各語彙)との類似度を取得する。次に、エンティティ生成部302は、こうして1以上の単語と1以上のエンティティ名等との全ての組み合わせに対して取得した1以上の類似度のうち、最も高い類似度に対応する単語と属性名等との組み合わせを特定する。そして、エンティティ生成部302は、当該特定した組み合わせを構成する単語または属性名等を有するエンティティ名を生成する。
エンティティ生成部302は、例えば、上記のような手順で、テーブル格納部11aに格納されている1以上の各テーブル情報ごとに、当該テーブル情報が有するテーブルから属性名および当該属性名に対応する1以上の単語を取得し、取得した属性名であるエンティティ名、および、取得した1以上の単語である1以上のエンティティを生成する。
例えば、属性名“社員”、および当該属性名に対応する1以上の単語“中村一郎”,“大塚二郎”等が登録されたテーブル(図示しない)からは、当該属性名“社員”および当該1以上の単語“中村一郎”,“大塚二郎”等が取得され、取得された属性名であるエンティティ名“社員”、および取得された1以上の単語である1以上のエンティティ“中村一郎”,“大塚二郎”等が生成されてもよい。
なお、属性名であるエンティティ名とは、エンティティ名が、例えば、取得された属性名の一部のみを含む属性名である場合も含む。すなわち、エンティティ生成部302は、1以上の各テーブル情報ごとに、当該テーブル情報が有するテーブルから属性名および当該属性名に対応する1以上の単語を取得し、取得した属性名の一部であるエンティティ名、および、取得した1以上の単語である1以上のエンティティを生成してもよい。例えば、属性名“社員名”、および当該属性名に対応する1以上の単語“中村一郎”,“大塚二郎”等が登録されたテーブル(図示しない)からは、当該属性名“社員名”および当該1以上の単語“中村一郎”,“大塚二郎”等が取得され、取得された属性名の一部であるエンティティ名“社員”、および取得された1以上の単語である1以上のエンティティ“中村一郎”,“大塚二郎”等が生成されてもよい。
なお、生成されるエンティティもまた、取得されたエンティティの一部であってもよい。例えば、単語“中村一郎”が取得された場合に、エンティティ生成部302は、当該単語の前2文字を含むエンティティ“中村”、または前3文字を含むエンティティ“中村一”等を生成してもよい。
また、取得した属性名であるエンティティ名とは、エンティティ名が、例えば、取得された属性名の少なくとも一部を変換した属性名である場合も含む。変換とは、異なる言語への変換(例えば、翻訳といってもよい)に限らず、例えば、アルファベット表記から漢字表示への変換(例えば、“SHAIN”から“社員”への変換)等でもよい。すなわち、エンティティ生成部302は、1以上の各テーブル情報ごとに、当該テーブル情報が有するテーブルから属性名および当該属性名に対応する1以上の単語を取得し、取得した属性名の少なくとも一部を変換した属性名であるエンティティ名、および、取得した1以上の単語である1以上のエンティティを生成してもよい。
例えば、図4に示したテーブル情報1からは、属性名“SHAIN_NAME”、および当該属性名に対応する1以上の単語“中村一郎”,“大塚二郎”等が取得され、当該属性名の一部“SHAIN”を変換した属性名“社員”を含むエンティティ名“社員エンティティ”、および取得された1以上の単語である1以上のエンティティ“中村一郎”,“大塚二郎”等が生成されてもよい。
詳しくは、例えば、エンティティ生成部302を構成するエンティティ名生成手段3021が、1以上の各テーブル情報ごとに、当該テーブル情報から属性名を取得し、当該属性名であるエンティティ名を生成する。なお、生成されたエンティティ名は、例えば、後述するエンティティ蓄積手段3062によって、エンティティ格納部15aに蓄積される。
エンティティ生成手段3022は、例えば、エンティティ名生成手段3021が生成した1以上の各エンティティ名ごとに、当該エンティティ名に対応するテーブルから、取得された属性名に対応する1以上の単語を取得し、当該一以上の単語である1以上のエンティティを生成する。なお、生成された1以上のエンティティは、例えば、後述するエンティティ蓄積手段3062によって、上記エンティティ名に対応付けてエンティティ格納部15aに蓄積される。
例えば、テーブル情報1に対して、エンティティ名生成手段3021が、当該テーブル情報1から属性名“SHAIN_NAME”を取得し、当該属性名の一部である“SHAIN”を変換した“社員”に“エンティティ”を付加したエンティティ名“社員エンティティ”を生成する。エンティティ蓄積手段3062は、生成されたエンティティ名“社員エンティティ”をエンティティ格納部15aに蓄積する。
エンティティ生成手段3022は、生成されたエンティティ名“社員エンティティ”に対応するテーブル(つまり、社員マスタ)から、当該属性名に対応する1以上の単語である“中村一郎”,“大塚二郎”等を取得し、その一部(例えば、前2文字)である1以上のエンティティ“中村”,“大塚”等を生成する。エンティティ蓄積手段3062は、エンティティ名“社員エンティティ”に対応付けて、生成された1以上のエンティティ“中村”,“大塚”等をエンティティ格納部15aに蓄積する。
また、テーブル情報2に対して、エンティティ名生成手段3021が、属性名“GYOUMU_NAME”を取得し、その一部“GYOUMU”を変換した“業務”に“エンティティ”を付加したエンティティ名“業務エンティティ”を生成する。生成されたエンティティ名“業務エンティティ”は、エンティティ格納部15aに蓄積される。エンティティ生成手段3022は、生成されたエンティティ名“業務エンティティ”に対応するテーブル(つまり、業務マスタ)から、当該属性名に対応する“A業務”,“B業務”等を取得し、1以上のエンティティ“A業務”,“B業務”等を生成する。生成された1以上のエンティティ“A業務”,“B業務”等は、エンティティ名“業務エンティティ”に対応付けてエンティティ格納部15aに蓄積される。
なお、テーブル情報3に対しては、3つの属性名“ZIKANGAI_TIME”,“TOTAL_TIME”,および“TIME_CARD_DATE”が取得され、そのうち1つ目の属性名“ZIKANGAI_TIME”の一部“ZIKANGAI”を変換した“残業”に“エンティティ”を付加したエンティティ名“残業エンティティ”が生成される。また、2つ目の属性名“TOTAL_TIME”を変換した“勤務時間”に“エンティティ”を付加したエンティティ名“勤務時間エンティティ”が生成され、さらに、3つ目の属性名“TIME_CARD_DATE”の一部“DATE”を変換した“日付”に“エンティティ”を付加したエンティティ名“日付エンティティ”が生成される。生成された3つのエンティティ名“残業エンティティ”,“勤務時間エンティティ”,および“日付エンティティ”は、エンティティ格納部15aに蓄積される。
次に、エンティティ名“残業エンティティ”に対して、当該1つ目の属性名“ZIKANGAI_TIME”を変換したエンティティ“残業時間”、およびその一部を変換したエンティティ“残業”等が生成される。また、エンティティ名“勤務時間エンティティ”に対して、当該2つ目の属性名“TOTAL_TIME”を変換したエンティティ“勤務時間”、およびその一部を変換したエンティティ“勤務”等が生成される。
なお、エンティティ名“日付エンティティ”に対しては、例えば、格納部10に、“日付”、およびそれに対応する1または2以上の単語“先月”,“昨日”等の組が格納されており、エンティティ生成手段3022は、“日付エンティティ”に含まれる単語“日付”に対応する1以上の単語“先月”,“昨日”等を格納部10から取得し、取得した単語であるエンティティ“先月”,“昨日”等を生成する。
そして、エンティティ名“残業エンティティ”に対応付けて、1以上のエンティティ“残業時間”,“残業”等が蓄積され、エンティティ名“勤務時間エンティティ”に対応付けて、1以上のエンティティ“勤務時間”,“勤務”等が蓄積され、エンティティ名“日付エンティティ”に対応付けて、1以上のエンティティ“先月”,“昨日”等が蓄積される。
これによって、エンティティ格納部15aには、例えば、図8に示すような、エンティティ名および当該エンティティ名に対応する1以上のエンティティの組の集合が格納される結果となる。
会話文情報生成部303は、例えば、エンティティ生成部302が生成した1以上のエンティティのうち1以上の各エンティティを、テンプレート格納部102に格納されているテンプレートの変数に挿入することにより、1以上の会話文情報を生成する。
テンプレートが2以上の変数を有する場合、会話文情報生成部303は、例えば、エンティティ生成部302が2以上の各テーブル情報ごとに生成した1以上のエンティティから一のエンティティを取得し、当該取得した2以上のエンティティを、テンプレート格納部102に格納されている一のテンプレートが有する2以上の変数に順番に挿入することにより、1以上の会話文情報を生成してもよい。
具体的には、例えば、テンプレート格納部102に、3つの変数を有する初期テンプレート“{}の{}の{}を教えて”が格納され、テーブル格納部11aに、上記テーブル情報1〜3が格納されている場合、会話文情報生成部303は、テーブル情報1から生成された1以上のエンティティ“中村一郎”,“大塚二郎”等のうち一のエンティティ“中村一郎”を取得し、テーブル情報2から生成された1以上のエンティティ“先月”,“昨日”等のうち一のエンティティ“先月”を取得し、テーブル情報3から生成された1以上のエンティティ“残業時間”,“残業”等のうち一のエンティティ“残業時間”を取得する。そして、会話文情報生成部303は、取得した3つのエンティティ“中村一郎”,“先月”,および“残業時間”を、上記テンプレートの3つの変数(1番目の変数,2番目の変数,および3番目の変数)に順番に挿入することにより、会話文情報“中村一郎の先月の残業時間を教えて”を取得する。
なお、例えば、初期テンプレートが有する2以上の各変数にID(例えば、“1”,“2”等)が対応付けられており、格納部10には、変数のIDとテーブル情報のID(例えば、“1”,“2”等)との対応を示す対応情報が格納されていてもよい。この場合、会話文情報生成部303は、対応情報を参照することにより、2以上のテーブル情報(例えば、テーブル情報1,テーブル情報2等)から取得された2以上の各エンティティを、当該エンティティが取得されたテーブル情報に対応する変数に挿入すればよい。これにより、テンプレートが有する2以上の変数の順序と、テーブル格納部11aに格納されている2以上のテーブル情報の順序とが予め対応付いていなくても、取得された2以上のエンティティを2以上の変数に的確に挿入できる。
また、会話文情報生成部303は、取得した3つのエンティティ“中村一郎”,“先月”,および“残業時間”を、上記テンプレートの3つの変数に、前2つの順番を入れ換えて挿入することにより、会話文情報“先月の中村一郎の残業時間を教えて”を生成する。
こうして、一のテンプレート“{}の{}の{}を教えて”と、テーブル情報1〜3とを基に、2つの会話文情報“中村一郎の先月の残業時間を教えて”,および“先月の中村一郎の残業時間を教えて”が生成される。
なお、変数に挿入されるエンティティは、取得されたエンティティの一部でもよい。例えば、テーブル情報1から取得されたエンティティ“中村一郎”については、前2文字“中村”または前3文字“中村一”等が挿入されてもよい。
会話文情報生成部303を構成するエンティティ取得手段3031は、テーブル格納部11aに格納されている2以上の各テンプレートごとに、当該テンプレートが有する1以上の各変数に対応付けられたエンティティ名に対応する一のエンティティをエンティティ格納部15aから取得する。
具体的には、例えば、テンプレート格納部102に、図14に示したような、第一〜第五のテンプレートがアクション名“残業時間照会”に対応付けて格納され、テーブル格納部11aに、上記テーブル情報1〜3が格納されている場合、エンティティ取得手段3031は、第一のテンプレートに対して、1番目の変数に対応付けられたエンティティ名“社員エンティティ”に対応する1以上のエンティティ“中村一郎”,“大塚二郎”等のうち一のエンティティ“中村一郎”を取得し、2番目の変数に対応付けられたエンティティ名“日付エンティティ”に対応する1以上のエンティティ“先月”,“昨日”等のうち一のエンティティ“先月”を取得し、3番目の変数に対応付けられたエンティティ名“残業エンティティ”に対応する1以上のエンティティ“残業時間”,“残業”等のうち一のエンティティ“残業時間”を取得する。
また、エンティティ取得手段3031は、第二のテンプレートに対して、1番目の変数に対応付けられたエンティティ名“日付エンティティ”に対応する1以上のエンティティ“先月”,“昨日”等のうち一のエンティティ“先月”を取得し、2番目の変数に対応付けられたエンティティ名“社員エンティティ”に対応する1以上のエンティティ“中村一郎”,“大塚二郎”等のうち一のエンティティ“中村一郎”を取得し、3番目の変数に対応付けられたエンティティ名“残業エンティティ”に対応する1以上のエンティティ“残業時間”,“残業”等のうち一のエンティティ“残業時間”を取得する。
同様に、第三のテンプレートに対しては、1番目の変数に対応付けられたエンティティ名“社員エンティティ”に対応する1以上のエンティティ“中村一郎”,“大塚二郎”等のうち“中村一郎”が取得され、2番目の変数に対応付けられたエンティティ名“残業エンティティ”に対応する1以上のエンティティ“残業時間”,“残業”等のうち“残業時間”が取得される。
また、第四のテンプレートに対しては、1番目の変数に対応付けられたエンティティ名“残業エンティティ”に対応する1以上のエンティティ“残業時間”,“残業”等のうち“残業時間”が取得され、2番目の変数に対応付けられたエンティティ名“社員エンティティ”に対応する1以上のエンティティ“中村一郎”,“大塚二郎”等のうち“中村一郎”が取得される。
さらに、第五のテンプレートに対しては、1番目の変数に対応付けられたエンティティ名“残業エンティティ”に対応する1以上のエンティティ“残業時間”,“残業”等のうち“残業時間”が取得される。
なお、エンティティ取得手段3031は、例えば、後述するエンティティマッピング情報生成部304が生成したエンティティマッピング情報を用いて、1以上のエンティティ名に対応する1以上のエンティティを取得してもよい。つまり、エンティティ取得手段3031は、例えば、1以上の各エンティティ名ごとに、当該エンティティ名を有するエンティティマッピング情報を参照して、当該エンティティマッピング情報が有するテーブル識別子で識別されるテーブルから、当該エンティティマッピング情報が有する翻訳項目名に対応する1以上のエンティティを取得してもよい。
具体的には、例えば、エンティティ名“社員エンティティ”に対し、エンティティ取得手段3031は、当該エンティティ名を含むエンティティマッピング情報1を参照して、当該エンティティマッピング情報1が有するテーブル識別子“MST_SHAIN”で識別されるテーブル(つまり、業務マスタ)から、当該エンティティマッピング情報1が有する翻訳項目名“SHAIN_NAME”に対応する1以上のエンティティ“中村一郎”,“大塚二郎”等を取得してもよい。
会話文生成手段3032は、テンプレート格納部102に格納されている2以上の各テンプレートごとに、当該テンプレートが有する1以上の各変数の位置に、エンティティ取得手段3031が取得したエンティティを挿入することにより、1以上の会話文情報を生成する。
具体的には、例えば、第一のテンプレート“{社員エンティティ}の{日付エンティティ}の{残業エンティティ}を教えて”に対して、会話文生成手段3032は、当該第一のテンプレートが有する3つの変数のうち、1番目の変数の位置に、エンティティ取得手段3031が取得したエンティティ“中村一郎”の前2文字“中村”を挿入する。また、会話文生成手段3032は、2番目の変数の位置に、取得されたエンティティ“先月”を挿入し、さらに、3番目の変数の位置に、取得されたエンティティ“残業時間”を挿入する。これにより、1番目の会話文情報“中村の先月の残業時間を教えて”が生成される。
また、第二のテンプレート“{社員エンティティ}の{日付エンティティ}の{残業エンティティ}を教えて”に対して、会話文生成手段3032は、その1番目の変数の位置に、取得されたエンティティ“先月”を挿入し、2番目の変数の位置に、取得されたエンティティ“中村一郎”の前2文字“中村”を挿入し、さらに、3番目の変数の位置に、取得されたエンティティ“残業時間”を挿入することにより、2番目の会話文情報“先月の中村の残業時間を教えて”を生成する。
同様に、第三のテンプレート“{社員エンティティ}の{残業エンティティ}を教えて”に対して、3番目の会話文情報“中村の残業時間を教えて”が生成され、第四のテンプレート“{日付エンティティ}の{残業エンティティ}を教えて”に対して、4番目の会話文情報“先月の残業時間を教えて”が生成され、第五のテンプレート“{残業エンティティ}を教えて”に対して、5番目の会話文情報“残業時間を教えて”が生成される。
また、会話文生成手段3032は、例えば、生成した1以上の各会話文情報ごとに、1または2以上のエンティティ情報をも生成してもよい。なお、エンティティ情報については、実施の形態1で説明したので繰り返さない。
詳しくは、会話文生成手段3032は、一の会話文情報が有する1以上のエンティティを抽出し、抽出した1以上の各エンティティごとに、開始位置および終了位置とエンティティ名とを取得する。そして、エンティティと、開始位置および終了位置と、エンティティ名とを有する1または2以上のエンティティ情報を生成する。なお、一の会話文情報に対して生成された1以上のエンティティ情報は、例えば、後述する会話文情報蓄積手段3063によって、当該一の会話文情報に対応付けて、会話文情報格納部14aに蓄積されてもよい。
具体的には、例えば、1番目の会話文情報“中村の先月の残業時間を教えて”に対して、会話文生成手段3032は、それが有する3つのエンティティ“中村”,“先月”,および“残業時間”を抽出し、1つ目のエンティティ“中村”の開始位置“1”および終了位置“2”とエンティティ名“社員エンティティ”とを取得する。また、会話文生成手段3032は、2つ目のエンティティ“先月”の開始位置“4”および終了位置“5”とエンティティ名“日付エンティティ”とを取得し、さらに、3つ目のエンティティ“残業時間”の開始位置“7”および終了位置“10”とエンティティ名“残業エンティティ”とを取得する。
そして、会話文生成手段3032は、エンティティ“中村”と、開始位置“1”および終了位置“2”と、エンティティ名“社員エンティティ”とを有する第一のエンティティ情報“中村,1,2,社員エンティティ”を生成する。また、会話文生成手段3032は、エンティティ“先月”と、開始位置“4”および終了位置“5”と、エンティティ名“日付エンティティ”とを有する第二のエンティティ情報“先月,4,5,日付エンティティ”を生成する。さらに、会話文生成手段3032は、エンティティ“残業時間”と、開始位置“7”および終了位置“20”と、エンティティ名“残業エンティティ”とを有する第三のエンティティ情報“残業時間,7,10”を生成する。こうして生成された第一〜第三のエンティティ情報は、例えば、後述する会話文情報蓄積手段3063によって、1番目の会話文情報“中村の先月の残業時間を教えて”に対応付けて、会話文情報格納部14aに蓄積される。
また、2番目の会話文情報“先月の中村の残業時間を教えて”に対して、会話文生成手段3032は、3つのエンティティ“先月”,“中村”,および“残業時間”を抽出し、1つ目のエンティティ“先月”の開始位置“1”および終了位置“2”とエンティティ名“日付エンティティ”とを取得する。また、会話文生成手段3032は、2つ目のエンティティ“中村”の開始位置“4”および終了位置“5”とエンティティ名“社員エンティティ”とを取得し、さらに、3つ目のエンティティ“残業時間”の開始位置“7”および終了位置“10”とエンティティ名“残業エンティティ”とを取得する。
そして、会話文生成手段3032は、第一のエンティティ情報“先月,1,2,日付エンティティ”、第二のエンティティ情報“中村,4,5,社員エンティティ”、および第三のエンティティ情報“残業時間,7,10,残業エンティティ”を生成する。生成された第一〜第三のエンティティ情報は、2番目の会話文情報“先月の中村の残業時間を教えて”に対応付けて会話文情報格納部14aに蓄積される。
同様に、3番目の会話文情報“中村の残業時間を教えて”に対して、第一のエンティティ情報“中村,1,2,社員エンティティ”、および第二のエンティティ情報“残業時間,4,7,残業エンティティ”が取得され、取得された第一および第二のエンティティ情報は、3番目の会話文情報に対応付けて会話文情報格納部14aに蓄積される。また、4番目の会話文情報“先月の残業時間を教えて”に対して、第一のエンティティ情報“先月,1,2,日付エンティティ”、および第二のエンティティ情報“残業時間,4,7,残業エンティティ”が取得され、取得された第一および第二のエンティティ情報は、4番目の会話文情報に対応付けて会話文情報格納部14aに蓄積される。さらに、5番目の会話文情報“残業時間を教えて”に対して、第一のエンティティ情報“残業時間,1,4,残業エンティティ”が取得され、取得された第一エンティティ情報は、5番目の会話文情報に対応付けて会話文情報格納部14aに蓄積される。
なお、インテント“残業時間照会”に対しては、例えば、16個の会話文情報1〜15が生成され、そのうち会話文情報1に対して、4つのエンティティ情報“中村一郎”,“1,4,社員エンティティ”,“昨日,6,7,日付エンティティ”,“A案件,9,11,業務エンティティ”,および“勤務時間,13,16,勤務時間エンティティ”が生成される。また、会話文情報2〜15に対しても、1以上のエンティティ情報が生成される。
こうして、会話文情報格納部14aには、例えば、図7に示したように、インテント“残業時間照会インテント”に対応付けて、5つの会話文情報1〜5が格納され、さらに、当該5つの会話文情報1〜5の各々に対応付けて、1以上のエンティティ情報が格納される。また、インテント“勤務時間データ照会インテント”に対応付けて、16個の会話文情報1〜15が格納され、当該16個の会話文情報1〜15の各々に対応付けて、1以上のエンティティ情報が格納される。
エンティティマッピング情報生成部304は、テーブル格納部11aに格納されている1以上の各テーブル情報ごとに、当該テーブル情報から、テーブル識別子と、当該テーブル識別子で識別されるテーブル内の属性名であり、変換されるエンティティを特定する情報である翻訳項目名と、当該翻訳項目に対応する一のエンティティとを取得し、かつエンティティ格納部15aから一のエンティティに対応するエンティティ名を取得して、テーブル識別子と翻訳項目名とエンティティ名とを有するエンティティマッピング情報を生成する。なお、生成された1以上のエンティティティマッピング情報は、例えば、後述するエンティティマッピング情報蓄積手段3064によって、エンティティマッピング情報格納部16aに蓄積される。
具体的には、例えば、テーブル情報1に対して、エンティティマッピング情報生成部304は、当該テーブル情報1から、テーブル識別子“MST_SHAIN”と、当該テーブル識別子で識別されるテーブル(つまり、社員マスタ)内の属性名であり、変換されるエンティティ(つまり、“中村一郎”,“大塚二郎”等)を特定する情報である翻訳項目名“SHAIN_NAME”と、当該翻訳項目に対応する一のエンティティ“中村一郎”とを取得すると共に、エンティティ格納部15aから当該一のエンティティに対応するエンティティ名“社員エンティティ”を取得する。そして、エンティティマッピング情報生成部304は、取得したテーブル識別子“MST_SHAIN”と、取得した翻訳項目名“SHAIN_NAME”と、取得したエンティティ名“社員エンティティ”とを有するエンティティマッピング情報1を生成する。
また、テーブル情報2に対して、エンティティマッピング情報生成部304は、当該テーブル情報2から、テーブル識別子“MST_GYOUMU”と、当該テーブル識別子で識別されるテーブル(つまり、業務マスタ)内の属性名であり、変換されるエンティティ(つまり、“A案件”,“B案件”等)を特定する情報である翻訳項目名“GYOUMU_NAME”と、当該翻訳項目に対応する一のエンティティ“A案件”とを取得すると共に、エンティティ格納部15aから当該一のエンティティに対応するエンティティ名“業務エンティティ”を取得する。そして、エンティティマッピング情報生成部304は、テーブル識別子“MST_GYOUMU”と翻訳項目名“GYOUMU_NAME”とエンティティ名“業務エンティティ”とを有するエンティティマッピング情報4を生成する。
なお、テーブル情報3に対しては、テーブル識別子“TRN_TIME_CARD”と翻訳項目名“TIME_CARD_DATE”とエンティティ名“日付エンティティ”とを有するエンティティマッピング情報3、およびテーブル識別子“TRN_TIME_CARD”と翻訳項目名“ZIKANGAI_TIME”とエンティティ名“残業エンティティ”とを有するエンティティマッピング情報3が生成される。
こうして生成されたエンティティマッピング情報1〜4等は、エンティティマッピング情報蓄積手段3064によってエンティティマッピング情報格納部16aに蓄積される。これにより、エンティティマッピング情報格納部16aには、例えば、図9に示したエンティティマッピング情報1〜4等が格納される。
PK項目生成部305は、テーブル格納部11aに格納されている1以上の各テーブル情報ごとに、当該テーブル情報から、テーブル識別子と、当該テーブル識別子で識別されるテーブルの主キーを特定する主キー識別子とを取得して、取得したテーブル識別子と、取得した主キー識別子とを有する情報であるPK項目を生成する。
具体的には、例えば、テーブル情報1に対して、PK項目生成部305は、当該テーブル情報1から、テーブル識別子“MST_SHAIN”と、当該テーブル識別子で識別されるテーブル(つまり、社員マスタ)の主キー識別子“SHAIN_CODE”とを取得して、当該テーブル識別子“MST_SHAIN”と当該主キー識別子“SHAIN_CODE”とを有する情報であるPK項目1を生成する。
また、テーブル情報2に対して、PK項目生成部305は、当該テーブル情報2から、テーブル識別子“MST_GYOUMU”と、当該テーブル識別子で識別されるテーブル(つまり、業務マスタ)の主キー識別子“GYOUMU_ID”とを取得して、当該テーブル識別子“MST_GYOUMU”と当該主キー識別子“GYOUMU_ID”とを有する情報であるPK項目4を生成する。
なお、テーブル情報3に対しては、テーブル識別子“TRN_TIME_CARD”と主キー識別子“SHAIN_CODE”とを有するPK項目2、およびテーブル識別子“TRN_TIME_CARD”と主キー識別子“TIME_CARD_DATE”とを有するPK項目3が生成される。
こうして生成されたPK項目1〜4等は、PK項目蓄積手段3065によってPK項目格納部17aに蓄積される。これにより、PK項目格納部17aには、例えば、図10に示したPK項目1〜4等が格納される。
蓄積部306は、例えば、インテント生成部301が生成したインテントをインテント格納部12aに蓄積し、かつエンティティ生成部302が生成したエンティティ名をエンティティ格納部15aに蓄積し、かつ会話文情報生成部303が生成した1以上の会話文情報を当該インテントに対応付けて会話文情報格納部14aに蓄積する。なお、会話文情報をインテントに対応付けることは、例えば、会話文情報がインテントを有する場合も含む。
または、蓄積部306は、インテント生成部301が生成したインテントをインテント格納部12aに蓄積し、かつエンティティ生成部302が生成した1以上の各エンティティ名に1以上のエンティティを対応付けてエンティティ格納部15aに蓄積し、かつ会話文情報生成部303が生成した1以上の会話文情報を当該インテントに対応付けて会話文情報格納部14aに蓄積してもよい。
蓄積部306を構成するインテント蓄積手段3061は、インテント生成手段3013が生成した1以上のインテントをインテント格納部12aに蓄積する。
エンティティ蓄積手段3062は、エンティティ名生成手段3021が生成した1以上の各エンティティ名ごとに、当該エンティティ名に対応付けて、エンティティ生成手段3022が生成した1以上のエンティティであり、当該エンティティ名に対応するテーブルから取得された1以上の単語である1以上のエンティティを、エンティティ格納部15aに蓄積する。
会話文情報蓄積手段3063は、インテント生成手段3013が生成した1以上の各インテントごとに、会話文生成手段3032が生成した1以上の会話文情報を当該インテントに対応付けて会話文情報格納部14aに蓄積する。
また、会話文情報蓄積手段3063は、例えば、会話文生成手段3032が生成した1以上の会話文情報ごとに、会話文生成手段3032が生成した1以上のエンティティ情報を当該会話文情報に対応付けて会話文情報格納部14aに蓄積してもよい。
エンティティマッピング情報蓄積手段3064は、エンティティマッピング情報生成部304が生成した1以上のエンティティマッピング情報をエンティティマッピング情報格納部16aに蓄積する。
PK項目蓄積手段3065は、PK項目生成部305が生成した1以上のPK項目をPK項目格納部17aに蓄積する。
出力部40は、各種の情報を出力する。各種の情報とは、例えば、インテント、エンティティ、会話文情報、エンティティマッピング情報、PK項目などである。出力部40は、インテント等の情報を、例えば、実施の形態1で説明した情報出力装置500に送信するが、ディスプレイやスピーカ等の出力デバイスを介して出力してもよい。
出力部40は、例えば、インテント格納部12aに格納されている1以上のインテント、会話文情報格納部14aに格納されている1以上の会話文情報、エンティティ格納部15aに格納されている1以上のエンティティ、エンティティマッピング情報格納部16aに格納されている1以上のエンティティマッピング情報、およびPK項目格納部17aに格納されている1以上のPK項目を、情報出力装置500に送信する。
なお、情報出力装置500において、例えば、受付部2が、上記1以上のインテント等の情報を受信し、処理部3は、受信された1以上のインテント等の情報をインテント格納部12等に蓄積する処理も行う。
次に、情報生成装置100の動作について、図15のフローチャートを用いて説明する。図15は、情報生成装置100の動作を説明するフローチャートである。
(ステップS1501)インテント生成部301は、ドキュメント格納部101に格納されている第一ドキュメントからアクション名を取得し、当該アクション名を有するインテントを生成する。
(ステップS1502)蓄積部306は、ステップ1501で生成されたインテントをインテント格納部12aに蓄積する。
(ステップS1503)エンティティ生成部302は、ドキュメント格納部101に格納されている第二ドキュメントから属性名を取得し、取得した属性名であるエンティティ名を生成する。なお、第二ドキュメントは、前述したように、第一ドキュメントと同じドキュメントでもよい。
(ステップS1504)蓄積部306は、ステップS1503で生成されたエンティティ名をエンティティ格納部15aに蓄積する。
(ステップS1505)処理部30は、ステップ1503で生成されたエンティティ名を、初期テンプレートの変数に対応付けることにより、エンティティ名が対応付いた変数を有するテンプレートを生成する。
(ステップS1506)蓄積部306は、ステップS1505で生成されたテンプレートを、ステップS1502で蓄積されたインテントに対応付けて会話文情報格納部14aに蓄積する。その後、処理を終了する。
なお、図15のフローチャートにおいて、初期テンプレートは、2以上の変数を有しており、ステップS1503では、エンティティ生成部302は、1以上のエンティティを生成し、ステップS1505では、処理部30は、ステップ1501で生成されたインテントを、初期テンプレートが有する2以上の変数のうち最後の変数に対応付け、かつステップ1503で生成された1以上のエンティティ名を、当該2以上の変数のうち、最後の変数を除く1以上の変数に対応付けることにより、エンティティ名が対応付いた1以上の変数、およびインテントが対応付いた変数を有するテンプレートを生成してもよい。
また、図15のフローチャートにおいて、ステップS1503およびS1506は、下記のステップS1503aおよびS1506aの置き換えられてもよい。
(ステップS1503a)エンティティ生成部302は、ドキュメント格納部101に格納されている第二ドキュメントから、属性名および当該属性名に対応する1以上の単語を取得し、取得した属性名であるエンティティ名、および取得した1以上の単語である1以上のエンティティを生成する。
(ステップS1506a)蓄積部306は、ステップS1503aで生成されたエンティティ名と1以上のエンティティの組を、エンティティ格納部15aに蓄積する。
さらに、ステップS1506aの後に、下記2つのステップS1507およびS1508が追加されてもよい。
(ステップS1507)会話文情報生成部303は、ステップS1503aで生成された1以上のエンティティのうち1以上の各エンティティを、ステップS1506で蓄積されたテンプレートの、エンティティ名が対応付いた変数に挿入することにより、1以上の会話文情報を生成する。
(ステップS1508)蓄積部306は、ステップS1507で生成された1以上の会話文情報を、ステップS1502で蓄積されたインテントに対応付けて、会話文情報格納部14aに蓄積する。
図16は、第一ドキュメントがAPI設計書であり、第二ドキュメントがテーブル情報である場合における、情報生成装置100の動作例を説明するフローチャートである。なお、このフローチャートは、API設計書に含まれる1以上のアクション名のうち、一のアクション名に対する処理であり、他のアクション名に対しても、同様の処理が行われる。
(ステップS1601)インテント生成部301は、API情報格納部13aに格納されているAPI設計書からアクション名を取得し、当該アクション名を有するインテントを生成する。
(ステップS1602)インテント蓄積手段3061は、ステップ1501で生成されたインテントをインテント格納部12aに蓄積する。
(ステップS1603)エンティティ生成部302は、変数iに初期値“1”をセットする。なお、このフローチャートにおける変数iは、テーブル格納部11aに格納されている1以上のテーブル情報のうち、未選択のテーブル情報を順番に選択していくための変数である。
(ステップS1604)エンティティ生成部302は、i番目のテーブル情報があるか否かを判別する。i番目のテーブル情報がある場合はステップS1605に進み、ない場合はステップS1608に進む。
(ステップS1605)エンティティ生成部302は、i番目のテーブル情報が有するテーブルから属性名および当該属性名に対応する1以上の単語を取得し、取得した属性名であるエンティティ名、および、取得した1以上の単語である1以上のエンティティを生成する。
(ステップS1606)エンティティ蓄積手段3062は、ステップS1605で生成された1以上のエンティティを、ステップS1602で蓄積されたエンティティ名に対応付けて、エンティティ格納部15aに蓄積する。
(ステップS1607)エンティティ生成部302は、変数iをインクリメントする。その後、ステップS1604に戻る。
(ステップS1608)処理部30は、ステップS1604〜S1607の1回以上の実行により生成された1以上のエンティティ名を、初期テンプレートの1以上の変数に対応付け、変数の数または位置を異ならせた1以上のテンプレートを生成する。
(ステップS1609)会話文情報生成部303は、変数jに初期値“1”をセットする。なお、このフローチャートにおける変数jは、ステップS1608で生成された1以上のテンプレートのうち、未選択のテンプレートを順番に選択していくための変数である。
(ステップS1610)会話文情報生成部303は、j番目のテンプレートがあるか否かを判別する。j番目のテンプレートがある場合はステップS1611に進み、ない場合はステップS1613に進む。
(ステップS1611)会話文情報生成部303は、テーブル格納部11aに格納されている1以上の各テーブルから一の単語を取得し、j番目のテンプレートが有する1以上の変数の位置に挿入することにより、会話文情報を生成する。
(ステップS1612)会話文情報生成部303は、変数jをインクリメントする。その後、ステップS1610に戻る。
(ステップS1613)会話文情報生成部303は、ステップS1610〜S1612の1回以上の実行により生成された1以上の会話文情報を、ステップS1602で蓄積されたインテントに対応付けて会話文情報格納部14aに蓄積する。その後、処理を終了する。
なお、情報生成装置100の具体的な動作例の1つ(以下、具体例1)は、ブロック図説明において述べたので繰り返さない。なお、具体例1では、第一ドキュメントの一種であるAPI設計書、および第二ドキュメントの一種であるテーブル情報を用いて、インテント、エンティティ名と1以上のエンティティの組、および会話文の例文である1以上の会話文情報などが生成されたが、次に説明する具体例2では、第一ドキュメントと第二ドキュメントとを兼ねる一のドキュメントを用いて、インテント、エンティティ名、および会話文のテンプレートである1以上の会話文情報が生成される。
(具体例2)
本例において、ドキュメント格納部101には、例えば、図17に示すような文書ファイルが格納される。この文書ファイルは、第一ドキュメントと第二ドキュメントとを兼ねる一のドキュメントの一種である。この文書ファイルは、アクション名“経費精算”を含む文字列“経費精算書”を有し、また、当該アクション名の一部である文字列“経費”も有する。さらに、この文書ファイルは、属性名である“社員”をも有する。アクション名“経費精算”は、予め登録された1または2以上のインテントのうち1つであり、属性名“社員”は、予め登録された1または2以上のエンティティ名のうち1つである。
格納部10には、例えば、図18に示すようなインテント名辞書が予め格納されている。インテント名辞書とは、インテント名に関する辞書である。インテント名辞書には、例えば、インテント名と1または2以上の語彙の組が、1組または2組以上、登録されている。なお、登録されるインテント名は、アクション名でもよい。従って、インテント名辞書は、例えば、アクション名辞書と呼んでもよい。
インテント名と1以上の語彙との組は、例えば、インテント名“経費精算”と1以上の語彙“経費精算、経費明細”の組、インテント名“作業日報”と1以上の語彙“作業日報、日報”の組、インテント名“作業月報”と1以上の語彙“作業月報、月報”の組、インテント名“勤務時間”と1以上の語彙“勤務時間、作業時間”の組、インテント名“残業時間”と1以上の語彙“残業時間、残業”の組、インテント名“休暇日数”と1以上の語彙“休暇日数、休み”の組などである。
また、格納部10には、例えば、図19に示すようなエンティティ名辞書も予め格納されている。エンティティ名辞書とは、エンティティ名に関する辞書である。なお、登録されるエンティティ名は、属性名でもよい。従って、エンティティ名辞書は、例えば、属性名辞書と呼んでもよい。エンティティ名辞書には、例えば、エンティティ名と1または2以上の語彙の組が、1組または2組以上、格納されている。
エンティティ名と1以上の語彙との組は、例えば、エンティティ名“社員”と1以上の語彙“社員”の組、エンティティ名“作業場所”と1以上の語彙“作業場所、勤務場所”の組、エンティティ名“交通費”と1以上の語彙“交通費”の組、エンティティ名“勤務時間”と1以上の語彙“勤務時間、作業時間”の組などである。
最初、処理部30は、ドキュメント格納部101に格納されている文書ファイルから1または2以上の文字列を抽出する。なお、文字列とは、通常、2以上の文字の配列であるが、ただ1つの文字の場合も含む。また、文字列は、記号も含んでもよい。
本例では、例えば、第一文字列“・必ず承認覧に上司の確認の印を受ける事。”、第二文字列“・精算は、必ずこの用紙で1ヶ月単位で記入してください。”、第三文字列“[経費精算書]”、第四文字列“対象期間”、第五文字列“2016年6月1日〜2016年6月30日”、第六文字列“作成者”、第七文字列“中村 一郎”、第八文字列“社員CD”、第九文字列“053”、第十文字列“作成日”、第十一文字列“2016年7月9日”、第十二文字列“再査者”、第十三文字列“承認者”、第十四文字列“日”、第十五文字列“適用”、第十六文字列“経費”、第十七文字列“仮払”、第十八文字列“項目”、第十九字列“金額”などが抽出される。
次に、処理部30は、抽出した1以上の各文字列に対して形態素解析を行い、当該文字列を構成する1または2以上の語または記号を取得し、当該1以上の各語の品詞または記号の種類を特定する。そして、処理部30は、特定した品詞等の情報を用いて、抽出した1以上の文字列のうち、予め決められた条件を満たす1以上の文字列を除外する。
予め決められた条件は、例えば、“抽出された文字列が文である”旨の第一条件である。第一条件を満たすか否かは、例えば、当該文字列を構成する単語の種類や数、当該文字列の末尾の語の品詞または末尾の記号の種類などに基づいて判断される。なお、文字列が文か否かを判断する技術は公知であり、詳しい説明を省略する。
または、予め決められた条件は、例えば、“抽出された文字列が数値または日付である”旨の第二条件でもよい。第二条件を満たすか否かは、例えば、当該文字列の品詞や書式等を基に判断される。なお、文字列が数値または日付であるか否かを判断する技術は公知であり、詳しい説明を省略する。
本例では、処理部30は、抽出された1以上の文字列のうち、第一または第二のいずれかの条件に該当する文字列を除外する。従って、上記第一〜第十九の19文字列のうち、第一,第二,第五,第九および第十一の5文字列が除外される。
次に、処理部30は、抽出した1以上の文字列のうち、第一または第二のいずれかの条件に該当する文字列を除外して残った1以上の各文字列ごとに、当該文字列中に、記号または句読点のうち1以上の情報が含まれるか否かを判断する。そして、記号または句読点のうち1以上の情報が含まれると判断した場合に、処理部30は、当該文字列から当該1以上の情報を削除する。
本例では、残された第三,第四,第六〜第八,第十,第十二〜第十九の14文字列のうち、第三文字列だけが、2つの記号“[”および“]”を含んでおり、当第三文字列から当該2つの記号“[”および“]”が削除される。
次に、インテント生成部301は、残された1以上の各文字列ごとに、当該文字列と、インテント名辞書に登録されている1以上の各インテント名との類似度、または当該インテント名と対になる1以上の各語彙との類似度を取得し、取得した1以上の類似度のうち、最も高い類似度に対応するインテント名を特定する。なお、類似度は、例えば、文字列中の一致する文字の割合(例えば、x文字中y文字が一致する場合は、類似度“y/x”など)でもよいし、コサイン類似度等でもよく、その種類は問わない。
次に、インテント生成部301は、当該最も高い類似度が閾値以上または閾値より大か否かを判断し、閾値以上または閾値より大であると判断された場合に、当該文字列を有するインテント名を取得する。
なお、当該最も高い類似度が閾値に満たない又は閾値以下であると判断された場合、インテント生成部301は、通常、インテントの生成を行わない。ただし、当該最も高い類似度が閾値に満たない又は閾値以下であると判断された場合でも、インテント生成部301は、当該文字列を有するインテントの生成を行ってもよい。出力部40は、こうして生成されたインテントを出力し、受付部20は、当該インテントの蓄積の可否を示すユーザの指示を受け付け、蓄積可を示す指示が受け付けられた場合に、蓄積部306は、当該インテントを蓄積してもよい。
本例の場合、類似度は、文字列と、エンティティ名または語彙との間で、一致する文字の割合であり、その閾値は“1/2”であるとする。一致する文字の割合とは、例えば、一致する文字の数を、文字列の文字数またはエンティティ名等の文字数のうち大きい方の文字数で除した値であってもよい。または、類似度は、例えば、文字列と、エンティティ名または語彙との間で、一致する文字の数などであってもよく、その取得方法は問わない。
インテント生成部301は、残された14文字列のうち、まず、1番目の文字列“経費精算書”について、インテント名辞書に登録されている6つのインテント名との類似度を取得する。1番目の文字列“経費精算書”は、1番目のインテント名“経理精算”に対して、5文字中4文字が一致することから、類似度“4/5”が取得される。
または、インテント生成部301は、1番目の文字列“経費精算書”と、1番目のインテント名“経理精算”と対になる2つの語彙“経理精算”および“経理明細”の各々との類似度を取得してもよい。この場合、前者の語彙“経理精算”との類似度“4/5”と、後者の語彙“経理明細”との類似度“2/5”とが取得される。なお、1番目の文字列“経費精算書”は、他の5つのインテント名とは1文字も一致せず、各インテント名と対になる1以上の各語彙とも一致しないことから、他の5つの各インテント名等に対しては、類似度“0”が取得される。
インテント生成部301は、1番目の文字列“経費精算書”について取得された6つの類似度または12個の類似度のうち、最も高い類似度“4/5”が閾値“1/2”よりも大であることから、当該最も高い類似度に対応するインテント名“経費精算”を特定すると共に、1番目の文字列“経費精算書”を含むインテントを生成する。なお、“経費精算書”を含むインテントとは、例えば、“経費精算書”であるが、“経費精算書インテント”や“経費精算書探索インテント”等でもよく、その形式は問わない。
2番目の以降の各文字列についても、上記と同様の処理が行われ、11番目の文字列“経費”と1番目のインテント名“経理精算”との類似度が“2/4”であり、閾値“1/2”以上であるため、11番目の文字列“経費”を含むインテントがさらに生成される。“経費”を含むインテントは、例えば、“経費”であるが、“経費インテント”や“経費探索インテント”等でもよい。なお、その他の文字列については、登録されているインテント名等との類似度が“0”であため、インテントは生成されない。
蓄積部306は、インテント生成部301が生成した1以上のインテントをインテント格納部12aに蓄積する。本例では、生成された2つのインテント“経費精算書”および“経費”が蓄積される。
次に、エンティティ生成部302は、残された1以上の文字列のうち、インテント生成部301によるインテント生成の対象となった1以上の文字列を除く1以上の各文字列ごとに、当該文字列と、エンティティ名辞書に登録されている1以上の各エンティティ名との類似度、または当該エンティティ名と対になる1以上の各語彙との類似度を取得する。そして、エンティティ生成部302は、取得した1以上の類似度のうち、最も高い類似度が、閾値以上または閾値より大か否かを判断し、閾値以上または閾値より大であると判断された場合に、当該文字列に対応するエンティティ名を生成する。
なお、当該最も高い類似度が、閾値に満たない又は閾値以下であると判断された場合、エンティティ生成部302は、通常、エンティティ名の生成を行わない。ただし、当該最も高い類似度が閾値に満たない又は閾値以下であると判断された場合でも、エンティティ生成部302は、当該文字列を含むエンティティ名を生成してもよい。出力部40は、こうして生成されたエンティティ名を出力し、受付部20は、当該エンティティ名の蓄積の可否を示すユーザの指示を受け付け、蓄積可を示す指示が受け付けられた場合に、蓄積部306は、当該エンティティ名を蓄積してもよい。
本例では、残された上記14文字列のうち、インテント生成の対象となった2つの文字列“経費精算”および“経費”を除く12文字列の各々について、当該文字列と、エンティティ名辞書に登録されている1以上の各エンティティ名“社員”,“作業場所”,“交通費”,“勤務時間”等との類似度が取得される。
詳しくは、まず、1番目の文字列“対象期間”について、エンティティ生成部302は、4番目のエンティティ名“勤務時間”に対し、4文字中1文字が一致することから、類似度“1/4”を取得する。他の各エンティティ名等に対しては、類似度“0”が取得される。次に、エンティティ生成部302は、取得した4つの又は6つの類似度のうち、最も高い類似度“1/4”について、閾値“1/2”以上か否かを判断する。ここでは、当該最も高い類似度“1/4”は、閾値“1/2”未満であると判断されるため、当該1番目の文字列“対象期間”を含むエンティティ名は生成されない。
2番目、3番目の各文字列については、登録されているどのエンティティ名とも1文字も一致しないため、“0”以外の類似度は取得されず、当該文字列を含むエンティティ名は生成されない。
4番目の文字列“社員CD”については、1番目のエンティティ名“社員”との類似度が“2/4”で、閾値“1/2”以上であるため、4番目の文字列を含むエンティティ名が取得される。4番目の文字列を含むエンティティ名は、例えば、“社員CD” であるが、“社員CDエンティティ”等でもよく、その形式は問わない。
なお、5番目以降の各文字列については、“0”以外の類似度は取得されず、当該文字列を含むエンティティ名は生成されない。
蓄積部306は、エンティティ生成部302が生成した1以上のエンティティ名をエンティティ格納部15aに蓄積する。本例では、生成されたエンティティ名“社員エンティティが蓄積される。
テンプレート格納部102には、変数“{}”を2つ有する初期テンプレート“{}の{}を見せて”が格納されており、処理部30は、生成されたインテント(例えば“$1”)を、当該初期テンプレート“{}の{}を見せて”中の2つ目の変数“{}”に対応付け、生成されたエンティティ名(例えば“$2”)を1番目の変数“{}”に対応付けることにより、エンティティ名が対応付いた変数“{$2}”およびインテントが対応付いた変数“$1”を有するテンプレート“{$2}の{$1}を見せて”を生成する。
本例では、処理部30は、生成されたインテント“経費精算書”を、当該初期テンプレート中の2つ目の変数に対応付け、かつ、生成されたエンティティ名“社員CD”を1つ目の変数“{}”に対応付けることにより、テンプレート“{社員CD}の{経費精算書}を見せて”を生成する。また、処理部30は、生成されたインテント“経費”を、当該初期テンプレート中の2つ目の変数に対応付け、かつ、生成されたエンティティ名“社員CD”を1番目の変数“{}”に対応付けることにより、テンプレート“{社員CD}の{経費}を見せて”を生成する。
蓄積部306は、生成された2つのテンプレート“{社員CD}の{経費精算書}を見せて”および“{社員CD}の{経費}を見せて”を、特定されたインテント名“経費精算”に対応付けて会話文情報格納部14aに蓄積する。
こうして、文書ファイルを用いて、インテント“経費精算書”、エンティティ名“社員CD”、およびテンプレート“{社員CD}の{経費精算書}を見せて”が生成され、さらに、インテント“経費”、エンティティ名“社員CD”、およびテンプレート“{社員CD}の{経費精算書}を見せて”も生成される。
なお、本例において、例えば、エンティティマッピング情報格納部16に、図示しないエンティティマッピング情報5(例えば、“MST_SHAIN,SHAIN_CODE,社員CDエンティティ”など)が格納されており、エンティティ生成部302は、エンティティマッピング情報5を用いて、テーブル識別子“MST_SHAIN”で識別されるテーブル情報1(つまり、社員マスタ:図4参照)から、属性名“SHAIN_CODE”に対応する属性値“1”,“2”等を取得し、エンティティ名“社員CDエンティティ”に対応付けてエンティティ格納部15aに蓄積してもよい。
これによって、テーブル情報1を用いて、当該エンティティ名“社員CD”に対応する1以上のエンティティ“1”,“2”等も生成される。なお、図17の文書ファイルは、属性名“社員CD”に対応する属性値“053”も有しており、エンティティ生成部302は、この文書ファイルを用いて、エンティティ名“社員CD”に対応するエンティティ“053”を生成してもよい。
さらに、会話文情報生成部303が、生成された1以上の各エンティティを、生成された上記2つの各テンプレートが有する変数{社員CD}に挿入することにより、1以上の会話文情報“社員コード1の経費精算書を見せて”,“社員コード2の経費精算書を見せて”、社員コード1の経費を見せて”,“社員コード2の経費を見せて”等を生成してもよい。蓄積部306は、生成された1以上の会話文情報を、特定されたインテント名“経費精算”に対応付けて、会話文情報格納部14aに蓄積する。これによって、当該インテントに対応する1以上の会話文情報をも生成される。
以上、本実施の形態によれば、ドキュメント格納部101に、業務処理ごとに管理される情報であり、業務処理を特定する情報であるアクション名を有する第一ドキュメントの一種であり、APIに関する設計書であるAPI設計書が格納され、テーブル格納部11aに、属性名および属性名に対応する1以上の単語を有する第二ドキュメントの一種であるテーブル、およびテーブルを識別するテーブル識別子を含む1以上のテーブル情報が格納され、テンプレート格納部102に、会話文のテンプレートであり、1以上の変数を有するテンプレートが格納され、情報生成装置100は、API設計書からアクション名を取得して、取得したアクション名を有する情報であるインテントを生成し、1以上の各テーブル情報ごとに、テーブル情報が有するテーブルから属性名および属性名に対応する1以上の単語を取得し、取得した属性名であるエンティティ名、および、取得した1以上の単語である1以上のエンティティを生成し、1以上の各テーブル情報ごとに生成した1以上のエンティティから一のエンティティを取得し、取得した1以上のエンティティをテンプレートが有する1以上の変数に挿入することにより、会話文の情報である1以上の会話文情報を生成し、生成したインテントを蓄積し、かつ生成した1以上の各エンティティ名に1以上のエンティティを対応付けて蓄積し、かつ生成した1以上の会話文情報をインテントに対応付けて蓄積することにより、API設計書、およびテーブル情報から、言葉をAPIパラメータに変換するための情報であるインテント、1以上のエンティティ情報、および1以上の会話文情報を自動生成できる。
また、インテント格納部12aに、1以上のインテントが格納され、情報生成装置100は、API設計書から、アクション名を有する情報であり、APIに関する情報である1以上のAPI情報を抽出し、1以上の各API情報からアクション名を取得し、取得した1以上の各アクション名を有するインテントを生成し、生成した1以上のインテントをインテント格納部12aに蓄積することにより、API設計書からインテントを自動生成できる。
また、エンティティ格納部15aに、1以上のエンティティが格納され、情報生成装置100は、1以上の各テーブル情報ごとに、テーブル情報から属性名を取得し、属性名であるエンティティ名を生成し、生成した1以上の各エンティティ名ごとに、エンティティ名に対応するテーブルから1以上の単語を取得し、一以上の単語である1以上のエンティティを生成し、1以上の各エンティティ名に対応付けて、エンティティ名に対応するテーブルから取得された1以上の単語である1以上のエンティティをエンティティ格納部15aに蓄積することにより、1以上の各テーブルから、エンティティ名、および当該エンティティ名に対応する1以上のエンティティを自動生成できる。
また、会話文情報格納部14aに、1以上の会話文情報が格納され、テンプレート格納部102には、エンティティ名が対応付けられた1以上の変数を有するテンプレートであり、変数の位置または数が異なる2以上のテンプレートが格納され、情報生成装置100は、2以上の各テンプレートごとに、当該テンプレートが有する1以上の各変数に対応付けられたエンティティ名に対応する一のエンティティをエンティティ格納部15aから取得し、2以上の各テンプレートごとに、当該テンプレートが有する1以上の各変数の位置に、取得したエンティティを挿入することにより、1以上の会話文情報を生成し、生成した1以上の会話文情報を、インテントに対応付けて会話文情報格納部14aに蓄積することにより、エンティティ名が対応付けられた1以上の変数を有するテンプレートであり、変数の位置または数が異なる2以上のテンプレートを用いて、多様な会話文情報を自動生成できる。
また、エンティティマッピング情報格納部16aに、1以上のエンティティマッピング情報が格納され、情報生成装置100は、1以上の各テーブル情報ごとに、テーブル情報から、テーブル識別子と、テーブル識別子で識別されるテーブル内の属性名であり、変換されるエンティティを特定する情報である翻訳項目名と、翻訳項目に対応する一のエンティティとを取得し、かつエンティティ格納部15aから一のエンティティに対応するエンティティ名を取得して、テーブル識別子と翻訳項目名とエンティティ名とを有するエンティティマッピング情報を生成し、生成した1以上のエンティティマッピング情報をエンティティマッピング情報格納部16aに蓄積することにより、1以上のテーブル情報から、テーブル識別子と翻訳項目名とエンティティ名とを有する1以上のエンティティマッピング情報を自動生成できる。
また、PK項目格納部17aに、1以上のPK項目が格納され、情報生成装置100は、1以上の各テーブル情報ごとに、テーブル情報から、テーブルを識別するテーブル識別子と、テーブルの主キーを特定する主キー識別子とを取得して、テーブル識別子と主キー識別子とを有する情報であるPK項目を生成し、生成した1以上のPK項目をPK項目格納部17aに蓄積することにより、1以上のテーブル情報から、テーブル識別子と主キー識別子とを有する1以上のPK項目を自動生成できる。
なお、本実施の形態における情報処理装置を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、業務処理ごとに管理される情報であり、業務処理を特定する情報であるアクション名を有する設計書であり、APIに関する設計書であるAPI設計書が格納されるドキュメント格納部101、属性名および当該属性名に対応する1以上の単語を有するテーブル、および当該テーブルを識別するテーブル識別子を含む1以上のテーブル情報が格納されるテーブル格納部11a、および、会話文のテンプレートであり、1以上の変数を有するテンプレートが格納されるテンプレート格納部102にアクセス可能なコンピュータを、前記API設計書からアクション名を取得して、取得したアクション名を有する情報であるインテントを生成するインテント生成部301と、前記1以上の各テーブル情報ごとに、当該テーブル情報が有するテーブルから属性名および当該属性名に対応する1以上の単語を取得し、取得した属性名であるエンティティ名、および、取得した1以上の単語である1以上のエンティティを生成するエンティティ生成部302と、前記エンティティ生成部302が前記1以上の各テーブル情報ごとに生成した1以上のエンティティから一のエンティティを取得し、取得した1以上のエンティティを前記テンプレートが有する1以上の変数に挿入することにより、会話文の情報である1以上の会話文情報を生成する会話文情報生成部303と、前記インテント生成部301が生成したインテントを蓄積し、かつ前記エンティティ生成部302が生成した1以上の各エンティティ名に1以上のエンティティを対応付けて蓄積し、かつ前記会話文情報生成部303が生成した1以上の会話文情報を当該インテントに対応付けて蓄積する蓄積部306として機能させるためのプログラムである。
(実施の形態3)
図16は、本実施の形態における情報生成装置200のブロック図である。本実施の形態における情報生成装置200は、実施の形態2の情報生成装置100において、インテント生成部301をインテント生成部301aに置き換えたものである。インテント生成部301aは、テーブル名抽出手段3011a、アクション名生成手段3012a、およびインテント生成手段3013aを具備する。
ドキュメント格納部101には、DB設計書が格納される。DB設計書とは、データベースに関する設計書である。DB設計書は、例えば、テーブル格納部11aに格納されている1または2以上の各テーブルのテーブル名を有する。なお、テーブル名については、実施の形態2で説明したので繰り返さない。また、DB設計書は、通常、格納されているテーブルに含まれる1または2以上の属性名も含んでいる。ただし、DB設計書の構造は問わない。
インテント生成部301aは、例えば、ドキュメント格納部101に格納されているDB設計書からテーブル名または属性名を取得し、取得したテーブル名または属性名の少なくとも一部を有するアクション名を構成して、構成したアクション名を有する情報であるインテントを生成する。
または、インテント生成部301aは、当該DB設計書から1または2以上の属性名を取得し、取得した1以上の各属性名ごとに、当該属性名の少なくとも一部を有するアクション名を構成して、構成したアクション名を有する情報であるインテントを生成してもよい。
テーブル名抽出手段3011aは、DB設計書から1以上のテーブル名または1以上の属性名を抽出する。
アクション名生成手段3012aは、抽出された1以上の各テーブル名または1以上の各属性名ごとに、当該テーブル名または当該属性名から少なくとも一部を抽出し、抽出した部分を有するアクション名を生成する。
インテント生成手段3013aは、生成された1以上の各アクション名を有するインテントを生成する。
例えば、DB設計書には、テーブル名“勤務時間テーブル”が含まれており、テーブル名抽出手段3011aは、当該DB設計書から当該テーブル名“勤務時間テーブル”等を取得する。アクション名生成手段3012aは、抽出されたテーブル名“勤務時間テーブル”から一部“勤務時間”を抽出し、抽出した部分を有するアクション名“勤務時間照会”を生成する。インテント生成手段3013aは、生成されたアクション名を有するインテント“勤務時データ照会インテント”を生成する。
または、DB設計書は、例えば、テーブル格納部11aに格納されているテーブル情報3に含まれるテーブル(つまり、勤務時間テーブル)に含まれる1以上の属性名“ZIKANGAI_TIME”,“TOTAL_TIME”等を有しており、テーブル名抽出手段3011aは、当該DB設計書から当該1以上の属性名“ZIKANGAI_TIME”,“TOTAL_TIME”等を取得する。
そして、取得された属性名“ZIKANGAI_TIME”に対し、アクション名生成手段3012aは、当該属性名を変換した“残業時間”を含むアクション名“残業時間照会”を構成し、インテント生成手段3013aは、構成されたアクション名を有するインテント“残業時間照会インテント”を生成する。
また、取得された属性名“TOTAL_TIME”に対し、アクション名生成手段3012aは、当該属性名を変換した“勤務時間”を含むアクション名“勤務時間データ照会”を構成し、インテント生成手段3013aは、構成されたアクション名を有するインテント“勤務時間データ照会インテント”を生成してもよい。
他の要素の動作は、実施の形態2と同様であり、説明を省略する。
この情報生成装置200の動作は、図15のフローチャートにおいて、ステップS1501を下記ステップS1501a(図示しない)に置き換えたものである。
(ステップS1501a)インテント生成部301aは、ドキュメント格納部101に格納されているDB設計書からテーブル名または属性名を取得し、テーブル名または属性名の少なくとも一部を有するアクション名を構成して、構成したアクション名を有する情報であるインテントを生成する。
以上、本実施の形態によれば、ドキュメント格納部101に、業務処理ごとに管理される情報であり、業務処理を特定する情報であるアクション名の少なくとも一部を構成し得る情報を含むテーブル名または属性名を有する第一ドキュメントの一種であり、データベースに関する設計書であるDB設計書が格納され、テーブル格納部11aに、属性名および属性名に対応する1以上の単語を有する第二ドキュメントの一種であるテーブル、およびテーブルを識別するテーブル識別子を含む1以上のテーブル情報が格納され、テンプレート格納部102に、会話文のテンプレートであり、1以上の変数を有するテンプレートが格納され、情報生成装置200は、DB設計書からテーブル名または属性名を取得し、テーブル名または属性名の少なくとも一部を有するアクション名を構成して、構成したアクション名を有する情報であるインテントを生成し、1以上の各テーブル情報ごとに、テーブル情報が有するテーブルから属性名および属性名に対応する1以上の単語を取得し、取得した属性名であるエンティティ名、および、取得した1以上の単語である1以上のエンティティを生成し、1以上の各テーブル情報ごとに生成した1以上のエンティティから一のエンティティを取得し、取得した1以上のエンティティをテンプレートが有する1以上の変数に挿入することにより、会話文の情報である1以上の会話文情報を生成し、生成したインテントを蓄積し、かつ生成した1以上の各エンティティ名に1以上のエンティティを対応付けて蓄積し、かつ生成した1以上の会話文情報をインテントに対応付けて蓄積することにより、DB設計書、およびテーブル情報から、言葉をAPIパラメータに変換するための情報であるインテント、1以上のエンティティ情報、および1以上の会話文情報を自動生成できる。
また、インテント格納部12aに、1以上のインテントが格納され、情報生成装置200は、DB設計書から1以上のテーブル名または1以上の属性名を抽出し、1以上の各テーブル名または1以上の各属性名ごとに、当該テーブル名または当該属性名から少なくとも一部を抽出し、抽出した部分を有するアクション名を生成し、生成した1以上の各アクション名を有するインテントを生成し、生成した1以上のインテントをインテント格納部12aに蓄積することにより、DB設計書からインテントを自動生成できる。
さらに、情報生成装置200は、実施の形態2に記載したその他の効果も奏する。
なお、本実施の形態における情報処理装置を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、業務処理ごとに管理される情報であり、業務処理を特定する情報であるアクション名の少なくとも一部を構成し得る情報を含むテーブル名または属性名を有する第一ドキュメントの一種であり、データベースに関する設計書であるDB設計書が格納されるドキュメント格納部101、属性名および当該属性名に対応する1以上の単語を有する第二ドキュメントの一種であるテーブル、および当該テーブルを識別するテーブル識別子を含む1以上のテーブル情報が格納されるテーブル格納部11a、および、会話文のテンプレートであり、1以上の変数を有するテンプレートが格納されるテンプレート格納部102にアクセス可能なコンピュータを、前記DB設計書からテーブル名または属性名を取得し、テーブル名または属性名の少なくとも一部を有するアクション名を構成して、構成したアクション名を有する情報であるインテントを生成するインテント生成部301aと、前記1以上の各テーブル情報ごとに、当該テーブル情報が有するテーブルから属性名および当該属性名に対応する1以上の単語を取得し、取得した属性名であるエンティティ名、および、取得した1以上の単語である1以上のエンティティを生成するエンティティ生成部302と、前記エンティティ生成部302が前記1以上の各テーブル情報ごとに生成した1以上のエンティティから一のエンティティを取得し、取得した1以上のエンティティを前記テンプレートが有する1以上の変数に挿入することにより、会話文の情報である1以上の会話文情報を生成する会話文情報生成部303と、前記インテント生成部301aが生成したインテントを蓄積し、かつ前記エンティティ生成部302が生成した1以上の各エンティティ名に1以上のエンティティを対応付けて蓄積し、かつ前記会話文情報生成部303が生成した1以上の会話文情報を当該インテントに対応付けて蓄積する蓄積部306として機能させるためのプログラムである。
(実施の形態4)
本実施の形態における情報処理装置300は、実施の形態1の情報出力装置500に、実施の形態2の情報生成装置100の機能を付加したものである。なお、この情報処理装置300は、例えば、情報出力装置と考えても、情報生成装置と考えてもよい。また、かかる事項は、実施の形態5の情報処理装置400にも当てはまる。
この情報処理装置300は、格納部1、受付部2、処理部3、および出力部4を備える。格納部1は、テーブル格納部11、インテント格納部12、API情報格納部13、会話文情報格納部14、エンティティ格納部15、エンティティマッピング情報格納部16、PK項目格納部17、日変換情報格納部18、ドキュメント格納部101、およびテンプレート格納部102を備える。受付部2は、会話文受付部21を備える。会話文受付部21は、音声受付手段211、および音声認識手段212を備える。
処理部3は、インテント決定部31、会話文情報決定部32、エンティティ取得部33、パラメータ取得部34、API情報取得部35、問合情報構成部36、検索部37、インテント生成部301、エンティティ生成部302、会話文情報生成部303、エンティティマッピング情報生成部304、PK項目生成部305、および蓄積部306を備える。パラメータ取得部34は、判断手段341、日情報取得手段342、エンティティ名取得手段343、翻訳項目名取得手段344、テーブル識別子取得手段345、主キー識別子取得手段346、および変換パラメータ取得手段347を備える。出力部4は、検索結果出力部41を備える。
インテント生成部301は、API情報抽出手段3011、アクション名取得手段3012、およびインテント生成手段3013を備える。エンティティ生成部302は、エンティティ名生成手段3021、およびエンティティ生成手段3022を備える。会話文情報生成部303は、エンティティ取得手段3031、および会話文生成手段3032を備える。蓄積部306は、インテント蓄積手段3061、エンティティ蓄積手段3062、会話文情報蓄積手段3063、エンティティマッピング情報蓄積手段3064、およびPK項目蓄積手段3065を備える。
上記各要素は、実施の形態1、および実施の形態2と同様の動作を行う。ただし、蓄積部306の蓄積先は、格納部1である。同様に、インテント蓄積手段3061の蓄積先はインテント格納部12であり、エンティティ蓄積手段3062の蓄積先はエンティティ格納部15であり、会話文情報蓄積手段3063の蓄積先は会話文情報格納部14であり、エンティティマッピング情報蓄積手段3064の蓄積先はエンティティマッピング情報格納部16であり、PK項目蓄積手段3065の蓄積先はPK項目格納部17である。
以上、本実施の形態によれば、情報処理装置300は、API設計書、およびテーブ情報からインテント、1以上のエンティティ情報、および1以上の会話文情報を自動生成し、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、情報検索することができる。
(実施の形態5)
本実施の形態における情報処理装置400は、実施の形態1の情報出力装置500に、実施の形態3の情報生成装置200の機能を付加したものである。この情報処理装置400は、実施の形態4の情報処理装置300において、インテント生成部301をインテント生成部301aに置き換えたものである。
以上、本実施の形態によれば、情報処理装置400は、DB設計書、およびテーブ情報からインテント、1以上のエンティティ情報、および1以上の会話文情報を自動生成し、同じ検索結果を求める問合せでも動的に変化する会話文を受け付け、情報検索することができる。