(57)【特許請求の範囲】
【請求項１】
状況のシーケンスとして表されるシナリオを記憶するシナリオ供給部と、
入力される入力テキストと、前記シナリオ供給部から供給される前記シナリオにおける前記状況とに応じて、予め学習済のモデルに基づいて出力テキストを生成する出力生成部と、
通信の接続を行う接続時刻と、通信の接続を行う相手先を識別する相手先識別情報とを、相互に関連付けた発信スケジュールとして保持するスケジュール管理部と、
前記発信スケジュールに基づいて前記接続時刻が到来したときに前記相手先識別情報によって識別される前記相手先への通信の接続を行う発信制御部と、
前記出力生成部が生成した前記出力テキストを、前記発信制御部によって接続された通信の相手先に送るための音声に変換する第１変換部と、
前記発信制御部によって接続された通信の相手先から送られてくる音声を、前記入力テキストに変換する第２変換部と、
を備え、
前記出力生成部が生成する前記出力テキストはパラメーターを含み得るものであり、
前記パラメーターを置換するための置換データを記憶する適用領域データベースと、
前記出力生成部が生成した前記出力テキストが前記パラメーターを含む場合には、前記適用領域データベースから読み出した前記置換データで前記パラメーターを置換し、置換処理を行った後の前記出力テキストを、前記第１変換部に渡すフロントエンド処理部と、
をさらに備え、
前記フロントエンド処理部は、前記入力テキストを前記第２変換部から受け取り、前記入力テキストから抽出した情報を表すデータである書込データを、前記適用領域データベースに書き込むものであり、
（１）前記適用領域データベースは、アポイントメントを管理するための予約日時のデータを記憶するものであり、前記フロントエンド処理部は、前記入力テキストから抽出した予約日時のデータを前記書込データとして前記適用領域データベースに書き込む、
または、
（２）前記適用領域データベースは、注文内容を管理するための商品識別番号と数量と金額とを含むデータを前記書込データとして前記適用領域データベースに書き込む、
の少なくともいずれか一方である、
自動発信システム。
【請求項２】
前記出力生成部は、前記出力生成部が既に出力した出力テキストである過去テキストにも応じて、前記出力テキストを生成する、
請求項１に記載の自動発信システム。
【請求項３】
前記スケジュール管理部は、前記接続時刻と前記相手先識別情報とに加えて、複数のシナリオの中の特定のシナリオを識別するためのシナリオ識別情報をさらに関連付けた前記発信スケジュールを保持するものであり、
前記シナリオ供給部は、前記シナリオ識別情報によって識別される前記シナリオを供給するものであり、
前記発信制御部は、通信の接続を行う際に、当該発信スケジュールに関連付けられた前記シナリオ識別情報を前記出力生成部に通知するものであり、
前記出力生成部は、前記発信制御部から通知された前記シナリオ識別情報によって識別される前記シナリオを、前記シナリオ供給部から受け取る、
請求項１または２に記載の自動発信システム。
【請求項４】
前記モデルの機械学習を行うための学習データを供給する学習データ供給部と、
前記学習データが供給する前記学習データを用いて、前記モデルの機械学習処理を行う学習処理部と、
をさらに備える請求項１から３までのいずれか一項に記載の自動発信システム。
【請求項５】
前記第１変換部によって音声に変換された前記出力テキストと、前記第２変換部によって音声から変換された前記入力テキストとを、時系列に記憶する履歴記憶部、
をさらに備える請求項１から４までのいずれか一項に記載の自動発信システム。
【請求項６】
シナリオ供給部に、状況のシーケンスとして表されるシナリオを記憶させておき、
出力生成部は、入力される入力テキストと、前記シナリオ供給部から供給される前記シナリオにおける前記状況とに応じて、予め学習済のモデルに基づいて出力テキストを生成し、
スケジュール管理部が、通信の接続を行う接続時刻と、通信の接続を行う相手先を識別する相手先識別情報とを、相互に関連付けた発信スケジュールとして保持し、
発信制御部は、前記発信スケジュールに基づいて前記接続時刻が到来したときに前記相手先識別情報によって識別される前記相手先への通信の接続を行い、
第１変換部は、前記出力生成部が生成した前記出力テキストを、前記発信制御部によって接続された通信の相手先に送るための音声に変換し、
第２変換部は、前記発信制御部によって接続された通信の相手先から送られてくる音声を、前記入力テキストに変換し、
前記出力生成部が生成する前記出力テキストはパラメーターを含み得るものであり、
適用領域データベースは、前記パラメーターを置換するための置換データを記憶するものであり、
フロントエンド処理部は、前記出力生成部が生成した前記出力テキストが前記パラメーターを含む場合には、前記適用領域データベースから読み出した前記置換データで前記パラメーターを置換し、置換処理を行った後の前記出力テキストを、前記第１変換部に渡すものであり、
前記フロントエンド処理部は、さらに、前記入力テキストを前記第２変換部から受け取り、前記入力テキストから抽出した情報を表すデータである書込データを、前記適用領域データベースに書き込むものであり、
（１）前記適用領域データベースは、アポイントメントを管理するための予約日時のデータを記憶するものであり、前記フロントエンド処理部は、前記入力テキストから抽出した予約日時のデータを前記書込データとして前記適用領域データベースに書き込む、
または、
（２）前記適用領域データベースは、注文内容を管理するための商品識別番号と数量と金額とを含むデータを前記書込データとして前記適用領域データベースに書き込む、
の少なくともいずれか一方を行う、
処理方法。
【請求項７】
請求項１から５までのいずれか一項に記載の自動発信システムとして、コンピューターを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動発信システム、処理方法、およびプログラムに関する。
【背景技術】
【０００２】
人に代わって、コンピューター等の機器が人とのコミュニケーションを取るための技術が、益々求められてきている。例えば「チャットボット」（chat bot）は、人工知能の技術等を用いて、人からのテキストによる質問に対して、テキストで応答することができる。また、音声認識や音声合成の技術も実用化されてきており、上記のチャットボットと、音声認識技術および音声合成技術とを組み合わせることにより、音声による問い合わせに音声で応答するシステムを実現することも可能である。
【０００３】
特許文献１には、音声による問い合わせに対して音声で回答する音声問合せシステムが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第６５５５８３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の音声問合せシステムは、人からの音声による問い合わせに対して、音声で応答することが可能である。しかしながら、特許文献１に記載の音声問合せシステムは、受動的である。特許文献１に記載の技術では、システム（コンピューター等の機器）が、自発的に相手との間の通信を接続させて、自発的にコミュニケーションを進めることができなかった。
【０００６】
本発明は、上記の課題認識に基づいて行なわれたものであり、自発的に相手との間の通信を接続させて、自発的にコミュニケーションを進めることのできる自動発信システム、処理方法、およびプログラムを提供しようとするものである。
【課題を解決するための手段】
【０００７】
［１］上記の課題を解決するため、本発明の一態様による自動発信システムは、状況のシーケンスとして表されるシナリオを記憶するシナリオ供給部と、入力される入力テキストと、前記シナリオ供給部から供給される前記シナリオにおける前記状況とに応じて、予め学習済のモデルに基づいて出力テキストを生成する出力生成部と、通信の接続を行う接続時刻と、通信の接続を行う相手先を識別する相手先識別情報とを、相互に関連付けた発信スケジュールとして保持するスケジュール管理部と、前記発信スケジュールに基づいて前記接続時刻が到来したときに前記相手先識別情報によって識別される前記相手先への通信の接続を行う発信制御部と、前記出力生成部が生成した前記出力テキストを、前記発信制御部によって接続された通信の相手先に送るための音声に変換する第１変換部と、前記発信制御部によって接続された通信の相手先から送られてくる音声を、前記入力テキストに変換する第２変換部とを備えるものである。
【０００８】
［２］また、本発明の一態様は、上記の自動発信システムにおいて、前記出力生成部は、前記出力生成部が既に出力した出力テキストである過去テキストにも応じて、前記出力テキストを生成するものである。
【０００９】
［３］また、本発明の一態様は、上記の自動発信システムにおいて、前記スケジュール管理部は、前記接続時刻と前記相手先識別情報とに加えて、複数のシナリオの中の特定のシナリオを識別するためのシナリオ識別情報をさらに関連付けた前記発信スケジュールを保持するものであり、前記シナリオ供給部は、前記シナリオ識別情報によって識別される前記シナリオを供給するものであり、前記発信制御部は、通信の接続を行う際に、当該発信スケジュールに関連付けられた前記シナリオ識別情報を前記出力生成部に通知するものであり、前記出力生成部は、前記発信制御部から通知された前記シナリオ識別情報によって識別される前記シナリオを、前記シナリオ供給部から受け取るものである。
【００１０】
［４］また、本発明の一態様は、上記の自動発信システムにおいて、前記出力生成部が生成する前記出力テキストはパラメーターを含み得るものであり、前記パラメーターを置換するための置換データを記憶する適用領域データベースと、前記出力生成部が生成した前記出力テキストが前記パラメーターを含む場合には、前記適用領域データベースから読み出した前記置換データで前記パラメーターを置換し、置換処理を行った後の前記出力テキストを、前記第１変換部に渡すフロントエンド処理部とをさらに具備するものである。
【００１１】
［５］また、本発明の一態様は、上記の自動発信システムにおいて、前記フロントエンド処理部は、前記入力テキストを前記第２変換部から受け取り、前記入力テキストから抽出した情報を表すデータである書込データを、前記適用領域データベースに書き込む、ものである。
【００１２】
［６］また、本発明の一態様は、上記の自動発信システムにおいて、前記モデルの機械学習を行うための学習データを供給する学習データ供給部と、前記学習データが供給する前記学習データを用いて、前記モデルの機械学習処理を行う学習処理部と、をさらに備えるものである。
【００１３】
［７］また、本発明の一態様は、上記の自動発信システムにおいて、前記第１変換部によって音声に変換された前記出力テキストと、前記第２変換部によって音声から変換された前記入力テキストとを、時系列に記憶する履歴記憶部、をさらに備えるものである。
【００１４】
［８］また、本発明の一態様は、シナリオ供給部に、状況のシーケンスとして表されるシナリオを記憶させておき、出力生成部は、入力される入力テキストと、前記シナリオ供給部から供給される前記シナリオにおける前記状況とに応じて、予め学習済のモデルに基づいて出力テキストを生成し、スケジュール管理部が、通信の接続を行う接続時刻と、通信の接続を行う相手先を識別する相手先識別情報とを、相互に関連付けた発信スケジュールとして保持し、発信制御部は、前記発信スケジュールに基づいて前記接続時刻が到来したときに前記相手先識別情報によって識別される前記相手先への通信の接続を行い、第１変換部は、前記出力生成部が生成した前記出力テキストを、前記発信制御部によって接続された通信の相手先に送るための音声に変換し、第２変換部は、前記発信制御部によって接続された通信の相手先から送られてくる音声を、前記入力テキストに変換する、処理方法である。
【００１５】
［９］また、本発明の一態様は、上記の［１］から［７］までのいずれかに記載の自動発信システムとして、コンピューターを機能させるためのプログラムである。
【発明の効果】
【００１６】
本発明によれば、シナリオにおける状況と、外部からの入力に対応する出力を自動的に生成するとともに、その入力および出力を音声として扱うことのできるシステムを実現できる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態による自動発信システムの装置構成例を示すブロック図である。
【図２】同実施形態によるチャットボットサーバー装置の概略機能構成を示すブロック図である。
【図３】同実施形態によるシナリオサーバー装置の概略機能構成を示すブロック図である。
【図４】同実施形態による電話端末装置の概略機能構成を示すブロック図である。
【図５】同実施形態によるシナリオサーバー装置が提供し、チャットボットサーバー装置が使用するシナリオデータの構成およびデータ例を示す概略図である。
【図６】同実施形態によるシナリオサーバー装置が提供し、チャットボットサーバー装置が使用するシナリオデータの構成および別のデータ例を示す概略図である。
【図７】同実施形態によるチャットボットサーバー装置のチャット出力生成部が出力するテキストの一例を示す概略図である。
【図８】同実施形態によるチャットボットサーバー装置のチャット出力生成部が出力するテキストの例と、そのテキスト内に含まれるパラメーターの置換の状況を示す概略図である。
【図９】同実施形態によるチャットボットサーバー装置に入力されるテキストに基づくデータ抽出の方法の例を示す概略図である。
【図１０】同実施形態によるチャットボットサーバー装置が、音声を介して相手側と行うチャットのやりとりの例を示す概略図である。
【図１１】同実施形態によるチャットボットサーバー装置のチャット出力生成部が出力するテキストの別の例と、そのテキスト内に含まれるパラメーターの置換の状況を示す概略図である。
【図１２】同実施形態によるチャットボットサーバー装置が、相手側と行うチャットのやりとりの別の例を示す概略図である。
【図１３】同実施形態による電話端末装置のスケジュール管理部が管理する発信スケジュールのデータの構成例を示す概略図である。
【図１４】同実施形態による電話端末装置の対話履歴記憶部が記憶する対話履歴のデータの構成例を示す概略図である。
【図１５】同実施形態による自動発信システムが実行する処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１８】
次に、本発明の一実施形態について、図面を参照しながら説明する。本実施形態は、システムが、相手からの最初のアクションを待つのではなく、自発的に相手との通信を接続させたうえで、相手（人）との間で自発的に対話を行うことができるようにするものである。そのために、本実施形態では、システムが例えば通信手段としての電話を自動的に発信する。ただし、電話以外の通信手段を用いてもよい。また、本実施形態では、予め定めておいたシナリオに沿って、システムが相手（人）との間の対話を自発的に進めるものである。そのために、本実施形態では、一部において機械学習の技術を利用する。
【００１９】
図１は、本実施形態による自動発信システムの装置構成例を示すブロック図である。図示するように、自動発信システム１は、チャットボットサーバー装置１００と、シナリオサーバー装置２００と、電話端末装置３００と、音声生成サーバー装置４００と、音声認識サーバー装置５００と、操作用端末装置６００とを含んで構成される。チャットボットサーバー装置１００と、シナリオサーバー装置２００と、電話端末装置３００と、音声生成サーバー装置４００と、音声認識サーバー装置５００と、操作用端末装置６００は、適宜、インターネットや無線ＬＡＮ等を用いて相互に通信を行うことができるように構成されている。
【００２０】
チャットボットサーバー装置１００は、チャットサービスを実現するための機能を持つサーバー装置である。通常のチャットボットサーバー装置は相手方からの質問を受け付けてその質問に対する答弁を自動的に生成するものである。つまり、通常のチャットボットサーバー装置は、対応的なものである。一方、本実施形態でのチャットボットサーバー装置１００は、予め記憶しておいたシナリオに基づいて、自発的な対話を成立させる。そのような自発的な対話を行うための詳細な構成については、別の図面を参照しながら後で説明する。なお、チャットボットサーバー装置１００は、例えば、サーバー型コンピューターやＰＣ（パーソナルコンピューター）等を用いて実現される。
【００２１】
シナリオサーバー装置２００は、チャットボットサーバー装置１００に対してシナリオのデータを提供する。また、シナリオサーバー装置２００は、チャットボットサーバー装置１００が機械学習処理をするための学習データを、チャットボットサーバー装置１００に提供する。この学習データは、シナリオサーバー装置２００が提供するシナリオに依存するものであってもよい。さらに、シナリオサーバー装置２００は、電話端末装置３００に対して、電話を発信するためのスケジュールのデータを提供する。なお、シナリオサーバー装置２００は、例えば、サーバー型コンピューターやＰＣ等を用いて実現される。
【００２２】
電話端末装置３００は、予め記憶しておいたスケジュールのデータにしたがって、電話を発信する。これにより、電話端末装置３００は、ネットワーク２を介して、相手側である電話端末装置８００との間で通話状態となる。通話状態において、電話端末装置３００は、チャットボットサーバー装置１００が出力するテキストデータに基づく音声（音声生成サーバー装置４００からの出力）を、相手側に送る。また、通話状態において、電話端末装置３００は、相手側の電話端末装置から受けた音声を、音声認識サーバー装置５００に渡す。これにより、その音声の認識結果が、チャットボットサーバー装置１００に渡される。なお、電話端末装置３００は、電話を発信する際に、そのスケジュールにおいて定められているシナリオの識別情報を、チャットボットサーバー装置１００に対して通知する。つまり、電話端末装置３００は、指定したシナリオ識別情報に基づいてチャットボットサーバー装置１００が行う対話の音声を、電話の相手側との間でやりとりする。
【００２３】
また、本実施形態では、電話端末装置３００は、チャットボットサーバー装置１００から渡される時系列の入出力テキストを、ログとして記憶し、蓄積する。ログの記憶については、後でも詳細に説明する。
【００２４】
なお、電話端末装置３００は、例えば、いわゆるスマートフォンと、スマートフォン上で実行可能なアプリ（アプリケーションプログラム）とを用いて実現される。
【００２５】
音声生成サーバー装置４００は、入力されるテキストデータを基に、音声を生成して出力する。具体的には、音声生成サーバー装置４００は、チャットボットサーバー装置１００におけるチャット出力生成部１１０が生成した出力テキストを、電話端末装置における発信制御部３４０によって接続された通信の相手先に送るための音声に変換する。つまり、音声生成サーバー装置４００は、入力されるテキストデータを読み上げるのと同等の機能を有する。なお、音声生成サーバー装置４００は、「第１変換部」とも呼ばれる。音声生成サーバー装置４００は、音声合成の技術を用いて実現される。なお、音声合成の技術自体は、既存の技術である。本実施形態において、音声生成サーバー装置４００は、チャットボットサーバー装置１００から出力されるテキストデータを取得し、そのテキストデータを基に音声を生成して、電話端末装置３００に渡す。なお、音声生成サーバー装置４００は、ＴＴＳ（text-to-speech）とも呼ばれる。
【００２６】
音声認識サーバー装置５００は、入力される音声を言語として認識し、その認識結果のテキストデータを生成して出力する。具体的には、音声認識サーバー装置５００は、電話端末装置３００の発信制御部３４０によって接続された通信の相手先から送られてくる音声を、チャットボットサーバー装置１００におけるチャット出力生成部１１０に渡すための入力テキストに変換する。なお、音声認識サーバー装置５００は、「第２変換部」とも呼ばれる。音声認識の技術自体は、既存の技術である。本実施形態において、音声認識サーバー装置５００は、電話端末装置３００から出力される音声を認識し、認識結果のテキストデータをチャットボットサーバー装置１００に渡す。なお、音声認識サーバー装置は、ＳＴＴ（speech-to-text）とも呼ばれる。
【００２７】
操作用端末装置６００は、シナリオサーバー装置２００が持つ機能を使用するための端末装置である。ユーザーは、この操作用端末装置６００を操作することによって、シナリオサーバー装置２００が保持するシナリオのデータを編集したり、シナリオサーバー装置２００が保持する学習データを編集したりすることができる。また、この操作用端末装置６００を操作することによって、電話端末装置３００に渡すためのスケジュールのデータを編集することができる。操作用端末装置６００は、例えば、ＰＣやスマートフォンやタブレット端末装置等を用いて実現される。
【００２８】
電話端末装置３００は、ネットワーク２に接続可能である。ネットワーク２は、例えば、通信事業者が運営する電話網である。電話端末装置３００は、ネットワーク２を介して、外部の電話端末装置８００との間で通信することが可能である。電話端末装置８００は、自動発信システム１が電話を発信する相手方の電話端末である。電話端末装置８００は、例えば、携帯型のスマートフォンや、固定電話機である。この図では、１台の電話端末装置８００のみを記載しているが、自動発信システム１は、電話番号を指定することにより、任意の相手方の電話端末装置８００に対して電話を発信することができる。
【００２９】
なお、ネットワーク２は、電話網に限らず、例えばＩＰ網（インターネット等）や、他のネットワークであってもよい。「ＩＰ」は、インターネットプロトコル（internet protocol）の略である。
【００３０】
以上、説明したように、本実施形態において、電話端末装置３００は、予め設定されたスケジュールデータにしたがって、電話を発信する。また、電話端末装置３００は、発信した電話において使用するシナリオを識別する情報を、チャットボットサーバー装置１００に渡す。チャットボットサーバー装置１００は、指定されたシナリオにしたがって、テキストデータを生成し、出力する。音声生成サーバー装置４００は、チャットボットサーバー装置１００が出力するテキストに基づいて音声を生成する。電話端末装置３００は、音声生成サーバー装置４００が生成した音声を、電話の相手方に流す。また、電話端末装置３００は、電話の相手方からの音声を、音声認識サーバー装置５００に渡す。音声認識サーバー装置５００は、電話端末装置３００から渡された音声の認識処理を行い、認識結果であるテキストデータをチャットボットサーバー装置１００に渡す。
【００３１】
チャットボットサーバー装置１００は、内部に機械学習済みのモデルを持っている。チャットボットサーバー装置１００は、この学習済みのモデルを用いて、シナリオのデータと、音声認識サーバー装置５００から渡されるテキストデータとに基づき、上記の出力用のテキストデータを自動的に生成することができる。
【００３２】
以下では、自動発信システム１を構成する装置が持つ機能の詳細について説明する。
【００３３】
図２は、チャットボットサーバー装置１００の概略機能構成を示すブロック図である。図示するように、チャットボットサーバー装置１００は、チャット出力生成部１１０と、シナリオ供給部１２０と、フロントエンド処理部１３０と、適用領域データベース１４０と、入力部１５０と、出力部１６０と、学習データ供給部１７０と、学習処理部１８０とを含んで構成される。これらの各機能部は、例えば、コンピューターと、プログラムとで実現することが可能である。また、各機能部は、必要に応じて、記憶手段を有する。記憶手段は、例えば、プログラム上の変数や、プログラムの実行によりアロケーションされるメモリーである。また、必要に応じて、磁気ハードディスク装置やソリッドステートドライブ（ＳＳＤ）といった不揮発性の記憶手段を用いるようにしてもよい。また、各機能部の少なくとも一部の機能を、プログラムではなく専用の電子回路として実現してもよい。各部の機能は、次の通りである。
【００３４】
チャット出力生成部１１０は、内部に持つ機械学習モデルを用いて、出力用のテキストデータを生成する。なお、チャット出力生成部１１０は、単に「出力生成部」とも呼ばれる。本実施形態において、チャット出力生成部１１０は、少なくとも、シナリオが示す現状況（present situation）と、相手側から渡される入力テキストとに基づいて、出力テキストを生成する。つまり、出力テキストは、学習モデルが持つ状態と、シナリオが示す現状況と、入力テキストに基づくものである。チャット出力生成部１１０は、電話端末装置３００側から通知されたシナリオ識別情報によって識別されるシナリオを、シナリオ供給部１２０から受け取るようにしてもよい。ただし、チャット出力生成部１１０が、自らが過去に出力した出力テキスト（過去テキストと呼ぶ）にも基づいて次の出力テキストを生成するようにしてもよい。チャット出力生成部１１０は、学習モデルとして、例えばニューラルネットワークを用いる。例えば、既存技術に属する学習手法である誤差逆伝播法（backpropagation）を用いることができる。この学習モデルは、予め、学習データを用いて学習しておくようにする。なお、学習処理部１８０が実行する学習処理によって、随時、学習モデルの更新（再学習）が可能である。なお、チャット出力生成部１１０が出力する出力テキストは、パラメーターを含んでいてもよい。出力テキスト内のパラメーターは、フロントエンド処理部１３０によって実値で置換される。
【００３５】
チャット出力生成部１１０が生成する出力は、例えば、次の式（１）によって表され得る。
【００３６】
Ｔｏｕｔｐｕｔ＝ｆ（ｓｉｔｕａｔｉｏｎ，Ｔｉｎｐｕｔ，Ｔｏｕｔｐｕｔ＿ｐ  ；Θ）
・・・（１）
【００３７】
式（１）において、Ｔｏｕｔｐｕｔは、チャット出力生成部１１０が生成する出力である。また、ｓｉｔｕａｔｉｏｎは、現状況（現在の状況の状況識別情報）である。現状況は、チャット出力生成部１１０がシナリオ供給部１２０から受け取るシナリオのデータ内で規定される。Ｔｉｎｐｕｔは、直前の入力テキストである。直前の入力テキストは、チャット出力生成部１１０が入力部１５０からフロントエンド処理部１３０を経由して受け取るものである。Ｔｏｕｔｐｕｔ＿ｐは、直前の出力テキストである。即ち、Ｔｏｕｔｐｕｔ＿ｐは、前回の処理でチャット出力生成部１１０が生成した出力である。また、Θは、学習済みのモデルの状態を表す変数である。チャット出力生成部１１０が内部に持つモデルが例えばニューラルネットワークである場合には、学習済みのモデルの状態とは、そのニューラルネットワークに含まれる全ノードにおける重み付けパラメーターの値のベクトルである。つまり、変数Θは、ベクトル値を持ち得る。また、式（１）において、ｆ（）は、関数である。つまり、チャット出力生成部１１０が生成する出力は、学習済みのモデルの状態（モデルのパラメーター値）と、現状況と、直前の入力と、直前の出力によって決定される。
【００３８】
シナリオ供給部１２０は、シナリオのデータを、チャット出力生成部１１０およびフロントエンド処理部１３０に供給する。シナリオ供給部１２０は、シナリオサーバー装置２００のシナリオ管理部２１０から渡されるシナリオを、多数保持しておくことができる。１件のシナリオデータは、複数件の状況（situation）のシーケンスである。つまり、シナリオは、状況のシーケンスとして表されるものである。１件のシナリオデータは、シナリオ識別情報によって識別される。
【００３９】
フロントエンド処理部１３０は、チャット出力生成部１１０のフロントエンドの処理を行う。また、フロントエンド処理部１３０は、この処理のために、適用領域データベース１４０のデータを読んだり書いたりすることができる。つまり、フロントエンド処理部１３０は、入力テキストを入力部１５０から受け取り、チャット出力生成部１１０に渡す。この際、フロントエンド処理部１３０は、入力テキストに含まれる内容の一部を、適用領域データベース１４０に書き込むことができる。また、フロントエンド処理部１３０は、入力テキストの内容を全く適用領域データベース１４０には書き込まずに、チャット出力生成部１１０に渡してもよい。また、フロントエンド処理部１３０は、チャット出力生成部１１０が生成した出力テキストを、出力部１６０に渡す。この際、フロントエンド処理部１３０は、チャット出力生成部１１０から渡される出力テキストにパラメーターが含まれる場合には、そのパラメーターを実値で置換することができる。この実値は、適用領域データベース１４０から読み出されるデータである。チャット出力生成部１１０から渡される出力テキストにパラメーターが含まれない場合には、フロントエンド処理部１３０は、そのテキストをそのまま出力部１６０に渡す。
【００４０】
つまりフロントエンド処理部１３０は、チャット出力生成部１１０が生成した出力テキストがパラメーターを含む場合には、適用領域データベース１４０から読み出した置換データでそのパラメーターを置換し、置換処理を行った後の出力テキストを、出力部１６０経由で、音声生成サーバー装置４００に渡す。また、フロントエンド処理部１３０は、入力テキストを音声認識サーバー装置５００から入力部１５０経由で受け取り、入力テキストから抽出した情報を表すデータである書込データを、適用領域データベース１４０に書き込む。
【００４１】
なお、フロントエンド処理部１３０は、ログを出力することができる。ログは、フロントエンド処理部１３０が入力部１５０から受け取った入力テキストや、フロントエンド処理部１３０が出力部１６０に渡した出力テキストの履歴の記録である。このログにおいて、入力テキストや出力テキストは、日時と関連付けられていてもよい。なお、フロントエンド処理部１３０がログを出力する先は、電話端末装置３００の対話履歴記憶部３７０である。
【００４２】
適用領域データベース１４０は、適用領域に関するデータを保持するデータベースである。適用領域がアポイントメントの管理である場合、適用領域データベース１４０は、例えば、予約日時に関するデータを保持する。適用領域がアンケート実施である場合、適用領域データベース１４０は、アンケートにおける質問と、それらの質問に対する回答のデータを保持する。適用領域データベース１４０が保持するデータは、ここに例示したものには限定されない。あらゆる領域に、このチャットボットサーバー装置１００を適用することが可能である。
【００４３】
入力部１５０は、外部から入力されるテキストを取得し、フロントエンド処理部１３０に渡す。この入力テキストは、音声認識サーバー装置５００から渡されるものである。この入力テキストは、通話の相手から電話端末装置３００が受け取った音声を基に認識処理した結果である。入力部１５０からフロントエンド処理部１３０に渡されたテキストは、チャット出力生成部１１０への入力となる。
【００４４】
出力部１６０は、フロントエンド処理部１３０から渡されたテキストを、外部に出力する。この出力テキストは、チャット出力生成部１１０で生成され、さらにフロントエンド処理部１３０によって処理されたテキストである。出力部１６０が出力したテキストは、音声生成サーバー装置４００において音声に変換され、電話端末装置３００に渡される。この音声は、通話の相手に対して伝えられることとなる。
【００４５】
学習データ供給部１７０は、チャット出力生成部１１０が持つ機械学習モデルに学習させるための学習データを供給する。学習データは、シナリオサーバー装置２００内の学習データ管理部２２０によって生成され、または編集される。
【００４６】
学習処理部１８０は、チャット出力生成部１１０が内部に持つ機械学習モデルの学習を行う。具体的には、学習処理部１８０は、学習データ供給部１７０によって供給される学習データを用いて、チャット出力生成部１１０内のモデルの学習処理を行う。学習データは、例えば、当該モデルに対する入出力データの組であり、正例と負例のいずれか一方、または両方を含んでいてよい。学習処理部１８０は、このような学習データを用いて、チャット出力生成部１１０内のモデルを調整する。そのモデルが例えばニューラルネットワークである場合、学習処理部１８０は、学習データを用いて、当該ニューラルネットワークの各ノードにおける入出力の重みパラメーターの値を最適化する処理を行う。なお、モデルの学習処理自体は、既存の技術を用いて実現可能である。
【００４７】
図３は、シナリオサーバー装置２００の概略機能構成を示すブロック図である。図示するように、シナリオサーバー装置２００は、シナリオ管理部２１０と、学習データ管理部２２０と、スケジュール管理部２３０とを含んで構成される。これらの各機能部もまた、例えば、コンピューターと、プログラムとで実現することが可能である。また、各機能部は、必要に応じて、記憶手段を有する。また、各機能部の少なくとも一部の機能を、プログラムではなく専用の電子回路として実現してもよい。各部の機能は、次の通りである。
【００４８】
シナリオ管理部２１０は、チャットボットサーバー装置１００が使用するシナリオのデータを管理する。具体的には、シナリオ管理部２１０は、シナリオのデータを生成したり編集したりする。シナリオ管理部２１０は、操作用端末装置６００からの操作に基づいてシナリオを管理する。シナリオ管理部２１０は、複数のシナリオを管理することができる。個々のシナリオは、シナリオ識別情報によって識別され、適宜選択されて使用される。なお、シナリオ管理部２１０が生成し、または編集したシナリオのデータは、チャットボットサーバー装置１００内のシナリオ供給部１２０に渡される。
【００４９】
学習データ管理部２２０は、チャットボットサーバー装置１００が使用する学習データを管理する。具体的には、学習データ管理部２２０は、学習データを生成したり編集したりする。学習データ管理部２２０は、操作用端末装置６００からの操作に基づいて学習データを管理する。この学習データは、チャットボットサーバー装置１００内に存在する機械学習モデルの機械学習を行うために用いられる。なお、学習データ管理部２２０が生成し、または編集した学習データは、チャットボットサーバー装置１００内の学習データ供給部１７０に渡される。
【００５０】
スケジュール管理部２３０は、電話を発信するスケジュールのデータを管理する。スケジュールのデータは、電話端末装置３００内のスケジュール管理部３２０が保持する。スケジュールのデータは、電話を発信する日時や、発信後に用いられるシナリオのシナリオ識別情報を含む。スケジュール管理部２３０は、操作用端末装置６００からの操作に基づいてスケジュールのデータを管理する。
【００５１】
図４は、電話端末装置３００の概略機能構成を示すブロック図である。図示するように、電話端末装置３００は、ネットワークインターフェース部３１０と、スケジュール管理部３２０と、発信履歴記憶部３３０と、発信制御部３４０と、音声入力部３５０と、音声出力部３６０と、対話履歴記憶部３７０とを含んで構成される。これらの各機能部もまた、例えば、コンピューターと、プログラムとで実現することが可能である。また、各機能部は、必要に応じて、記憶手段を有する。また、各機能部の少なくとも一部の機能を、プログラムではなく専用の電子回路として実現してもよい。各部の機能は、次の通りである。
【００５２】
ネットワークインターフェース部３１０は、ネットワーク２に対するインターフェースの機能を持つ。ネットワークインターフェース部３１０は、ネットワーク２内の交換機に対して呼（call）の発信を要求したり、交換機からの呼の着信の通知に対応したりする。また、ネットワークインターフェース部３１０は、通信相手の電話端末装置との間で音声の送受信を行う。ネットワークインターフェース部３１０は、その他、ネットワーク２が持つ機能を利用するための各種の制御を行う。
【００５３】
スケジュール管理部３２０は、自動発信のスケジュールを記憶し、管理する。スケジュール管理部３２０は、シナリオサーバー装置２００内のスケジュール管理部２３０と協調しながら、自動発信のスケジュールを管理する。自動発信のスケジュールのデータの構成については、後で別の図を参照しながら説明する。
【００５４】
なお、スケジュール管理部３２０は、少なくとも、通信の接続を行う接続時刻と、通信の接続を行う相手先を識別する相手先識別情報とを、相互に関連付けた発信スケジュールとして保持する。また、スケジュール管理部３２０は、上記に加えてさらにシナリオ識別情報を関連付けた発信スケジュールを保持するようにしてもよい。
【００５５】
発信履歴記憶部３３０は、自動発信の履歴を記憶する。具体的には、発信履歴記憶部３３０は、自動発信を行った日時や、自動発信の相手先の電話番号や、通話が終了した日時等を、履歴データとして記憶する。
【００５６】
発信制御部３４０は、スケジュール管理部３２０が管理するスケジュールに基づいて、また電話端末装置３００内の時計（クロック）を参照しながら、自動発信を実行するための制御を行う。具体的には、発信制御部３４０は、スケジュールのデータを読み出し、指定された時刻に、指定された相手先の電話番号に対して発信を行うように、ネットワークインターフェース部３１０を制御する。つまり、発信制御部３４０は、発信スケジュールに基づいて接続時刻が到来したときに相手先識別情報によって識別される相手先への通信の接続を行うものである。
【００５７】
音声入力部３５０は、外部から音声を取得し、その音声を、通話中の相手先に対して送るために、ネットワークインターフェース部３１０に渡す。具体的には、音声入力部３５０は、チャットボットサーバー装置１００の出力部１６０から音声を取得する。
【００５８】
音声出力部３６０は、通話中の相手先からの音声を受け取り、その音声を外部に出力する。具体的には、音声出力部３６０は、チャットボットサーバー装置１００の入力部に音声を渡す。
【００５９】
電話端末装置３００が上記のように音声入力部３５０および音声出力部３６０を持つことにより、通話の相手先の電話端末装置は、チャットボットサーバー装置１００との間での音声によるチャットが行えるようになる。
【００６０】
対話履歴記憶部３７０は、電話端末装置３００と、相手方の電話端末装置との間の対話の履歴を記憶する。なお、対話履歴記憶部３７０は、単に「履歴記憶部」とも呼ばれる。具体的には、対話履歴記憶部３７０は、チャットボットサーバー装置１００から、対話のテキストデータを受け取り、そのテキストデータを時系列の履歴として保存する。対話履歴記憶部３７０は、少なくとも、音声生成サーバー装置４００によって音声に変換された出力テキストと、音声認識サーバー装置５００によって音声から変換された入力テキストとを、時系列に記憶する。対話履歴記憶部３７０が記憶するデータの構成については、後で別の図を参照しながら説明する。
【００６１】
図５は、シナリオサーバー装置２００が提供し、チャットボットサーバー装置１００が使用するシナリオデータの構成およびデータ例を示す概略図である。図示するように、シナリオデータは、データ項目として、シナリオ識別情報と、シナリオ名称を持つ。シナリオ識別情報は、１件のシナリオをユニークに識別するための情報である。また、シナリオ名称は、そのシナリオの内容を簡潔に表す言葉である。また、１件のシナリオは、１件または複数件の状況を持つ。１件のシナリオが複数件の状況を持つ場合には、それらの状況は、順序付けられる。各々の状況は、データ項目として、状況識別情報と、内容と、データベースアクセスとを持つ。状況識別情報は、状況をユニークに識別するための情報である。内容は、その状況を表す言葉である。データベースアクセスは、その状況における、チャットボットサーバー装置１００内のフロントエンド処理部１３０による、適用領域データベース１４０へのアクセスの内容を表す。
【００６２】
図５に示す例では、シナリオ識別情報は「ＳＣＥ００１」である。またシナリオ名称は「アポイントメント獲得」である。また、この例では、シナリオは、４つの状況を持つ。各状況は、１から４まで、順序付けられている。これは、シナリオの実行の際に、順序付けられた状況を順次進めていくべきものであることを表す。例えば、１番目の状況に関して、状況識別情報は「ＡＢ４５６」、内容は「アポイントメントの用件であることを告げる」、データベースアクセスは「−」（なし）である。また、２番目の状況に関して、状況識別情報は「ＷＲ０２０」、内容は「日時を提案する」、データベースアクセスは「読み出し：空きスケジュール」である。これは、当該シナリオを実行する際に、２番目の状況において、フロントエンド処理部１３０が、適用領域データベース１４０から空き領域を特定するためのデータを読み出すことを表している。３番目の状況に関して、状況識別情報は「ＴＱ００３」、内容は「相手の都合を聞き、決定する」、データベースアクセスは「−」（なし）である。４番目の状況に関して、状況識別情報は「ＡＢ４６０」、内容は「決定したスケジュールを確認する」、データベースアクセスは「書き込み：決定スケジュール」である。これは、当該シナリオを実行する際に、４番目の状況において、フロントエンド処理部１３０が、出力テキストや入力テキスト等から決定されるスケジュールを適用領域データベース１４０に書き込むことを表している。
【００６３】
図６は、シナリオサーバー装置２００が提供し、チャットボットサーバー装置１００が使用するシナリオデータの構成および別のデータ例を示す概略図である。図６に示すデータの構造は、図５に示したデータの構造と同様である。図６に示す例では、シナリオ識別情報は「ＳＣＥ０１１」である。またシナリオ名称は「アンケート実施」である。この例では、シナリオは、８つの状況を持つ。各状況は、１から８まで、順序付けられている。例えば、１番目の状況に関して、状況識別情報は「ＥＱ１０１」、内容は「アンケートの用件であることを告げる」、データベースアクセスは「−」（なし）である。２番目の状況に関して、状況識別情報は「ＱＵ１０１」、内容は「質問１を読み、回答を求める」、データベースアクセスは「読み出し：質問１」である。３番目の状況に関して、状況識別情報は「ＡＮ１０１」、内容は「質問１の回答を得る」、データベースアクセスは「書き込み：回答１」である。４番目および５番目の状況のペアは、質問２に関するものである。さらに、６番目および７番目の状況のペアは、質問３に関するものである。また、８番目の状況に関して、状況識別情報は「ＥＱ８０１」、内容は「アンケートの謝礼について説明する」、データベースアクセスは「−」（なし）である。このシナリオを実行する際には、シナリオ内に含まれる状況のシーケンスにしたがって、チャットボットサーバー装置１００は、質問１から質問３までを順次データベースから読み出し、相手側の電話端末装置８００向けに出力する。また、各質問に対応して、チャットボットサーバー装置１００は、受け取った入力である回答を、順次データベースに書き込む。
【００６４】
図７は、チャットボットサーバー装置１００のチャット出力生成部１１０が出力するテキストの一例を示す概略図である。図７に示すテキストは、内部のチャットモデルに基づいて、チャットボットサーバー装置１００のチャット出力生成部１１０が生成するものである。生成されるテキストは、「こんにちは。ＡＢＣ株式会社の佐倉です。次のミーティングの日程調整の件でお電話しています。」という出力テキストである。このテキストは、図５に示したシナリオ（シナリオ識別情報は、ＳＣＥ００１）の、１番目の状況のときに、現状況（状況識別情報は、ＡＢ４５６）と、直前の入力「ヌル」と、直前の出力「ヌル」とに基づいて、チャット出力生成部１１０が生成するものである。チャットモデルは、このような出力を生成するように、予め学習済みである。この例では、チャット出力生成部１１０が出力したテキストは、パラメーターを持たない。したがって、このテキストは、そのまま、チャット出力生成部１１０からフロントエンド処理部１３０に渡され、さらに、フロントエンド処理部１３０から出力部１６０に渡される。
【００６５】
図８は、チャットボットサーバー装置１００のチャット出力生成部１１０が出力するテキストの例と、そのテキスト内に含まれるパラメーターの置換の状況を示す概略図である。図示するように、チャットボットサーバー装置１００のチャット出力生成部１１０が出力するテキストは、「％ＤＡＴＥ  の  ％ＴＩＭＥ  からのご都合はいかがでしょうか。」である。このテキストは、図５に示したシナリオ（シナリオ識別情報は、ＳＣＥ００１）の、２番目の状況のときに、現状況（状況識別情報は、ＷＲ０２０）と、直前の入力「ヌル」と、直前の出力「こんにちは。ＡＢＣ株式会社の佐倉です。次のミーティングの日程調整の件でお電話しています。」とに基づいて、チャット出力生成部１１０が生成するものである。チャットモデルは、このような出力を生成するように、予め学習済みである。ここで、チャット出力生成部１１０が出力するテキスト内の「％ＤＡＴＥ」および「％ＴＩＭＥ」は、置換されるべきパラメーターである。このようなパラメーターが存在するため、フロントエンド処理部１３０は、適用領域データベース１４０を検索する。ここでは、所定の条件に従って、適切な日および時刻を取得するように、フロントエンド処理部１３０は適用領域データベース１４０を検索する。その結果として得られた日および時刻の実値を用いて、フロントエンド処理部１３０は、パラメーターを置換する。その結果、フロントエンド処理部１３０は、「１２月１０日の午前１０時３０分からのご都合はいかがでしょうか。」という出力テキストを、出力部１６０に渡す。
【００６６】
図９は、チャットボットサーバー装置１００に入力されるテキストに基づくデータ抽出の方法の例を示す概略図である。この例において、前提となる現時点での文脈として、シナリオ識別情報は「ＳＣＥ００１」（図５を参照）であり、状況識別情報は「ＴＱ００３」（３番目の状況）である。また、既に行った出力において、「２０１９年１２月１０日  午前１０時３０分」という日時を相手側に提案中である。本例では、上記の状況において、相手側からの入力は、「午前１１時からにしてもらえますか。」というものである。ここで、この入力を受け取ったフロントエンド処理部１３０は、この入力が、時刻の変更を含み、日付の情報を含まないことから、上記の文脈にも基づいて、相手側が、「２０１９年１２月１０日  午前１１時００分」という日時を逆提案していることを理解する。このとき、フロントエンド処理部１３０は、既存の情報理解技術を用いて、入力から、日時の情報を抽出する。そして、フロントエンド処理部１３０は、適用領域データベース１４０を参照して、この日時で決定してよいか否かを判断する。つまり、フロントエンド処理部１３０は、「２０１９年１２月１０日  午前１１時００分」にミーティングの予定を入れることが可能か否かを判定する。判定の結果、この日時にミーティングの予定を入れることが可能な場合には、フロントエンド処理部１３０は、アポイントメントの日時を「２０１９年１２月１０日  午前１１時００分」と決定し、その日時を適用領域データベース１４０に書き込む。
【００６７】
図１０は、チャットボットサーバー装置１００が、相手側と行うチャットのやりとりの例を示す概略図である。ここに示すやり取りは、図５に示したシナリオに基づいて、自動発信システム１と相手側の電話端末装置８００との間で行われるものである。また、その際、チャット出力生成部１１０やフロントエンド処理部１３０は、図７、図８、図９で説明したように処理を行う。図１０に示すように、自動発信システム１は、相手側の電話端末装置８００との間で、次のような対話を行う。
【００６８】
（１）まず、自動発信システム１側から発話（出力）する。その内容は「こんにちは。ＡＢＣ株式会社の佐倉です。次のミーティングの日程調整の件でお電話しています。」というものである。このときの状況は「ＡＢ４５６」である。
【００６９】
（２）続いて、自動発信システム１側から発話（出力）する。その内容は「１２月１０日の午前１０時３０分からのご都合はいかがでしょうか。」というものである。このときの状況は「ＷＲ０２０」である。
【００７０】
（３）続いて、自動発信システム１は、相手側からの入力を受ける。その内容は、「１２月１０日ですね。１０時３０分はちょっと都合が悪いですね。午前１１時からにしてもらえますか。」というものである。このときの状況は「ＴＱ００３」である。
【００７１】
（４）自動発信システム１は、適用領域データベース１４０を参照することにより「午前１１時００分」のアポイントメントを受け入れてもよいことを確認する。そして、自動発信システム１は「大丈夫です。１２月１０日の午前１１時００分ですね。」という内容の発話（出力）を行う。このときの状況も「ＴＱ００３」である。
【００７２】
（５）続いて、自動発信システム１は、相手側からの入力を受ける。その内容は、「わかりました。ありがとう。」というものである。このときの状況は「ＡＢ４６０」である。
【００７３】
（６）続いて、自動発信システム１は、「予定を入れておきます。どうもありがとうございます。」という内容の発話（出力）を行う。このときの状況も「ＡＢ４６０」である。なお、この状況において、決定したスケジュールが確認できた。したがって、チャットボットサーバー装置１００内のフロントエンド処理部１３０は、シナリオ内の「ＡＢ４６０」での定義にしたがって、決定後の日時である「１２月１０日  午前１１時００分」を適用領域データベース１４０に書き込む。
【００７４】
図１１は、チャットボットサーバー装置１００のチャット出力生成部１１０が出力するテキストの別の例と、そのテキスト内に含まれるパラメーターの置換の状況を示す概略図である。ここで示す例は、図６に示したシナリオ（シナリオ識別情報は、ＳＣＥ０１１）に基づいて実行される処理に対応する。当該シナリオの１番目の状況（状況識別情報は「ＥＱ１０１」）において、チャット出力生成部１１０が出力するテキストは、「こんにちは。ＡＢＣレンタカーの芹澤です。先日ご利用いただいたサービスについてのフィードバックをお願いします。」である。このテキストは、パラメーターを含まないため、そのまま、フロントエンド処理部１３０から出力部１６０に渡される。
【００７５】
当該シナリオの２番目の状況（状況識別情報は「ＱＵ１０１」）において、チャット出力生成部１１０が出力するテキストは、「％ＱＵＥＳＴＩＯＮ１」である。この％ＱＵＥＳＴＩＯＮ１は、パラメーターである。したがって、フロントエンド処理部１３０は、適用領域データベース１４０から、％ＱＵＥＳＴＩＯＮ１を置換すべきデータを取得する。そして、フロントエンド処理部１３０は、適用領域データベース１４０から取得したデータ（質問１の内容）を用いて、パラメーター％ＱＵＥＳＴＩＯＮ１を置換する。その結果として得られる出力テキストは、「窓口担当者の説明はわかりやすかったでしょうか。」である。フロントエンド出力部１３０は、この置換後のテキストを、出力部１６０に渡す。出力部１６０は、この置換後のテキストを出力する。
【００７６】
図１２は、チャットボットサーバー装置１００が、相手側と行うチャットのやりとりの別の例を示す概略図である。ここに示すやり取りは、図６に示したシナリオに基づいて、自動発信システム１と相手側の電話端末装置８００との間で行われるものである。また、その際、チャット出力生成部１１０やフロントエンド処理部１３０は、図１１で説明したように処理を行う。図１２に示すように、自動発信システム１は、相手側の電話端末装置８００との間で、次のような対話を行う。
【００７７】
（１）まず、自動発信システム１側から発話（出力）する。その内容は「こんにちは。ＡＢＣレンタカーの芹澤です。先日ご利用いただいたサービスについてのフィードバックをお願いします。」というものである。このときの状況は「ＥＱ１０１」である。
【００７８】
（２）続いて、自動発信システム１側から発話（出力）する。その内容は「最初の質問です。窓口担当者の説明はわかりやすかったでしょうか。」というものである。このときの状況は「ＱＵ１０１」である。
【００７９】
（３）続いて、自動発信システム１は、相手側からの入力を受ける。その内容は、「はい。大変わかりやすかったです。」というものである。このときの状況は「ＡＮ１０１」である。なお、フロントエンド処理部１３０は、シナリオ内での定義にしたがって、この回答の内容を適用領域データベース１４０に書き込む。
【００８０】
（４）その後のやりとり（質問２および質問３に対する、それぞれ、回答２および回答３）の記載を、ここでは省略する。
【００８１】
（５）そして、自動発信システム１側から発話（出力）する。その内容は「ご回答いただき、ありがとうございました。登録していただいているご住所宛に、謝礼をお送りします。」というものである。このときの状況は「ＥＱ８０１」である。
【００８２】
次に、本実施形態内で使用するその他のデータの構成について説明する。
【００８３】
図１３は、電話端末装置３００のスケジュール管理部３２０が管理する発信スケジュールのデータの構成例を示す概略図である。図示するように、スケジュールデータは、例えば、表形式のデータとして構成され、発信予定日時、相手先電話番号、シナリオ識別情報の各項目を持つ。この表における１行が、１件の発信に対応する。図示する例では、１行目のデータにおける発信予定日時は、「２０１９／１２／２１  １６：３０：００」である。この日時は、「ＹＹＹＹ／ＭＭ／ＤＤ  ｈｈ：ｍｍ：ｓｓ」（年月日、時分秒）の形式で表される。つまり、このデータでは、発信予定日時は、２０１９年１２月２１日  １６時３０分００秒である。また、相手先電話番号は、ネットワーク２において用いられる相手先の電話番号である。電話番号は、特定の国等の中での番号であってもよいし、国番号を含む番号であってもよい。また、シナリオ識別情報は、その発信をした際に用いるシナリオを特定するために設けられるデータである。例えば、シナリオ識別情報「ＳＣＥ００１」は、図５に例示したシナリオの識別情報である。
【００８４】
なお、前述の通り、発信スケジュールのデータが、シナリオ識別情報を持たないようにしてもよい。
【００８５】
図１４は、電話端末装置３００の対話履歴記憶部３７０が記憶する対話履歴のデータの構成例を示す概略図である。既に説明したように、対話履歴記憶部３７０は、自動発信システム１と相手側との間の対話の記録を保存するためのものである。図示するように、対話履歴のデータは、例えば、表形式で表され、日時、相手番号、区別、内容といった項目を持つ。この表における各行が、１件にイベントに対応する。イベントとは、発信、発話、受話等という単位のものである。ここに例示するデータの１行目は、日時「２０１９／１２／２１  １６：３０：００」に、相手番号「＋８１−３−１２３４−５６７８」に対して、電話の発信が行われたことを記録するものである。また、このデータの２行目は、日時「２０１９／１２／２１  １６：３０：０９」に、相手番号「＋８１−３−１２３４−５６７８」に対して、「こんにちは。ＡＢＣ株式会社の佐倉です。次のミーティングの日程調整の件でお電話しています。」という発話を、自動発信システム１側が行ったことを記録するものである。なお、３行目以後についても同様であるが、ここではその説明を省略する。
【００８６】
図１５は、自動発信システム１による処理の手順を示すフローチャートである。以下、このフローチャートに沿って動作手順を説明する。
【００８７】
まず、ステップＳ１において、電話端末装置３００の発信制御部３４０は、スケジュール管理部３２０が管理するスケジュールのデータから１件のスケジュールを読み出し、発信時刻と、発信先の電話番号と、シナリオとを決定する。ここで発信制御部３４０が読み出すスケジュールは、発信時刻が未到来であり且つ発信時刻が最先の１件である。その後、発信制御部３４０は、当該スケジュールの発信時刻が到来するまで待つ。具体的には、発信制御部３４０は、例えば電話端末装置３００内の時計を参照する。あるいは、発信制御部３４０は、電話端末装置３００内の時計に基づく割り込みにより待ち状態から覚醒する。
【００８８】
次に、ステップＳ２において、スケジュールされた時刻が到来すると、発信制御部３４０は、ステップＳ１で読み出したスケジュールデータ内で決められた相手先電話番号に対して電話の発信を行う。またこのとき、電話端末装置３００は、シナリオをチャットボットサーバー装置１００に、使用すべきシナリオ識別情報を伝える。このシナリオ識別情報もまた、スケジュールデータ内に含まれているものである。
【００８９】
チャットボットサーバー装置１００内のチャット出力生成部１１０は、上記のシナリオ識別情報の通知を受けると、シナリオ供給部１２０から当該シナリオ識別情報によって特定されるシナリオを受け取る。
【００９０】
次に、ステップＳ３において、チャットボットサーバー装置１００内のチャット出力生成部１１０は、シナリオ供給部１２０から供給されているシナリオデータを参照し、そのシナリオ内に次の状況が存在するか否かを判定する。なお、当初の電話発信時には、当該シナリオの最初の状況が「次の状況」である。次の状況が存在する場合（ステップＳ３：ＹＥＳ）、次のステップＳ４に進む。次の状況が存在しない場合、即ち当該シナリオ内のすべての状況が終了している場合（ステップＳ３：ＮＯ）には、本フローチャート全体の処理を終了する。
【００９１】
次に、ステップＳ４において、チャットボットサーバー装置１００内のチャット出力生成部１１０は、シナリオ内の次の状況を読み出す。チャット出力生成部１１０は、読み出したこの状況を、現状況（present situation）として扱う。
【００９２】
次に、ステップＳ５において、チャットボットサーバー装置１００内のチャット出力生成部１１０は、現状況と、直前の出力と、直前の入力とから、出力を生成する。ここで、直前の入力とは、入力部１５０から入力された入力テキストであって、直前に入力されたものである。また、直前の出力とは、チャット出力生成部１１０が生成した出力であって、既に出力済み且つ最後の出力である。なお、直前の入力がない場合には、直前の入力を「ヌル」（null）とする。また、直前の出力がない場合には、直前の出力を「ヌル」（null）とする。つまり、この場合にはチャット出力生成部１１０は、直前の入力または直前の出力の少なくともいずれかがヌルである場合も含めて、チャット出力生成部１１０は、前記の式（１）にしたがって、今回の出力を生成する。チャット出力生成部１１０は、生成した出力を、フロントエンド処理部１３０に渡す。
【００９３】
次に、ステップＳ６において、チャットボットサーバー装置１００内のフロントエンド処理部１３０は、チャット出力生成部１１０から渡された出力にパラメーターが含まれていた場合には、そのパラメーターを実値で置換する。具体的には、フロントエンド処理部１３０は、適用領域データベース１４０から読み出して情報に基づく実値で、パラメーターを置換する。フロントエンド処理部１３０は、置換後の出力を、出力部１６０に渡す。なお、チャット出力生成部１１０から渡された出力にパラメーターが含まれていなかった場合には、フロントエンド処理部１３０は、その出力をそのまま出力部１６０に渡す。
【００９４】
次に、ステップＳ７において、チャットボットサーバー装置１００内の出力部１６０は、フロントエンド処理部１３０から渡された出力を、外部に出力する。音声生成サーバー装置４００は、その出力を、音声に変換する。音声生成サーバー装置４００によって生成された音声を、電話端末装置３００が、相手側の電話端末装置８００に送る。
【００９５】
次に、ステップＳ８において、チャットボットサーバー装置１００内の入力部１５０は、相手側からの入力があれば取得する。その具体的な処理は、次の通りである。即ち、相手側の電話端末装置８００からの音声は、電話端末装置３００を通して、音声認識サーバー装置５００に入力される。音声認識サーバー装置５００は音声認識処理を行い、相手側からの音声に対応するテキストデータを出力する。チャットボットサーバー装置１００内の入力部１５０は、そのテキストデータ（入力テキスト）を取得する。入力部１５０は、その入力テキストをフロントエンド処理部１３０に渡す。なお、入力がない場合、即ち相手側の電話端末装置８００からの音声による言語がない場合には、入力部１５０がフロントエンド処理部１３０に渡す入力テキストはヌルである。
【００９６】
なお、フロントエンド処理部１３０は、受け取った入力テキストを、チャット出力生成部１１０にも渡す。
【００９７】
次に、ステップＳ９において、ステップＳ８で取得した入力の中に適用領域データベース１４０に書き込むべき情報が含まれている場合には、フロントエンド処理部１３０は、その情報を適用領域データベース１４０に書き込む。ここで適用領域データベース１４０に書き込むべきデータとは、相手先との対話（interaction）によって生じた情報あるいは判明した情報を表すデータである。例えば、相手先との対話によってミーティングのアポイントメントが確定した場合には、フロントエンド処理部１３０は、そのアポイントメントの日時等のデータを適用領域データベース１４０に書き込む。あるいは、相手先との対話によって当方からの質問（アンケート等）に対する相手方からの回答が得られた場合には、フロントエンド処理部１３０は、その回答の内容を表すデータを適用領域データベース１４０に書き込む。あるいは、相手先との対話によって相手先からの注文（商品等の注文）を受け付けた場合には、フロントエンド処理部１３０は、その注文内容（商品識別番号、数量、金額等）のデータを適用領域データベース１４０に書き込む。なお、適用領域データベース１４０に書き込むべきデータがない場合には、フロントエンド処理部１３０は、本ステップでは何もしない。
【００９８】
次に、ステップＳ１０において、チャットボットサーバー装置１００内のチャット出力生成部１１０は、現状況が終了したか否かを判定する。具体的には、チャット出力生成部１１０は、直前の出力および直前の入力の内容に基づき、現状況が終了したか否かを判定する。現状況が終了した場合（ステップＳ１０：ＹＥＳ）には、次の状況の処理をするため、ステップＳ３に進む。現状況が終了していない場合（ステップＳ１０：ＹＥＳ）には、現状況における処理をさらに行うために、ステップＳ５に進む。
【００９９】
なお、ステップＳ１０におけるより具体的な判定方法の例は、次の通りである。チャット出力生成部１１０がテキストを出力する状況においては、チャット出力生成部１１０が機械学習モデルに基づく出力テキストを生成し出力したことを以て、当該状況が終了したと判定することができる。チャット出力生成部１１０がテキストを入力する状況においては、入力テキストが表す状況と、シナリオに記載された状況とを比較し、シナリオに記載されている状況が達成されている場合にのみ、当該状況が終了したと判定することができる。当該状況が判定していない場合には、チャット出力生成部１１０は、さらなる出力テキストを生成してもよい。
【０１００】
なお、機械学習モデル自体が、入力テキストに基づいて、状況を終了したか否かを表すフラグ情報を出力するようにしてもよい。その場合には、チャット出力生成部１１０は、そのフラグを参照することによって状況が終了したか否かを判定できる。
【０１０１】
なお、上述した実施形態における、チャットボットサーバー装置１００や、シナリオサーバー装置２００や、電話端末装置３００や、音声生成サーバー装置４００や、音声認識サーバー装置５００や、操作用端末装置６００の、少なくとも一部の機能をコンピューターで実現することができる。その場合、この機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＵＳＢメモリー等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、一時的に、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１０２】
以上、複数の実施形態を説明したが、本発明はさらに次のような変形例でも実施することが可能である。なお、複数の変形例を、組み合わせることが可能な限りにおいて、組み合わせて実施してもよい。
【０１０３】
電話端末装置３００が対話履歴記憶部３７０を持たないように構成してもよい。これにより、電話端末装置３００が対話履歴を蓄積することはできなくなるが、自動発信システム１が持つ他の機能は、実現される。
【０１０４】
チャットボットサーバー装置１００が、学習データ供給部１７０および学習処理部１８０を持たない構成としてもよい。この場合にも、既に学習済みのモデルを利用することにより、自動発信システム１は、機能することができる。また、自動発信システム１の外で学習処理を行って、学習済みのモデルをチャット出力生成部１１０内のモデルに複写するようにしてもよい。
【０１０５】
フロントエンド処理部１３０が、入力テキストから抽出した情報を適用領域データベース１４０に書き込まないようにしてもよい。この場合、入力テキストに含まれる情報は、適用領域データベース１４０には残らない。入力テキストに含まれる情報をデータとして残す必要のない種類の業務には、そのような変形例の自動発信システム１を適用することもできる。また、入力テキストに含まれる情報は、すべて、電話端末装置３００の対話履歴記憶部３７０には保存される。
【０１０６】
チャットボットサーバー装置１が、フロントエンド処理部１３０と適用領域データベースとを持たない構成としてもよい。この場合、チャット出力生成部１１０が生成する出力には、パラメーターを含まないようにする。出力がパラメーターを含まない場合には、フロントエンド処理部１３０がパラメーターを実値で置換する必要がない。
【０１０７】
また、スケジュール管理部が、シナリオ識別情報を持たない構成としてもよい。この場合も、複数のシナリオから１つを選択する形態ではなく、単一のシナリオに基づいて処理を行う自動発信システム１を実現することができる。
【０１０８】
また、チャットボットサーバー装置１００内のチャット出力生成部１１０が、シナリオにおける状況と、チャット出力生成部１１０への入力（入力がヌルである場合も含む）のみに基づいて、出力を生成するようにしてもよい。このような構成では、チャット出力生成部１１０は、直前の出力テキスト（あるいは、直前の出力テキストに限らない過去の出力テキスト）には依存しない出力テキストを生成することができる。
【０１０９】
また、チャットボットサーバー装置１００内のチャット出力生成部１１０が、直前の出力テキストや直前の入力テキストに限らず、過去の出力テキストや過去の入力テキストに応じて、新たな出力テキストを生成するようにしてもよい。その場合、チャット出力生成部１１０が持つモデル（例えば、ニューラルネットワーク）は、過去の出力テキストや過去の入力テキストをも入力として、出力テキストを生成するように構成され、また、予め機械学習を行っておくようにする。
【０１１０】
また、図１では、一形態として自動発信システム１を実現するための装置の構成を示した。しかしながら、装置の構成はこのような形態には限定されない。ある装置が持つ機能をさらに複数の装置が持つように分割したり、逆に複数の装置に分散している機能を１つの装置に統合したりしてもよい。
【０１１１】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【産業上の利用可能性】
【０１１２】
本発明の産業上の用途は、特に限定されない。人に代わって相手方（人）とコミュニケーションを取るシステムとして、事実上すべての産業において利用可能である。
【符号の説明】
【０１１３】
１  自動発信システム
２  ネットワーク
１００  チャットボットサーバー装置
１１０  チャット出力生成部（出力生成部）
１２０  シナリオ供給部
１３０  フロントエンド処理部
１４０  適用領域データベース
１５０  入力部
１６０  出力部
１７０  学習データ供給部
１８０  学習処理部
２００  シナリオサーバー装置
２１０  シナリオ管理部
２２０  学習データ管理部
２３０  スケジュール管理部
３００  電話端末装置
３１０  ネットワークインターフェース部
３２０  スケジュール管理部
３３０  発信履歴記憶部
３４０  発信制御部
３５０  音声入力部
３６０  音声出力部
３７０  対話履歴記憶部（履歴記憶部）
４００  音声生成サーバー装置（第１変換部）
５００  音声認識サーバー装置（第２変換部）
６００  操作用端末装置
８００  電話端末装置
【要約】
【課題】自発的に相手との間の通信を接続させて、自発的にコミュニケーションを進めることのできる自動発信システム等を提供する。
【解決手段】シナリオ供給部は、状況のシーケンスとして表されるシナリオを記憶する。出力生成部は、入力テキストと、シナリオにおける状況とに応じて、予め学習済のモデルに基づいて出力テキストを生成する。スケジュール管理部とは、通信の接続を行う接続時刻と、通信の接続を行う相手先を識別する相手先識別情報とを、相互に関連付けた発信スケジュールとして保持する。発信制御部は、発信スケジュールに基づいて接続時刻が到来したときに相手先識別情報によって識別される相手先への通信の接続を行う。第１変換部は、出力生成部が生成した出力テキストを、通信の相手先に送るための音声に変換する。第２変換部は、通信の相手先から送られてくる音声を、入力テキストに変換する。
【選択図】図１【図１】
0006741322.tif 000002
【図２】
0006741322.tif 000003
【図３】
0006741322.tif 000004
【図４】
0006741322.tif 000005
【図５】
0006741322.tif 000006
【図６】
0006741322.tif 000007
【図７】
0006741322.tif 000008
【図８】
0006741322.tif 000009
【図９】
0006741322.tif 000010
【図１０】
0006741322.tif 000011
【図１１】
0006741322.tif 000012
【図１２】
0006741322.tif 000013
【図１３】
0006741322.tif 000014
【図１４】
0006741322.tif 000015
【図１５】
0006741322.tif 000016