以下、実施形態につき、図面を参照して説明する。
(第1実施形態)
図1から図13は、第1実施形態の情報検索システムを示す図である。図1は、本実施形態の情報検索システムの構成図である。オペレータ装置300は、情報検索装置100と接続され、情報検索装置100は、オペレータとお客様(カスタマー)との間の対話支援機能を提供する。なお、本実施形態では、コンタクトセンターを構成する複数のオペレータの対話支援を一例に説明しているが、これに限らない。例えば、直接カスタマーと対面して対話するケースであっても適用可能である。
なお、本実施形態では、カスタマーとオペレータとの対話を一例に本システムについて説明するが、オペレータを介さずにカスタマーが直接情報検索装置100に対してテキストデータを入力し、情報検索装置100が自動的にナレッジ情報を提供するように構成することもできる。この場合、オペレータが介在しないため、例えば、Webサイトの問合せ機能として本システムを構築することができる。また、カスタマーが、過去の問合せ履歴を参照してその中から選択したテキストデータ(例えば、アフターコールレポートや問い合わせ履歴)を後述する対話テキストデータとして入力し、情報検索装置100が自動的にナレッジ情報を提供するように構成することもできる。
また、ナレッジ情報の一例として、本実施形態では、FAQを一例に説明するが、例えば、マニュアルや説明書などの製品やサービスに関する資料もナレッジ情報として、適用することができる。ナレッジ情報はテキスト情報に限らず、画像、音声、あるいはメタデータ等の人によって参照される形式で蓄えられる電子データ群である。また、FAQは質問と回答の組とに構造化されたナレッジを指し、テキスト情報に限られない。
オペレータ装置300は、対話装置310、制御装置320、表示装置330及び入力装置340を備えている。オペレータとお客様との間の対話は、音声通話による対話、チャットによる対話、電子メールによる対話などが含まれる。対話装置310は、これらの対話機能を提供すると共に、生成部310Aを備えており、お客様の問合せ内容をテキストデータで抽出して対話テキストデータを生成し、情報検索装置100に出力する。
音声通話による対話の場合、対話装置310は、コンタクトセンター内のPBX(PrivateBranch eXchange)と接続され、ACD(自動着信呼分配装置)によって分配された着信呼に応答する電話装置である。お客様の電話機とコンタクトセンターとは、公衆交換電話網(PSTN)やIP網を通じて接続される。また、生成部310Aは、通話音声データから対話テキストデータを生成する。例えば、生成部310Aが音声認識機能を備え、通話音声データを音声認識処理して対話テキストデータを生成してもよい。また、生成部310Aは、個別の音声認識処理装置(コンタクトセンター内又は外部のサーバ)に通話音声データを出力して音声認識結果を取得し、対話テキストデータを生成するようにしてもよい。
チャットによる対話は、IP(Internet Protocol)網を通じたデータ通信による対話であり、テキストチャット、ボイスチャット、ビデオチャットなどが含まれる。例えば、WebRTC(Web Real−Time Communication)方式で、ブラウザを用いたチャット機能がある。この場合、対話装置310は、コンタクトセンター内の内部ネットワークを通じて外部のIP網に接続可能なコンピュータ装置である。なお、ボイスチャットやビデオチャットの場合、生成部310Aは、上述した音声認識処理を通じた対話テキストデータを生成する。テキストチャットの場合、生成部310Aは、所定のテキストチャット画面に表示された対話テキストデータをそのまま取得することができる。なお、電子メールによる対話のケースでも、対話装置310は、コンピュータ装置が適用され、生成部310Aも、電子メールの内容を抽出することで対話テキストデータを取得することができる。
制御装置320は、表示装置330に対する表示制御及び入力装置340に対する操作入力制御を行う。制御装置320は、オペレータ装置300の全体の制御を司り、対話装置310に対して連携した制御を行うことが可能である。
なお、本実施形態では、オペレータ装置300と対話装置310とが一体に構成された態様を例示しているが、例えば、オペレータ装置300に対して対話装置310を個別の装置として構成してもよい。つまり、本実施形態のオペレータ装置300は、情報検索装置100に対するオペレータ側情報検索端末として構成されていればよい。オペレータ装置300とは個別の対話装置310(生成部310A)から出力された対話テキストデータが、情報検索装置100に入力され、オペレータ装置300は、情報検索装置100から提供される対話支援機能を享受する、制御装置320、表示装置330及び入力装置340を備えるコンピュータ装置として構成することができる。
情報検索装置100は、通信制御装置110、制御装置120及び記憶装置130を含んで構成されている。通信制御装置110は、オペレータ装置300や対話装置310に対する通信インタフェース部である。
制御装置120は、クエリ生成部121、検索部122、クエリモデル更新部(第1更新部)123及び検索モデル更新部(第2更新部)124を備える。記憶装置130は、クエリモデル(第1モデル)131、検索モデル(第2モデル)132、FAQデータベース(FAQDB)133が格納されている。
クエリモデルとはテキストのクエリらしさを表す内部表現のことであり、本実地形態においては確立モデルで説明しているが、規則集合であるか、確率的モデルであるか、等は問わない。すなわち、クエリモデルは、クエリ1、クエリ2、・・・、クエリNのように複数のクエリについてそれぞれのクエリらしさを表す内部表現の集合であってもよい。
検索モデルとは、検索対象であるそれぞれのナレッジ情報を表す内部表現である。一般にテキスト検索では、重要な単語(索引語と呼ばれる)の集合が内部表現として用いられることが多いが、これに限定されない。
以下の説明では、オペレータとカスタマーとが対話して生成された時系列の対話テキストデータ群を一例に、本実施形態の対話支援機能を説明する。
図2は、対話支援画面の一例を示す図であり、オペレータ装置300の表示装置330に対話支援画面が表示される。対話支援画面は、対話内容を表示する表示領域S1、推奨FAQを表示する表示領域S2及び検索FAQを表示する表示領域S3を含んでいる。これら各表示領域S1〜S3に表示される各情報は、情報検索装置100から提供される情報である。
表示領域S1は、一連の発話テキストデータU群の各発話テキストデータの中からクエリモデル131を使用して抽出(選抜)された発話テキストデータが表示される。なお、図2の例では、オペレータの発話内容は、点線で示している。表示領域S1は、デフォルトでオペレータ装置300の表示装置330に表示されるように制御される。
表示領域S2は、クエリモデル131に基づいて抽出された発話テキストデータをクエリとして、検索モデル132を使用して検索されたFAQ検索結果が表示される。表示領域S2に表示されるFAQは、表示領域S1に表示される発話テキストデータのうちでクエリモデル131に基づくクエリ尤度が一番高い発話テキストデータを用いて、FAQデータベース133から自動検索して得られた推奨FAQ(rFA1〜rFAn)である。表示領域S2は、デフォルトでオペレータ装置300の表示装置330に表示されるように制御される。クエリ尤度とは、ナレッジ情報を検索するためのクエリらしさを表す尤度を示す。
表示領域S3は、表示領域S1に表示された発話テキストデータのうち、オペレータによる選択操作によって選択された発話テキストデータに対するFAQ検索結果を表示する領域である。つまり、オペレータの発意による検索要求に基づいて情報検索装置100から提供される検索FAQが表示され、検索モデル132を使用した検索処理は推奨FAQと同様であるが、オペレータによる発話テキストデータの選択過程を経て提供される検索FAQが、表示領域S3に表示される。表示領域S3は、デフォルトでオペレータ装置300の表示装置330に表示されるように制御したり、表示領域S1に対するオペレータの選択操作を契機に表示装置330に表示されるように制御してもよい。
表示領域S2,S3は、FAQ表示領域を含む。FAQ表示領域は、「Q(Question)」に対応する質問領域f1と、「A(Answer)」に対応する回答領域f2と、を含んでいる。FAQ表示領域において、各FAQそれぞれは、質問領域f1だけが表示され、対応する回答領域が閉じた状態で表示されている。質問領域f1には、ボタンf11が設けられており、オペレータがボタンf11を選択すると、閉じていた回答領域f2が表示されるように制御される。逆に、回答領域f2が表示された状態において、ボタンf11を選択すると、回答領域f2を閉じることができる。
回答領域f2には、f21,f22、f23の各種ボタンが設けられている。ボタンf21は、「Suitable(いいね)」であり、提供されたFAQが参考になったなどのFAQの有用度をオペレータが上方(プラス)に評価するために使用される。ボタンf21は、「NotSuitable(よくないかも)」であり、ボタンf22とは逆に、提供されたFAQがあまり参考にならなかったなどのFAQの有用度をオペレータが下方(マイナス)に評価するために使用される。なお、ボタンf22は、任意であり、ボタンf21が設けられている場合はボタンf22が設けられていない構成であってもよい。ボタンf21,f22は、FAQ評価受付部として機能する。
ボタンf23、「RequestForImprovement(改善要求)」であり、提供されたFAQを改善する必要があると判断した場合に使用される。オペレータによるFAQの改善要求は、履歴として蓄積され、後述する第3実施形態で説明するように、FAQデータベース133に格納されるFAQ情報自体の作成、編集、更新等に利用される。
図3は、クエリモデル131を使用して抽出された表示領域S1に表示される問合せ内容の一例を示す図である。対話装置310は、オペレータとカスタマーとの間でやり取りされた全ての発話を、対話テキストデータとして時系列に、情報検索装置100に出力する。情報検索装置100では、時系列順のこれら複数の対話文(対話テキストデータ群U)の中から、問合せに関連する対話テキストデータを抽出してオペレータ装置300に送信し、表示領域S1に表示させる。
このとき、問合せに関連する対話テキストデータであるか否かを判別するために、本実施形態では、クエリモデル131を使用する。クエリ生成部121は、クエリモデル131を使用して、入力された一連の発話テキストデータU={U1,・・,U4}の各発話テキストデータのクエリ尤度(クエリらしさを表す数値)を算出し、FAQ候補を抽出するための有益な問合せ発話であるかを評価する。クエリ生成部121は、クエリ尤度に基づいて一連の発話テキストデータU={U1,・・,U4}の中からクエリ候補Qcを抽出する。図3の例では、発話テキストデータU2,U3がそれぞれクエリ候補Q1,Q2として抽出され、制御装置120は、表示領域S1にクエリ候補Q1,Q2を含むクエリ候補リストを表示装置330に表示させる。このクエリ候補リストが、オペレータ装置300に表示されるカスタマーとの間の対話テキストデータとなる。クエリ候補の生成処理の詳細については、後述する。
なお、情報検索装置100に入力された時系列順のこれら複数の対話文(対話テキストデータ群U)をそのまま、時系列順に発話者が区別されるように表示される不図示の表示領域(発話テキストデータをそのまま出す領域)が、表示領域S1と分離して設けられるように構成してもよい。また、不図示のボタン選択操作に基づいて、発話テキストデータをそのまま出す領域と表示領域S1とが表示切替できるように構成することもできる。なお、入力される対話テキストデータ群U内の各テキストデータは、時系列順でなくてもよい。つまり、発話された順序は関係なく、所定の会話内容を一まとまりとした複数の対話テキストデータ群Uが情報検索装置100に入力されればよい。
図4は、本実施形態の対話支援機能の処理フローを示す図である。上述のように、情報検索装置100は、オペレータ装置300に付随する対話装置310から一連の発話テキストデータU={U1,・・,U4}を受信する(S101,図5のテーブル141)。クエリ生成部121は、クエリモデル131を使用してクエリ候補Qcを生成(抽出)する(S102,図5のテーブル142)。
制御装置120は、クエリ生成部121よって出力されたクエリ候補Qcのうち第1位のクエリ候補(例えば、テーブル142においてクエリ尤度が一番高いクエリ候補Q1)を検索部122に入力して、推奨FAQの検索処理(第1検索処理)を行わせるとともに(S103)、生成されたクエリ候補Qcをオペレータ装置300に送信し、表示領域S1(問合せ内容を表示する領域)にクエリ候補リストを表示させるように制御する(S105)。
ステップS103の推奨FAQ(第1ナレッジ情報)の検索処理は、検索部122によって遂行される。検索部122は、入力された第1位のクエリ候補Q1と検索モデル132とを用いて、FAQ候補のFAQID別に、検索の尤もらしさを表すスコアである検索尤度を算出し、FAQIDと検索尤度とを関連付けた組み合わせテーブルを作成する(図5のテーブル143)。検索尤度とは、ナレッジ情報のクエリ候補に対する検索結果としての尤もらしさを表す尤度であり、以降で説明する数式に限定されない。
そして、検索部122は、FAQデータベース133を参照し、作成した組み合わせテーブルのFAQIDに該当する「Q」と「A」を抽出し、{順位,FAQID,検索尤度,Q,A,対応クエリID}の組からなる推奨FAQ候補リスト(テーブル143)を生成する(S103)。順位は、検索尤度の高い順の順位であり、対応クエリIDは、検索元となったクエリ候補Q1を識別するためのIDである。検索処理の詳細については、後述する。なお、FAQ候補リストは、後続の検索モデル更新処理の学習データの元となるため、FAQ候補と検索元クエリとの紐づけ情報を保持している。テーブル143では、対応クエリ列が紐づけ情報となっている。
制御装置120(出力部)は、生成された推奨FAQ候補リストを、オペレータ装置300に送信し、オペレータ装置300の表示領域S2(推奨FAQを表示する領域)に、推奨FAQ候補リストを表示させるように制御する(S104)。オペレータ装置300は、受信した推奨FAQ候補リストを表示領域S2に表示する。オペレータは、表示領域S1において対話テキストデータ(クエリ候補)を確認しながら、表示領域S2内の各推奨FAQを参照することができる。これにより、オペレータは、表示された推奨FAQ候補リスト内の各FAQを参考にカスタマーへの回答を行うことができ、オペレータとカスタマーとの間の円滑な対話を支援することができる。
なお、情報検索装置100は、推奨FAQ候補リストに含まれるFAQの数を適宜設定することができる。例えば、上述の第1検索処理において抽出された全てのFAQ候補を含むように推奨FAQ候補リストを生成して、オペレータ装置300に表示させるように制御してもよいし、各FAQ候補の検索尤度に対して閾値を設けて、閾値を超えるFAQ候補や、検索尤度の順位において上位数件のFAQ候補などを抽出するように、一部を取捨選択した推奨FAQ候補リストを生成するように構成してもよい。
本実施形態では、オペレータ装置300に付随する対話装置310から一連の発話テキストデータU={U1,・・,U4}を受信すると、クエリ生成部121によるクエリ候補Qcの生成処理及び推奨FAQの検索処理(推奨FAQ候補リストの生成処理)が自動的に実行され、オペレータ装置300の表示領域S1,S2それぞれに、クエリ候補Qcと推奨FAQが表示される。
次に、FAQ表示領域が備えるFAQ評価受付部は、オペレータからのFAQ候補リスト中のそれぞれのFAQについての評価を受け付ける(S109)。受け付ける評価は、「Suitable」ボタンf21だけを用意して1値の評価としたり、「Suitable」ボタンf21および「NotSuitable(よくないかも)」ボタンf22を用意して2値の評価としたり、あるいは数値での入力を受け付けても良い。後述する検索モデル132の更新処理において、FAQ評価値(ナレッジ評価履歴)による学習データへの重み付けの設定に基づいて決定すればよい。この例では、「Suitable」ボタンf21を用意し、ボタンf21が押された場合に、評価値を「10」としている。
対話テキストデータ群Uの元となる音声を対話装置310を介して聞いたのち、オペレータが、自動抽出されたFAQ候補リスト(テーブル143)におけるFAQID5が最も適切な検索結果であると判断し、オペレータ装置300において、FAQID5に対応付けられたFAQ表示領域の「Suitable」ボタンf21を押したとする。オペレータ装置300は、ボタンf21の選択操作に基づいて、FAQ評価結果{FAQID5,評価値「10」}を、情報検索装置100に送信する。
情報検索装置100において制御装置120は、受信したFAQ評価結果を用いて、テーブル144のように{QID,FAQID,学習重み}の組から成る検索モデル学習データを作成する(S110)。ここで学習重みには、評価値「10」をそのまま用いることにする。
検索モデル更新部124は、生成された検索モデル学習データを用いて検索モデル132を更新する(S111)。検索モデル132の更新後、同一(もしくは類似する)発話がカスタマーによってなされ、同一(もしくは類似する)テキスト情報がクエリ生成部121に入力された場合、更新前と同様にクエリQ1が検索部122に入力されるが、検索結果はFAQID5のスコア(検索尤度)がより大きくなり、FAQID5が第1位のFAQ候補となる(テーブル145)。すなわち、オペレータによって正の評価をされたFAQが、次回以降、より上位に検索されやすくなるように検索モデル132が更新されている。なお、検索モデル132の更新処理の詳細については、後述する。
一方で、ステップS102から分岐した後の処理について詳細に説明する。表示領域S1に表示された複数の発話テキストデータの中から、オペレータによって選択された発話テキストデータをクエリ候補として検索部122に入力して、検索FAQ(第2ナレッジ情報)の検索処理(第2検索処理)を実行可能に制御する。オペレータ装置300は、表示領域S1内のクエリ候補が選択された場合、選択されたクエリ候補又は/及び選択されたクエリ候補を識別するIDを、情報検索装置100に送信する。
図4のステップS106において、情報検索装置100は、オペレータ装置300から表示領域S1内のクエリ候補に対する選択情報を受信すると(S106のYES)、選択されたクエリ候補(Qselect)に基づく検索FAQの検索処理(第2検索処理)を遂行し、検索FAQ候補リストを生成する(S107)。本実施形態の第2検索処理は、上述した第1検索処理と同じであり、検索部122に入力されるクエリ候補が異なるだけである。制御装置120(第2送信部)は、生成された検索FAQ候補リストを、オペレータ装置300に送信し、オペレータ装置300の表示領域S3(検索FAQを表示する領域)に、検索FAQ候補リストを表示させるように制御する(S108)。オペレータ装置300は、受信した検索FAQ候補リストを表示領域S3に表示する。
なお、表示領域S1内において、例えば、推奨FAQを抽出するために使用されたクエリ候補は選択できないように制御することができる。つまり、推奨FAQを抽出するために使用されたクエリ尤度が第1位のクエリ候補は、選択できないように非アクティブに表示するように制御することができる。また、他の例としては、推奨FAQを抽出するために使用されたクエリ候補も選択可能に制御しつつ、検索FAQの検索処理では、推奨FAQに対する同じクエリ候補か否かを判別し、同じクエリ候補である場合、検索FAQの検索結果として「該当なし」を出力して、表示領域S3に表示させるように制御することもできる。
また、オペレータは、表示領域S1内において、2つ以上の複数の対話テキストデータをクエリ候補として選択できるようにしてもよいし、一つのクエリ候補のみ選択できるようにしてもよい。
例えば、オペレータが、テーブル142のクエリ候補リストの中からクエリ候補Q2を選択したシナリオを考える。オペレータ装置300は、クエリ候補Q2の選択結果を情報検索装置100に送信し、情報検索装置100の制御装置120は、選択結果に基づき、上述した第2検索処理及び検索FAQ候補リストの提供処理を行うとともに、クエリモデル学習データ作成処理及びクエリモデル更新処理を実行する。
クエリモデル学習データ作成とそれに続く処理について説明する。情報検索装置100において、制御装置120は、オペレータ装置300からオペレータの選択結果「Q2」を受信すると、テーブル142からクエリIDが一致する行を参照し、{テキスト,クエリカテゴリ,学習重み}の組であるクエリモデル131の学習データ(図6のテーブル146)を作成する(S112)。
ここで、クエリカテゴリは、クエリであるか否かを表す2値{Q,¬Q}データとする。オペレータが選択した発話テキストをクエリとして正の追加学習を行うために、「Q」を値として入れる。続いて、制御装置120、クエリモデル学習データ(図6のテーブル146)をクエリモデル更新部123に入力し、クエリモデル131を更新する(S113)。
クエリモデル131の更新後、新たに発話テキストデータ群Uがクエリ生成部121に入力された場合に出力されるクエリ候補リストは、図6のテーブル147のようになる。クエリモデル更新前のクエリ候補リストは、図5に示すように生成元テキストU2に対応するクエリのスコア(クエリ尤度)が、生成元テキストU3のスコアよりも高かったが、クエリモデル更新後は逆となり、生成元テキストU3に対応するクエリのスコアが高くなり、生成元テキスト(発話テキストデータ)U3が第1位のクエリ候補となる。クエリモデル更新処理の詳細は後述する。
次に、第2検索処理によって提供される検索FAQ候補リストの各FAQに対しても、オペレータは、FAQ評価を行うことができる。ステップS107において、制御装置120は、図5のテーブル142のクエリIDが選択結果のクエリ「Q2」と一致する行を参照し、該当のクエリテキストデータのクエリID「Q2」を検索部122に入力する。検索部122は、クエリ候補Q2に対する検索結果であるFAQ候補リスト(図6のテーブル148)を生成する。制御装置120は、生成されたFAQ候補リストをオペレータ装置300に送信し、オペレータ装置300は、受信したFAQ候補リストを表示装置330の検索FAQ表示領域S3に表示する(S108)。
続いて、表示領域S3内の各FAQにおいてもFAQ表示領域内にFAQ評価受付部を備えているので、オペレータによる検索FAQ候補リスト中のそれぞれのFAQについての評価を受け付け、取得することができる(S109)。
オペレータが、対話装置310を介して聞いた発話テキストデータ群Uの元となる音声内容に基づいて、例えば、テーブル148におけるFAQID2のFAQが最も適切な検索結果であると判断した場合、オペレータ装置300において、FAQID2のFAQ表示領域において「Suitable」ボタンf21を押したとする。すると、FAQ評価結果{FAQID2,評価値「10」}が、オペレータ装置300から情報検索装置100に送信される。情報検索装置100において制御装置120は、受信したFAQ評価結果とテーブル148の対応クエリIDを用いて、クエリテキストを紐づけ、図6のテーブル149のように{QID,FAQID,学習重み}の組から成る検索モデル学習データを作成する(S110)。ここで、学習重みは評価値「10」を用いることとする。検索モデル更新部124は、作成された検索モデル学習データを用いて検索モデル132を更新する(S111)。
検索モデル132の更新前と同じクエリ候補Q2が検索部122に入力された場合、FAQID2のスコアがより大きくなり、FAQID2が第1位候補となるFAQ候補リストが生成される(図6のテーブル150)。すなわち、オペレータによって正の評価をされたFAQが、次回以降、より上位に検索されやすくなるように検索モデル132が更新されている。
このように本実施形態では、対話装置310から入力されるオペレータとカスタマーとの間の一連の発話テキストデータU群の中からクエリモデル131を使用してクエリ候補Qcを生成する処理を行うと共に、検索モデル132を使用して、生成されたクエリ候補から自動的に推奨FAQを提供する第1検索処理と、同様に検索モデル132を使用して、生成された発話テキストデータの中からオペレータによって選択されたクエリ候補に基づいて検索FAQを提供する第2検索処理と、を実行する。
そして、本実施形態では、表示領域S2,S3に表示されるFAQの表示領域には、FAQ評価を行うための評価入力ボタンが設けられ、オペレータがレコメンドされたFAQ又は/及び検索されたFAQの各FAQを、評価することができる。このFAQ評価結果と前記選択されたクエリ候補との紐づけ情報を利用して、該FAQ評価結果と前記選択されたクエリ候補との組が、検索モデル132の学習データとして活用され、検索モデル132を更新する。
また、オペレータによって選択されたクエリ候補の選択履歴は、クエリモデル131の学習データとして活用され、クエリモデル131を更新する。
検索モデル132の更新後、クエリモデル学習データ作成及びクエリモデル131の更新処理が実行されない場合、同一(もしくは類似する)発話がカスタマーによってなされても、一連の発話テキストデータに対する第1位のクエリ候補は、クエリモデル更新前と変わらないため、推奨FAQの抽出結果には反映されない。すなわち、クエルモデル学習データの収集と、検索モデル学習データの収集とを両方同時に行う必要がある。
したがって、単に、クエリ生成部121と検索部122とを組み合わせても、検索モデル132とクエリモデル131とが別個に更新されてしまうと、発話テキストデータのクエリとしての精度が向上しない課題がある。
従来、オペレータが情報検索装置100を利用中に、クエリモデル131と検索モデル132の各モデルの出力結果を別々に評価させることにより、各学習データを収集する仕組みは存在した。しかしながら、オペレータがお客様との応対中に、両方の評価を強いることは作業負担を大きく、オペレータ業務に支障が生じかねない。情報検索装置100の実運用中に、オペレータにデータの評価を十分な回数実施させて、十分な量の学習データを収集すること自体が難しかった。
本実施形態では、オペレータの選択操作によって受け付けた選択クエリに基づくクエリモデル131の学習データ作成処理を行うだけでなく、検索モデル132の学習データにおけるFAQとの対応付けにも用いている。これにより、ユーザーの学習データ作成作業が、従来よりも一層簡便になっている。
さらに、本実施形態の情報検索システムは、オペレータによるクエリ候補の選択を可能にして、オペレータによるクエリ候補の選択を受け付けた後、第2検索処理(S107)に続く検索モデル学習データ作成処理(S110)及び検索モデル132の更新処理(S111)と、クエリモデル学習データの作成処理(S112)及びクエリモデル131の更新処理(S113)とが平行して連動させる仕組みを実現している。
一連の対話テキストデータ(一連のカスタマーの発話の認識結果テキスト)から生成したクエリ候補について、オペレータがクエリ候補を選択した結果に基づいてクエリモデル131を更新し、検索結果のFAQ候補を評価した結果と、紐付けられたクエリ候補の組に基づいて検索モデル132を更新することにより、次に同一あるいは類似する発話をカスタマーが発話した場合に、オペレータがクエリ候補を選択することなく、正の(負の)評価結果を得たFAQが検索結果のより上位に(下位に)検索されるようになる。
言い換えれば、カスタマーが意図する問合せに対するFAQ候補の抽出精度が検索モデルの更新によって向上するとともに、オペレータによるクエリ候補の選択履歴に対するクエリモデル131の更新によって、クエリ候補としての順位がFAQ候補の検索と連動して更新されるため、推奨FAQの抽出精度が向上する。
さらに、本実施形態におけるナイーブベイズ分類器のように、追加学習の計算コストが低い分類手法を用いることで、リアルタイムに検索モデル132の更新と、クエリモデル131を更新とを並行して行うように構成してもよい。これにより、オペレータとお客様との対話の最中に、オペレータのクエリ候補の選択結果及びFAQの評価結果が両モデルに反映され、すぐに同じ(あるいは類似の)発話テキストデータの入力に対する推奨FAQの抽出精度が向上する。
本実施形態では、対話支援画面に次の仕組みも備えている。これによりオペレータによるカスタマーからの問い合わせ内容の確認や、カスタマーからの問い合わせに対する過去の推奨FAQを同一画面で簡単に確認することができ、オペレータの作業効率を図ることができる。
図2B、表示領域S1の画面例であり、図2Cは、図2Bに示す画面例と表示領域S2との関係を示す図である。図2Aの表示領域S1に表示されている問い合わせ内容は、オペレータとカスタマーとの一連の会話から、クエリモデル131を使用して抽出された発話テキストデータを表示している。そのため、オペレータとカスタマーの会話が続いている間は逐次表示領域S1に表示される発話テキストデータは増えていくため、最新の発話テキストが表示領域S1の最下段に表示される。図2Bに示すように、この状況において、オペレータが表示領域S1に表示されている最新の発話テキストではなく、過去の発話テキストを参照するために不図示の画面内のスクロールバーを操作した場合や、表示領域S1に表示されている特定の発話テキストを指示した場合は、その後にオペレータとカスタマーの会話が継続した場合でも、スクロールバーの操作により表示した状態の表示またはオペレータが発話テキストを特定した時点の表示状態を保つ、過去履歴参照モードに自動的に切り替わるように制御装置320により制御される。
すなわち、過去履歴参照モードに切り替わった後のオペレータとカスタマーとの最新の会話は表示領域S1には表示されず、オペレータがスクロール操作により表示した画面またはオペレータが発話テキストを特定した時点の画面がそのまま表示されている状態となる。
なお、過去履歴参照モードにおいても、スクロール操作は受け付けており、手動でのスクロールアップおよびスクロールダウンは可能である。
また、過去履歴参照モードの起動により表示領域S1の表示は固定されている状態であるが、その間のオペレータとカスタマーとの会話が継続している場合には、過去履歴参照モード状態で表示されている画面(表示領域S1)には最新の発話テキストは表示されていないため、当該最新の発話テキストが参照できるように表示領域S1にスクロールダウンするためのボタンを表示する。オペレータが当該スクロールダウンするためのボタン操作をした場合、あるいはスクロール操作により、スクロールバーが最下段にスクロールダウンされた場合には、過去履歴参照モードは解除され通常の表示モード、すなわち最新の発話テキストが最下段に表示される状態となる。
尚、過去履歴参照モードの状態で、オペレータが特定の発話テキストを指示操作すると、表示領域S1とは別の表示領域(第5表示領域)に、指示された発話テキストに対して提示された推奨FAQが表示される(図2C)。
<分類器ならびにモデルの説明>
本実施形態のクエリ候補生成処理および検索処理は、入力テキストを文書と見做し、文書を適切なカテゴリに振り分ける文書分類として捉える。クエリ候補生成処理は、入力テキストをクエリかクエリでないか2つのカテゴリに振り分る問題であり、検索処理は、入力テキストを各FAQに振り分ける問題である。文書分類には様々な手法があるが、ここでは、機械学習による分類手法のひとつであるナイーブベイズ分類器を一例に説明する。なお、分類手法は、ナイーブベイズ分類器に限定されるものではなく、他の公知の手法を適用することもできる。
文書分類の問題は、文書dが与えられたときのカテゴリcの事後確率を最大化するようなカテゴリcを見つける問題として、以下の式(1)のように定式化される。
ナイーブベイズ分類器では、これをベイズの定理を用いて以下の式(2)のように置き換える。
ここで、同一文書dのもとでのカテゴリの比較であるため、P(d)は無視できる。したがって、以下の式(3)となる。
ここで、P(d|c)のモデル化には多項モデルを用いる。
多項モデルは、文書中の各位置についてどのような単語が起こるかをモデル化するモデルであり、語彙Vの中から一つの単語を選ぶ操作を|d|回繰り返すことで文書を生成する。ここで、|d|は文書d内の単語数を表す。(参考文献;自然言語処理のための機械学習入門,P.111 高村大也, コロナ社, 2010)
そうすると、P(d|c)は、カテゴリが与えられたときの単語の事後確率P(wi|c)の積で表される。
ただし、
とする。これを対数化すると、以下の式(5)となる。
したがって、以下の式に整理することができる。
ここで、カテゴリ尤度Lcは、以下の式で表される。
wiは文書dの出現単語、Mは文書dの出現単語数、dcはカテゴリcの文書数、freq(wi,c)はカテゴリcにおける単語wiの出現頻度である。
また、Vは全文書の単語の異なり数(語彙数)、αは補正パラメータである。これらは、学習データにおいてfreq(wi,c)=0の場合に、確率値が0にならないように補正するためのパラメータである。この補正手法は、加算スムージングと呼ばれる。
上述の検索モデル132やクエリモデル131におけるモデルとは、学習データから算出されたlnP(wi|c)およびlnP(c)の表のことを指す。
さらに、分類先のカテゴリ数が2つであり、一方のカテゴリに文書を振り分ける場合は、以下の式(7)によって分類先を決定できる
式(7)を対数化すると、
そして、クエリ候補生成処理におけるクエリの分類先は、クエリである「Q」か、クエリでない「¬Q」かのいずれか一方への振り分けであるから、これを用いてクエリ尤度Lqを以下の式(9)のように定める。
ナイーブベイズ分類器の処理は、カテゴリへの分類のためのモデルの学習段階、文書をカテゴリへ分類する分類段階、追加の学習データを用いてモデルを更新する更新段階の3つの段階に分けられる。特に、本実施形態の各処理を理解するために重要な分類段階と更新段階について、以下に詳しく説明する。
(学習段階)
文書と分類先カテゴリの組からなる正解データを学習データとして、モデルを学習する。最初にすべての文書について単語列に分割し、カテゴリ別の出現頻度を数え、カテゴリ別単語頻度表を作成する。また、分類先カテゴリ別の文書の頻度も数えてカテゴリ別文書頻度表を作成する。そして、それぞれの表の値を式(6.2)ならびに式(6.3)に代入し、lnP(wi|c)およびlnP(c)を算出し、単語の対数事後確率表並びにカテゴリの対数周辺確率表に算出した値をセットする。
(分類段階)
図7は、分類段階の処理フローを示す図である。図7のフローチャートに沿って、分類段階の処理を説明する。前提として、分類先カテゴリはカテゴリセットCの要素であり、カテゴリ対数周辺確率表TCpとカテゴリのもとでの単語対数事後確率表TWpとが、学習段階において得られているものとする。
分類結果を格納するSを初期化する(S301)。続いて、入力テキストUを意味的なまとまりである単語単位に分割し、単語列w1,・・・wMを得る(S302)。
単語分割処理は、公知の形態素解析器を用いたり、文字N-gram単位を用いたり、さまざまな公知の手法によって実現できる。本処理において、必ずしもテキスト中の全単語を全て切り出す必要はなく、後続するクエリ生成処理において参照される単語情報のみ切り出せばよい。その後、後続処理に合わせて適切な正規化処理を施す。たとえば、「あえーと、」のような話し言葉に特有の表現を除去したり、動詞等の活用形を持つ品詞について原形や語幹のみ取り出したりする。
全てのカテゴリc1,・・・cKについて、順にcに代入し、ステップS304からS307までの処理を繰り返す(S303)。
まず、Lcの式(6.1)の右辺の第一項lnP(c)を、カテゴリ対数周辺確率表TCpを参照して抽出し、これをLcに初期値として代入する(S304)。次に、単語w1,・・・wMについて順にwiに代入し、S306からS307までの処理を繰り返す(S305)。lnP(wi|c)を、単語の対数事後確率表から読み込み、Lcに加算する(S306)。{カテゴリc、求めたカテゴリ尤度Lc}の組を順次Sに追加する(S307)。これをすべての単語について繰り返し(S305)、Lcを算出する。これを全てのカテゴリについて繰り返し(S303)、最後に、求めたSを出力とする。
(更新段階)
図8は、更新段階の処理フローを示す図である。図7のフローチャートに沿って、更新段階の処理を説明する。前提として、カテゴリ対数周辺確率表TCpおよびカテゴリのもとでの単語対数事後確率表TWpと、それらの算出元データであるカテゴリ別文書頻度表TCfおよびカテゴリ別単語頻度表TWfとが学習段階において得られているものとする。
学習データは、{文書ID(QID),カテゴリc,重みG}の組である。重みGは、同じ文書をG個追加することを表す。
更新処理では、追加学習データの文書の単語列w1,・・・wMおよび分類先カテゴリcに基づいて、lnP(wi|c)およびlnP(c)の値を再計算し、カテゴリ対数周辺確率表TCpおよびカテゴリのもとでの単語対数事後確率表TWpの値を更新する。
先にlnP(c)の値を求める。まず、カテゴリcに文書がG個追加されるため、TCf[c]の値をカテゴリ文書数dcに読み込み、G個加算したのち、TCf[c]に値を書き込む(S401)。更新したTCfを用いて各カテゴリの文書数dciを加算し、全文書数Dを求める(S402、S403、S404)。次に、式(6.3)にしたがって、全文書数DとステップS401で求めたdcとを用いてlnP(c)を算出し、TCp[c]に書き込む(S405)。
次に、lnP(wi|c)の値を求める。まず、TWfを更新する。分類段階で説明したような単語分割処理によって学習データの文書を単語列w1,・・・wMに分割する(S406)。カテゴリcにおけるwiの出現頻度をTWfから読み込み、freq(wi,c)にセットする。学習データに当該単語がG回出現したとみなし、Gを加算した結果でfreq(wi,c)を更新し、これをTWf[c,wi]に書き込む(S408)。ステップS408の処理を単語列中のすべての単語について繰り返す(S407)ことにより、TWfを更新する。
次に、更新したTWfを用いて更新したTWpを更新する。式(6.2)の分母の第一項であるΣ(j=1〜V)freq(wi,c)を求める。これはカテゴリcにおける単語の総出現数であり、freq(c)と置き、0で初期化する(S409)。カテゴリcでの出現頻度TWf[c,wi]を読み込み、freq(wi,c)にセットし、freq(c)を加算する。加算結果を用いてfreq(c)を更新する(S411)。これを全語彙w1,・・・wvについて繰り返す(S410)。
次に、単語wiについて、カテゴリcにおける出現頻度をTWf[c,wi]から読み込み、freq(wi,c)にセットする。freq(wi,c)と、ステップS411で求めたfreq(c)とを式(6.2)に代入し、lnP(wi|c)を算出し、TWf[c,wi]に値を書き込む(S413)。これを全語彙w1,・・・wvについて繰り返し行う(S412)。以上により、すべての語彙に関して、カテゴリcについてTWpの値が更新される。
すでに説明した図4のフローチャートにおけるクエリ候補生成処理(S102)および検索処理(S103およびS107)では、上述した分類段階の処理が実行される。
一方、クエリモデル更新処理(S113)および検索モデル更新処理(S111)では、上述した更新段階の処理が実行される。それぞれの処理について、順に詳しく説明する。
<クエリ候補生成処理の詳細>
図9は、クエリ生成部121が、一連のテキスト情報からクエリ候補Qcを生成する処理の詳細を表すフローチャートである。クエリ候補の生成処理では、一連のテキストを、分類器によってそれぞれクエリか否かの2つのカテゴリに振り分け、クエリに振り分けられたテキストのセットをクエリ候補とする処理を行う。
最初に、呼び出し元ルーチンである図4のS102において、クエリ生成部121が上述の一連の発話テキストデータU={U1,・・,U4}(図5のテーブル141)を受け付けたとする。図9のサブルーチンに進み、初期化する(S201)。変数UkにU1から順番に代入し、ステップS203からS206までの処理を繰り返す(S202)。ステップS203は、図7に示したサブルーチンであり、ここで改めて説明する。
サブルーチンに与えるデータは、カテゴリセットC={Q, ¬Q}、TCp(図12のテーブル202)、TWp(図12のテーブル203)である。UはU1とする。まず、Sを初期化した(S301)のち、テキストU1を意味的なまとまりである単語単位に分割する(S302)。ここでは、最初に図12のテーブル201のように、テキストU1を左から走査し、語彙辞書を用いてマッチする単語を切り出したのち、不要語辞書に基づいて不要語をフィルタして取り除く。U1からは{“、”“。”,“あえーと”,“の”,“ん”,“で”,“って”}を取り除き、図12のテーブル201AのW1={w1=“自動車保険”,w2=“CM”,w3=“見た”,w4=“ですけれども”,w5=“カスタマイズ”,w6=“できる”}を得る。
続いて、カテゴリの対数周辺確率表(テーブル202)ならびにカテゴリのもとでの単語の対数事後確率表(テーブル203)を用いて、LQ及びL¬Qをそれぞれ求める(S303からS307)。
まず、c=Qのとき(S303)、LQの初期値としてテーブル202のlnP(Q)を代入する(S304)。次に、単語列w1,・・・w6のそれぞれの単語wiについて、テーブル203のセル[Q,wi]の値をLQに加算する(S306)。その結果が図12のテーブル204のLQ行U1列の値である。{Q,LQ}の組をSに追加する(S307)。同様にc=¬Qの時も処理し、Sに追加する(S305からS307)。L¬Qはテーブル204のL¬Q行U1列の値である。最後に、得られたSが呼び出し元ルーチンに渡される。
呼び出し元ルーチンでは、得られたLQおよびL¬Qを式(9)に代入し、計算結果をLq1に入力する(S204)。式(9)の条件に従い、Lq1>0であれば、クエリ“Q“と判定し(S205)、(U1, Lq1)の組をクエリ候補Qc´に追加する。U2 、U3、U4についても同様の処理を行い、全ての入力テキストについてクエリ候補Qc´を得る(S206)。最後に、Qc´をクエリ尤度Lqkが大きい順にソートした結果Qcを返す(S207,図5のテーブル142)。
<検索処理の詳細>
図10は、検索部122が、一連のテキストUからFAQの検索結果であるFAQ候補Scを抽出する処理を表すフローチャートである。各FAQIDをカテゴリとし、カテゴリセットC={faq1,・・・,faqk}とする。そして、一連のテキストを、上述のクエリ生成処理と同様にナイーブベイズ分類器の式(6)を用いて、いずれかのカテゴリ(FAQID)に振り分ける処理を行う。
前述のように求められたクエリ候補Qcの中で、クエリ尤度が最大であるQ1={(U2,Lq2)}におけるU2が、図4のS104において検索部122に入力された場合のシナリオを例にとり、各ステップについて順に説明する。最初に、図10のサブルーチンより、図7のサブルーチンを呼び出す(S221)。サブルーチンに与えるカテゴリセットC={faq1,・・・,faq5}(FAQデータベース133の各FAQID)、TCpは図12のテーブル302、TWpは図12のテーブル303、UはU2である。
まず、Sを初期化した(S301)のち、テキストU2を意味的なまとまりである単語単位に分割する(S302)。単語分割には、クエリ生成処理で行ったときと同様に、テーブル201のU2行のとおり単語を切り出した後、不要語フィルタにかける。ここで、不要語フィルタにはクエリ生成処理で用いたものとは異なる検索処理に適したフィルタを用いる。U2から{“を“,”が“,”のか“,”を“,”いただきたい“,”と“,”思って“,”ですね“}を取り除き、図12のテーブル301のWF2={w1=“どのように”,w2=“契約内容”,w3=“カスタマイズ”,w4=“できる”,w5=“教えて”}を得る。続いて、カテゴリの対数周辺確率表(テーブル302)ならびにカテゴリのもとでの単語の対数事後確率表(テーブル303)を用いて、Lfaq1からLfaq5をそれぞれ求める(S303からS307)。
まず、c=faq1のとき(S303)、Lfaq1の初期値としてテーブル302のセル[faq1,lnP(c)]の値をlnP(faq1)に読み込む(S304)。次に、単語列w1,・・・w5のそれぞれの単語wiについて、テーブル303のセル[faq1,wi]を値をlnP(wi| faq1)に読み込み、Lfaq1に加算する。その結果が図12のテーブル304のfaq1行Q1列の値である。{faq1,Lfaq1}の組をSに追加する。c=faq2 ,・・・,faq5についても同様に処理し、Sに追加する(S305からS307)。Lfaq2,・・・, Lfaq5はテーブル304のfaq2行からfaq5行のQ1列の値である。最後に、得られたSが呼び出し元ルーチンに渡される。
図10の呼び出し元ルーチンでは、得られたSをLfaqkが大きい順にソートし、上位N件を抽出する(S222)。ここではN=3とし、検索尤度の上位3件(faq3, faq5,faq1)を候補として選ぶ。そして、図12のテーブル305のFAQ候補リストScが得られる。
次に、クエリモデル更新処理(S113)および検索モデル更新処理(S111)について説明する。上述したとおり、モデルの更新段階では、追加学習データの文書の単語列w1,・・・wMおよびカテゴリcに基づいて、lnP(wi|c)およびカテゴリ対数周辺確率lnP(c)の値を再計算し、カテゴリ対数周辺確率表TCpおよびカテゴリのもとでの単語対数事後確率表TWpの値を更新する。
ここで、クエリモデル131および検索モデル132の分類段階で用いたカテゴリの対数周辺確率表TCp(図12のテーブル202およびテーブル302)と、単語の対数事後確率表TWp(図12のテーブル203およびテーブル303)の各値は、あらかじめ、学習段階においてそれぞれカテゴリ別文書頻度表(図13のテーブル401およびテーブル501)と、カテゴリ別単語頻度表(図13のテーブル402およびテーブル502)から、式(6.2)および式(6.3)の計算式に基づいて算出されている。
そのため、カテゴリ別文書頻度表(テーブル401およびテーブル501)と、カテゴリ別単語頻度表(テーブル402およびテーブル502)の該当するセルの値を、追加する学習データのカウント分だけ加算し、更新した各頻度表からカテゴリのもとでの単語対数事後確率lnP(wi|c)およびカテゴリ対数周辺確率lnP(c)の値を再計算しすればよい。
<クエリモデル131の更新処理の詳細>
図4のステップS112で作成されたクエリモデル学習データ{QID=Q2,c=Q,G=10}(図6のテーブル146)がクエリモデル更新部123に入力された場合を例に、クエリモデル更新処理の詳細について説明する。学習の重みGは、該当の学習データをG個追加することを意味する。
クエリモデル更新処理では、図11(a)のサブルーチンより、モデル更新のサブルーチン(図8)を呼び出す(S501)。サブルーチンには学習データに加えて以下のデータを与える。カテゴリセット{Q, ¬Q}をCにセットし、テーブル401(図13)のTQCf、テーブル202(図12)のTQCp、テーブル402(図13)のTQWf、およびテーブル203(図12)のTQWpをそれぞれTCf、TCp、TWf、およびTWpにセットする。全語彙がテーブル402の見出し単語であるとし、単語の異なり数V=22とする。また、補正パラメータα=0.01とする。
先にlnP(Q)の値を求め、カテゴリ周辺確率表TCpを更新する。そのために、カテゴリ別文書頻度表TCf(テーブル401)のセル[Q,dc]の値をdQに読み込み、G=10を加算し、同セルにセットする(ステップS401)。更新後のTCfをテーブル403に示す。テーブル403から、式(6.3)に基づいて新たなカテゴリ周辺確率を求める(ステップS402から405)。まず、全文書数Dを求める(S402からS404)。Dを0で初期化し(S402)、テーブル403から、カテゴリ「Q」および「¬Q」の文書頻度TCf[Q]およびTCf[¬Q]を順にdQおよびd¬Qに読み込み、順にDに加算する(S403、S404)。
次に、式(6.3)にしたがって、得られたDとステップS401で求めたdQとを用いてlnP(Q)を算出し、TCp[Q]に書き込む(S405、テーブル404)。
次に全語彙について、カテゴリQのもとでの単語対数事後確率lnP(wi|Q)の値を求め、TWpを更新する。そのために、先にTWfを更新する。まず、図5のテーブル142を参照し、QID=Q2に対応するテキストU3を見つけ出し、単語列に分割する(S406)。このとき、分類段階で分割された結果(図7のS302、図12のテーブル201A)を参照すればよく、同じ分割処理を再実行する必要はない。したがって、図12のテーブル201Aを参照し、求める単語列W3={w1=“"年間”",w2="“走行距離”",w3="“保険料”",w4=“"違い”",w5=“出て”,w6=“ですか”}が得られる。
次に、単語列W3の各単語wiについて、追加でG=10回ずつ出現したとみなして、カテゴリ「Q」における出現頻度TWf[Q,wi]を更新する(S407、S408)。更新後のTWfをテーブル405に示す。
次に、更新された単語頻度表(テーブル405)から、式(6.2)に基づいて単語の対数事後確率表を再計算する(S409からS413)。最初に、式(6.2)の分母の第一項であるΣ(j=1〜V=22)freq(wj,Q)を求める。カテゴリQにおける単語の総出現数freq(Q)と置き、0で初期化する(S409)。カテゴリQのもとでの単語出現頻度をテーブル405のセル[Q,wi]を読み込み、freq(wi,Q)にセットし、freq(Q)を加算する。加算結果でfreq(Q)を更新する(S411)。これを全語彙w1,・・・,wV=22について繰り返し行うことにより(S410)、freq(Q)を求める。
続いて、全語彙w1=”教えて”,・・・,wV=22=”できる”についてlnP(wi|Q)の値を算出する。例えば、単語w1=”教えて”について、カテゴリQにおける出現頻度をテーブル405のセル[Q,”教えて”]から読み込み、freq(w1,Q)にセットする。freq(wi,Q)、ステップS410、S411で求めたfreq(Q)、V=22、およびα=0.01を式(6.2)に代入し、lnP(w1|Q)を算出し、TWp[Q,w1]に値を書き込む(S413、テーブル406のセル[Q,”教えて”])。これを残りの語彙w2,・・・,wVについても繰り返し行う(S412)。以上により、すべての語彙に関して、カテゴリc=QについてTWp[Q,wi]の値が更新される(テーブル406)。
このように本実施形態では、選択されたクエリ候補に対応する対話テキストデータのクエリ尤度が、選択されなかったクエリ候補のクエリ尤度よりも高く設定されるように(選択されなかったクエリ候補については、クエリ尤度が下がるように)、クエリモデル131が更新される。
<検索モデル132の更新処理の詳細>
上述した本実施形態の対話支援機能の処理フローにおいて、検索モデル132の更新処理について、{QID=Q1,c=faq5,G=10}(テーブル144)と、{QID=Q2,c=faq2,G=10}(テーブル149)をそれぞれ追加学習データを入力としたときの2通りのシナリオについて説明した。ここでは後者(テーブル149)のシナリオを例にとり、検索モデル132の更新処理の詳細を説明する。なお、更新処理自体は、前者についても同じである。
検索モデル132の更新処理(図11(b))では、モデル更新のサブルーチン(図8)を呼び出す(S502)。サブルーチンには、学習データに加えて以下のデータを与える。カテゴリセット{faqk;1≦k≦K}をCにセットし、テーブル501(図13)のTFcf、テーブル302(図12)のTFcp、テーブル502(図13)のTFwf、およびテーブル303(図12)のTFwpをそれぞれ、TCf、TCp、TWfおよびTWpにセットする。全語彙がテーブル502の見出し単語であるとし、単語の異なり数V=18とする。また、補正パラメータα=0.01とする。
先に、lnP(faq2)の値を求め、カテゴリ周辺確率表TCpを更新する。カテゴリ別文書頻度表TCf(テーブル501)のセル[faq2,dc]の値をdfaq2に読み込み、G=10を加算し、同セルにセットする(ステップ401)。更新後のTCfをテーブル503に示す。テーブル503から、式(6.3)に基づいて新たなカテゴリ対数周辺確率を求める(ステップ402から405)。まず、全文書数Dを求める(S402からS404)。Dを0で初期化し(S402)、テーブル503から、すべてのカテゴリfaqk(k=1,..,5)の文書頻度TCf[faqk]をDに加算する(S403、S404)。
次に式(6.3)にしたがって、得られたDとステップS401で求めたdfaq2とを用いてlnP(faq2)を算出し、TCp[faq2]に書き込む(S405、テーブル504)。
次に、全語彙についてカテゴリfaq2のもとでの単語対数事後確率lnP(wi|faq2)の値を求め、単語の対数事後確率表TWpを更新する。そのために、先にTWfを更新する。
まず、図5のテーブル142を参照し、学習データのQID=Q2に対応するテキストU3を見つけ出し、単語列に分割する(S406)。このとき、分類段階で分割された結果(図12のテーブル301)を参照すればよく、同じ分割処理を再実行する必要はない。したがって、図12のテーブル301を参照し、求める単語列WF3={w1=“年間”,w2=“走行距離”,w3=“保険料”,w4=“違い”,w5=“出て”}が得られる。
次に、単語列WF3の各単語wiについて、追加でG=10回ずつ出現したとみなして、カテゴリ“faq2”における出現頻度TWf[faq2, wi]を更新する(S407、S408)。更新後のTWfをテーブル505に示す。
次に、更新された単語頻度表(テーブル505)から、式(6.2)に基づいて単語の対数事後確率表を再計算する(S409からS413)。最初に、式(6.2)の分母の第一項であるΣ(j=1〜V=18)freq(wj,faq2)を求める。そのために、カテゴリQにおける単語の総出現数freq(faq2)と置き、0で初期化する(S409)。カテゴリfaq2のもとでの単語出現頻度をテーブル505のセル[faq2, wi]を読み込み、freq(wi,faq2)にセットし、freq(faq2)を加算する。加算結果でfreq(faq2)を更新する(S411)。これを全語彙w1..,wV=18について繰り返す(S410)ことにより、freq(faq2)を求める。
続いて、全語彙w1="契約内容”,..,wV=18=“買い物”について、 lnP(wi│faq2)の値を算出する。たとえば、単語w1="契約内容”について、カテゴリfaq2における出現頻度をテーブル505のセル[faq2,"契約内容"]から読み込み、freq(w1,faq2)にセットする。freq(wi,faq2)、ステップS410、ステップS411で求めたfreq(faq2)、V=18,およびα=0.01を式(6.2)に代入し、lnP(w1│faq2)を算出し、TWp[faq2, w1]に値を書き込む(S413、テーブル506のセル[faq2,“教えて”])。これを残りの語彙w2..,wVについても繰り返す(S412)。以上により、すべての語彙に関して、カテゴリc=faq2についてTWp[faq2,wi]の値が更新される(テーブル506)。
(第2実施形態)
図14から図22は、第2実施形態の情報検索システムを示す図である。上述の第1実施形態では、FAQ候補リスト内の各FAQに対して、オペレータがFAQ評価を行うことができように構成されているが、オペレータは、第2表示領域及び第3表示領域の各FAQ候補リストに含まれなかったFAQを表示させたい場合もある。
つまり、第1実施形態では、第3表示領域において選択されたクエリ候補を自動的に検索クエリとして用いて検索モデル132を用いた第2検索処理を行っていたが、本実施形態では、オペレータ装置300の第1表示領域において、オペレータが選択したクエリ候補に含まれるキーワードを、オペレータが編集できるように制御する。そして、オペレータによるキーワード編集結果のキーワードリストを新たな検索クエリとして、検索モデル132を用いた検索処理(第3検索処理)を、オペレータが自由に手動で行えるようにする。
図14は、本実施形態の情報検索システムのネットワーク構成図及び各装置の機能ブロック図であり、上述の第1実施形態に対して、情報検索装置100のクエリ生成部121は、キーワード抽出部121Aをさらに備えている。キーワード抽出部121Aは、オペレータ装置300において選択されたクエリ候補のテキストデータの中からクエリキーワードを抽出し、抽出結果をオペレータ装置300に提供する。
図15は、本実施形態の対話支援画面の一例を示す図である。対話支援画面は、上記第1実施形態同様に、表示領域S1からS3を含んでいる。そして、表示領域S3は、オペレータから受け付けた選択クエリ候補から抽出したクエリキーワードを表示するキーワード表示入力欄Sa1、キーワード表示入力欄Sa1を追加するための追加ボタンSa2、キーワード表示入力欄Sa1を削除するための削除ボタンSa4、検索ボタンSa3を含むクエリキーワード表示/検索領域を含むように構成されている。
本実施形態の表示領域S3は、上記第1実施形態における選択クエリ候補に基づく検索FAQ候補リストを表示する領域であると共に、クエリキーワードによる任意検索FAQ候補リスト(任意検索FAQ(aFA1〜aFAn),第3ナレッジ情報)が表示される領域である。そして、表示領域S3は、表示されたクエリキーワードをオペレータが任意に編集(提示されたクエリキーワードの削除・修正、変更、新たなキーワードの入力など)して、検索クエリを作成するクエリキーワード編集部として機能する。
なお、クエリキーワード表示/検索領域は、オペレータから選択クエリ候補を受け付けた場合のみ表示されるように構成することもできる。
また、クエリキーワード表示/検索領域のキーワード表示入力欄Sa1、追加ボタンSa2および削除ボタンSa4を、オペレータから選択クエリ候補を受け付けた場合のみ操作可能となるようにSa1からSa4の操作可能状態を切り替えるように構成することもできる。
これにより、オペレータによる任意検索が行われる際に、任意FAQ候補リストとクエリ候補との紐づけ情報が必ず得られるように構成することにより、クエリ候補と任意FAQ候補との組である学習データの収集が促進される効果が得られる。
なお、クエリキーワード表示/検索領域を含み、任意検索FAQ候補リストが表示される表示領域(第6表示領域S6)が、表示領域S3と分離して設けられるように構成してもよい。また、不図示のボタン選択操作に基づいて、第6表示領域S6と表示領域S3とが表示切替できるように構成することもできる。
図16は、本実施形態の情報検索装置100の処理フローを示す図である。図16では、上記第1実施形態の処理フロー(図4)に対し、クエリ候補Qselectが選択された後(S106のYES)、クエリキーワード抽出処理以降の処理(S601〜S605)が並行して実行される処理が追加されている。クエリキーワード抽出処理の詳細については後述する。
キーワード抽出部121Aは、クエリ候補QselectからクエリキーワードKWselectを抽出し(S601)、制御装置120は、抽出されたキーワードKWselectをオペレータ装置300に送信して、対話支援画面の表示領域S3に表示させる(S602)。制御装置120は、オペレータ装置300からの検索クエリキーワードKWeditの受信を待ち(S603)、検索クエリキーワードKWeditを受信すると(S603のYES)、検索部122に出力する。
検索部122は、検索クエリキーワードKWeditに基づいて、検索モデル132を用いて検索処理(第3検索処理)を行い、検索結果としてFAQ候補リスト(任意検索FAQ候補リスト)を生成する(S604)。制御装置120は、生成された任意検索FAQ候補リストをオペレータ装置300に送信して、対話支援画面の表示領域S3に表示させる(S605)。その後は、図16に示すように、ステップS109に進む。なお、図4と同様の処理については同符号を付して説明を省略する。
ここで、ステップS601のキーワード抽出処理について説明する。上記第1実施形態の説明と同様に、一連の対話テキストデータ(図5のテーブル141)が入力された場合を例にとって説明する。なお、説明の便宜上、FAQデータベースとして図17に示すFAQデータベース133Aを用いている。図17の例では、図5の例に対してFAQID=6が1件追加されている。
この場合、検索モデル132のカテゴリセットCは、faq1,..,faq6であるから、検索モデル132のカテゴリ別文書頻度表TFcfおよびカテゴリ別単語頻度表TFwfは、faq6の行が追加され、図18のテーブル601および602の値がセットされているとする。また、これらの表からカテゴリ対数周辺確率表TFcp(図18のテーブル603)およびカテゴリのもとでの単語対数事後確率表TFwp(図18のテーブル604)が算出済みであるとする。なお、クエリモデル131は、上記第1実施形態と変わらない。
図16のステップ102において、クエリ候補QC={Q1,Q2}が生成される(図5のテーブル142)。まず、クエリ候補Q1に対する第1検索処理(S103)において算出される検索尤度は図18のテーブル605のQ1列のとおりである。したがって、検索結果である推奨FAQ候補Sc={S1=(faq3,-13.2),S2=(faq5,-14.3),S3=(faq1,-16.9)}となり、faq6は、FAQ候補(検索結果)には含まれない。
一方、クエリ候補Q2がオペレータによって選択された場合の第2検索処理(S107)において算出される検索尤度はテーブル605のQ2列のとおりである。検索結果である検索FAQ候補Sc={S1=(faq1,-18.8),S2=(faq4,-19.4),S3=(faq2,-21.9)}となり、クエリ候補Q1に対する検索処理の場合と同様、faq6はFAQ候補には含まれない。
すなわち、オペレータがクエリ候補を選択しなくても選択しても、faq6はFAQ候補として表示されない。したがって、図16において、faq6をオペレータが検索するための手段として、S601からS605の処理が追加されている。
まず、ステップS601のクエリキーワード抽出処理について説明する。ここでは、テキストから単語分割された各単語について、キーワードらしさを表す尺度であるキーワード尤度の大きい順に上位N件をクエリキーワードとして抽出する。
ここで、キーワード尤度とは、カテゴリcのもとでの単語対数事後確率lnP(wi|c)をカテゴリcについて周辺化した対数確率lnP(wi)と定義する(第3モデル)。ただし、式(6.2)と同様に全文書の単語の異なり数Vおよび補正パラメータαによって補正する。これを下記の式(10)に示す。
図19は、キーワード抽出処理のフローチャートを示す図である。上述のように図16のステップS106においてクエリ候補Q2がオペレータによって選択されたとき(Qselect=Q2を例に説明する。
最初に、カテゴリ別単語頻度表TFwfから式(10)にしたがって、単語ごとのキーワード尤度を表す単語対数周辺確率表Twmp(テーブル604)を算出する(S611)。なお、式(10)の計算のパラメータは、第1実施形態の説明における検索処理と同じく、α=0.01,V=18である。
続いて、選択クエリ候補Q2のテキストを単語分割処理する(S611)。ここで、単語分割処理は、選択されたクエリ候補に基づく検索FAQの検索処理(S107)と、クエリモデル更新処理(S113)の中と共通であるため、その結果であるWF3={w1="年間”,w2=“走行距離”,w3=“保険料”,w4="違い”,w5=“出て”}(テーブル301のWF3行)を用いればよい。
次に、抽出キーワードリストKWi=2を初期化する(S613)。wj(j=1,…,5)について、Twmp[wj]の値をlnP(wj)に読み込み、(wj,lnP(wj))の組をKWiに追加する(S615)。すべてのwj(j=1,…,5)についてこれを繰り返す(S614)。最後に、KW2をlnP(wj)の値が大きい順にソートし、上位3件KW2={(“保険料”,-1.88),(“走行距離”,-2.38),(“年間”,-3.07)}(テーブル607のKW2)を出力する(S616、N=3)。
図16のメインルーチンに戻り、KWselect=KW2を表示領域S3に表示させる(S602)。例えば、図15の対話支援画面における一番左のキーワード表示入力欄Sa1(検索窓)から順に表示することができる。なお、オペレータは、表示領域S3のクエリキーワード表示/検索領域において、キーワード表示入力欄Sa1の横に設けられる「×」削除ボタンSa4を押すと、キーワードを削除することができる。また、キーワード表示入力欄Sa1は、テキストボックスであり、カーソルを置くと、自由に編集することができる(例えば、KW2を編集したり、KW2以外の任意のキーワードを入力したりすることができる)。また、「+」で表記された追加ボタンSa2を選択すると、キーワード表示入力欄Sa1を追加することができる。
オペレータは、クエリキーワードの編集を終えると、検索ボタンSa3をクリックすることにより、オペレータ装置300から情報検索装置100に、検索ボタンSa3のクリック時における編集状態の検索クエリキーワードKWEditが送信される。
ここでは、2つのシナリオを考察してみる。1つ目は、オペレータが編集操作を行わず、表示された3つのキーワードがそのまま検索クエリキーワードKWEditとして情報検索装置100に送信された場合である。KWEdit1={“保険料”,“走行距離”,“年間”}である。2つ目は、オペレータが“年間”を”週末”に変更し、KWEdit2={“保険料”,“走行距離”,”週末”}が情報検索装置100に送信された場合である(テーブル616)。
制御装置120は、通信制御装置110を介して検索クエリキーワードKWEditを受信する(S603)。制御装置120は、受信した検索クエリキーワードKWEditを検索部122に入力し、検索部122は、第3検索処理を実行する(S604)。
ここで、まず、上述の1つ目のシナリオでは、検索尤度表は、図18のテーブル606Aのように算出される。したがって、検索結果である任意検索FAQ候補Sc={S1=(faq1,-7.60),S2=(faq4,-8.96),S3=(faq2,-12.4)}となり、上述したキーワード抽出処理を経ないで行われる検索処理(第1検索処理及び第2検索処理)の検索結果と同様に、faq6は、任意検索FAQ候補には含まれない。
一方、2つ目のシナリオでは、検索尤度表は図18のテーブル606Bのように算出される。したがって、任意検索FAQ候補Sc={S1=(faq6,-8.57),S2=(faq4,-8.68),S3=(faq1,-12.9)}となり、表示領域S3には、任意検索FAQ候補リストの第1位にfaq6が表示される(S605)。
仮に、FAQ(Q:“通勤で使う場合と、週末買い物で使う場合とで、何か違いがありますか。”、A:“使用目的および走行距離で区分が設定されています...”)をオペレータが正の評価をした場合(S109)、検索モデル学習データ(テーブル608)が作成され(S110)、検索モデル更新処理(S111)が実行される。ここで、検索モデル学習データ作成処理S110は、選択クエリIDと評価されたFAQとの組である学習データに加えて、検索クエリキーワードKWEditから選択クエリキーワードKWselectに含まれるキーワードを除いた差集合(KWEdit-KWselect)のキーワードリストを学習データとしている。
すなわち、KWEdit2- KWselect={“週末”}と評価されたFAQの組である(テーブル608)。
なお、検索モデル更新処理(図24のS111および図11(b)のS502)について、キーワードリストを受け取れるように、あらかじめ入力の拡張を施す。図11(b)における検索モデル更新処理の追加学習データのQIDをQIDもしくはキーワードリストKW={kwi;1≦i≦|KW|}とする。サブルーチンである図8のモデル更新処理の入力データも同様に変更し、S302の分割処理の前において、入力タイプがQIDもしくはキーワードリストKWのいずれであるかの判定処理をS405とS406の間に新たに設ける。キーワードリストKWである場合は、M=|KW|とし、kw1,…kw|kw|をそのまま単語列w1,….wMに置き換え、単語分割処理はスキップして次の処理S406に進む。
なお、それ以外の処理は上記第1実施形態の検索モデル更新処理と同一であるため、説明は省略する。
さらに、学習データが複数の場合、学習データの数だけモデル更新(S502)を実行するように拡張を施す。
なお、検索モデル学習データ作成処理S110において、上記の2つの学習データを作成したが、いずれか一方の学習データのみを作成することにしてもよい。上記のキーワードリストの学習データについて、検索クエリキーワードKWEditそのものを追加学習データとするように構成することもできる。さらに、編集によって削除された選択クエリキーワード、すなわちKWselectからKWEdit2の要素を除いた差集合(ここでは{“年間”})について、負の学習重みを設定した学習データを作成してもよい。このように選択クエリ候補、KWselect、およびKWEdit2に基づいて様々な学習データの作成方法をとるように構成できる。
上記第1実施形態で述べた処理に従い、カテゴリ別文書頻度表TFcfおよびカテゴリ別単語頻度表TFwfが更新され(図20のテーブル609、610)、更新された表から検索モデル132であるカテゴリ対数周辺確率表TFcp(図20のテーブル611)およびカテゴリのもとでの単語対数事後確率表TFwp(図20のテーブル612)が算出される。
この2つ目のシナリオでは、検索モデル更新処理と並行して、Qselect=Q2に基づいて、第1実施形態の場合と同様に、図6のテーブル146のクエリ学習データが作成され(S112)、クエリモデル更新処理によってクエリモデル131であるカテゴリ対数周辺確率表TQcp(図6のテーブル404)およびカテゴリのもとでの単語対数事後確率表TQwp(図6のテーブル406)が算出される(S113)。
ここまでの処理によって、第1実施形態の処理では検索結果に含まれなかったfaq6が、新たに設けられた本実施形態の処理によって検索され、検索モデル132とクエリモデル131の両方が更新される。
次に、同じテキストU(図5のテーブル141)が入力された場合の処理について確認する。ステップS102で生成される第1位のクエリ候補Q1は、U3(“たとえば年間の走行距離によって保険料に違いが出てきたりするんですか。”)に変更されている(図5のテーブル147)。これを入力とし第1検索処理が実行される(S103)と、検索尤度(図20のテーブル613)が算出される。そして、推奨FAQ候補Sc={S1=(faq6,-12.1),S2=(faq1,-18.8),S3=(faq4,-19.4)}(テーブル614)が生成され、オペレータ装置300に送信され、表示領域S1に表示される。
このように、検索モデル132とクエリモデル131とが更新されることにより、前回の対話テキストデータとして入力されたときに表示されなかったfaq6が、今回は、オペレータがクエリ候補を選択したり、抽出キーワードを編集して検索せずとも、自動で表示されるように改善される。
また、テーブル615のとおり、更新されたTFwfから算出されるTwmpは、クエリ候補に含まれるキーワード(“年間”、“走行距離”、“保険料”、“違い”)および、編集によって追加されたキーワード(“週末”)のキーワード尤度が高くなるように更新され、次回以降により選択クエリキーワードとして抽出されやすくなる。
なお、検索処理(図10および図7)について、キーワードリストを受け取れるように、あらかじめ入力の拡張を施すことができる。図21は、本実施形態のクエリ候補の検索処理フローを示す図であり、図10に対応している。また、図22は、本実施形態の分類段階の処理フローを示す図であり、図7に対応している。図21において、図10における検索処理の入力データを、テキストUもしくはキーワードリストKW={kwi;1≦i≦|KW|}とする。図22において、サブルーチンである図7の分類処理の入力データも同様に変更し、S302の分割処理の前において、入力タイプがテキストUもしくはキーワードリストKWのいずれであるかの判定処理を新たに設ける(S621)。図22において、キーワードリストKWである場合は、M=|KW|とし、kw1,…kw|kw|をそのまま単語列w1,….wMに置き換え、単語分割処理はスキップして次の処理S303に進む(S622)。
(第3実施形態)
図23から図34は、第3実施形態の情報検索システムを示す図である。本実施形態は、上述の第1実施形態及び第2実施形態に対し、FAQデータベース133,133Aに登録されたFAQ情報の変更・更新機能を備えたものである。
上述した第1実施形態及び第2実施形態において、オペレータによるクエリ選択機能、FAQ評価機能および抽出キーワードによる検索機能の各履歴を利用することで、別のシステムでFAQを管理するよりも、簡便かつ効果的にFAQを追加、更新あるいは削除することができる。
図23は、本実施形態のネットワーク構成及び各装置の機能ブロックを示す図であり、本実施形態では、上記第2実施形態の情報検索システムに、FAQデータを追加、更新あるいは削除するためのFAQ管理を行うためのFAQ管理端末400が設けられている。
FAQ管理端末400は、制御装置410、表示装置420及び入力装置430を備えている。FAQ管理端末400は、例えば、コンタクトセンターを構成する管理端末として設けられているが、これに限らず、情報検索装置100で管理されるFAQ情報にアクセス可能な管理端末であればよい。
一方、情報検索装置100は、FAQ管理部125が設けられている。FAQ管理部125は、所定のFAQ管理画面を通じたFAQ情報の変更・更新を制御する。記憶装置130には、履歴DB134が格納されており、一連の対話テキストデータの入力履歴、クエリ候補生成履歴、キーワード検索履歴(キーワード検索ミスヒット履歴を含む)、FAQ評価履歴、FAQ改善要求履歴などの各種履歴情報を含む。
図24は、本実施形態の対話支援機能の処理フローを示す図である。図24は、図16に示した処理フローに対して、各種履歴を履歴DB134に記録する処理が追加されている。以下、新たに追加された処理を中心に説明する。なお、各種履歴の記録処理は、対応する各機能部がそれぞれ行ってもよく、また制御装置120が統括して行ってもよい。
図24において、まず、一連の対話テキストデータ群Uが入力された後(S101)、クエリ生成部121は、一連の対話テキストデータ群Uを一意に識別可能なID(INPUT ID;以下、IIDと表する)を付与し、これを変数iidに記録する(S701)。IIDは、履歴の個々のデータの識別に用いる。
次に、{IID,UID,テキスト}の組からなる入力履歴HINPUTに一連の対話テキストデータUをiidとともに記録する(S702)。たとえば、図5のテーブル141のU1,..,U4は、図25のテーブル701の{IID=I1,UID=U1},..,{IID=I4,UID=U4}の行のとおりに記録される。このように{IID, UID}の連結キーによって一連の対話テキストデータU群内の各対話テキストデータを一意に識別できる。
クエリ候補Qcを生成後(S102)、クエリ候補Qcをiidとともにクエリ候補生成履歴HQに登録する(S703)。たとえば、図5のテーブル142のクエリ候補Q1,Q2は、それぞれ図25のテーブル702の{IID=I1,QID=Q1},{IID=I1,QID=Q2}の行のとおりに記録される。
検索結果としてFAQ候補Scがない場合(S704のNO)、かつ検索テキストタイプが検索クエリキーワードの場合(S705の“検索クエリキーワード”)、キーワード検索ミスヒット履歴HMissに、{KWedit,IID,QID}の組が記録される(S706、図25のテーブル703)。{IID,QID}により、キーワード検索ミスヒットの検索とクエリ候補生成履歴HQ中のクエリとが紐づけられる。この紐づけ情報は、後述する検索ミスヒット履歴に基づくFAQ新規作成機能において、新規FAQとミスヒット検索のクエリとの組を学習データとして、検索モデル132を更新するために用いられる。
なお、S704の判定において、検索結果としてFAQ候補ScのすべてのFAQ候補の検索尤度が所定値を下回る場合に、FAQ候補Scがない場合(No)と判定することとしてもよい。
ここで、ステップS704の分岐に戻り、FAQ候補Scが存在する場合(S704のYES)、FAQ候補Scは、ステップS104においてオペレータ装置300の表示領域S1に表示され、オペレータからFAQ評価を待ち受ける(S109)。つまり、ステップS104,S108及びS605において、前段の各検索処理においてFAQ候補Scがヒットしなかった場合は、FAQ候補Scは、オペレータ装置300には送信されず、表示領域S1にFAQ候補Scは、表示されない。なお、本実施形態でのFAQ評価のタイプは、「有用度」(f21,f22)のFAQ評価に加えて、「改善要求」(f23)を含む。
オペレータからのFAQ評価を受け付けると(S109のYES)、FAQ評価タイプが「有用度」、「改善要求」のいずれであるかを判定し(S707)、「改善要求」であると判定された場合は、対象のFAQIDをFAQ改善要求履歴HImproveに記録する(S708、図25のテーブル704)。HImproveにデータが記録される度に、改善要求が出された回数がカウントされる(テーブル704のCOUNT列)。後述するFAQ修正機能において、FAQ管理者はカウント情報を参考にして修正対象のFAQを選択することができる。
ステップS707の分岐に戻り、FAQ評価タイプが「有用度」の場合は、{FAQID, IID, QID, FAQ評価値EVAL}の組をFAQ評価履歴HEvalに登録する(S709、図25のテーブル705)。
次に、FAQ管理について説明する。FAQの管理とは、FAQデータベース133に登録されたFAQ情報を、必要に応じて追加、削除、更新を行うことであり、FAQ管理者が行う。
本実施形態では、FAQ管理者がFAQ管理端末400を通じてFAQを管理することができる。図26から図28は、FAQ管理処理を示すフローチャートであり、それぞれ、FAQの新規登録処理、FAQの削除処理、FAQの修正/更新処理を表している。
<FAQ新規登録処理>
図26は、FAQの新規登録処理を示すフローチャートである。制御装置120(FAQ管理部125)は、ミスヒット履歴HMissのキーワードリストをカウントし、カウント数が大きい順にソートする。たとえば、HMissが図25のテーブル703の場合、キーワードリストは“免許証,色”はカウント数2、“車両保険,入院,期間”はカウント数1である。そしてソート結果である{キーワードリスト,カウント数}のリストを、制御情報とともにFAQ管理端末400に送信し、図29に示すFAQ検索ミスヒット表示領域に表示する(S720)。図29は、オペレータ装置300の表示装置330に表示されるFAQ検索ミスヒット画面の一例である。
続いて、制御装置120は、FAQ管理者がFAQ検索ミスヒット画面において、キーワードリストを選択するのを待ち受ける(S721)。キーワードリストKWSelectがFAQ管理者によって選択されると、FAQ管理端末400からKWSelectが情報検索装置100に送信され、制御装置120がこれを受信する(S721)。制御装置120は、FAQ管理端末400に図30に示すFAQ作成画面を表示させる(S722)。
FAQ作成画面には、新規FAQのテキストにミスヒットキーワードリストのすべてのキーワードが必ず含まれるようにするため、FAQ作成画面には入力チェック機能が備わっている。登録ボタンがクリックされた際に、入力チェック機能が実行され、もし新規FAQにミスヒットキーワードリストのキーワードのいずれか一つでも含まれていない場合は、エラーメッセージを表示して登録させないように制御する。
制御装置120は、FAQ管理者からの新規登録要求を待ち受ける(S723)。FAQ管理者がFAQ作成画面にて、「Q」,「A」を入力・編集し、登録ボタンをクリックすると、新規登録要求を受け付け、入力されたFAQ情報({Qテキスト,Aテキスト})を含む新規登録要求がFAQ管理端末400から情報検索装置100に送信される。情報検索装置100は、通信制御装置110を介して制御装置120が受け取る(S723)。続いて、制御装置120、受信した新規FAQ情報をFAQデータベース133に登録する。このとき、新規FAQ情報に対してFAQIDを付与し、FAQデータベース133に格納される。付与されたFAQIDを変数faqnewにセットする(S724)。
次に、新規FAQに関連するクエリを入力として当該FAQが検索されるようにするために、検索モデルを更新する。KWSelectと紐づくすべてのクエリIDと新規FAQとの組を学習データとして用いる。
まず、更新の準備として、検索モデル132の分類先カテゴリに新規FAQを追加するためにカテゴリセットCにfaqnewを追加し(S725)、検索モデル132のテーブルTFcf, TFwf,TFcp,TFwpにfaqnewの行を追加する(S726)。次に、ミスヒット履歴HMissからKWSelectの履歴を全て抽出し、変数H={hi ∈HMiss;1≦i≦M}に格納する(S727)。すべてのhiについて、S729からS731までの処理を繰り返す(S728)。まず、クエリID{IID,QID}を変数{iid,qid}に格納する。{クエリID{iid,qid},カテゴリfaqnew,重みG∈Z}を追加学習データとして、検索モデル132を更新する(S730)。更新後、履歴hiが次回以降の更新処理において重複して用いられないようにするために、HMissからhiを削除しておく(S731)。
FAQデータベース133に登録されたFAQに基づいて、検索モデル132を更新することで、新規FAQが検索される(検索モデル132を更新しない限り、新規FAQは検索されない)。そこで、引き続き、検索モデルの更新処理を行う。ここで、検索モデル132の学習データは、テキストとFAQIDの組であるが、どのテキストを対応付ければよいか、が課題となる。FAQ作成支援と学習データ収集とを別々に行う従来技術では、本課題を解決できなかった。すなわち、更新したFAQに対する学習データの紐付けができなかった。
しかしながら、本実施形態では、作成された新規FAQは、ユーザーの質問であるクエリテキストから抽出されたキーワードリストに基づいて作成されており、クエリテキストとFAQとの間には、質問−回答の関係性がある可能性が高いと考えられる。この関係性を学習データの対応付けに用いることができるように、上述のとおり、FAQ利用時の処理において、ミスヒット履歴HMissにクエリID{IID,QID}と、クエリ候補生成履歴HQにクエリIDに対応するクエリテキストを記録する処理を設けている。
なお、検索モデル学習データ作成処理S110において、上記第2実施形態で説明したように、クエリIDとFAQとの組以外にも選択クエリ候補、選択クエリキーワード、および検索クエリキーワードに基づいて様々な学習データの作成するように構成できる。たとえば、検索クエリキーワードから選択クエリキーワードに含まれるキーワードを除いた差集合のキーワードリストについて、FAQとの組を学習データに加えても良い。
<FAQ削除処理>
図27はFAQの削除処理を示すフローチャートである。制御装置120(FAQ管理部125)は、FAQ評価履歴HEvalからFAQID毎にFAQ評価値EVALを集計し、集計スコアの低い順にFAQをソートする(S740)。ソート処理の結果のFAQIDに対応する「Q」と「A」とをFAQデータベース133から参照し、{FAQID,Qテキスト,Aテキスト,集計スコア}のリストを作成する。情報検索装置100は、作成されたリストをFAQ管理端末400に送信し、図31に示すFAQ削除リスト表示画面を表示させる(S741)。
続いて、制御装置120は、FAQ管理者からのFAQ削除要求を待ち受ける(S742)。FAQ管理者がFAQ削除リスト表示画面に表示されたFAQの中から、削除したいFAQを選択すると、削除要求を受け付ける。選択されたFAQのFAQIDがFAQ管理端末400から情報検索装置100に送信される。制御装置120は、選択されたFAQIDを受け取り、これを変数faqdeleteに格納する(S742)。そして、制御装置120は、FAQデータベース133からfaqdeleteに該当するFAQ情報を削除する(S743)。
なお、FAQデータベース133から該当のFAQを削除しても、検索モデル132の分類カテゴリに削除したFAQのFAQIDが含まれている場合、FAQ検索結果とFAQデータベース133との間で不一致が生じる。このため、検索モデル132から削除すいたFAQに該当するFAQIDを削除する処理を続いて行う。
まず、検索モデル更新処理の前処理として、検索モデル132のカテゴリセットCからfaqdeleteを削除し(S744)、検索モデル132のテーブルTFcf,TFwf,TFcp,TFwpからカテゴリfaqdeleteの行を削除する(S745)。次に、検索モデル132を更新する(S746)。ここでの更新処理は、カテゴリ削除によって、全カテゴリにおける総文書数および総単語数が変化するため、TFcp,TFwpを再計算しなおすことが目的である。追加学習データがないため、TFcf,TFwfが変化しない点が、上記第2実施形態の検索処理(図16のS111,図8)と異なる。すなわち、図8のモデル更新のTFcf更新処理(S401)、TFwf更新処理(S406からS408)を除いた処理となる。なお、検索モデル更新処理を示すフローチャートを図32に示すが、各ステップの詳細な説明について上述の通りである。
<FAQ更新処理>
図28は、FAQの更新処理を示すフローチャートである。まず、制御装置120は、FAQ改善要求履歴HImproveのFAQIDをカウント数の大きい順にソートする。ソート結果のFAQIDに対応する「Q」と「A」とをFAQデータベース133から参照し、{FAQID,Qテキスト,Aテキスト,カウント数}のリストを作成し、FAQ管理端末400に送信し、図33に示すFAQ改善リスト画面に表示する(S760)。
続いて、制御装置120は、FAQ管理者による修正対象FAQの選択を待ち受ける(S761)。FAQ管理者がFAQ改善リスト画面に表示されたFAQの中から、修正を希望するFAQを選択すると、選択情報が情報検索装置100に送信される。制御装置120は、選択情報を受け取り、FAQ管理端末400に図34に示すFAQ修正画面を表示させるように制御する(S762)。FAQ修正画面には、選択されたFAQの「Q」テキストと「A」テキストがセットされており、FAQ管理者はこれを適宜編集できるようになっている。
制御装置120は、FAQ管理者によるFAQの更新要求を待ち受ける(S763)。FAQ管理者がFAQ修正画面にFAQを入力した後、更新ボタンをクリックすると、更新要求を受け付け、更新FAQ{FAQID,Qテキスト,Aテキスト}が更新要求情報ととともに情報検索装置100に送信される。制御装置120は、更新要求情報を受け取り(S763のYes)、FAQデータベース133の該当のFAQIDのFAQ情報を更新FAQ情報を用いて更新する(S764)。
FAQの内容が修正されると、オペレータによるFAQ検索結果に対する評価が良くなる可能性がある。しかしながら、FAQ修正前に、FAQがオペレータから負の評価を受けていた場合、検索モデル132は、より検索候補の下位になるように更新されてしまう。そうすると、修正されたFAQが検索結果としてオペレータに表示されないという問題が生じる。これを解決するために、FAQ評価履歴HEvalを用いて、検索モデル132を更新前の状態に復元する処理を次に行う。更新前の状態の復元には、学習重みをモデル更新時と正負反転させて、追加学習データとし、同じ更新処理を行えばよい。
HEval中のすべての履歴データhi(i=1,..,|HEval|)についてS766からS771の処理を繰り返す(S765)。まず、hiの{FAQID, IID,QID,EVAL}を読み込み、それぞれ変数faqid,iid,qidおよびevalに格納する(S766)。次いで、修正されるFAQIDのfaqreviseとfaqidが一致すれば(S767のYes)次の更新処理に進み、一致しなければhi+1の処理ループに進む(S767のNo)。次の更新処理では、まず、FAQ評価値EVALの正負を反転させ、学習重み変数Gに値を格納する(S768)。追加学習データは{クエリID{iid,qid},カテゴリfaqrevise,重みG∈Z}である。これを検索モデル更新部124に入力し、検索モデル132を更新する(S770)。更新後、履歴hiが次回以降の更新処理において重複して用いられないようにするために、HEvalからhiを削除しておく(S771)。
なお、本実施形態における検索モデル更新処理(検索モデル更新処理S730およびS770)は、上記第2実施形態の検索モデル更新処理に対して、クエリID{IID,QID}を受け取り、クエリ候補生成履歴HQからクエリテキストを探し出せるよう拡張を施している。具体的には、入力データのQIDが{IID,QID}に変わり、S406においてQIDに対応するテキストUをクエリ候補Qcを格納したテーブルから見つける処理を、クエリID{IID,QID}からクエリ候補生成履歴HQから見つける処理に置き換えられる。なお、それ以外の処理は上記第2実施形態の検索モデル更新処理と同一であるため、説明は省略する。
このように本実施形態は、クエリ候補及び検索クエリキーワードに基づくFAQ検索履歴(ミスヒット履歴)、FAQ評価履歴、及びFAQ改善要求履歴を記憶し、新規FAQ情報の登録処理、FAQデータベース133に格納されるFAQ情報の更新処理及び削除処理、を制御するFAQ管理部125を備えている。
そして、FAQ管理部125は、以下の機能を提供する。
(1)FAQ検索履歴に基づいて、検索結果に含まれるFAQ情報の数が所定値よりも少ない(0でもよい)クエリ候補又はクエリ候補に含まれる1つ又は複数のキーワード(第2実施形態の検索クエリキーワード)を含む第1リストを生成してFAQ管理端末400に送信し、FAQ管理端末400において第1リストに含まれるクエリ候補又はクエリ候補に含まれる1つ又は複数のキーワードを含む質問と回答の組からなる新規FAQ情報を作成可能に制御し、FAQ管理端末400から新規FAQ情報を受信して登録する登録処理を行う。
このとき、検索モデル更新部124は、第1リストに含まれるクエリ候補と新規FAQ情報との組み合わせを追加学習データとして、FAQの数が所定値よりも少ないクエリ候補と同一又は類似のクエリ候補に対して、検索尤度がより高くなるように、検索モデル132を更新する。
(2)FAQ評価履歴に基づいてFAQ評価値が所定値よりも低いFAQ情報を含む第2リストを生成してFAQ管理端末400に送信し、FAQ管理端末400での第2リストに対する選択情報に基づいて該当するFAQ情報をFAQデータベースから削除する削除処理を行う。
このとき、検索モデル更新部124は、削除対象のFAQ情報を除外した検索モデル132の更新処理を行う。
(3)FAQ改善要求履歴に基づいて、FAQ改善要求が所定値よりも多いFAQ情報を含む第3リストを生成してFAQ管理端末400に送信し、FAQ管理端末400での第3リストに含まれるFAQ情報の質問又は回答に対する編集結果を受信して該当のFAQ情報を更新する更新処理を行う。
このとき、検索モデル更新部124は、更新対象のFAQ情報とクエリ候補との間の類似性に基づく検索尤度が、更新前のFAQ情報よりも高くなるように(更新前の検索尤度を引き継がないようにリセットするように)、検索モデル132を更新する。
以上、実施形態について説明したが、本発明は、スーパーバイザーなどの管理者と連動した機能を提供することもできる。例えば、コンタクトセンターは、複数のオペレータ装置300以外に、管理者装置を含むように構成することができる。このとき、情報検索装置100の制御装置120は、各オペレータ装置300に表示される対話支援画面を管理者装置から閲覧できるように制御することができる。具体的には、制御装置120は、管理者装置に対して各オペレータ装置300の対話支援画面をリモート接続可能に制御し、指定したオペレータ装置300(オペレータID)別に稼働中のオペレータ装置300の表示装置330に表示された内容をモニタリングすることができる。制御装置120は、チャット機能などで、管理者とオペレータとが対話するテキスト対話機能を提供するように構成してもよい。
また、管理者装置自体にも、本実施形態の対話支援機能を適用することができる。つまり、管理者も第2検索機能及びFAQ評価機能を実行して、クエリモデル131及び検索モデル132の各更新を促すことができる。なお、管理者は、上述の第3実施形態で説明したFAQ管理機能を使用して、FAQデータベース133に格納されているFAQの更新(編集・修正)、新規作成、削除などを、適宜行うことができる。
管理者が管理者装置において、表示部に表示されたオペレータの一覧からオペレータを選択すると、制御部120は、履歴DB134に蓄えられたオペレータ別の履歴情報を参照して、各履歴を管理者装置に表示することにより、管理者は対話内容、検索キーワード、検索結果のFAQ、および評価をモニタリングすることができる(例えば、図35参照)。
また、管理者装置自体にも、本実施形態の対話支援機能を適用することができる。オペレータとカスタマーとの対話内容を確認しながら、管理者がオペレータの検索結果のFAQを評価しなおすことができる。また、管理者も第2検索機能及びFAQ評価機能を実行して、クエリモデル131及び検索モデル132の各更新を促すことができる。
実施形態の例では、一つのテキスト情報を一つのクエリ候補として生成していた。1つ以上のテキスト情報の組み合わせを一つのクエリ候補としてもよい。一つのテキスト情報の中の部分テキストを単位として、1つ以上の部分テキストの組み合わせを一つのクエリ候補としてもよい。
発話テキストを順次受付けるようにし、時刻情報、テキストの意味内容、以前に入力された発話テキストの文脈情報などを用いて、同一の話題に関する発話テキストを一連の発話テキスト情報としてまとめ上げる処理を、前段に追加するように構成しても良い。
クエリモデルは、かならずしも質問であるか否かの2カテゴリに分類するモデルでなくともよい。たとえば、テキストの意図タイプ(質問、依頼、要求、など)に分類するモデルであってもよい。FAQがグループ(新規契約、解約、支払、契約内容変更、など)に分かれている場合、テキストをグループ別に分類するモデルであってもよい。
さらに、クエリモデルと検索モデルは1つのモデルであってもよい。たとえば、({¬Q,faq_1,..,faq_M}に分類するモデルであってもよい。
さらに、実施形態ではクエリ分類とのFAQ分類の2つの分類処理とを続けて行うものあったが、3つ以上の分類処理の階層型に拡張することもできる。たとえば、3階層のツリー型で分類処理を構成してもよい。第1のモデルがテキストを質問か否かに分類するモデルで、第2段のモデルが質問テキストをFAQのグループに分類するモデルで、第3段のモデルはFAQのグループ分あり、それぞれのモデルはグループのテキストを各FAQに分類する。処理はそれぞれの階層のモデルと対応する3段階からなる。第1段の処理において、入力テキストを第1のモデルによって分類する。第2段の処理では、第1段の処理で入力テキストが質問と分類された場合、該入力テキストを第2のモデルによってFAQのグループに分類する。最後に第3段の処理では、入力テキストをFAQグループに対応する第3段のモデルに振り分け、該第3段のモデルによって入力テキストを各FAQに分類する。追加の学習データを収集するために、第1段および第2段には、それぞれクエリ候補およびFAQグループ候補の中から、最良の候補をユーザーが選択する選択手段を設ける。第3段には、FAQ候補の中から、最良の候補を選択する選択手段もしくはそれぞれの候補を評価する評価手段を設ける。
第1段の処理において選択されたクエリと第2段の処理において選択されたFAQグループとの組を学習データとして、第2のモデルを更新する。第3段の処理では該選択クエリと選択(評価)されたFAQとの組を学習データとして、第3のモデルを更新する。
このように構成することによって、ユーザーによるそれぞれのモデルの学習データ作成が簡便に行うことができる。同様にして、4階層以上のツリー型にも拡張可能である。
また、上記各実施形態の各種画面は、情報検索装置100から画面情報をその都度提供してオペレータ装置300に表示させたり、オペレータ装置300に予め画面情報を記憶しておき、情報検索装置100から受信する制御情報に基づいて表示装置330に表示させるように制御してもよい。
また、本発明の各機能は、プログラムによって実現可能であり、各機能を実現するために予め用意されたコンピュータプログラムが補助記憶装置に格納され、CPU等の制御部が補助記憶装置に格納されたプログラムを主記憶装置に読み出し、主記憶装置に読み出された該プログラムを制御部が実行して、コンピュータに本発明の各部の機能を動作させることができる。他方、本発明の各機能は、各々個別の装置で構成することもでき、複数の装置を直接に又はネットワークを介して接続して本装置(システム)を構成することもできる。
また、上記プログラムは、コンピュータ読取可能な記録媒体に記録された状態で、コンピュータに提供することも可能である。コンピュータ読取可能な記録媒体としては、CD−ROM等の光ディスク、DVD−ROM等の相変化型光ディスク、MO(Magnet Optical)やMD(Mini Disk)などの光磁気ディスク、フロッピー(登録商標)ディスクやリムーバブルハードディスクなどの磁気ディスク、コンパクトフラッシュ(登録商標)、スマートメディア、SDメモリカード、メモリスティック等のメモリカードが挙げられる。また、本発明の目的のために特別に設計されて構成された集積回路(ICチップ等)等のハードウェア装置も記録媒体として含まれる。
なお、本発明の実施形態を説明したが、当該実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。