(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024003862
(43)【公開日】2024-01-16
(54)【発明の名称】チャットシステムおよびチャットプログラム
(51)【国際特許分類】
G06F 16/90 20190101AFI20240109BHJP
【FI】
G06F16/90 100
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022103172
(22)【出願日】2022-06-28
(71)【出願人】
【識別番号】515211544
【氏名又は名称】株式会社サイシード
(74)【代理人】
【識別番号】100105784
【弁理士】
【氏名又は名称】橘 和之
(72)【発明者】
【氏名】安藤 光太郎
(72)【発明者】
【氏名】鈴木 航介
(72)【発明者】
【氏名】西田 圭嗣
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA01
5B175HA02
(57)【要約】
【課題】ユーザとチャットボットとの間で自然な対話を任意に継続できるようにする。
【解決手段】一のユーザからチャットボットにメッセージが送信されたときに、一のユーザに関する自ユーザ対話履歴と、複数のユーザに関するログ対話履歴との履歴類似度をもとに、ログ対話履歴のうち最新のメッセージを除く部分において自ユーザ対話履歴に類似するログ対話履歴を検索する類似対話履歴検索部13と、ログ対話履歴に含まれる最新のメッセージを用いて返信メッセージを生成するメッセージ生成部14とを備え、常に更新されるログデータの中から、一のユーザに関する最新の自ユーザ対話履歴に類似するログ対話履歴を検索し、当該ログ対話履歴の最新のメッセージを一のユーザとの対話に使うようにすることで、自ユーザ対話履歴の文脈を踏まえた直近の発言に対して適切なメッセージが応答される可能性が高くなるようにする。
【選択図】
図2
【特許請求の範囲】
【請求項1】
ユーザからチャットボットに送信されたメッセージおよび上記チャットボットから上記ユーザに送信されたメッセージについて、上記メッセージの文章、送信時刻および上記メッセージが上記ユーザから送信されたものか上記チャットボットから送信されたものかを識別するための識別子を含めて対話履歴のログデータとしてログデータ記憶部に記憶させるログ記録部と、
一のユーザから上記チャットボットに上記メッセージが送信されたときに、当該メッセージが送信されたところまでの上記一のユーザに関する対話履歴である自ユーザ対話履歴と、上記ログデータ記憶部に上記ログデータとして記憶されている複数のユーザに関する対話履歴であるログ対話履歴との履歴類似度を算出し、上記ログ対話履歴のうち最新のメッセージを除く部分において上記自ユーザ対話履歴に類似する上記ログ対話履歴を検索する類似対話履歴検索部と、
上記類似対話履歴検索部により検索された上記ログ対話履歴に含まれる上記最新のメッセージを用いて、上記一のユーザに対するメッセージを生成するメッセージ生成部と、
上記メッセージ生成部により生成されたメッセージを上記一のユーザに送信するメッセージ送信部とを備え、
上記類似対話履歴検索部は、少なくとも対話履歴に含まれる各メッセージの文章に関する文章類似度を算出することによって上記履歴類似度を算出するようになされ、上記識別子が同じメッセージどうしでは類似度が小さくなるように設計された関数に従って上記文章類似度を算出する
ことを特徴とするチャットシステム。
【請求項2】
上記類似対話履歴検索部は、上記文章類似度に加え、上記送信時刻に関する時間類似度を算出し、上記文章類似度および上記時間類似度を用いて上記履歴類似度を算出することを特徴とする請求項1に記載のチャットシステム。
【請求項3】
上記類似対話履歴検索部は、上記送信時刻を、所定の基準時刻に対する時間差を表す相対時間に変換し、上記相対時間について上記時間類似度を算出することを特徴とする請求項2に記載のチャットシステム。
【請求項4】
現在時刻を仮想的な送信時刻に設定した固定内容の仮想メッセージを生成し、上記ユーザの最新の対話履歴に追加する仮想メッセージ追加部を更に備え、
上記ログ記録部は、上記仮想メッセージを含めて上記対話履歴のログデータをログデータ記憶部に記憶させ、
上記類似対話履歴検索部は、上記仮想メッセージが含まれる上記自ユーザ対話履歴と、上記仮想メッセージが含まれる上記ログ対話履歴とを用いて、上記相対時間が大きくなるほど値が小さくなるように決定される忘却係数を用いた関数に従って上記履歴類似度を算出する
ことを特徴とする請求項3に記載のチャットシステム。
【請求項5】
上記類似対話履歴検索部は、上記自ユーザ対話履歴に含まれる各メッセージの送信時刻に可変のオフセット時間を加えて上記履歴類似度をそれぞれ算出することにより、上記履歴類似度が極大となるオフセット時間を探索し、
上記メッセージ送信部は、上記メッセージ生成部により生成されたメッセージを、探索された上記オフセット時間の経過後に上記一のユーザに送信する
ことを特徴とする請求項1~4の何れか1項に記載のチャットシステム。
【請求項6】
上記ログ記録部は、上記メッセージが送受信されるごとに、当該メッセージを上記対話履歴に追加した新たなログデータを既存のログデータとは別に生成し、上記既存のログデータとは別に上記新たなログデータを追加して記憶させることを特徴とする請求項1~4の何れか1項に記載のチャットシステム。
【請求項7】
上記メッセージ生成部は、上記最新のメッセージの内容を抽象化し、より抽象度の高い抽象化メッセージを上記メッセージとして生成することを特徴とする請求項1~4の何れか1項に記載のチャットシステム。
【請求項8】
ユーザからチャットボットに送信されたメッセージおよび上記チャットボットから上記ユーザに送信されたメッセージについて、上記メッセージの文章、送信時刻および上記メッセージが上記ユーザから送信されたものか上記チャットボットから送信されたものかを識別するための識別子を含めて対話履歴のログデータとしてログデータ記憶部に記憶させるログ記録手段、
一のユーザから上記チャットボットに上記メッセージが送信されたときに、当該メッセージが送信されたところまでの上記一のユーザに関する対話履歴である自ユーザ対話履歴と、上記ログデータ記憶部に上記ログデータとして記憶されている複数のユーザに関する対話履歴であるログ対話履歴との履歴類似度を算出し、上記ログ対話履歴のうち最新のメッセージを除く部分において上記自ユーザ対話履歴に類似する上記ログ対話履歴を検索する類似対話履歴検索手段、
上記類似対話履歴検索手段により検索された上記ログ対話履歴に含まれる上記最新のメッセージを用いて、上記一のユーザに対するメッセージを生成するメッセージ生成手段、および
上記メッセージ生成手段により生成された上記メッセージを上記一のユーザに送信するメッセージ送信手段
としてコンピュータを機能させ、
上記類似対話履歴検索手段は、少なくとも対話履歴に含まれる各メッセージの文章に関する文章類似度を算出することによって上記履歴類似度を算出するようになされ、上記識別子が同じメッセージどうしでは類似度が小さくなるように設計された関数に従って上記文章類似度を算出する
ことを特徴とするチャットプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、チャットシステムおよびチャットプログラムに関し、特に、人間との間で対話を自動的に行うシステムに用いて好適なものである。
【背景技術】
【0002】
近年、テキストや音声を通じて人間との間で対話を自動的に行うプログラム、いわゆるチャットボットが注目され、広く活用されつつある。多くのチャットボットでは、ユーザから入力された質問や発言の内容を解析し、それに対する回答を生成して返信する。チャットボットには、あらかじめ決められたシナリオによって選択式で対話をするタイプや、対話ログを利用して文脈に近しい応答をするタイプなどがある(例えば、特許文献1参照)。
【0003】
特許文献1に記載の回答支援システムでは、質問者と回答者との間でやり取りされたメッセージの中から、後で再利用できる問合せ事例として、質問者の質問の情報と、この質問に対する回答者の問い返しの情報と、この問い返し対する質問者の返答の情報と、回答者の回答の情報とを、自動的に抽出し、これらを互いに関連付けた形で記憶手段に記憶しておき、このように蓄積された過去の問合せ事例から、新しい質問に類似する事例を検索して利用することにより、適切な問い返しや回答を得る。
【0004】
具体的には、質問に対して最終的な回答を得るまでに質問者と回答者との間でやり取りされたメッセージの履歴(質問、問い返し、返答、回答の各メッセージの文章の組)を対話ログとして記憶しておいて、新規の質問が入力されたときに、その質問またはそれに関する対話ログに含まれる少なくとも1つのメッセージに類似した対話ログを検索して提示する。しかしながら、この特許文献1において提示されるのは、質問から回答までの対話ログの全体であり、当該対話ログをユーザに提示した時点で対話処理は終了するため、人間とチャットボットとの間で対話を継続していくシステムに適用するには不向きである。
【0005】
また、コンピュータによる回答と人間による回答とを併用したシステムも知られている(例えば、特許文献2参照)。特許文献2には、質問内容とデータベース内の回答群との適合度に基づいて、データベースまたは回答者の何れかより回答をすることが開示されている。すなわち、この特許文献2に記載の質問応答システムでは、ユーザから送信された質問を回答用のデータベースに転送することの適否(質問に対するその回答群の適合度)を質問内容に基づいて判定し、その判定結果に応じてデータベースまたは回答者インタフェースの何れかに質問を転送し、転送した質問に対する回答をデータベースまたは回答者インタフェースから受け取って返送する。回答者インタフェースから返送される回答は、質問を見た回答者によってキーボードやマウスで入力された回答メッセージである。
【0006】
特許文献2に記載のシステムにおいて、ユーザから送信された質問を回答用のデータベースに転送することが不適であると判定された場合、その質問に対する回答の分野を担当する回答者が在席している回答者インタフェースのうち相対的に負荷が低い回答者インタフェースに質問メッセージが転送される。その後、回答者インタフェースから回答メッセージが取得されると、質問者に回答メッセージが転送される。
【0007】
特許文献2に記載のシステムによれば、質問メッセージがデータベースと回答者インタフェースに適宜に転送されるので、システムは高い対応能力を有するとされる。しかしながら、回答者を分野ごとに複数人ずつあらかじめ用意しておく必要があり、実際の運用上はこの点で困難性がある。すなわち、多数の質問者から送信されるあらゆる種類の質問に対して適切な回答者から回答を行うことは実質的に難しいという問題があった。
【0008】
また、特許文献2に記載のシステムでは、質問メッセージに対する回答の分野を担当する回答者が不在の場合や、質問者に提供されるサービスのレベルが回答者による回答サービスが受けられるレベルに満たない場合には、質問メッセージはデータベースに転送される。この場合、ユーザから送信された質問の転送先として不適であると判定されたデータベースから回答メッセージが返送されることになるので、必ずしも適切な回答メッセージが得られるとは限らないという問題もあった。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2006-92473号公報
【特許文献2】特開2001-216324号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明は、以上のような問題を解決するために成されたものであり、ユーザとチャットボットとの間で対話を行うシステムにおいて、ユーザからのあらゆる内容の発言に対して適切な内容のメッセージをチャットボットから応答することで、自然な対話を任意に継続することができるようにすることを目的とする。
【課題を解決するための手段】
【0011】
上記した課題を解決するために、本発明では、一のユーザからチャットボットにメッセージが送信されたときに、当該メッセージが送信されたところまでの一のユーザに関する対話履歴である自ユーザ対話履歴と、ログデータ記憶部にログデータとして記憶されている複数のユーザに関する対話履歴であるログ対話履歴との履歴類似度を算出することにより、ログ対話履歴のうち最新のメッセージを除く部分において自ユーザ対話履歴に類似するログ対話履歴を検索し、検索されたログ対話履歴に含まれる最新のメッセージを用いて、一のユーザに対するメッセージを生成して送信するようにしている。
【発明の効果】
【0012】
上記のように構成した本発明によれば、個々のユーザはチャットボットとの間で1対1の対話をするが、実際にはログデータとして記憶されている複数のユーザの対話履歴との間で対話が発生する仕組みが提供される。一のユーザとの対話に使われるログ対話履歴は、常に更新されるログデータの中から、一のユーザの最新のメッセージを含む自ユーザ対話履歴に類似するものが検索されるため、自ユーザ対話履歴の文脈を踏まえた直近の発言に対して適切なメッセージが応答される可能性が高くなる。これにより、分野ごとに専用の回答者を複数人ずつあらかじめ用意しておかなくても、ユーザからのあらゆる内容の発言に対してチャットボットから適切な内容のメッセージをユーザに対して提供することができ、ユーザはチャットボットとの間で自然な対話を任意に継続することができる。
【図面の簡単な説明】
【0013】
【
図1】本実施形態によるチャットシステムの全体構成例を示す図である。
【
図2】本実施形態によるサーバ装置の機能構成例を示すブロック図である。
【
図3】本実施形態においてログデータ記憶部に記憶されるログデータの一例およびユーザ端末に表示されるタイムラインの一例を示す図である。
【
図4】応用例1に係るサーバ装置の機能構成例を示すブロック図である。
【
図5】応用例1においてログデータ記憶部に記憶されるログデータの一例およびユーザ端末に表示されるタイムラインの一例を示す図である。
【
図6】時間類似度が極大となるオフセット時間の探索処理を説明するための模式図である。
【発明を実施するための形態】
【0014】
以下、本発明の一実施形態を図面に基づいて説明する。
図1は、本実施形態によるチャットシステムの全体構成例を示す図である。
図1に示すように、本実施形態のチャットシステムは、サーバ装置100と、複数のユーザ端末200A,200B,200C,・・・(以下、特に区別しないときはユーザ端末200という)とを備えて構成される。サーバ装置100とユーザ端末200との間は、インターネットまたは携帯電話網等の通信ネットワーク500を介して接続される。
【0015】
複数のユーザ端末200A,200B,200C,・・・は、それぞれユーザA,B,C,・・・により使用されるものであり、例えばパーソナルコンピュータ、スマートフォン、タブレット端末などにより構成される。サーバ装置100は、いわゆるチャットボットとして機能するものであり、ユーザ端末200を使用するユーザとの間で対話を自動的に行う。以下では、サーバ装置100をチャットボット100と表記することもある。
【0016】
本実施形態では、一のユーザ端末200からサーバ装置100に対して何らかの発言に関するメッセージが送信されると、サーバ装置100は、当該メッセージが送信されたところまでの一のユーザに関する対話履歴(以下、自ユーザ対話履歴という)と、ログデータとして記憶されている複数のユーザに関する対話履歴(以下、ログ対話履歴という)のうち最新のメッセージを除く部分との履歴類似度を算出することにより、自ユーザ対話履歴に類似するログ対話履歴を検索し、検索されたログ対話履歴に含まれる最新のメッセージを用いて、一のユーザに対するメッセージを生成して送信する。
【0017】
図2は、本実施形態によるサーバ装置100の機能構成例を示すブロック図である。
図2に示すように、本実施形態のサーバ装置100は、機能構成として、メッセージ受信部11、ログ記録部12、類似対話履歴検索部13、メッセージ生成部14およびメッセージ送信部15を備えている。また、本実施形態のサーバ装置100は、記憶媒体として、ログデータ記憶部10を備えている。
【0018】
上記機能ブロック11~15は、ハードウェア、DSP(Digital Signal Processor)、ソフトウェアの何れによっても構成することが可能である。例えばソフトウェアによって構成する場合、上記機能ブロック11~15は、実際にはコンピュータのCPU、RAM、ROMなどを備えて構成され、RAMやROM、ハードディスクまたは半導体メモリ等の記憶媒体に記憶されたチャットプログラムが動作することによって実現される。
【0019】
メッセージ受信部11は、ユーザが使用するユーザ端末200からメッセージを受け付ける。メッセージの文章は任意であり、文章の内容は質問であってもよいし、質問に対する回答であってもよいし、質問でも回答でもない自由発言であってもよい。
【0020】
ログ記録部12は、ユーザ端末200からチャットボット100に送信されたメッセージおよびチャットボット100からユーザ端末200に送信されたメッセージについて、メッセージの文章、送信時刻およびメッセージがユーザから送信されたものかチャットボットから送信されたものかを識別するための識別子を含めて対話履歴のログデータとしてログデータ記憶部10に記憶させる。すなわち、ログ記録部12は、メッセージ受信部11がユーザ端末200からメッセージを受信すると、その受信したメッセージを、メッセージの文章、送信時刻(=受信時刻)および識別子を含む対話履歴のログデータとしてログデータ記憶部10に記憶させる。また、ログ記録部12は、後述するようにメッセージ送信部15がユーザ端末200に対してメッセージを送信すると、その送信したメッセージを、メッセージの文章、送信時刻および識別子を含む対話履歴のログデータとしてログデータ記憶部10に記憶させる。
【0021】
ここで、ログ記録部12は、メッセージ受信部11およびメッセージ送信部15によりメッセージが送受信されるごとに、当該メッセージを対話履歴に追加した新たなログデータを既存のログデータとは別に生成し、既存のログデータとは別に新たなログデータを追加してログデータ記憶部10に記憶させる。これにより、ログデータ記憶部10には、メッセージが送受信されるごとに追加された複数のログデータが記憶されることになる。
【0022】
図3は、ログデータ記憶部10に記憶されるログデータの一例を、ユーザ端末200に表示されるタイムラインの一例と共に示す図である。なお、ここでは説明の便宜上、複数のユーザA,B,・・・ごとに分けてタイムラインとログデータとを図示しているが、このように複数のユーザA,B,・・・ごとに分けた状態でログデータをログデータ記憶部10に記憶させることを要するものではない。すなわち、どのログデータがどのユーザに関するものであるかを識別可能な状態で記憶することを必須とするものではない。
【0023】
図3において、ユーザAは、チャットボット100からの発言を起点として4回のメッセージをやり取りしており、4回分のメッセージの文章と送信時刻と識別子とがユーザ端末200Aの表示画面にタイムラインとして表示されている。表示画面の左側から吹き出しが出ている2つのメッセージがチャットボット100からのメッセージであり、表示画面の右側から吹き出しが出ている2つのメッセージがユーザAからのメッセージである。
【0024】
この4回のメッセージのやり取りに関して、4つの対話履歴DH
A1~DH
A4のログデータがログデータ記憶部10に記憶される。すなわち、チャットボット100からユーザ端末200Aに1回目のメッセージが送信された時点で、その1回目のメッセージm
1を対話履歴DH
A1とするログデータがログデータ記憶部10に記憶される。ここで、メッセージm
1は、発言文章s
1、送信時刻t
1および識別子r
1を含む情報であり、これを状態ベクトルとしてm
1=(s
1,t
1,r
1)と定義する。
図3の例において、s
1=「はじめまして!サイコって呼んでね!」、t
1=「16:02」、r
1=「チャットボット」である。
【0025】
次に、ユーザ端末200Aからチャットボット100に2回目のメッセージが送信された時点で、1回目から2回目までのメッセージm
1,m
2を対話履歴DH
A2とする2つ目のログデータが、1つ目のメッセージm
1を対話履歴DH
A1とする1つ目のログデータとは別に追加してログデータ記憶部10に記憶される。ここで、メッセージm
2は、発言文章s
2、送信時刻t
2および識別子r
2を含む情報であり、これを状態ベクトルとしてm
2=(s
2,t
2,r
2)と定義する。
図3の例において、s
2=「サイコちゃんは日曜はどこに行くの」、t
1=「16:03」、r
2=「ユーザ(自分)」である。
【0026】
以下同様にして、チャットボット100からユーザ端末200Aに3回目のメッセージが送信された時点で、1回目から3回目までのメッセージm1~m3を対話履歴DHA3とするログデータがログデータ記憶部10に追加して記憶され、ユーザ端末200Aからチャットボット100に4回目のメッセージが送信された時点で、1回目から4回目までのメッセージm1~m4を対話履歴DHA4とするログデータがログデータ記憶部10に追加して記憶される。これが最新の状態であり、タイムラインでは、ユーザAがチャットボット100からの返信待ちの状態となっている。なお、以下の説明において、対話履歴をx=(m1,m2,・・・,mn)のように定義する(nはメッセージの数)。
【0027】
ユーザBは、ユーザBからの発言を起点としてチャットボット100との間で5回のメッセージをやり取りしており、5回分のメッセージの文章と送信時刻と識別子とがユーザ端末200Bの表示画面にタイムラインとして表示され、チャットボット100からの返信待ちの状態となっている。この5回のメッセージのやり取りに関して、5つの対話履歴DHB1~DHB5のログデータがログデータ記憶部10に記憶される。
【0028】
図3ではユーザA,Bに関するログデータのみを示しているが、実際には、これ以外のユーザに関するログデータもログデータ記憶部10に記憶されている。
【0029】
類似対話履歴検索部13は、一のユーザ端末200からチャットボット100にメッセージが送信されたとき(すなわち、メッセージ受信部11がメッセージを受信したとき)に、当該メッセージが送信されたところまでの一のユーザに関する対話履歴である自ユーザ対話履歴と、ログデータ記憶部10にログデータとして記憶されている複数のユーザに関する対話履歴であるログ対話履歴のうち最新のメッセージを除く部分との履歴類似度を算出し、自ユーザ対話履歴に類似するログ対話履歴を検索する。
【0030】
この類似対話履歴検索部13の処理内容を、
図3を用いて説明する。なお、ここでは説明の便宜上、ログデータ記憶部10に記憶されているログデータがユーザA,Bの2人のものだけであると仮定する。例えば、一のユーザがユーザAの場合、ユーザ端末200Aからチャットボット100にメッセージm
4が送信されたとき、類似対話履歴検索部13は、当該メッセージm
4が送信されたところまでのユーザAに関する自ユーザ対話履歴DH
A4(つまり、ユーザAの最新の対話履歴x
A=(m
1,m
2,m
3,m
4))と、ログデータ記憶部10にログデータとして記憶されている複数のユーザA,Bに関するログ対話履歴DH
A1~DH
A4,DH
B1~DH
B5のうち最新のメッセージを除く部分との履歴類似度を算出する。
【0031】
最新のメッセージを除く部分とは、例えばユーザAのログ対話履歴DHA4の場合は最新のメッセージm4を除いた部分の対話履歴xA=(m1,m2,m3)であり、ユーザAのログ対話履歴DHA3の場合は最新のメッセージm3を除いた部分の対話履歴xA=(m1,m2)である。
【0032】
また、ユーザBのログ対話履歴DHB5の場合は最新のメッセージm5を除いた部分の対話履歴xB=(m1,m2,m3,m4)であり、ユーザBのログ対話履歴DHB4の場合は最新のメッセージm4を除いた部分の対話履歴xB=(m1,m2,m3)である。
【0033】
なお、ここではユーザAを一のユーザとして、当該ユーザAの自ユーザ対話履歴xA=(m1,m2,m3,m4)に類似するログ対話履歴を検索する例を説明したが、ユーザBが一のユーザの立場となることもある。この場合、類似対話履歴検索部13は、ログデータ記憶部10にログデータとして記憶されているユーザA,Bのログ対話履歴DHA1~DHA4,DHB1~DHB5に含まれるメッセージのうち最新のメッセージを除く部分を用いて、ユーザBの自ユーザ対話履歴xB=(m1,m2,m3,m4,m5)との履歴類似度を算出する。
【0034】
メッセージ生成部14は、類似対話履歴検索部13により検索されたログ対話履歴に含まれる最新のメッセージを用いて、一のユーザに対するメッセージを生成する。例えば、
図3の例において、一のユーザAからチャットボット100にメッセージm
4が送信されたとき、当該メッセージm
4を含む最新の自ユーザ対話履歴DH
A4に最も類似するログ対話履歴として、ユーザBのログ対話履歴DH
B5が類似対話履歴検索部13により検索されたとする。この場合、メッセージ生成部14は、ログ対話履歴DH
B5に含まれる最新のメッセージm
5を用いて、ユーザAに対するメッセージを生成する。
【0035】
例えば、メッセージ生成部14は、最新のメッセージの内容を抽象化し、より抽象度の高い抽象化メッセージを生成する。
図3の例の場合、ログ対話履歴DH
B5に含まれる最新のメッセージm
5の文章「そうですよ!あと、三越の屋上でクレーンゲームするのも好きです!」を抽象化することにより、「そうですよ!デパートの屋上で遊ぶのも好きです!」といった文章から成る抽象化メッセージを生成する。
【0036】
メッセージを抽象化するアルゴリズムは、例えば以下のようにすることが可能である。すなわち、最新のメッセージの文章を形態素解析して複数の単語を抽出し、抽出された単語の品詞を特定する。そして、抽出した複数の単語のうち、時間や時期を表す単語、場所や位置を表す単語およびそれらに接続される助詞を省略する。また、副詞、連体詞、接続詞、感動詞、指示詞も省略する。名詞、動詞、形容詞、判定詞については、可能な場合は下位概念の単語を上位概念の単語に置き換える。固有名詞については、省略または一般名詞への置き換えを行う。以上のような処理を行うに当たって、単語との品詞との関係および上位概念と下位概念との関係を示した辞書データを使用する。
【0037】
例えば、最新のメッセージの文章が「今日の渋谷でのランチは何がお勧めですか?」であった場合、時間や時期を表す単語「今日」と、場所や位置を表す単語「渋谷」と、これらに接続される助詞「の」および「で」を省略する。また、「ランチ」という下位概念の単語を「食事」という上位概念の単語に置き換える。これにより、「今日の渋谷でのランチは何がお勧めですか?」のメッセージをもとに、「食事は何がお勧めですか?」のような抽象化メッセージを生成する。
【0038】
なお、ここで説明したアルゴリズムは一例に過ぎない。例えば、以下のようにしてもよい。すなわち、抽象化メッセージを複数のキーワードと関連付けたデータセットをあらかじめ大量に用意する。そして、類似対話履歴検索部13により検索されたログ対話履歴に含まれる最新のメッセージの文章から形態素解析により抽出される複数の単語がそれぞれ何れかのキーワードに該当するか否かを判定し、該当するキーワードが最も多く関連付けられている抽象化メッセージを採用する。この方法では、個人情報などのセンシティブな情報が抽象化メッセージの中に紛れ込むというリスクを原理的に排除することができる。
【0039】
メッセージ送信部15は、メッセージ生成部14により生成されたメッセージを一のユーザのユーザ端末200に送信する。
図3の例の場合、メッセージ送信部15は、上述した「そうですよ!デパートの屋上で遊ぶのも好きです!」といった文章から成る抽象化メッセージをユーザAのユーザ端末200Aに送信する。すると、ユーザAのタイムラインが更新され、そのタイムラインに対応する対話履歴DH
A5のログデータ(図示せず)がログデータ記憶部10に追加して記憶される。
【0040】
以上のように、本実施形態では、一のユーザからチャットボット100に対して発言が行われたとき、当該一のユーザに対するチャットボット100からの返答は、自ユーザ対話履歴に類似するログ対話履歴を検索することで実現される。対話履歴はユーザとチャットボット100とのやり取りの履歴であるので、現在の自ユーザ対話履歴に近いログ対話履歴を見つけることができれば、見つけたログ対話履歴に含まれる最新のメッセージから、一のユーザの発言に対する応答として相応しい内容を引き出し、チャットボット100からの応答メッセージとして使うことができる。
【0041】
また、本実施形態では、類似対話履歴検索部13により検索されたログ対話履歴に含まれる最新のメッセージをそのままユーザ端末200に送信するのではなく、より抽象度の高い抽象化メッセージに置換して送信することにより、ログ対話履歴の文脈は利用しつつも個別具体性を排除した内容のメッセージを一のユーザに送信することができ、より自然な対話を実現することができる。
【0042】
以下に、類似対話履歴検索部13による対話履歴の類似判定の具体的内容を説明する。類似対話履歴検索部13は、例えばユーザAの対話履歴xA=(m1,m2,・・・,mN)と、ユーザBの対話履歴xB=(m1,m2,・・・,mM)との履歴類似度Lを、所定の関数fを用いて算出する。これをL=f(xA,xB)のように表記する。
【0043】
ここで、ユーザAの対話履歴xAに含まれるi番目のメッセージmi(i=1,2,・・・,N)と、ユーザBの対話履歴xBに含まれるj番目のメッセージmj(j=1,2,・・・,M)とのメッセージ類似度をgij=g(mi,mj)と表記するものとすると、類似対話履歴検索部13は履歴類似度Lを以下の(式1)に示す関数に従って算出する。
L=2/(N+M)Σmax{gi1,gi2,・・・,giM}(i=1,2,・・・,N) ・・・(式1)
すなわち、類似対話履歴検索部13は、ユーザAの対話履歴xAに含まれるメッセージmiのそれぞれごとに、ユーザBの対話履歴xBに含まれるM個のメッセージmjとのメッセージ類似度gijを1つずつ算出してその中から最大値gi-maxを取得し、メッセージmiごとに取得したN個の最大値gi-maxの合計値を、最小値が0で最大値が1となるように正規化したものを履歴類似度Lとする。
【0044】
本実施形態において、類似対話履歴検索部13は、メッセージの文章に関する文章類似度hij=h(si,ri,sj,rj)と、送信時刻に関する時間類似度wij=w(ti,tj)とをそれぞれ算出し、文章類似度hijおよび時間類似度wijを用いて履歴類似度Lを算出する。例えば、次の(式2)に示す関数によりメッセージ類似度gijを算出し、当該メッセージ類似度gijをもとに(式1)により履歴類似度Lを算出する。
gij=hijwij (0≦hij≦1、0≦wij≦1) ・・・(式2)
【0045】
文章類似度hijは、2つの文章の類似度を算出する公知技術を用いて算出することが可能である。公知技術の一例として、レーベンシュタイン距離(編集距離)を用いることが可能である。レーベンシュタイン距離は、1文字の挿入、削除または置換によって、一方の文字列をもう一方の文字列に変形するのに必要な手順の最小回数として定義される。公知技術の別の方法として、TF-IDF(Term Frequency Inverse Document Frequency)などの所定のロジックに基づいて2つの文章をそれぞれベクトル化し、ベクトルどうしの類似度(例えば、コサイン距離)を算出するようにしてもよい。
【0046】
ここで、類似対話履歴検索部13は、自ユーザ対話履歴に含まれるメッセージmiと、ログ対話履歴に含まれるメッセージmjのうち識別子rjが自ユーザ対話履歴に含まれるメッセージmiに対応する識別子riとは異なるメッセージmjとを用いて、文章類似度hijを算出する。例えば、ri≠rjの場合は文章類似度hijを上述したレーベンシュタイン距離等により算出し、ri=rjの場合は文章類似度hijを“0”とする。
【0047】
このようにすると、例えば
図3に示した例において、ユーザAのタイムラインに含まれる4つのメッセージと、ユーザBのログ対話履歴DH
B5に含まれるメッセージm
1,m
2,m
3,m
4との間で、識別子r
i,r
jが互いに異なるメッセージ間では文章類似度h
ijが算出されるが、識別子r
i,r
jが互いに同じメッセージ間では文章類似度h
ijは最小の“0”とされる。
【0048】
図3の例では、ユーザAのタイムラインに含まれる「はじめまして!サイコって呼んでね!」というメッセージはチャットボット100から送信され、ユーザBのログ対話履歴DH
B5に含まれるメッセージm
1=「はじめましてよろしく」はユーザBから送信されている。この場合、r
i≠r
jのため文章類似度h
ijが算出される。仮に、ユーザBのログ対話履歴DH
B5に含まれる「はじめましてよろしく」のメッセージがチャットボット100から送信されたものであった場合、r
i=r
jのため、ユーザAのタイムラインに含まれる「はじめまして!サイコって呼んでね!」との文章類似度h
ijは“0”となる。
【0049】
このようにすれば、メッセージの文章が単に似ているかどうかという観点だけでなく、そのメッセージがチャットボット100またはユーザのどちらから発言されたものであるかという観点も加えて文章類似度hijを算出することができる。これにより、一のユーザから送信された最新のメッセージに対して、オウム返しとなるような内容のメッセージがチャットボット100から返信されることを回避することが可能である。
【0050】
時間類似度wijは、メッセージ間の送信時刻の時間的な近さを表す尺度として計算する。例えば、次に示す(式3)により時間類似度wijを算出する。
wij=exp{-a|(ti-base-ti)-(tj-base-tj)|} ・・・(式3)
ここで、aはa>0を満たす任意の定数である。ti-base,tj-baseは、絶対時刻で表現された送信時刻ti,tjを相対時間に変換するための基準時刻である。すなわち、類似対話履歴検索部13は、送信時刻ti,tjを、所定の基準時刻ti-base,tj-baseに対する時間差を表す相対時間に変換し、当該相対時間について時間類似度wijを算出する。なお、(式3)は一例であり、これに限定されるものではない。
【0051】
基準時刻t
i-base,t
j-baseは任意に設定可能である。例えば、時間類似度w
ijの算出対象としている対話履歴の中で最新の送信時刻を基準時刻t
i-base,t
j-baseとすることが可能である。例えば
図3において、メッセージ受信部11がユーザAからメッセージm
4を受信したことに応じて、当該メッセージm
4を含む最新の自ユーザ対話履歴DH
A4と、ユーザBのログ対話履歴DH
B5のうち最新のメッセージm
5を除く部分との間でメッセージm
i,m
jの時間類似度w
ijを算出する場合、自ユーザ対話履歴DH
A4に含まれるメッセージm
1,m
2,m
3,m
4については最新の送信時刻t
4を基準時刻t
i-baseとして各送信時刻t
1,t
2,t
3,t
4との時間差を算出し、ログ対話履歴DH
B5に含まれるメッセージm
1,m
2,m
3,m
4についてはメッセージm
5を除いた中で最新の送信時刻t
4を基準時刻t
j-baseとして各送信時刻t
1,t
2,t
3,t
4との時間差を算出する。
【0052】
このように、本実施形態では、メッセージ類似度gijを算出する際に、文章類似度hijだけでなく時間類似度wijを算出しているので、メッセージの内容がどの程度類似しているかという観点に加え、メッセージの発言時間がどの程度類似しているかという観点からも類似度を算出することができる。これにより、自ユーザ対話履歴に類似するログ対話履歴を、メッセージの内容および発言時間の観点からより精細に評価して検索することができる。
【0053】
<応用例1>
類似対話履歴検索部13は、履歴類似度Lを算出する際に、対話履歴自体の古さや、メッセージのやり取りが直近で活発に行われているか否かを考慮してメッセージ類似度gijを算出するようにしてもよい。例えば、類似対話履歴検索部13は、相対時間が大きくなるほど値が小さくなるように決定される忘却係数を用いた関数に従ってメッセージ類似度gijを算出し、そのように求めたメッセージ類似度gijを用いて(式1)により履歴類似度Lを算出するようにしてもよい。
【0054】
上記(式3)で示した通り、メッセージ類似度gijは、送信時刻と基準時刻との相対的な時間差を考慮して決定される。これに加えて、メッセージが送受信された絶対時刻による忘却係数を乗算してメッセージ類似度gijを算出する。これは、人間の記憶が古い過去のことより、直近のことのほうが思い出しやすい傾向を持つことへのアナロジーである。忘却係数を用いてメッセージ類似度gijを算出することにより、文章自体が類似していても、絶対時刻が古いメッセージについて算出されるメッセージ類似度gijは大きな値とならないようにすることができる。
【0055】
例えば、自ユーザ対話履歴に含まれるi番目のメッセージに対する忘却係数kiおよびログ対話履歴に含まれるj番目のメッセージに対する忘却係数kjを、関数kを用いて次の(式4)のように定義する。
ki=k(ti)=exp{-b|ti-base-ti|}
kj=k(tj)=exp{-b|tj-base-tj|} ・・・(式4)
ここで、bはb>0を満たす任意の定数である。なお、(式4)は一例であり、これに限定されるものではない。
【0056】
類似対話履歴検索部13は、上述した(式2)に代えて、忘却係数ki,kjをの平均値を乗算した次の(式5)に従ってメッセージ類似度gijを算出する。
gij=hijwij(ki+kj)/2 ・・・(式5)
なお、この(式5)を用いる場合において、忘却効果を無視する場合はki=kj=1とすればよく、この場合(式5)は(式2)に一致する。
【0057】
また、対話履歴の中には、直近でメッセージが活発に交わされる(活性な)ものもあれば、長期間にわたってメッセージが全く交わされない(非活性な)ものも存在する。応用例1では、メッセージが長期間にわたって交わされていない状態を履歴類似度Lに反映させるために、以下に説明する仮想メッセージを用いる。
【0058】
図4は、応用例1に係るサーバ装置100’の機能構成例を示すブロック図である。この
図4において、
図2に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。
図4に示すように、応用例1に係るサーバ装置100’は、仮想メッセージ追加部16を更に備えている。
【0059】
仮想メッセージ追加部16は、現在時刻を仮想的な送信時刻に設定した固定内容の仮想メッセージを生成し、ユーザの最新の対話履歴(つまり、タイムライン)に追加する。固定内容の仮想メッセージの一例は、文章を含まないNULLメッセージである。ログ記録部12は、仮想メッセージ追加部16により生成される仮想メッセージを含めて対話履歴のログデータをログデータ記憶部10に記憶させる。仮想メッセージの仮想的な送信時刻には現在時刻が設定されるので、ログ記録部12は、ログデータに含まれる仮想メッセージの仮想的な送信時刻を逐次更新する。
【0060】
これにより、ユーザのタイムラインに含まれる仮想メッセージは、常に最新の送信時刻に存在する状態となり、タイムラインの対話履歴はx
*=(m
1,m
2,・・・,m
n,m
*)のように表される。ここで、m
*=(s
*,t
*,t
*)であり、s
*はNULL文、t
*は現在時刻である。また、r
*は識別子であり、メッセージ送信元が必ずユーザ(自分)を指し示す。この場合におけるタイムラインおよびログデータ記憶部10に記憶されるログデータの一例を
図5に示す。
図3と比較すれば分かる通り、ユーザA,Bのタイムラインの末尾には必ずNULL文の仮想メッセージが存在し、対話履歴DH
A1~DH
A4,DH
B1~DH
B5のログデータの末尾には必ず仮想メッセージm
*が記録されている。
【0061】
図5の例において、現在時刻は16:06である。よって、忘却係数と仮想メッセージとを加味した場合、最新のメッセージm
4の送信時刻t
4が16:05であるユーザAの対話履歴は、現在時刻16:06の時点で活性なものである一方、最新のメッセージm
5の送信時刻t
5が13:22であるユーザBの対話履歴は、現在時刻16:06の時点で非活性なものであると言える。
【0062】
類似対話履歴検索部13は、仮想メッセージm*が含まれる自ユーザ対話履歴と、仮想メッセージm*が含まれるログ対話履歴のうち最新のメッセージ(仮想メッセージではないもの)を除く部分とを用いて履歴類似度Lを算出する。このようにすると、あらゆる対話履歴どうしの比較において、仮想メッセージm*どうしのメッセージ類似度gijは“1”となる。よって、タイムラインが非活性な対話履歴の場合、仮想メッセージm*以外のメッセージの類似度は、仮想メッセージm*の類似度に対して無視できるほど小さくなるため、結果的に非活性な対話履歴どうしでマッチングする。一方、タイムラインが活性な対話履歴の場合、仮想メッセージm*の類似度による影響が希薄化するため、仮想メッセージm*以外のメッセージの類似度でマッチングすることができる。
【0063】
なお、ここでは固定内容の仮想メッセージの一例として、文章を含まないNULLメッセージを用いる例を示したが、これに限定されない。要するに、あらゆる対話履歴どうしの比較において、仮想メッセージm*どうしのメッセージ類似度gijが“1”となればよく、常に同じ内容の文章m*を含むメッセージであれば、仮想メッセージとして用いることが可能である。
【0064】
<応用例2>
メッセージ生成部14により生成されたメッセージをメッセージ送信部15がユーザ端末200に送信する際に、類似対話履歴検索部13により検出されたログ対話履歴における最新のメッセージの送信時刻とその直前のメッセージの送信時刻との時間間隔と同様の時間間隔を空けてメッセージを送信するようにしてもよい。
【0065】
この場合、類似対話履歴検索部13は、自ユーザ対話履歴x=(m1,m2,・・・,mN)に含まれる各メッセージの送信時刻t1,t2,・・・,tNに可変のオフセット時間δtv(v=1,2,・・・)を加えて時間類似度wijをそれぞれ算出することにより、時間類似度wijが極大となるオフセット時間δtv-maxを探索する。ここで、自ユーザ対話履歴に含まれる各メッセージの送信時刻に可変のオフセット時間δtvを加えても、基準時刻ti-baseは変えず、オフセット時間δtvを加えていない場合の基準時刻ti-baseをそのまま固定値として用いる。また、ログ対話履歴については、最新のメッセージを除いた中で最新の送信時刻ではなく、最新のメッセージの送信時刻を基準時刻tj-baseとして用いる。
【0066】
図6は、このオフセット時間δt
v-maxの探索処理を説明するための模式図である。ここでは、
図6(a)~(d)に示すようにオフセット時間δt
vを加味したユーザαの自ユーザ対話履歴(タイムライン)x
αと、
図6(e)のように対話履歴DHのログデータとして記憶されているユーザβのログ対話履歴x
βとの比較により、時間類似度w
ijが極大となるオフセット時間δt
v-maxを探索する例を示している。
【0067】
図6(a)は、オフセット時間δt
vを加えていないユーザαの自ユーザ対話履歴x
α=(m
i1,m
i2,m
i3)であり、各メッセージの送信時刻はt
i1,t
i2,t
i3である。また、
図6(e)は、ユーザβのログ対話履歴x
β=(m
j1,m
j2,m
j3,m
j4)であり、各メッセージの送信時刻はt
j1,t
j2,t
j3,t
j4である。この場合、類似対話履歴検索部13は、自ユーザ対話履歴x
αにおける各メッセージの送信時刻t
i1,t
i2,t
i3の基準時刻t
i-base(=t
i3)に対する相対時間と、ログ対話履歴x
βにおける各メッセージ(最新のメッセージm
j4を除く)の送信時刻t
j1,t
j2,t
j3の基準時刻t
j-base(=t
j4)に対する相対時間とを用いて、上述の(式3)に基づき時間類似度w
ijを算出する。
【0068】
また、
図6(b)は、オフセット時間δt
v(v=1)を加えたユーザαの自ユーザ対話履歴x
αであり、各メッセージの送信時刻はt
i1+δt
1,t
i2+δt
1,t
i3+δt
1である。この場合、類似対話履歴検索部13は、自ユーザ対話履歴x
αにおける各メッセージの送信時刻t
i1+δt
1,t
i2+δt
1,t
i3+δt
1の基準時刻t
i-baseに対する相対時間と、ログ対話履歴x
βにおける各メッセージの送信時刻t
j1,t
j2,t
j3の基準時刻t
j-baseに対する相対時間とを用いて、上述の(式3)に基づき時間類似度w
ijを算出する。
【0069】
また、
図6(c)は、オフセット時間δt
v(v=2)を加えたユーザαの自ユーザ対話履歴x
αであり、各メッセージの送信時刻はt
i1+δt
2,t
i2+δt
2,t
i3+δt
2である(δt
2=2δt
1)。この場合、類似対話履歴検索部13は、自ユーザ対話履歴x
αにおける各メッセージの送信時刻t
i1+δt
2,t
i2+δt
2,t
i3+δt
2の基準時刻t
i-baseに対する相対時間と、ログ対話履歴x
βにおける各メッセージの送信時刻t
j1,t
j2,t
j3の基準時刻t
j-baseに対する相対時間とを用いて、上述の(式3)に基づき時間類似度w
ijを算出する。
【0070】
また、
図6(d)は、オフセット時間δt
v(v=3)を加えたユーザαの自ユーザ対話履歴x
αであり、各メッセージの送信時刻はt
i1+δt
3,t
i2+δt
3,t
i3+δt
3である(δt
3=3δt
1)。この場合、類似対話履歴検索部13は、自ユーザ対話履歴x
αにおける各メッセージの送信時刻t
i1+δt
3,t
i2+δt
3,t
i3+δt
3の基準時刻t
i-baseに対する相対時間と、ログ対話履歴x
βにおける各メッセージの送信時刻t
j1,t
j2,t
j3の基準時刻t
j-baseに対する相対時間とを用いて、上述の(式3)に基づき時間類似度w
ijを算出する。
【0071】
図6に示す例の場合、
図6(c)のようにオフセット時間δt
2を加えたときに算出される時間類似度w
ijが極大となる。よって、類似対話履歴検索部13は、自ユーザ対話履歴x
αに含まれる各メッセージの送信時刻に可変のオフセット時間δt
vを加えて算出した時間類似度w
ijが極大となるオフセット時間δt
v-maxがδt
2であると判定する。そして、類似対話履歴検索部13は、ユーザβのログ対話履歴x
βについて(式2)に基づいて算出されたメッセージ類似度g
ijが、それ以外のログ対話履歴について算出されたメッセージ類似度g
ijより大きいと判定した場合に、当該ユーザβのログ対話履歴x
βをユーザαの自ユーザ対話履歴x
αに類似するものとして検出する。
【0072】
この場合、メッセージ生成部14は、類似対話履歴検索部13により検索されたユーザβのログ対話履歴xβに含まれる最新のメッセージmj4を用いて、ユーザαに対するメッセージを生成する。そして、メッセージ送信部15は、メッセージ生成部14により生成されたメッセージを、直ちに送信するのではなく、類似対話履歴検索部13により探索されたオフセット時間δt2の経過後にユーザαに送信する。
【0073】
この場合のオフセット時間δt2は、ログ対話履歴xβにおける最新のメッセージmj4の送信時刻tj4とその直前のメッセージmj3の送信時刻tj3との時間間隔Δに近いものとなっている。よって、類似と判定されたログ対話履歴xjにおける最新のメッセージmj4から適切な内容のメッセージを生成することができるだけでなく、そのメッセージmj4の送信タイミングに合わせた適切なタイミングでメッセージを送信することができる。
【0074】
なお、上述した応用例1および応用例2は、何れか1つを適用するようにしてもよいし、両方を組み合わせて適用するようにしてもよい。
【0075】
上記実施形態では、文章類似度hijおよび時間類似度wijの両方を算出する例について説明したが、本発明はこれに限定されない。例えば、文章類似度hijのみを算出するようにしてもよい。
【0076】
また、上記実施形態では、絶対時刻と基準時刻との時間差である相対時間に基づいて時間類似度wijを算出する例について説明したが、本発明はこれに限定されない。例えば、絶対時刻に基づいて時間類似度wijを算出するようにしてもよい。
【0077】
また、上記実施形態では、自ユーザ対話履歴と、ログ対話履歴のうち最新のメッセージを除く部分との履歴類似度を算出する例について説明したが、本発明はこれに限定されない。例えば、自ユーザ対話履歴とログ対話履歴(最新のメッセージを含む)との履歴類似度を算出するが、ログ対話履歴の最新のメッセージとの間では類似度が小さくなるように設計された関数に従って履歴類似度を算出することにより、ログ対話履歴のうち最新のメッセージを実質的に除く部分との履歴類似度が算出されるようにしてもよい。その他、自ユーザ対話履歴とログ対話履歴との履歴類似度を算出した結果、ログ対話履歴のうち最新のメッセージを除く部分において自ユーザ対話履歴に類似するログ対話履歴が検索される方法であれば、何れも適用可能である。
【0078】
また、上記実施形態では、自ユーザ対話履歴に含まれるメッセージmiの識別子riと、ログ対話履歴に含まれるメッセージmjの識別子rjとが異なる場合(ri≠rjの場合)は文章類似度hijをレーベンシュタイン距離等により算出し、ri=rjの場合は文章類似度hijを“0”とする例について説明したが、本発明はこれに限定されない。例えば、ri=rjの場合でも文章類似度を算出するが、ri=rjの場合は類似度が小さくなるように設計された関数に従って文章類似度を算出するようにしてもよい。
【0079】
また、上記実施形態では、一のユーザのログ対話履歴も含めて複数のユーザに関するログ対話履歴の中から、一のユーザに関する自ユーザ対話履歴に類似するログ対話履歴を検索する例について説明したが、本発明はこれに限定されない。例えば、一のユーザとは異なる他のユーザのログ対話履歴の中から、一のユーザに関する自ユーザ対話履歴に類似するログ対話履歴を検索するようにしてもよい。
【0080】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0081】
10 ログデータ記憶部
11 メッセージ受信部
12 ログ記録部
13 類似対話履歴検索部
14 メッセージ生成部
15 メッセージ送信部
16 仮想メッセージ追加部