(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024063530
(43)【公開日】2024-05-13
(54)【発明の名称】メッセージ処理方法、情報処理装置、およびプログラム
(51)【国際特許分類】
G06Q 30/0601 20230101AFI20240502BHJP
G06Q 50/12 20120101ALI20240502BHJP
【FI】
G06Q30/06 300
G06Q50/12
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022171568
(22)【出願日】2022-10-26
(71)【出願人】
【識別番号】507134068
【氏名又は名称】サウンドハウンド,インコーポレイテッド
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】松田 友希
(72)【発明者】
【氏名】土田 圭介
【テーマコード(参考)】
5L030
5L049
5L050
【Fターム(参考)】
5L030BB47
5L049BB47
5L049CC24
5L050CC24
(57)【要約】
【課題】ユーザから入力されたメッセージがより正確に解釈されるための技術を提供する。
【解決手段】情報処理サーバ300は、スレッド001のユーザから第1のメッセージを取得し、コンテキストデータベース500に、第1のメッセージのコンテキストをスレッド001に関連付けて格納し、スレッド001のユーザから第2のメッセージを取得し、そして、第2のメッセージを第1のメッセージのコンテキストとともに会話サーバ400へ提供する。
【選択図】
図8
【特許請求の範囲】
【請求項1】
情報処理装置が、第1のエンティティから第1のメッセージを取得するステップと、
前記情報処理装置が、記憶装置に、前記第1のエンティティに関連付けて、前記第1のメッセージのコンテキストを格納するステップと、
前記情報処理装置が、前記第1のエンティティから第2のメッセージを取得するステップと、
前記情報処理装置が、メッセージを解釈する解釈サーバに、前記第2のメッセージを前記第1のメッセージのコンテキストとともに提供するステップと、を備える、メッセージ処理方法。
【請求項2】
前記情報処理装置が、前記第2のメッセージの取得に応じて、前記記憶装置において前記第1のエンティティに関連付けられたコンテキストを検索するステップをさらに備える、請求項1に記載のメッセージ処理方法。
【請求項3】
前記情報処理装置が、前記解釈サーバに、前記第1のメッセージを提供するステップと、
前記情報処理装置が、前記解釈サーバから、前記第1のメッセージのコンテキストを取得するステップと、をさらに備える、請求項1または請求項2に記載のメッセージ処理方法。
【請求項4】
前記第1のメッセージのコンテキストは、前記第1のメッセージのコンテキストの新しさを表す要素とともに、前記記憶装置に格納され、
前記情報処理装置が、前記記憶装置に、前記第1のエンティティに関連付けて、前記第2のメッセージのコンテキストおよび前記第2のメッセージのコンテキストの新しさを表す要素を格納するステップと、
前記情報処理装置が、前記第1のエンティティから第3のメッセージを取得するステップと、
前記情報処理装置が、前記第3のメッセージの取得に応じて、前記記憶装置において前記第1のエンティティに関連付けられた最新のコンテキストを検索するステップと、
前記情報処理装置が、前記第3のメッセージを、前記最新のコンテキストとともに前記解釈サーバへ提供するステップと、をさらに備える、請求項1または請求項2に記載のメッセージ処理方法。
【請求項5】
前記情報処理装置が、第2のエンティティから第3のメッセージを取得するステップと、
前記情報処理装置が、前記記憶装置に、前記第2のエンティティに関連付けて、前記第3のメッセージのコンテキストを格納するステップと、
前記情報処理装置が、前記第2のエンティティから第4のメッセージを取得するステップと、
前記情報処理装置が、前記解釈サーバに、前記第4のメッセージを前記第3のメッセージのコンテキストとともに提供するステップと、を備える、請求項1または請求項2に記載のメッセージ処理方法。
【請求項6】
前記第1のメッセージは、前記第1のエンティティの第1のユニットから取得され、
前記第2のメッセージは、前記第1のエンティティの第2のユニットから取得される、請求項1または請求項2に記載のメッセージ処理方法。
【請求項7】
前記解釈サーバは、前記第1のメッセージを解釈し、前記第1のメッセージを解釈した結果を前記第1のユニットに関連付け、
前記解釈サーバは、前記第2のメッセージを解釈し、前記第2のメッセージを解釈した結果を前記第2のユニットに関連付ける、請求項6に記載のメッセージ処理方法。
【請求項8】
前記第1のメッセージのコンテキストは、対象アイテムを特定する情報を含み、
前記第2のメッセージを解釈するステップは、前記第2のメッセージにおける代名詞を前記対象アイテムとして認識することを含む、請求項6に記載のメッセージ処理方法。
【請求項9】
1以上のプロセッサと、
前記1以上のプロセッサによって実行されるプログラムを格納したメモリと、を備え、
前記プログラムは、前記1以上のプロセッサによって実行されることにより、前記1以上のプロセッサに請求項1または請求項2に記載のメッセージ処理方法を実施させる、情報処理装置。
【請求項10】
1以上のプロセッサによって実行されることにより、前記1以上のプロセッサに請求項1または請求項2に記載のメッセージ処理方法を実施させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、メッセージ処理方法に関する。
【背景技術】
【0002】
従来、ユーザからのメッセージを処理する技術について種々検討されている。たとえば、非特許文献1(“Virtual assistant”,[online],令和4年9月9日,インターネット<URL: https://en.wikipedia.org/wiki/Virtual_assistant>)は、ユーザからのテキストまたは音声によるメッセージの入力に応じて種々のタスクまたはサービスを提供する、バーチャルアシスタントを開示している。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】“Virtual assistant”,[online],令和4年9月9日,インターネット<URL: https://en.wikipedia.org/wiki/Virtual_assistant>
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述の技術において、提供されるタスクまたはサービスにおいてユーザの意図がより正確に反映されるようにするために、ユーザからのメッセージをより正確に解釈するための技術が求められている。
【0005】
本開示は、係る実情に鑑み考え出されたものであり、その目的は、ユーザから入力されたメッセージがより正確に解釈されるための技術を提供することである。
【課題を解決するための手段】
【0006】
本開示のある局面に従うと、情報処理装置が、第1のエンティティから第1のメッセージを取得するステップと、情報処理装置が、記憶装置に、第1のエンティティに関連付けて、第1のメッセージのコンテキストを格納するステップと、情報処理装置が、第1のエンティティから第2のメッセージを取得するステップと、情報処理装置が、メッセージを解釈する解釈サーバに、第2のメッセージを第1のメッセージのコンテキストとともに提供するステップと、を備える、メッセージ処理方法が提供される。
【発明の効果】
【0007】
本開示によれば、解釈サーバに対して、あるエンティティについてのメッセージとともに、当該エンティティにおける過去のメッセージのコンテキストが提供される。これにより、解釈サーバは、詳細な内容を含まないメッセージの解釈を、当該メッセージが属するエンティティにおける過去の内容を用いて実施できる。したがって、ユーザから入力されたメッセージがより正確に解釈され得る。
【図面の簡単な説明】
【0008】
【
図1】メッセージ処理システムの構成の一例を示す図である。
【
図2】ユーザ端末100のハードウエア構成の一例を示す図である。
【
図3】コミュニケーションサーバ200のハードウエア構成の一例を示す図である。
【
図4】情報処理サーバ300のハードウエア構成の一例を示す図である。
【
図5】会話サーバ400のハードウエア構成の一例を示す図である。
【
図6】メッセージ処理システム1における対話の一例を示す図である。
【
図7】メッセージ処理システム1における対話の他の例を示す図である。
【
図8】
図6および
図7に示された2つのスレッドにおける対話のための情報の流れを模式的に示す図である。
【
図9】コンテキストデータベース500に格納される情報の一例を模式的に示す図である。
【
図10】コンテキストデータベース500に格納される情報の他の例を模式的に示す図である。
【
図11】コンテキストデータベース500に格納される情報のさらに他の例を模式的に示す図である。
【
図12】コンテキストデータベース500に格納される情報のさらに他の例を模式的に示す図である。
【
図13】情報処理サーバ300および会話サーバ400の各々における処理の流れを示す図である。
【
図14】メッセージ処理システムの構成の他の例を示す図である。
【
図15】メッセージ処理システム2における対話の一例を示す図である。
【
図16】
図15に示された注文情報の生成における情報の流れを模式的に示す図である。
【
図17】
図15に示された注文情報の生成における情報の流れを模式的に示す図である。
【
図18】コンテキストデータベース500に格納される情報の一例を示す図である。
【
図19】コンテキストデータベース500に格納される情報の他の例を示す図である。
【
図20】コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
【
図21】コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
【
図22】コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
【
図23】コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
【
図24】メッセージ処理システム2における対話の他の例を示す図である。
【
図25】
図24に示された注文情報の生成における情報の流れを模式的に示す図である。
【
図26】コンテキストデータベース500に格納される情報の一例を示す図である。
【
図27】コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
【
図28】コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
【発明を実施するための形態】
【0009】
以下に、図面を参照しつつ、メッセージ処理システムの実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらの説明は繰り返さない。
【0010】
<第1の実施の形態>
[1.メッセージ処理システムの構成]
図1は、メッセージ処理システムの構成の一例を示す図である。
図1に示されるように、メッセージ処理システム1は、ユーザ端末100、コミュニケーションサーバ200、情報処理サーバ300、会話サーバ400、およびコンテキストデータベース500を含む。
【0011】
一実現例では、ユーザ端末100は、ユーザによって操作されるコンピュータ(スマートフォン、タブレット端末、パーソナルコンピュータ、など)によって実現される。
【0012】
コミュニケーションサーバ200は、slack(登録商標)などのチャットサービスを提供するサーバである。
【0013】
情報処理サーバ300は、上記チャットサービスにおいて、チャットボットを提供するためのサーバである。情報処理サーバ300は、メッセージ処理システム1における情報処理装置の一例である。
【0014】
会話サーバ400は、情報処理サーバ300をチャットボットとして機能させるために、メッセージの解釈を含む種々の処理を実施する。会話サーバ400は、メッセージ処理システム1における解釈サーバの一例である。
【0015】
コンテキストデータベース500は、メッセージ処理システム1において、ユーザによって入力されたメッセージのコンテキストを管理する。一実現例では、コンテキストとは、メッセージの意図および/または対象を意味していてもよい。なお、コンテキストは、これらの意味に加えて、または、これらの意味に代えて、メッセージに付随する場所および/もしくは時刻などの付加情報、または、このような付加情報の履歴を意味してもよい。
【0016】
[2.メッセージ処理システムの機能の概要]
図1を参照して、メッセージ処理システム1の機能の概要を説明する。
【0017】
ユーザ端末100には、上記チャットサービスを利用するためのアプリケーションプログラムがインストールされている。ユーザ150は、ユーザ端末100を利用して、上記チャットサービスのあるスレッドに、メッセージ(問合せ)を入力する。ユーザ端末100は、入力されたメッセージをチャットサービスに入力する。チャットサービス上のメッセージは、コミュニケーションサーバ200において管理される。なお、ユーザ端末100において、メッセージサービスへのメッセージの入力は、専用のアプリケーションプログラム上で実施されてもよいし、ブラウザを介してアクセスされた専用のサイト上で実施されてもよい。
【0018】
情報処理サーバ300は、チャットサービスにおいてユーザからのメッセージの入力を監視している。情報処理サーバ300は、チャットサービスにユーザからのメッセージが入力されると、当該メッセージをコミュニケーションサーバ200から取得し、当該メッセージを会話サーバ400へ転送する。
【0019】
会話サーバ400は、ユーザからのメッセージを解釈し、当該メッセージに対する応答を生成し、そして、生成された応答を情報処理サーバ300へ送信する。情報処理サーバ300は、会話サーバ400から送信された応答をコミュニケーションサーバ200へ転送する。コミュニケーションサーバ200は、情報処理サーバ300から転送された応答を、ユーザ端末100へ提供する。このとき、応答は、上記チャットサービスの上記スレッドにおいて、ユーザ150から入力されたメッセージ(問合せ)に対する返信として提供される。
【0020】
会話サーバ400は、情報処理サーバ300に、上記応答ととも、上記メッセージの解釈において生成されたコンテキストを送信する。情報処理サーバ300は、会話サーバ400から送信されたコンテキストを、上記スレッドに関連付けて、コンテキストデータベース500に格納する。
【0021】
情報処理サーバ300は、その後、上記スレッドにおいてメッセージを取得すると、コンテキストデータベース500において上記スレッドに関連付けられて格納されたコンテキストを検索する。そして、情報処理サーバ300は、上記スレッドにおいて取得されたメッセージを、検索結果として得られたコンテキストとともに、会話サーバ400へ送信する。これにより、会話サーバ400は、上記スレッドにおけるメッセージの解釈に、上記スレッドにおける過去のメッセージについて生成されたコンテキストを利用できる。
【0022】
[3.ハードウェア構成]
(ユーザ端末100)
図2は、ユーザ端末100のハードウエア構成の一例を示す図である。ユーザ端末100は、CPU(Central Processing Unit)101と、ディスプレイ102と、マイクロフォン103と、スピーカ104と、入力デバイス105と、通信I/F(インターフェース)106と、ストレージ107とを含む。ストレージ107は、データを不揮発的に格納するメモリデバイスによって実現される。ストレージ107は、各種のプログラムを格納するプログラム用領域1071、および、各種のデータを格納するデータ領域1072を含む。
【0023】
CPU101は、1以上のプロセッサを含み、ストレージ107または外部の記憶装置に格納されたプログラムを実行することにより各種の演算を実行する。
【0024】
ディスプレイ102は、CPU101から指示された画面を表示する。マイクロフォン103は、入力された音声をCPU101に入力する。スピーカ104は、CPU101から指示された音声を出力する。入力デバイス105は、たとえば物理キーおよび/またはタッチセンサによって実現され、ユーザからの情報の入力を受け付ける。通信I/F106は、たとえばネットワークカードによって実現され、ユーザ端末100を対話システム1内の他の装置(たとえば、コミュニケーションサーバ200)と通信させる。
【0025】
(コミュニケーションサーバ200)
図3は、コミュニケーションサーバ200のハードウエア構成の一例を示す図である。コミュニケーションサーバ200は、CPU201と、通信I/F202と、ストレージ203とを含む。ストレージ203は、データを不揮発的に格納するメモリデバイスによって実現される。ストレージ203は、各種のプログラムを格納するプログラム用領域2031、および、各種のデータを格納するデータ領域2032を含む。
【0026】
CPU201は、1以上のプロセッサを含み、ストレージ203または外部の記憶装置に格納されたプログラムを実行することにより各種の演算を実行する。通信I/F202は、たとえばネットワークカードによって実現され、コミュニケーションサーバ200をメッセージ処理システム1内の他の装置(ユーザ端末100、情報処理サーバ300、など)と通信させる。
【0027】
(情報処理サーバ300)
図4は、情報処理サーバ300のハードウエア構成の一例を示す図である。情報処理サーバ300は、CPU301と、通信I/F302と、ストレージ303とを含む。ストレージ303は、データを不揮発的に格納するメモリデバイスによって実現される。ストレージ303は、各種のプログラムを格納するプログラム用領域3031、および、各種のデータを格納するデータ領域3032を含む。
【0028】
CPU301は、1以上のプロセッサを含み、ストレージ303または外部の記憶装置に格納されたプログラムを実行することにより各種の演算を実行する。通信I/F302は、たとえばネットワークカードによって実現され、情報処理サーバ300をメッセージ処理システム1内の他の装置(情報処理サーバ300、会話サーバ400、コンテキストデータベース500、など)と通信させる。
【0029】
(会話サーバ400)
図5は、会話サーバ400のハードウエア構成の一例を示す図である。会話サーバ400は、CPU401と、通信I/F402と、ストレージ403とを含む。ストレージ403は、データを不揮発的に格納するメモリデバイスによって実現される。ストレージ403は、各種のプログラムを格納するプログラム用領域4031、および、各種のデータを格納するデータ領域4032を含む。
【0030】
CPU401は、1以上のプロセッサを含み、ストレージ403または外部の記憶装置に格納されたプログラムを実行することにより各種の演算を実行する。通信I/F402は、たとえばネットワークカードによって実現され、会話サーバ400をメッセージ処理システム1内の他の装置(たとえば、情報処理サーバ300)と通信させる。
【0031】
(コンテキストデータベース500)
コンテキストデータベース500は、所与のコンピュータによって実現され、各種のデータを格納する。コンテキストデータベース500は、メッセージ処理システム1内の他の要素(たとえば、情報処理サーバ300)の一部として実現されてもよいし、メッセージ処理システム1内の他の要素とは別体のハードウエア資源として実現されてもよい。
【0032】
[4.メッセージ処理システムにおける対話の具体例]
メッセージ処理システム1では、スレッドごとに、メッセージのコンテキストが管理される。この意味において、メッセージ処理システム1では、各スレッドがエンティティの一例を構成する。以下、2つのスレッドにおける対話の具体例とともに、各スレッドに関するコンテキストの管理について説明する。
【0033】
(対話の一例)
図6は、メッセージ処理システム1における対話の一例を示す図である。
【0034】
図6には、ユーザAとチャットボットとの対話を表す画面600が示されている。画面600は、チャットサービスにおけるあるスレッドの対話を表す。画面600において、欄601には、スレッドの情報を表す文字列「Thread_#チャットボットと話そう001」が表示されている。
【0035】
欄602~605のそれぞれは、スレッドにおけるメッセージを表す。より具体的には、欄602は、ユーザAのメッセージ「今日の天気はどう?」を表す。欄603は、チャットボットのメッセージ「今日のサンノゼは、にわか雨の予定で、最高気温62°F、最低気温49°Fです。」を表す。欄604は、ユーザAのメッセージ「明日はどう?」を表す。欄605は、チャットボットのメッセージ「明日のサンノゼは、ほぼ曇り空の予定で、最高気温62°F、最低気温49°Fです。」を表す。
【0036】
(対話の他の例)
図7は、メッセージ処理システム1における対話の他の例を示す図である。
【0037】
図7には、ユーザAとチャットボットとの対話を表す画面700が示されている。画面700は、チャットサービスにおけるスレッドであって、
図6に示された例とは別のスレッドの対話を表す。画面700において、欄701には、スレッドの情報を表す文字列「Thread_#チャットボットと話そう002」が表示されている。
【0038】
欄702~703のそれぞれは、スレッドにおけるメッセージを表す。より具体的には、欄702は、ユーザAのメッセージ「サンタクララでレストランを探して。」を表す。欄703は、チャットボットのメッセージ「これらのレストランが見つかりました。」を表す。欄703は、2つの欄7031,7032を含む。欄7031は、レストランの1つ目の検索結果「レストランX」についての情報を表す。欄7032は、レストランの2つ目の検索結果「レストランY」についての情報を表す。
【0039】
(情報の流れ)
図8は、
図6および
図7に示された2つのスレッドにおける対話のための情報の流れを模式的に示す図である。
【0040】
図8の例では、
図6のスレッドが「スレッド001」として表され、
図7のスレッドが「スレッド002」として表されている。「ユーザ(スレッド001)」は、コミュニケーションサーバ200において、スレッド001として実施されるユーザAとの対話を表す。「ユーザ(スレッド002)」は、コミュニケーションサーバ200において、スレッド002として実施されるユーザAとの対話を表す。「@チャットボット」は、スレッドにおけるメッセージの宛先がチャットボットであることを表す。
【0041】
情報処理サーバ300は、コミュニケーションサーバ200がユーザから取得するメッセージを監視する。コミュニケーションサーバ200がスレッド001においてメッセージ「今日の天気はどう?」(
図6の欄602)を取得すると、情報処理サーバ300は、当該メッセージを取得する。このメッセージは、スレッド001における初めてのメッセージである。すなわち、この時点では、スレッド001は、情報処理サーバ300にとって、新しいスレッドである。したがって、情報処理サーバ300は、コンテキストデータベース500においてコンテキストを検索することなく、このメッセージを会話サーバ400へ送信する。
【0042】
チャットサービスにおいて、メッセージは、音声で入力されてもよいし、テキストで入力されてもよい。会話サーバ400は、メッセージを解釈する際に、メッセージに対応するテキストを処理してもよい。メッセージが音声で入力された場合、音声からテキストへの変換は、コミュニケーションサーバ200、情報処理サーバ300、および解釈サーバのいずれで実施されてもよい。また、チャットサービスにおいて、メッセージは、音声で出力されてもよいし、テキストで出力されてもよいし、これらの双方が出力されてもよい。
【0043】
会話サーバ400は、ユーザAのメッセージ「今日の天気はどう?」を処理することにより、このメッセージへの応答を生成する。一実現例では、メッセージの処理は、メッセージの解釈、解釈に基づくコマンドの特定、および、コマンドの実行を含む。
【0044】
メッセージの解釈は、メッセージの自然言語処理を含む。会話サーバ400は、メッセージの解釈において、メッセージのコンテキストを特定してもよい。一実現例では、コンテキストの特定のために、会話サーバ400は、メッセージが適合する、自然言語処理における文法を特定する。そして、会話サーバ400は、特定された文法に関連付けられているコンテキストを、メッセージのコンテキストとして特定する。たとえば、メッセージ「今日の天気はどう?」から、コンテキスト「天気」が特定される。
【0045】
会話サーバ400は、コンテキストに基づいて、メッセージに対応するコマンドを特定してもよい。一実現例では、コンテキスト「天気」に、コマンド「天気予報の提供」が関連付けられていてもよい。会話サーバ400は、コンテキスト「天気」に基づいて、コマンド「天気予報の提供」を特定してもよい。
【0046】
会話サーバ400は、コマンドの特定において、ユーザAに関する情報を用いてもよい。ユーザAに関する情報の一例は、サンノゼという場所を表す情報である。会話サーバ400は、コマンド「天気予報の提供」が特定されているときに、ユーザAに関する情報「サンノゼ」を用いて、特定されるコマンドを、コマンド「サンノゼの天気予報の提供」に更新してもよい。
【0047】
ユーザAに関する情報は、会話サーバ400に予め登録されていてもよい。情報処理サーバ300が、上記メッセージを、対象ユーザ(ユーザA)を特定する情報とともに会話サーバ400へ送信することにより、会話サーバ400は、対象ユーザ(ユーザA)に関する情報を特定し、当該情報を用いて上記メッセージを処理する。
【0048】
ユーザAに関する情報は、情報処理サーバ300から会話サーバ400へ送信されてもよい。一実現例では、コミュニケーションサーバ200はユーザ端末100から位置情報を取得し、当該位置情報を、情報処理サーバ300が上記メッセージとともにコミュニケーションサーバ200から取得してもよい。
【0049】
コマンドの実行において、会話サーバ400は、必要に応じて外部サーバ(たとえば、API(Application Programming Interface)サーバ)を利用してもよい。一実現例では、会話サーバ400は、コマンド「サンノゼの天気予報の提供」の実行のために、天気予報用のAPIサーバにアクセスし、APIサーバから取得した情報を用いて応答を生成する。
【0050】
会話サーバ400は、応答「今日のサンノゼは、にわか雨の予定で、最高気温62°F、最低気温49°Fです。」を生成すると、当該応答を情報処理サーバ300へ送信する。会話サーバ400は、また、当該応答の生成に利用したコンテキスト(天気)を情報処理サーバ300へ送信する。
【0051】
情報処理サーバ300は、会話サーバ400から送信された応答をコミュニケーションサーバ200に送信する。これに応じて、コミュニケーションサーバ200は、ユーザAのメッセージに対する返信として、当該応答(
図6の欄603)を出力する。これにより、ユーザAは、スレッド001において、メッセージ「今日の天気はどう?」への返信として上記応答を取得する。
【0052】
情報処理サーバ300は、また、上記応答に対して、IDを付与する。より具体的には、
図8の例では、応答「今日のサンノゼは、にわか雨の予定で、最高気温62°F、最低気温49°Fです。」に対して、「1」というIDが付与されている。
【0053】
情報処理サーバ300は、さらに、ID=1を付与された応答が基づくユーザAのメッセージについて取得したコンテキストを、スレッドおよびIDを特定する情報とともに、コンテキストデータベース500へ格納する。これにより、コンテキストデータベース500では、コンテキスト「天気」が、スレッド001およびID=1と関連付けられて、格納される。
【0054】
図9は、コンテキストデータベース500に格納される情報の一例を模式的に示す図である。
図9に示されるように、コンテキストデータベース500では、情報が、3種類の項目(スレッド、ID、コンテキスト)を含むように格納される。
【0055】
図10は、コンテキストデータベース500に格納される情報の他の例を模式的に示す図である。上記のように情報処理サーバ300がコンテキストを格納することによって、
図10に示されるように、コンテキストデータベース500では、スレッド001およびID=1に関連付けられた、コンテキスト「天気」が格納される。
【0056】
図8に戻って、コミュニケーションサーバ200がスレッド002においてメッセージ「サンタクララでレストランを探して。」(
図7の欄702)を取得すると、情報処理サーバ300は、当該メッセージを取得する。このメッセージは、スレッド002における初めてのメッセージである。すなわち、この時点では、スレッド002は、情報処理サーバ300にとって、新しいスレッドである。したがって、情報処理サーバ300は、コンテキストデータベース500においてコンテキストを検索することなく、このメッセージを会話サーバ400へ送信する。
【0057】
会話サーバ400は、メッセージ「サンタクララでレストランを探して。」を処理することにより、当該メッセージに対する応答「これらのレストランが見つかりました。…」を生成する。そして、会話サーバ400は、当該応答を、上記メッセージのコンテキスト(レストラン)とともに、情報処理サーバ300へ送信する。
【0058】
情報処理サーバ300は、応答「これらのレストランが見つかりました。…」に対して、IDを付与する。このIDは、
図8の例では、「2」として示されている。情報処理サーバ300は、会話サーバ400から送信された応答を、付与されたIDとともにコミュニケーションサーバ200へ送信する。これにより、コミュニケーションサーバ200は、上記メッセージへの返信として、情報処理サーバ300から送信された応答(
図7の欄703)を出力する。これにより、ユーザAは、スレッド002において、メッセージ「サンタクララでレストランを探して。」への返信として当該応答を取得する。
【0059】
情報処理サーバ300は、さらに、会話サーバ400から送信されたコンテキストを、付与されたIDとともに、コンテキストデータベース500へ格納する。これにより、これにより、コンテキストデータベース500では、コンテキスト(レストラン)が、スレッド002およびID=2と関連付けられて、格納される。
図11は、コンテキストデータベース500に格納される情報のさらに他の例を模式的に示す図である。
図11に示されるように、コンテキストデータベース500では、さらに、コンテキスト「レストラン」が、スレッド002およびID=2と関連付けられて、格納されている。
【0060】
図8に戻って、コミュニケーションサーバ200がスレッド001においてメッセージ「明日はどう?」(
図6の欄604)を取得すると、情報処理サーバ300は、当該メッセージを取得する。情報処理サーバ300は、スレッド001において既にメッセージを取得している。このため、情報処理サーバ300は、コンテキストデータベース500において、スレッド001に関連付けられたコンテキストを検索する。より具体的には、情報処理サーバ300は、スレッド001に関連付けられたコンテキストのうち最新のIDを付されたコンテキストを検索する。
図11に示されたように、コンテキストデータベース500では、スレッド001に関連付けられて、コンテキスト「天気」が格納されている。したがって、情報処理サーバ300は、上記検索の結果として、コンテキスト「天気」を取得する。
【0061】
そして、情報処理サーバ300は、メッセージ「明日はどう?」を、検索結果であるコンテキスト「天気」とともに、会話サーバ400へ送信する。
【0062】
会話サーバ400は、メッセージ「明日はどう?」を、コンテキスト「天気」を用いて解釈することにより、応答を生成する。情報処理サーバ300は、上記会話とともにユーザAを特定する情報を会話サーバ400へ送信してもよい。会話サーバ400は、ユーザAを特定する情報に基づいてユーザAに関する情報を特定し、ユーザAに関する情報をユーザAのメッセージの解釈に利用してもよい。
【0063】
会話サーバ400は、情報処理サーバ300から送信されたコンテキスト「天気」を、ユーザAからのメッセージの解釈に利用する。これにより、ユーザAのメッセージに「天気」を表す情報が含まれていなくても、また、ユーザAに関する情報として「天気」が予め登録されていなくても、会話サーバ400は、コンテキスト「天気」を利用して当該メッセージを解釈できる。
【0064】
会話サーバ400は、メッセージ「明日はどう?」に対して、応答「明日のサンノゼは、ほぼ曇り空の予定で、最高気温62°F、最低気温49°Fです。」を生成する。そして、会話サーバ400は、この応答を、メッセージ「明日はどう?」の解釈において利用されたコンテキストともに、情報処理サーバ300へ送信する。メッセージ「明日はどう?」の解釈において利用されたコンテキストは、メッセージ「明日はどう?」の解釈において新たに特定されたコンテキストであってもよいし、メッセージ「明日はどう?」とともに情報処理サーバ300から受信したコンテキスト、すなわち、メッセージ「明日はどう?」より前のメッセージの解釈において特定されたコンテキストであってもよい。
【0065】
情報処理サーバ300は、会話サーバ400から送信された応答に新たなID(3)を付与し、ID=3とともに当該応答をコミュニケーションサーバ200へ送信する。これにより、コミュニケーションサーバ200は、上記メッセージへの返信として、情報処理サーバ300から送信された応答(
図6の欄605)を出力する。これにより、ユーザAは、スレッド001において、メッセージ「明日はどう?」への返信として当該応答を取得する。
【0066】
情報処理サーバ300は、さらに、会話サーバ400から送信されたコンテキストを、スレッドおよびIDを特定する情報とともに、コンテキストデータベース500へ格納する。これにより、コンテキストデータベース500では、このコンテキストが、スレッド001およびID=3と関連付けられて格納される。
【0067】
図12は、コンテキストデータベース500に格納される情報のさらに他の例を模式的に示す図である。
図12に示されるように、コンテキストデータベース500では、さらに、コンテキスト「天気」が、スレッド001およびID=3と関連付けられて格納されている。
【0068】
以上、
図6~
図12を参照して説明されたように、情報処理サーバ300は、コンテキストデータベース500において、スレッドごとに、コンテキストを管理する。これにより、スレッド001において、あるメッセージについて生成されたコンテキストは、それ以降のメッセージの解釈で用いられる。一方、スレッド002では、スレッド001について生成されたコンテキストであってスレッド002について生成されていないコンテキストは、スレッド001におけるメッセージの解釈には用いられない。たとえば、
図8において説明されたように、スレッド001におけるコンテキスト「天気」は、スレッド002ではメッセージの解釈には利用されない。
【0069】
なお、コンテキストデータベース500には、スレッド002について、メッセージ「サンタクララでレストランを探して。」の解釈に利用されたコンテキストが格納されている。スレッド002において他のメッセージが入力された場合、情報処理サーバ300は、当該他のメッセージとともに上記コンテキストを会話サーバ400へ送信する。会話サーバ400は、当該他のメッセージの解釈に、情報処理サーバ300から送信されたコンテキストを利用する。すなわち、スレッド001において、第1のメッセージが入力された後で第2のメッセージが入力されると、第2のメッセージの解釈に、第1のメッセージの解釈に利用されたコンテキストが利用される。また、スレッド002において、第3のメッセージが入力された後で第4のメッセージが入力されると、第4のメッセージの解釈に、第3のメッセージの解釈に利用されたコンテキストが利用される。
【0070】
[5.処理の流れ]
図13は、情報処理サーバ300および会話サーバ400の各々における処理の流れを示す図である。処理P30は、情報処理サーバ300側の処理を表す。一実現例では、CPU301が所与のプログラムを実行することによって、情報処理サーバ300側の処理が実施される。処理P40は、会話サーバ400側の処理を表す。一実現例では、CPU401が所与のプログラムを実行することによって、会話サーバ400側の処理が実施される。
【0071】
ステップS300において、情報処理サーバ300は、チャットサービスにおいてチャットボットを宛先とするメッセージを検出したか否かを判断する。情報処理サーバ300は、メッセージを検出するまでステップS300の制御を繰り返し(ステップS300にてNO)、メッセージを検出すると(ステップS300にてYES)、ステップS302へ制御を進める。
【0072】
ステップS302にて、情報処理サーバ300は、検出されたメッセージを読み出す。
ステップS304にて、情報処理サーバ300は、検出されたメッセージが、対象スレッドにおける初めてのメッセージであるか否かを判断する。対象スレッドとは、検出されたメッセージが属するスレッドである。情報処理サーバ300は、検出されたメッセージが対象スレッドにおける初めてのメッセージであれば(ステップS304にてYES)、ステップS308へ制御を進め、検出されたメッセージが対象スレッドにおける初めてのメッセージでなければ(ステップS304にてNO)、ステップS306へ制御をすすめる。
【0073】
ステップS306にて、情報処理サーバ300は、コンテキストデータベース500において、対象スレッドに関連付けられたコンテキストを検索する。このとき、対象スレッドに関連付けられているすべてのコンテキストが検索されてもよいし、最新のコンテキストのみが検索されてもよい。コンテキストデータベース500において各コンテキストがIDに関連付けられている場合、「最新」は、各コンテキストに関連付けられているIDに基づいて判断されてもよい。
【0074】
ステップS308にて、情報処理サーバ300は、ステップS302においてコミュニケーションサーバ200から読み出したメッセージを会話サーバ400へ転送する。このとき、情報処理サーバ300は、ステップS306においてコンテキストの検索結果を取得している場合には、さらに検索結果(コンテキスト)を会話サーバ400へ送信する。
【0075】
ステップS400にて、会話サーバ400は、情報処理サーバ300から送信されたメッセージを受信する。このとき、会話サーバ400は、情報処理サーバ300からコンテキストが送信されていれば、さらに当該コンテキストを受信する。
【0076】
ステップS402にて、会話サーバ400は、ステップS400にて受信したメッセージを解釈する。ステップS400にてコンテキストを受信している場合、この解釈において、会話サーバ400は、当該コンテキストを利用してもよい。
【0077】
ステップS404にて、会話サーバ400は、ステップS400にて受信したメッセージへの応答を生成する。
【0078】
ステップS406にて、会話サーバ400は、ステップS404において生成された応答を、コンテキストとともに、情報処理サーバ300へ送信する。ステップS406において送信されるコンテキストは、ステップS400において受信したメッセージのコンテキストを含む。メッセージのコンテキストは、当該メッセージの解釈において新たに特定されたコンテキストであってもよいし、当該メッセージとともに情報処理サーバ300から送信されたコンテキストであってもよい。
【0079】
ステップS310にて、情報処理サーバ300は、会話サーバ400から、応答とコンテキストとを受信する。
【0080】
ステップS312にて、情報処理サーバ300は、ステップS310において受信した応答をコミュニケーションサーバ200に転送する。
【0081】
ステップS314にて、情報処理サーバ300は、ステップS310において受信したコンテキストを、対象スレッドに関連付けて、コンテキストデータベース500に格納する。情報処理サーバ300は、ステップS310において応答にタイムスタンプを付与し、ステップS314においてコンテキストをさらに当該タイムスタンプに関連付けてコンテキストデータベース500に格納してもよい。その後、情報処理サーバ300は、ステップS300へ制御を戻す。
【0082】
以上、
図13を参照して説明された処理の流れによれば、情報処理サーバ300は、チャットサービスにおけるあるスレッドにおいて取得したメッセージを、当該スレッドに関連付けられたコンテキストとともに、会話サーバ400へ送信する。これにより、会話サーバ400は、当該スレッドにおいて取得されたメッセージの解釈に、当該スレッドにおいて過去に特定されたコンテキストを利用できる。したがって、チャットサービスにおいて、あるメッセージに意図および/または対象を表す情報が含まれていなくても、当該メッセージと同じスレッドの過去のメッセージに意図および/または対象を表す情報が含まれていれば、当該意図および/または対象に沿った内容を含む応答が返信として提供され得る。
【0083】
図13を参照して説明された処理の流れにおいて、タイムスタンプは、各スレッドに関連付けられて格納される複数のコンテキストの各々の新しさを特定するために利用される。一方、
図8~
図12において説明されたIDは、コンテキストデータベース500において各コンテキストが格納された順序を規定し、これにより、各コンテキストの新しさを規定する。したがって、
図8~
図12におけるIDおよび
図13におけるタイムスタンプの各々は、各コンテキストの新しさを規定する要素の一例である。なお、コンテキストの新しさは、当該コンテキストの生成の元となるメッセージのメッセージの新しさと同義であり得る。たとえば、メッセージ「今日の天気はどう?」の解釈においてコンテキスト「天気」が生成された場合、コンテキスト「天気」の新しさは、メッセージ「今日の天気はどう?」の新しさを表す場合がある。
【0084】
<第2の実施の形態>
[1.メッセージ処理システムの構成]
図14は、メッセージ処理システムの構成の他の例を示す図である。
図1と比較して、
図14には、ユーザ端末100の代わりに、ユーザ150Aによって操作されるユーザ端末100A、および、ユーザ150Bによって操作されるユーザ端末100Bが示される。また、会話サーバ400の代わりに、注文管理サーバ410が示される。注文管理サーバ410は、ユーザからのメッセージを解釈することにより、ユーザの注文情報を生成する。すなわち、注文管理サーバ410は、解釈サーバの一例である。
【0085】
ユーザ端末100A,100Bの各々のハードウエア構成は、ユーザ端末100のハードウェア構成と同様であってもよい。注文管理サーバ410のハードウェア構成は、会話サーバ400のハードウェア構成と同様であってもよい。
【0086】
図14に示されるメッセージ処理システム2において、コミュニケーションサーバ200は、チャットサービスとして、商品の注文を受け付ける。チャットサービスにおいて、ユーザ端末100Aおよびユーザ端末100Bは、単一のスレッドに対して、メッセージを入力する。
【0087】
[2.注文情報の生成の第1の具体例]
(対話)
図15は、メッセージ処理システム2における対話の一例を示す図である。
図15の例では、チャットサービスのあるスレッドに、ユーザ150Aとユーザ150Bがメッセージを入力する。メッセージ処理システム2では、ユーザ150Aおよびユーザ150Bのそれぞれのメッセージが、スレッドに共通するコンテキストを利用して解釈されることにより、ユーザ150Aおよびユーザ150Bのそれぞれの注文情報が生成される。注文情報は、レストランまたは衣料品店の店内における注文のためのものであってもよいし、デリバリーサービスにおける注文のためのものであってもよい。以下、注文情報の生成についてより具体的に説明する。
【0088】
図15を参照して、メッセージMS11として、チャットボット(情報処理サーバ300)がメッセージ「20%割引クーポンがここにあります。」を出力する。一実現例では、このメッセージは、注文管理サーバ410によって生成され、情報処理サーバ300を介してコミュニケーションサーバ200へ送信される。コミュニケーションサーバ200は、注文管理サーバ410から送信されたメッセージを、チャットボットからのメッセージとして、チャットサービスに出力する。
【0089】
これに応じて、ユーザ端末100A(ユーザ150A)は、チャットサービスに、メッセージMS21として示されるように、メッセージ「注文をお願いします。」を入力する。
【0090】
これに応じて、チャットボットから、メッセージMS22として示されるように、メッセージ「何にされますか?」が出力される。
【0091】
これに応じて、ユーザ端末100Aは、チャットサービスに、メッセージMS23として示されるように、メッセージ「チーズバーガを1つ。」を入力する。
【0092】
これに応じて、チャットボットから、メッセージMS24として示されるように、メッセージ「他にはありますか?」とともに、メッセージMS23に基づいて生成された注文情報が出力される。注文情報は、画面OD21として示されるように、「チーズバーガx1(20%割引適用)」を含む。この注文情報は、1つのチーズバーガを表し、また、この1つのチーズバーガに対して20%の割引が適用されることを表す。20%の割引が適用されることは、このスレッドにおける過去のメッセージのコンテキストに基づく。
【0093】
より具体的には、このスレッドにおいて、メッセージMS11は「20%割引クーポン」「あります」を含む。これにより、メッセージMS11のコンテキストは、「20%割引クーポン適用」を含む。そして、メッセージMS23は、コンテキスト「20%割引クーポン適用」を用いて解釈される。そして、注文情報は、メッセージMG23に含まれる「チーズバーガ」「1つ」、および、コンテキスト「サービス:20%割引適用」に基づいて、1つのチーズバーガに対して20%の割引が適用されることを表すように、生成される。
【0094】
一方、ユーザ端末100B(ユーザ150B)は、チャットサービスに、メッセージMS31として示されるように、メッセージ「注文をお願いします。」を入力する。
【0095】
これに応じて、チャットボットから、メッセージMS32として示されるように、メッセージ「何にされますか?」が出力される。
【0096】
これに応じて、ユーザ端末100Bは、メッセージMS33として示されるように、チャットサービスに、メッセージ「フライドポテトを1つ。」を入力する。
【0097】
これに応じて、チャットボットから、メッセージMS34として示されるように、メッセージ「他にはありますか?」とともに、メッセージMS33に基づいて生成された注文情報が出力される。注文情報は、画面OD31として示されるように、「フライドポテトx1(20%割引適用)」である。この注文情報は、1つのフライドポテトを表し、また、この1つのフライドポテトに対して20%の割引が適用されることを表す。20%の割引が適用されることは、画面OD21について上述したのと同様に、このスレッドにおける過去のメッセージのコンテキストに基づく。
【0098】
(情報の流れ)
図16および
図17は、
図15に示された注文情報の生成における情報の流れを模式的に示す図である。
【0099】
図16には、
図15におけるチャットサービスとユーザ150A(以下、「ユーザA」とも称する)との会話が主に示される。
図16を参照して、注文管理サーバ410は、情報処理サーバ300へ、メッセージ「20%割引クーポンがここにあります。」と、このメッセージのコンテキストを送信する。情報処理サーバ300は、注文管理サーバ410からのメッセージを、チャットボットからのメッセージとして、コミュニケーションサーバ200に送信する。コミュニケーションサーバ200は、チャットサービスにおいてこのメッセージを出力する。
【0100】
情報処理サーバ300は、また、上記コンテキストをコンテキストデータベース500に格納する。
【0101】
図18は、コンテキストデータベース500に格納される情報の一例を示す図である。コンテキストデータベース500では、コンテキストが時刻に関連付けられて格納される。第2の実施の形態において、各コンテキストに関連付けられて格納される時刻は、各コンテキストの新しさを規定する要素の一例である。
【0102】
注文管理サーバ410は、メッセージ「20%割引クーポンがここにあります。」のコンテキストとして、「サービス:20%割引適用」を生成する。
図19は、コンテキストデータベース500に格納される情報の他の例を示す図である。
図19の例では、コンテキスト「サービス:20%割引適用」が、当該コンテキストが格納された時刻(2022年9月1日の12時05分)とともに、格納されている。
【0103】
図16に戻って、チャットボットからのメッセージに応じて、ユーザ端末100Aから、チャットサービスへ、メッセージ「注文をお願いします。」が出力される。情報処理サーバ300は、このメッセージを取得すると、コンテキストデータベース500において、
図16に示されているスレッドに関連付けられたコンテキストを検索する。そして、情報処理サーバ300は、ユーザ端末100Aからのメッセージ、検索結果として得られたコンテキスト、および、ユーザ端末100Aのユーザ(ユーザA)を特定する情報を、注文管理サーバ410へ送信する。
【0104】
注文管理サーバ410は、情報処理サーバ300から送信されたメッセージを解釈して、当該メッセージへの応答「何にされますか?」を生成する。解釈には、情報処理サーバ300から送信されたコンテキストが利用され得る。
【0105】
注文管理サーバ410は、生成された応答を、上記メッセージのコンテキストとともに、情報処理サーバ300へ送信する。メッセージのコンテキストは、メッセージとともに情報処理サーバ300から送信されてきたコンテキスト、および/または、メッセージの解釈において生成されたコンテキストを含む。
【0106】
情報処理サーバ300は、注文管理サーバ410からの応答をコミュニケーションサーバ200へ送信する。コミュニケーションサーバ200は、情報処理サーバ300から送信された応答を、ユーザ150Aへの返信として出力する。
【0107】
情報処理サーバ300は、さらに、注文管理サーバ410から送信されたコンテキストを、コンテキストデータベース500に格納する。
【0108】
図20は、コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
図19では、2022年9月1日の12時05分のコンテキストのみが格納されていたのに対し、
図20では、さらに、2022年9月1日の12時06分のコンテキストが格納されている。
【0109】
図16に戻って、チャットボットからのメッセージに応じて、ユーザ端末100Aから、チャットサービスへ、メッセージ「チーズバーガを1つ。」が出力される。情報処理サーバ300は、このメッセージを取得すると、コンテキストデータベース500において、
図16に示されているスレッドに関連付けられたコンテキストを検索する。スレッドに複数のコンテキストが関連付けられている場合、情報処理サーバ300は、最新のコンテキストのみを検索してもよい。そして、情報処理サーバ300は、ユーザ端末100Aからのメッセージ、検索結果として得られたコンテキスト、および、ユーザ端末100Aのユーザ(ユーザA)を特定する情報を、注文管理サーバ410へ送信する。
【0110】
注文管理サーバ410は、情報処理サーバ300から送信されたメッセージを解釈して、当該メッセージへの応答「他にはありますか?」、および、注文情報を生成する。解釈には、情報処理サーバ300から送信されたコンテキストが利用され得る。注文情報は、メッセージの解釈の結果として生成され、たとえば、
図15の画面OD21に示された内容を有する。
【0111】
注文管理サーバ410は、生成された応答「他にはありますか?」および注文情報、ならびに、情報処理サーバ300から受信したメッセージ「チーズバーガを1つ。」のコンテキストを、情報処理サーバ300へ送信する。メッセージ「チーズバーガを1つ。」のコンテキストは、当該メッセージとともに情報処理サーバ300から送信されたコンテキスト、および/または、当該メッセージの解釈において生成されたコンテキストを含む。メッセージ「チーズバーガを1つ。」の解釈においてコンテキスト「アイテム:チーズバーガ」「ユーザ:ユーザA」が生成された場合、当該メッセージのコンテキストは、「サービス:20%割引適用」および「アイテム:チーズバーガ」「ユーザ:ユーザA」を含んでいてもよい。
【0112】
情報処理サーバ300は、注文管理サーバ410から送信された応答および注文情報をコミュニケーションサーバ200に送信し、コミュニケーションサーバ200は、チャットサービスに当該応答および注文情報を出力する。情報処理サーバ300は、また、注文管理サーバ410から送信されたコンテキストをコンテキストデータベース500に格納する。
【0113】
図21は、コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
図21では、
図20と比較して、さらに、2022年9月1日の12時07分のコンテキスト「サービス:20%割引適用/アイテム:チーズバーガ/ユーザ:ユーザA」が格納されている。このコンテキストは、2022年9月1日の12時07分のコンテキストと比較して、「アイテム:チーズバーガ」「ユーザ:ユーザA」をさらに含む。
【0114】
図17には、
図16の流れの続きであって、
図15におけるチャットサービスとユーザ150B(以下、「ユーザB」とも称する)との会話が示される。
【0115】
図17を参照して、チャットボットからのメッセージに応じて、ユーザ端末100Bから、チャットサービスへ、メッセージ「注文をお願いします。」が出力される。情報処理サーバ300は、このメッセージを取得すると、コンテキストデータベース500において、
図17に示されているスレッドに関連付けられたコンテキストを検索する。そして、情報処理サーバ300は、ユーザ端末100Bからのメッセージ、検索結果として得られたコンテキスト、および、ユーザ端末100Bのユーザ(ユーザB)を特定する情報を、注文管理サーバ410へ送信する。
【0116】
注文管理サーバ410は、情報処理サーバ300から送信されたメッセージを解釈して、当該メッセージへの応答「何にされますか?」を生成する。解釈には、情報処理サーバ300から送信されたコンテキストが利用され得る。
【0117】
注文管理サーバ410は、生成された応答を、上記メッセージのコンテキストとともに、情報処理サーバ300へ送信する。メッセージのコンテキストは、メッセージとともに情報処理サーバ300から送信されてきたコンテキスト、および/または、メッセージの解釈において生成されたコンテキストを含む。
【0118】
情報処理サーバ300は、注文管理サーバ410からの応答をコミュニケーションサーバ200へ送信する。コミュニケーションサーバ200は、情報処理サーバ300から送信された応答を、ユーザ150Bへの返信として出力する。
【0119】
情報処理サーバ300は、さらに、注文管理サーバ410から送信されたコンテキストを、コンテキストデータベース500に格納する。
【0120】
図22は、コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
図22では、
図21と比較して、さらに、2022年9月1日の12時08分のコンテキストが格納されている。
【0121】
図17に戻って、チャットボットからのメッセージに応じて、ユーザ端末100Bから、チャットサービスへ、メッセージ「フライドポテトを1つ。」が出力される。情報処理サーバ300は、このメッセージを取得すると、コンテキストデータベース500において、
図17に示されているスレッドに関連付けられたコンテキストを検索する。スレッドに複数のコンテキストが関連付けられている場合、情報処理サーバ300は、最新のコンテキストのみを検索してもよい。そして、情報処理サーバ300は、ユーザ端末100Bからのメッセージ、検索結果として得られたコンテキスト、および、ユーザ端末100Bのユーザ(ユーザB)を特定する情報を、注文管理サーバ410へ送信する。
【0122】
注文管理サーバ410は、情報処理サーバ300から送信されたメッセージを解釈して、当該メッセージへの応答「他にはありますか?」、および、注文情報を生成する。解釈には、情報処理サーバ300から送信されたコンテキストが利用され得る。注文情報は、メッセージの解釈の結果として生成され、たとえば、
図15の画面OD31に示された内容を有する。
【0123】
注文管理サーバ410は、生成された応答「他にはありますか?」および注文情報、ならびに、情報処理サーバ300から受信したメッセージ「フライドポテトを1つ。」のコンテキストを、情報処理サーバ300へ送信する。メッセージ「フライドポテトを1つ。」のコンテキストは、当該メッセージとともに情報処理サーバ300から送信されたコンテキスト、および/または、当該メッセージの解釈において生成されたコンテキストを含む。メッセージ「フライドポテトを1つ。」の解釈においてコンテキスト「アイテム:フライドポテト」が生成された場合、当該メッセージのコンテキストは、「サービス:20%割引適用」「アイテム:フライドポテト」「ユーザ:ユーザB」を含んでいてもよい。
【0124】
情報処理サーバ300は、注文管理サーバ410から送信された応答および注文情報をコミュニケーションサーバ200に送信し、コミュニケーションサーバ200は、チャットサービスに当該応答および注文情報を出力する。情報処理サーバ300は、また、注文管理サーバ410から送信されたコンテキストをコンテキストデータベース500に格納する。
【0125】
図23は、コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
図23では、
図22と比較して、さらに、2022年9月1日の12時09分のコンテキストが格納されている。このコンテキストは、2022年9月1日の12時08分のコンテキストと比較して、さらに、「サービス:20%割引適用/アイテム:フライドポテト/ユーザ:ユーザB」を含む。
【0126】
以上、
図16~
図23を参照して説明された例では、スレッドが「エンティティ」の一例である。ユーザ端末100A(ユーザ150A)およびユーザ端末100B(ユーザ150B)の各々が「ユニット」の一例である。より具体的には、ユーザ150Aは第1のユニットの一例であり、ユーザ150Bは第2のユニットの一例である。一実現例では、ユーザ150Aおよびユーザ150Bの各々は、チャットサービスにおける互いに異なるアカウント名を使用することによって識別される。
【0127】
この例では、あるスレッドにおけるメッセージの解釈に、ユーザからのメッセージのコンテキストだけでなく、チャットボットからのメッセージのコンテキストも利用され得る。また、スレッドにおいて、複数のユーザのそれぞれの注文情報が互いに識別されるように生成されるが、複数のユーザのそれぞれのメッセージはスレッドにおいて共通するコンテキストを利用して解釈される。すなわち、注文管理サーバ410は、ユーザ150Aから受信したメッセージに基づいて生成した注文情報をユーザ150Aに関連付け、ユーザ150Bから受信したメッセージに基づいて生成した注文情報をユーザ150Bに関連付ける。
【0128】
[3.注文情報の生成の第2の具体例]
(対話)
図24は、メッセージ処理システム2における対話の他の例を示す図である。
図24の例では、
図15の例と同様に、チャットサービスのあるスレッドに、ユーザ150Aとユーザ150Bがメッセージを入力する。メッセージ処理システム2では、ユーザ150Aおよびユーザ150Bのそれぞれのメッセージが、スレッドに共通するコンテキストを利用して解釈されることにより、ユーザ150Aおよびユーザ150Bのそれぞれの注文情報が生成される。
【0129】
図24を参照して、メッセージMS41として、チャットボット(情報処理サーバ300)がメッセージ「本日のおすすめ:スペシャルチーズバーガ+コーラLサイズ」を出力する。一実現例では、このメッセージは、注文管理サーバ410によって生成され、情報処理サーバ300を介してコミュニケーションサーバ200へ送信される。コミュニケーションサーバ200は、注文管理サーバ410から送信されたメッセージを、チャットボットからのメッセージとして、チャットサービスに出力する。
【0130】
これに応じて、ユーザ端末100A(ユーザ150A)は、チャットサービスに、メッセージMS51として示されるように、メッセージ「それをください。」を入力する。
【0131】
これに応じて、チャットボットから、メッセージMS52として示されるように、メッセージ「あなたのご注文に、スペシャルチーズバーガと、コーラLサイズと、を追加します。他にはありますか?」が出力される。
【0132】
チャットボットから、さらに、メッセージMS51に基づいて生成された注文情報が出力される。注文情報は、画面OD51として示されるように、「スペシャルチーズバーガx1」「コーラLサイズx1」を含む。この注文情報は、1つのアイテム「スペシャルチーズバーガ」および1つのアイテム「コーラLサイズ」を表す。これらのアイテムは、このスレッドにおける過去のメッセージのコンテキストに基づく。
【0133】
より具体的には、このスレッドにおいて、メッセージMS41は「スペシャルチーズバーガ」「コーラLサイズ」を含む。これらのそれぞれは、アイテムを表す。これにより、メッセージMS41のコンテキストは、「アイテム:スペシャルチーズバーガ」「アイテム:コーラLサイズ」を含む。メッセージMS51は、このコンテキストを用いて解釈される。これにより、注文管理サーバ410は、メッセージMS51における代名詞「それ」を、上記コンテキストに含まれるアイテム「スペシャルチーズバーガ」「コーラLサイズ」として認識する。
【0134】
一方、ユーザ端末100B(ユーザ150B)は、チャットサービスに、メッセージMS61として示されるように、メッセージ「それと、フライドポテトをください。」を入力する。
【0135】
これに応じて、チャットボットから、メッセージMS62として示されるように、メッセージ「あなたのご注文に、スペシャルチーズバーガと、コーラLサイズと、を追加します。他にはありますか?」が出力される。
【0136】
チャットボットから、さらに、メッセージMS61に基づいて生成された注文情報が出力される。注文情報は、画面OD61として示されるように、「スペシャルチーズバーガx1」「コーラLサイズx1」「フライドポテトx1」を含む。この注文情報は、1つのアイテム「スペシャルチーズバーガ」および1つのアイテム「コーラLサイズ」を表す。これらのアイテムは、このスレッドにおける過去のメッセージのコンテキストに基づく。注文情報は、さらに、1つのアイテム「フライドポテト」を表す。このアイテムは、メッセージMS61に基づく。
【0137】
より具体的には、注文管理サーバ410は、メッセージMS61における代名詞「それ」を、メッセージMS51における代名詞「それ」と同様に、メッセージMS41のコンテキストに基づいて、アイテム「スペシャルチーズバーガ」「コーラLサイズ」として認識する。そして、注文管理サーバ410は、メッセージMS61に含まれる「と、フライドポテト」に基づいて、アイテム「フライドポテト」をさらに認識する。
【0138】
(情報の流れ)
図25は、
図24に示された注文情報の生成における情報の流れを模式的に示す図である。
【0139】
図25を参照して、注文管理サーバ410は、情報処理サーバ300へ、メッセージ「本日のおすすめ:スペシャルチーズバーガ+コーラLサイズ」と、このメッセージのコンテキストを送信する。情報処理サーバ300は、注文管理サーバ410からのメッセージを、チャットボットからのメッセージとして、コミュニケーションサーバ200に送信する。コミュニケーションサーバ200は、チャットサービスにおいてこのメッセージを出力する。
【0140】
情報処理サーバ300は、また、上記コンテキストをコンテキストデータベース500に格納する。
【0141】
図26は、コンテキストデータベース500に格納される情報の一例を示す図である。
図26の例では、コンテキスト「アイテム:スペシャルチーズバーガ/アイテム:コーラLサイズ」が、時刻(2022年9月1日の12時15分)とともに格納されている。
【0142】
図25に戻って、チャットボットからのメッセージに応じて、ユーザ端末100Aから、チャットサービスへ、メッセージ「それをください。」が出力される。情報処理サーバ300は、このメッセージを取得すると、コンテキストデータベース500において、
図25に示されているスレッドに関連付けられたコンテキストを検索する。そして、情報処理サーバ300は、ユーザ端末100Aからのメッセージ、検索結果として得られたコンテキスト、および、ユーザ端末100Aのユーザ(ユーザA)を特定する情報を、注文管理サーバ410へ送信する。
【0143】
注文管理サーバ410は、情報処理サーバ300から送信されたメッセージを解釈して、当該メッセージへの応答「あなたのご注文に、スペシャルチーズバーガと、コーラLサイズと、を追加します。他にはありますか?」および注文情報を生成する。解釈には、情報処理サーバ300から送信されたコンテキストが利用され得る。
【0144】
注文管理サーバ410は、生成された応答および注文情報を、上記メッセージのコンテキストとともに、情報処理サーバ300へ送信する。メッセージのコンテキストは、メッセージとともに情報処理サーバ300から送信されてきたコンテキスト、および/または、メッセージの解釈において生成されたコンテキストを含む。
【0145】
情報処理サーバ300は、注文管理サーバ410からの応答および注文情報をコミュニケーションサーバ200へ送信する。コミュニケーションサーバ200は、情報処理サーバ300から送信された応答および注文情報を、ユーザ150Aへの返信として出力する。
【0146】
情報処理サーバ300は、さらに、注文管理サーバ410から送信されたコンテキストを、コンテキストデータベース500に格納する。
【0147】
図27は、コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
図27では、さらに、2022年9月1日の12時17分のコンテキストが格納されている。このコンテキストは、同日12時15分のコンテキストと比較して、さらに「ユーザ:ユーザA」を含む。このコンテキストは、ユーザAの注文情報がアイテム「スペシャルチーズバーガ」「コーラLサイズ」を含むことを意味する。
【0148】
図25に戻って、チャットボットからのメッセージに応じて、ユーザ端末100Bから、チャットサービスへ、メッセージ「それと、フライドポテトをください。」が出力される。情報処理サーバ300は、このメッセージを取得すると、コンテキストデータベース500において、
図25に示されているスレッドに関連付けられたコンテキストを検索する。そして、情報処理サーバ300は、ユーザ端末100Bからのメッセージ、検索結果として得られたコンテキスト、および、ユーザ端末100Bのユーザ(ユーザB)を特定する情報を、注文管理サーバ410へ送信する。
【0149】
注文管理サーバ410は、情報処理サーバ300から送信されたメッセージを解釈して、当該メッセージへの応答「あなたのご注文に、スペシャルチーズバーガと、コーラLサイズと、フライドポテトと、を追加します。他にはありますか?」および注文情報を生成する。解釈には、情報処理サーバ300から送信されたコンテキストが利用され得る。
【0150】
注文管理サーバ410は、生成された応答を、上記メッセージのコンテキストとともに、情報処理サーバ300へ送信する。メッセージのコンテキストは、メッセージとともに情報処理サーバ300から送信されてきたコンテキスト、および/または、メッセージの解釈において生成されたコンテキストを含む。
【0151】
情報処理サーバ300は、注文管理サーバ410からの応答をコミュニケーションサーバ200へ送信する。コミュニケーションサーバ200は、情報処理サーバ300から送信された応答を、ユーザ150Bへの返信として出力する。
【0152】
情報処理サーバ300は、さらに、注文管理サーバ410から送信されたコンテキストを、コンテキストデータベース500に格納する。
【0153】
図28は、コンテキストデータベース500に格納される情報のさらに他の例を示す図である。
図28では、
図27と比較して、さらに、2022年9月1日の12時18分のコンテキストが格納されている。このコンテキストは、同日の12時17分のコンテキストと比較して、「アイテム:スペシャルチーズバーガ/アイテム:コーラLサイズ/アイテム:フライドポテト/ユーザ:ユーザB」を含む。このコンテキストは、ユーザAの注文情報がアイテム「スペシャルチーズバーガ」「コーラLサイズ」を含むこと、および、ユーザBの注文情報がアイテム「スペシャルチーズバーガ」「コーラLサイズ」「フライドポテト」を含むことを意味する。
【0154】
以上、
図24~
図28を参照して説明された例では、注文管理サーバ410は、アイテムを特定する情報を含むコンテキストを利用してユーザからのメッセージを解釈する場合、当該メッセージにおける代名詞を、コンテキストに含まれるアイテムとして認識する。
【0155】
[4.処理の流れ]
第2の実施の形態の情報処理サーバ300および注文管理サーバ410によって実施される処理の流れは、
図13を参照して説明された情報処理サーバ300および会話サーバ400によって実施される処理の流れと同様のものであってもよい。
【0156】
なお、第2の実施の形態では、情報処理サーバ300は、ユーザからのメッセージのコンテキストだけでなく、チャットボットからのメッセージのコンテキストも、コンテキストデータベース500に格納し得る。
【0157】
また、第2の実施の形態では、注文管理サーバ410は、応答に加えて(または応答の一部として)、注文情報を生成する。情報処理サーバ300は、注文管理サーバ410から送信された応答および注文情報(または、注文情報を含む応答)をコミュニケーションサーバ200に送信する。これにより、チャットサービスにおいて、ユーザに対して、応答および注文情報(または、注文情報を含む応答)が提供される。
【0158】
<変形例>
第1の実施の形態および第2の実施の形態の各々において説明されたサービスの内容は、メッセージ処理システムの利用態様の単なる一例である。本開示のメッセージ処理方法が適用されるサービスは、上記のものに限定されない。本開示のメッセージ処理方法は、SNS(ソーシャルネットワーキングサービス)などの、他の種類のシステムに適用されてもよい。「スレッド」は、コンテキストが共有される範囲であるエンティティの一例である。コンテキストを共有される範囲として識別可能であれば、エンティティの単位の他の例は、SNSにおける1つのトークルームであってもよいし、バーチャルアシスタントサービスにおける1つのユーザアカウントであってもよい。
【0159】
今回開示された各実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合わせても、実施することが意図される。
【符号の説明】
【0160】
1,2 メッセージ処理システム、100,100A,100B ユーザ端末、150,150A,150B ユーザ、200 コミュニケーションサーバ、300 情報処理サーバ、400 会話サーバ、410 注文管理サーバ、500 コンテキストデータベース、MS11,21~24,31~34,41,51,52,61,62 メッセージ、OD21,31,51,61 画面。