(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022020681
(43)【公開日】2022-02-01
(54)【発明の名称】コンピュータによって実行される方法、サーバ装置、情報処理システム、プログラム、およびクライアント端末
(51)【国際特許分類】
G06F 16/90 20190101AFI20220125BHJP
G06F 16/332 20190101ALI20220125BHJP
G10L 13/00 20060101ALI20220125BHJP
G10L 15/00 20130101ALI20220125BHJP
G10L 15/22 20060101ALI20220125BHJP
【FI】
G06F16/90 100
G06F16/332
G10L13/00 100M
G10L15/00 200T
G10L15/22 200Z
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021171822
(22)【出願日】2021-10-20
(62)【分割の表示】P 2019192798の分割
【原出願日】2019-10-23
(71)【出願人】
【識別番号】507134068
【氏名又は名称】サウンドハウンド,インコーポレイテッド
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】カール・スタール
(57)【要約】
【課題】モバイル端末がサーバ装置と通信できない状態にある場合であっても、モバイル端末をデジタルアシスタントとして機能させることができるようにするための技術を提供すること。
【解決手段】ユーザ端末200は、ユーザからのクエリAの入力に応じて、サーバ100へクエリAを送信する。サーバ100は、文法Aを用いて、クエリAの意味を解釈する。サーバ100は、クエリAの意味に基づいてクエリAへの応答を取得し、当該応答をユーザ端末200へ送信する。サーバ100は、さらに、文法Aをユーザ端末200へ送信する。すなわち、サーバ100は、ユーザ端末200から受信したクエリの解釈に利用された文法を、ユーザ端末200へ送信する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
コンピュータによって実行される方法であって、
クライアント端末からクエリの入力を受け付けるステップと、
文法を利用して、前記クエリの自然言語解釈を実行するステップと、
自然言語解釈の前記実行の後、前記クエリへの応答を出力するステップと、
前記クライアント端末へ前記文法を送信するステップと、を備える、方法。
【請求項2】
前記文法を前記クライアント端末へ送信する前に、前記クライアント端末が前記文法を格納していないことを判断するステップをさらに備え、
前記クライアント端末へ前記文法を送信するステップは、前記クライアント端末が前記文法を格納していないことを条件として実行される、請求項1に記載の方法。
【請求項3】
前記文法を前記クライアント端末へ送信する前に、前記クライアント端末が前記コンピュータと通信しないオフライン状態で前記文法を用いた機能を実行するように構成されているかを判断するステップをさらに備え、
前記文法を前記クライアント端末へ送信するステップは、前記クライアント端末が前記オフライン状態で前記文法を用いた前記機能を実行するように構成されていると判断した場合に実行される、請求項1または請求項2に記載の方法。
【請求項4】
前記文法を前記クライアント端末へ送信するステップは、前記文法とともに前記文法が属するドメインに属する他の文法を前記クライアント端末へ送信することを含む、請求項1~請求項3のいずれか1項に記載の方法。
【請求項5】
前記クライアント端末からのクエリの自然言語解釈に前記文法が利用された回数を計数するステップをさらに備え、
前記文法を前記クライアント端末へ送信するステップは、計数された前記回数が閾値を超えたことを条件として実行される、請求項1~請求項4のいずれか1項に記載の方法。
【請求項6】
前記計数することは、前記文法が属するドメインに属するすべての文法がクエリの自然言語解釈に利用された回数を計数することを含む、請求項5に記載の方法。
【請求項7】
入力された前記クエリに基づいて、将来のクエリへの応答に必要なデータのタイプを予測するステップと、
前記クライアント端末へ前記タイプのデータを送信するステップと、をさらに備える、請求項1~請求項6のいずれか1項に記載の方法。
【請求項8】
前記タイプの前記データを送信するステップは、前記タイプの前記データの有効期限を送信することを含む、請求項7に記載の方法。
【請求項9】
クライアント端末からクエリの入力を受け付けるステップは、前記クライアント端末から音声の入力を受け付けることを含み、
前記クライアント端末のユーザに適合するように前記ユーザの発話を利用して発話認識モデルを訓練するステップと、
訓練された前記発話認識モデルを前記クライアント端末へ送信するステップと、をさらに備える、請求項1~請求項8のいずれか1項に記載の方法。
【請求項10】
1つ以上のプロセッサを備えるサーバ装置であって、
前記1つ以上のプロセッサによって実行されることにより、請求項1~請求項9のいずれか1項に記載の方法を前記サーバ装置に実施させるプログラムを格納する記憶装置をさ
らに備える、サーバ装置。
【請求項11】
クライアント端末と、
前記クライアント端末から入力されたクエリに対する応答を前記クライアント端末に送信するサーバ装置と、を備え、
前記サーバ装置は、文法を利用して、前記クエリの自然言語解釈を実行する1つ以上のプロセッサを含み、
前記1つ以上のプロセッサは、前記文法を前記クライアント端末へ送信する、情報処理システム。
【請求項12】
コンピュータによって実行される方法であって、
サーバ装置へ第1のクエリを送信するステップと、
前記サーバ装置から前記第1のクエリの自然言語解釈に利用された文法を受信するステップと、
受信された前記文法をメモリに格納するステップと、
第2のクエリの入力を受け付けるステップと、
前記コンピュータが前記サーバ装置と接続されていないときに、前記文法を利用して、前記第2のクエリの自然言語解釈を実行するステップと、を備える、方法。
【請求項13】
第3のクエリの入力を受け付けるステップと、
前記コンピュータが前記サーバ装置と接続されていないときに、前記第3のクエリの自然言語解釈を実行するステップと、
前記第3のクエリの自然言語解釈が失敗したと判断するステップと、
前記第3のクエリを前記メモリに格納するステップと、
前記失敗に応じて、前記コンピュータが前記サーバ装置と接続されているときに、前記第3のクエリを前記サーバ装置へ送信するステップと、をさらに備える請求項12に記載の方法。
【請求項14】
前記サーバ装置から、前記第1のクエリに関連するデータを受信するステップと、
前記第1のクエリに関連する前記データを前記メモリに格納するステップと、
前記第1のクエリに関連する前記データを利用して、前記第2のクエリへの応答を取得するステップとをさらに備える、請求項12または請求項13に記載の方法。
【請求項15】
前記第1のクエリに関連する前記データは有効期限を表すメタデータを含み、
前記方法は、前記有効期限が過ぎた後に前記第1のクエリに関連する前記データを前記メモリから削除するステップをさらに備える、請求項14に記載の方法。
【請求項16】
前記コンピュータの位置情報を取得するステップをさらに備え、
前記第2のクエリの自然言語解釈を実行するステップは、前記位置情報に基づいて、使用される文法を前記メモリ内の1つ以上の文法から選択することを含む、請求項12~請求項15のいずれか1項に記載の方法。
【請求項17】
前記第2のクエリが入力された時刻を表す時刻情報を取得するステップをさらに備え、
前記第2のクエリの自然言語解釈を実行するステップは、前記時刻情報に基づいて、使用される文法を前記メモリ内の1つ以上の文法から選択することを含む、請求項12~請求項16のいずれか1項に記載の方法。
【請求項18】
前記第2のクエリの入力を受け付けるステップは、音声の入力を受け付けることを含み、
前記サーバ装置から、前記コンピュータのユーザに適合するように学習された発話認識
モデルを受信するステップと、
前記コンピュータが前記サーバ装置と接続されていないときに、前記発話認識モデルを利用して入力された前記音声の発話認識を実行するステップと、をさらに備える、請求項12~請求項17のいずれか1項に記載の方法。
【請求項19】
コンピュータによって実行される方法であって、
前記コンピュータがサーバ装置と接続されているときに、第1のクエリの入力を受け付けるステップと、
前記第1のクエリを前記サーバ装置へ送信するステップと、
前記サーバ装置から、前記第1のクエリへの応答を受信するテップと、
前記コンピュータが前記サーバ装置と接続されていないときに、第2のクエリの入力を受け付けるステップと、
前記第2のクエリを、前記第2のクエリが入力された時刻を表す時刻情報とともにメモリに格納するステップと、
前記コンピュータが前記サーバ装置と接続されているときに、前記メモリ内の前記第2のクエリを前記時刻情報とともに前記サーバ装置へ送信するステップとを備える、方法。
【請求項20】
前記第2のクエリを前記メモリに格納することは、前記第2のクエリとともに前記第2のクエリの入力を受け付けたときの前記コンピュータの位置情報を前記メモリに格納することを含み、
前記第2のクエリを前記サーバ装置へ送信することは、前記位置情報を前記第2のクエリとともに前記サーバ装置へ送信することを含む、請求項19に記載の方法。
【請求項21】
クライアント端末の1つ以上のプロセッサによって実行されることにより、前記クライアント端末に、請求項12~請求項20のいずれか1項に記載の方法を実施させる、コンピュータプログラム。
【請求項22】
1つ以上のプロセッサを備えるクライアント端末であって、
前記1つ以上のプロセッサに実行されることによって、請求項12~請求項20のいずれか1項に記載の方法を前記クライアント端末に実施させるプログラムを格納するメモリを備える、クライアント端末。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、自然言語の解釈に関し、特に、自然言語の解釈のための文法の管理に関する。
【背景技術】
【0002】
従来、ユーザから入力されたクエリに応じて行動するデジタルアシスタントが利用されている。ユーザは、デジタルアシスタントを利用する場合、スマートフォン等のクライアント端末にクエリを入力する。一般的なデジタルアシスタントの利用では、クライアント端末は、サーバ装置にクエリを送信する。サーバ装置は、クエリについて発話解釈および自然言語解釈を実行することにより、当該クエリの意味を決定する。そして、サーバ装置は、決定された意味に応じたデータベースにおいてクエリに対する応答を検索または生成し、および/もしくは、決定された意味に応じたAPI(Application Programming Interface)にクエリを送ることによってクエリに対する応答を取得する。サーバ装置は、得
られた応答をクライアント端末に送信する。クライアント端末は、応答を出力する。すなわち、クライアント端末は、サーバ装置と通信することによって、デジタルアシスタントの一部として振る舞う。
【0003】
米国特許出願公開第2007/0276651号明細書(特許文献1)の段落[0037]等には、モバイル端末が自然言語解釈を実行するシステムを開示している。当該システムでは、モバイル端末は、ユーザからの発話を受信すると当該発話について自然言語解釈を試みる。モバイル端末は、当該自然言語解釈に失敗すると、サーバ装置に、当該発話についての自然言語解釈の実行を要求する。
【0004】
ユーザは、モバイル端末がサーバ装置と通信できない場所(たとえば、トンネルの中)でのデジタルアシスタントの利用を希望する場合がある。モバイル端末がサーバ装置と通信できない状態にある場合であっても、モバイル端末をデジタルアシスタントとして機能させることができるようにすることが必要とされている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願公開第2007/0276651号明細書
【発明の概要】
【0006】
本開示は、モバイルデバイスがサーバ装置にアクセスできないときにもデジタルアシスタントとして機能できるようにすることにより、従来のシステムの上記課題に対する技術的な解決手段を提供する。
【0007】
本開示のある局面に従うと、コンピュータによって実行される方法であって、クライアント端末からクエリの入力を受け付けるステップと、文法を利用して、クエリの自然言語解釈を実行するステップと、自然言語解釈の実行の後、クエリへの応答を出力するステップと、クライアント端末へ文法を送信するステップと、を備える、方法が提供される。
【0008】
方法は、文法をクライアント端末へ送信する前に、クライアント端末が文法を格納していないことを判断するステップをさらに備えていてもよい。クライアント端末へ文法を送信するステップは、クライアント端末が文法を格納していないことを条件として実行されてもよい。
【0009】
方法は、文法をクライアント端末へ送信する前に、クライアント端末がコンピュータと通信しないオフライン状態で文法を用いた機能を実行するように構成されているかを判断するステップをさらに備えていてもよい。文法をクライアント端末へ送信するステップは、クライアント端末がオフライン状態で文法を用いた機能を実行するように構成されていると判断した場合に実行されてもよい。
【0010】
文法をクライアント端末へ送信するステップは、文法とともに文法が属するドメインに属する他の文法をクライアント端末へ送信することを含んでもよい。
【0011】
方法は、クライアント端末からのクエリの自然言語解釈に文法が利用された回数を計数するステップをさらに備えていてもよい。文法をクライアント端末へ送信するステップは、計数された回数が閾値を超えたことを条件として実行されてもよい。
【0012】
計数することは、文法が属するドメインに属するすべての文法がクエリの自然言語解釈に利用された回数を計数することを含んでもよい。
【0013】
方法は、入力されたクエリに基づいて、将来のクエリへの応答に必要なデータのタイプを予測するステップと、クライアント端末へタイプのデータを送信するステップと、をさらに備えてもよい。
【0014】
タイプのデータを送信するステップは、タイプのデータの有効期限を送信することを含んでもよい。
【0015】
クライアント端末からクエリの入力を受け付けるステップは、クライアント端末から音声の入力を受け付けることを含んでもよい。方法は、クライアント端末のユーザに適合するようにユーザの発話を利用して発話認識モデルを訓練するステップと、訓練された発話認識モデルをクライアント端末へ送信するステップと、をさらに備えてもよい。
【0016】
本開示の他の局面に従うと、1つ以上のプロセッサを備えるサーバ装置であって、1つ以上のプロセッサによって実行されることにより、上記方法をサーバ装置に実施させるプログラムを格納する記憶装置をさらに備える、サーバ装置が提供される。
【0017】
本開示のさらに他の局面に従うと、クライアント端末と、クライアント端末から入力されたクエリに対する応答をクライアント端末に送信するサーバ装置と、を備え、サーバ装置は、文法を利用して、クエリの自然言語解釈を実行する1つ以上のプロセッサを含み、1つ以上のプロセッサは、文法をクライアント端末へ送信する、情報処理システムが提供される。
【0018】
本開示のさらに他の局面に従うと、コンピュータによって実行される方法であって、サーバ装置へ第1のクエリを送信するステップと、サーバ装置から第1のクエリの自然言語解釈に利用された文法を受信するステップと、受信された文法をメモリに格納するステップと、第2のクエリの入力を受け付けるステップと、コンピュータがサーバ装置と接続されていないときに、文法を利用して、第2のクエリの自然言語解釈を実行するステップと、を備える、方法が提供される。
【0019】
方法は、第3のクエリの入力を受け付けるステップと、コンピュータがサーバ装置と接続されていないときに、第3のクエリの自然言語解釈を実行するステップと、第3のクエリの自然言語解釈が失敗したと判断するステップと、第3のクエリをメモリに格納するステップと、失敗に応じて、コンピュータがサーバ装置と接続されているときに、第3のク
エリをサーバ装置へ送信するステップと、をさらに備えてもよい。
【0020】
方法は、サーバ装置から、第1のクエリに関連するデータを受信するステップと、第1のクエリに関連するデータをメモリに格納するステップと、第1のクエリに関連するデータを利用して、第2のクエリへの応答を取得するステップとをさらに備えてもよい。
【0021】
第1のクエリに関連するデータは有効期限を表すメタデータを含んでもよい。方法は、有効期限が過ぎた後に第1のクエリに関連するデータをメモリから削除するステップをさらに備えてもよい。
【0022】
方法は、コンピュータの位置情報を取得するステップをさらに備えてもよい。第2のクエリの自然言語解釈を実行するステップは、位置情報に基づいて、使用される文法をメモリ内の1つ以上の文法から選択することを含んでもよい。
【0023】
方法は、第2のクエリが入力された時刻を表す時刻情報を取得するステップをさらに備えてもよい。第2のクエリの自然言語解釈を実行するステップは、時刻情報に基づいて、使用される文法をメモリ内の1つ以上の文法から選択することを含んでもよい。
【0024】
第2のクエリの入力を受け付けるステップは、音声の入力を受け付けることを含んでもよい。方法は、サーバ装置から、コンピュータのユーザに適合するように学習された発話認識モデルを受信するステップと、コンピュータがサーバ装置と接続されていないときに、発話認識モデルを利用して入力された音声の発話認識を実行するステップと、をさらに備えてもよい。
【0025】
本開示のさらに他の局面に従うと、コンピュータによって実行される方法であって、コンピュータがサーバ装置と接続されているときに、第1のクエリの入力を受け付けるステップと、第1のクエリをサーバ装置へ送信するステップと、サーバ装置から、第1のクエリへの応答を受信するテップと、コンピュータがサーバ装置と接続されていないときに、第2のクエリの入力を受け付けるステップと、第2のクエリを、第2のクエリが入力された時刻を表す時刻情報とともにメモリに格納するステップと、コンピュータがサーバ装置と接続されているときに、メモリ内の第2のクエリを時刻情報とともにサーバ装置へ送信するステップとを備える、方法が提供される。
【0026】
第2のクエリをメモリに格納することは、第2のクエリとともに第2のクエリの入力を受け付けたときのコンピュータの位置情報をメモリに格納することを含んでもよい。第2のクエリをサーバ装置へ送信することは、位置情報を第2のクエリとともにサーバ装置へ送信することを含んでもよい。
【0027】
本開示のさらに他の局面に従うと、クライアント端末の1つ以上のプロセッサによって実行されることにより、クライアント端末に上記方法を実施させる、コンピュータプログラムが提供される。
【0028】
本開示のさらに他の局面に従うと、1つ以上のプロセッサを備えるクライアント端末であって、1つ以上のプロセッサに実行されることによって上記方法をクライアント端末に実施させるプログラムを格納するメモリを備える、クライアント端末が提供される。
【図面の簡単な説明】
【0029】
【
図1】クエリ処理システムの概略的な構成を表す図である。
【
図2】クエリ処理システムにおけるクエリの処理の一実現例を表す図である。
【
図3】ユーザ端末を用いたクエリの処理のための局面の具体例を示す図である。
【
図4】ユーザ端末を用いたクエリの処理のための局面の具体例を示す図である。
【
図5】ユーザ端末を用いたクエリの処理のための局面の具体例を示す図である。
【
図6】ユーザ端末を用いたクエリの処理のための局面の具体例を示す図である。
【
図7】ユーザ端末を用いたクエリの処理のための局面の具体例を示す図である。
【
図8】ユーザ端末を用いたクエリの処理のための局面の具体例を示す図である。
【
図9】ユーザ端末を用いたクエリの処理のための局面の具体例を示す図である。
【
図10】サーバのハードウェア構成を表す図である。
【
図11】文法ライブラリのデータ構造を示す図である。
【
図13】ユーザ端末のハードウェア構成を示す図である。
【
図14】場所情報のデータ構造の一例を示す図である。
【
図15】サーバにおいてクエリへの応答の出力のために実行される処理のフローチャートである。
【
図16】サーバにおいてクエリへの応答の出力のために実行される処理のフローチャートである。
【
図17】ユーザ端末において実行される処理のフローチャートである。
【
図18】ユーザ端末において実行される処理のフローチャートである。
【発明を実施するための形態】
【0030】
以下に、図面を参照しつつ、情報処理システムの一実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらの説明は繰り返さない。
【0031】
1.クエリ処理システムの概要
図1は、クエリ処理システムの構成を表す図である。クエリ処理システムは、サーバとユーザ端末とを含む。
図1では、サーバは「サーバ100」として示され、ユーザ端末は利用される場面に従って「ユーザ端末200A~200G」として示される。
【0032】
図2は、クエリ処理システムにおけるクエリの処理の一実現例を表す図である。
図2では、ユーザ端末は、あらゆる種類のユーザ端末が「ユーザ端末200」として示される。ユーザ端末は、クライアント端末の一例である。
【0033】
図2においてステップ(1)として示されるように、ユーザ端末200は、ユーザからのクエリAの入力に応じて、サーバ100へクエリAを送信する。ユーザ端末200は、クエリAの入力を、音声としてマイクを介して受けてもよいし、テキストデータとしてキーボードまたはタッチパネルを介して受けてもよいし、物体またはジェスチャーを表す画像または映像としてカメラを介して受けてもよい。
【0034】
ステップ(2)として示されるように、サーバ100は、文法Aを用いて、クエリAの意味を解釈する。
【0035】
ステップ(3)として示されるように、サーバ100は、クエリAの意味に基づいてクエリAへの応答を生成し、当該応答をユーザ端末200へ送信する。
【0036】
図2のクエリ処理システムでは、ステップ(4)として示されるように、サーバ100は、さらに、文法Aをユーザ端末200へ送信する。すなわち、サーバ100は、ユーザ端末200から受信したクエリの解釈に利用された文法を、ユーザ端末200へ送信する。
【0037】
ユーザ端末200は、サーバ100から受信した文法Aを当該ユーザ端末200のメモ
リに格納する。ユーザ端末200は、オフラインの間にクエリを入力されると、当該クエリの意味を文法Aを利用して解釈し(ステップ(1X))、当該意味に基づいてクエリへの応答を生成し(ステップ(2X))、当該応答を表示(および/または音声で出力)する(ステップ(3X))。
【0038】
2.クエリへの応答の具体例
図3~
図9のそれぞれは、ユーザ端末200を用いたクエリの処理のための局面の具体例を示す図である。
【0039】
2-1.
図3
図3には、ユーザ端末200の一例として、自動車内で利用されるユーザ端末200A
が示される。ユーザ端末200Aは、たとえば、自動車に取り付けられた情報処理端末である。
【0040】
ユーザは、ユーザ端末200Aに、クエリとして発話「ラジオを点けて!」を入力する。ユーザ端末200Aは、サーバ100に、クエリとして発話「ラジオを点けて!」を送信する。一実現例では、ユーザは、ユーザ端末200Aの所与のボタンを押した後、上記クエリを入力してもよい。ユーザ端末200Aは、上記ボタンが操作されてから所与の時間内にクエリの入力を受け付け、入力されたクエリをサーバ100へ送信してもよい。
【0041】
サーバ100は、自動車の要素を操作する機能のための文法を利用して、ユーザ端末200Aから入力されたクエリの意味を解釈し、当該意味に基づいて当該クエリへの応答を取得する。そして、サーバ100は、ユーザ端末200Aから入力されたクエリへの応答として、ユーザ端末200Aに、ラジオをONするための制御信号を送信する。これに応じて、ユーザ端末200Aは、当該ユーザ端末200Aを搭載する自動車のラジオをONにする。
【0042】
サーバ100は、さらに、ユーザ端末200Aから入力されたクエリへの応答として、ユーザ端末200Aに、音声「ラジオをONにします。」の出力の指示を送信してもよい。ユーザ端末200Aは、当該指示の受信に応じて、音声「ラジオをONにします。」を出力してもよい。
【0043】
2-2.
図4
図4には、ユーザ端末200の一例として、手術室内で利用されるユーザ端末200Bが示される。ユーザ端末200Bは、たとえば、ユーザである医師の頭部に取り付け可能な情報処理端末である。
【0044】
ユーザは、ユーザ端末200Bに、クエリとして発話「カルテを見せて!」を入力する。ユーザ端末200Bは、サーバ100に、クエリとして発話「カルテを見せて!」を送信する。一実現例では、ユーザは、クエリの入力のために予め定められたメッセージ(たとえば、「OK!」など)を言った後、上記クエリを入力してもよい。ユーザ端末200Bは、上記メッセージの入力を起因としてクエリの入力を受け付け、入力されたクエリをサーバ100へ送信してもよい。
【0045】
サーバ100は、手術室においてユーザに情報を提供する機能のための文法を利用して、ユーザ端末200Bから入力されたクエリの意味を解釈し、当該意味に基づいて当該クエリへの応答を生成する。サーバ100は、サーバ100内で実行される処理のみに基づいて応答を生成してもよい。代替的にもしくは追加的に、サーバ100は、外部のサービスプロバイダまたはウェブサイトからデータを取得することにより応答を生成してもよい。そして、サーバ100は、ユーザ端末200Bから入力されたクエリへの応答として、
ユーザ端末200Bに、手術室内の患者のカルテを送信する。これに応じて、ユーザ端末200Bは、当該ユーザ端末200Bが接続されるディスプレイに当該カルテを表示する。サーバ100は、ディスプレイ(またはディスプレイが接続されるコンピュータ)に直接カルテを送信してもよい。
【0046】
サーバ100は、さらに、ユーザ端末200Bから入力されたクエリへの応答として、ユーザ端末200Bに、音声「これが、山田さん(患者名の一例)のカルテです。」の出力の指示を送信してもよい。ユーザ端末200Bは、当該指示の受信に応じて、音声「これが、山田さん(患者名の一例)のカルテです。」を出力してもよい。
【0047】
2-3.
図5
図5には、ユーザ端末200の一例として、オフィス内で利用されるユーザ端末200Cが示される。ユーザ端末200Cは、たとえばスマートフォンである。
【0048】
ユーザは、ユーザ端末200Cに、クエリとして発話「A社をチェックして!」を入力する。ユーザ端末200Cは、サーバ100に、クエリとして発話「A社をチェックして!」を送信する。
【0049】
サーバ100は、株価に関する情報を提供する機能のための文法を利用して、ユーザ端末200Cから入力されたクエリの意味を解釈し、当該意味に基づいて当該クエリへの応答を生成する。そして、サーバ100は、ユーザ端末200Cから入力されたクエリへの応答として、ユーザ端末200Cに、A社の株価を送信する。これに応じて、ユーザ端末200Cは、当該ユーザ端末200CのディスプレイにA社の株価を表示し、および/または、当該ユーザ端末200CのスピーカからA社の株価を音声で出力する。
【0050】
2-4.
図6
図6には、ユーザ端末200の一例として、家庭内で利用されるユーザ端末200Dが示される。ユーザ端末200Dは、たとえば、スマートスピーカである。
【0051】
ユーザは、ユーザ端末200Dに、クエリとして発話「おばあちゃんに電話して!」を入力する。ユーザ端末200Dは、サーバ100に、クエリとして発話「おばあちゃんに電話して!」を送信する。
【0052】
サーバ100は、通話機能のための文法を利用して、ユーザ端末200Dから入力されたクエリの意味を解釈し、当該意味に基づいて当該クエリへの応答を生成する。そして、サーバ100は、ユーザ端末200Dから入力されたクエリへの応答として、ユーザ端末200Dに、ユーザ端末200Dにおいて「おばあちゃん」として登録されている電話番号に電話をかける指示を送信する。これに応じて、ユーザ端末200Dは、ユーザ端末200D内の「おばあちゃん」として登録されている電話番号に電話をかける。
【0053】
2-5.
図7
図7には、ユーザ端末200の一例として、キッチンで利用されるユーザ端末200Eが示される。ユーザ端末200Eは、たとえばスマートフォンである。
【0054】
ユーザは、ユーザ端末200Eに、クエリとして発話「ポトフのレシピを教えて!」を入力する。ユーザ端末200Eは、サーバ100に、クエリとして発話「ポトフのレシピを教えて!」を送信する。
【0055】
サーバ100は、調理に関する情報提供機能のための文法を利用して、ユーザ端末200Eから入力されたクエリの意味を解釈し、当該意味に基づいて当該クエリへの応答を生
成する。そして、サーバ100は、ユーザ端末200Eから入力されたクエリへの応答として、ユーザ端末200Eに、ポトフのレシピを送信する。これに応じて、ユーザ端末200Eは、当該ユーザ端末200Eが接続されるディスプレイにポトフのレシピを表示する。または、サーバ100は、上記クエリへの応答として、ユーザ端末200Eに、ポトフのレシピを提供するウェブサイトのリンクのリストを送信してもよい。この場合、ユーザ端末200Eは、当該リストを表示する。ユーザがリストから1つのリンクを選択したことに応じて、ユーザ端末200Eは、選択されたリンクに接続する。
【0056】
2-6.
図8
図8には、ユーザ端末200の一例として、テレビの前に座るユーザによって利用されるユーザ端末200Fが示される。ユーザ端末200Fは、たとえば、スマートフォンである。
【0057】
ユーザは、ユーザ端末200Fに、クエリとして発話「今夜はテレビで何があるかな?」を入力する。ユーザ端末200Fは、サーバ100に、クエリとして発話「今夜はテレビで何があるかな?」を送信する。
【0058】
サーバ100は、テレビ番組に関する情報を提供する機能のための文法を利用して、ユーザ端末200Fから入力されたクエリの意味を解釈し、当該意味に基づいて当該クエリへの応答を生成する。そして、サーバ100は、ユーザ端末200Fから入力されたクエリへの応答として、ユーザ端末200Fに、クエリが入力された日の夜間のテレビ番組表を送信する。これに応じて、ユーザ端末200Fは、サーバ100から送信されたテレビ番組表を表示する。
【0059】
2-7.
図9
図9には、ユーザ端末200の一例として、ユーザ端末200Gが示される。ユーザ端末200Gは、たとえばスマートフォンである。
【0060】
ユーザは、ユーザ端末200Gに、クエリとして発話「今日の天気は?」を入力する。ユーザ端末200Gは、サーバ100に、クエリとして、発話「今日の天気は?」とスマートフォン(ユーザ端末200G)の位置情報とを送信する。
【0061】
サーバ100は、天気に関する情報を提供する機能のための文法を利用して、ユーザ端末200Gから入力されたクエリの意味を解釈し、当該意味に基づいて当該クエリへの応答を生成する。そして、サーバ100は、ユーザ端末200Gから入力されたクエリへの応答として、ユーザ端末200Gに、ユーザ端末200Gにクエリが入力された場所の、当該クエリが入力された日の天気予報を送信する。これに応じて、ユーザ端末200Gは、サーバ100から送信された天気予報を表示および/または音声で出力する。
【0062】
3.ハードウェア構成(サーバ100)
図10は、サーバ100のハードウェア構成を表す図である。
【0063】
図10を参照して、サーバ100は、主要なハードウェア要素として、プロセッシングユニット11と、メモリ12と、入出力(I/O)インターフェース14と、ネットワークコントローラ15と、ストレージ16とを含む。
【0064】
プロセッシングユニット11は、後述するような各種プログラムを実行することで、サーバ100の実現に必要な処理を実行する演算主体である。プロセッシングユニット11は、例えば、1または複数のCPU(Central Processing Unit)および/またはGPU
(Graphics Processing Unit)である。プロセッシングユニット11は、複数のコアを有
するCPUまたはGPUであってもよい。プロセッシングユニット11は、学習済モデルを生成するための学習処理に適したNPU(Neural network Processing Unit)であってもよい。
【0065】
メモリ12は、プロセッシングユニット11がプログラムを実行するにあたって、プログラムコードやワークメモリなどを一時的に格納する記憶領域を提供する。メモリ12は、例えば、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性メモリデバイスであってもよい。
【0066】
プロセッシングユニット11は、I/Oインターフェース14を介して接続された機器(キーボード、マウス、等)からのデータの入力を受け付けることができ、また、I/Oインターフェース14を介して、機器(ディスプレイ、スピーカ、等)にデータを出力し得る。
【0067】
ネットワークコントローラ15は、公衆回線および/またはLAN(Local Area Network)を介して、ユーザ端末200を含む任意の情報処理装置との間でデータを送受信する。ネットワークコントローラ15は、たとえばネットワークインターフェースカードであってもよい。サーバ100は、クエリに対する応答を取得するために、ネットワークコントローラ15を利用して、外部のWebAPI(Application Programming Interface)
にリクエストを送信してもよい。ネットワークコントローラ15は、例えば、イーサネット(登録商標)、無線LAN、Bluetooth(登録商標)などの任意の通信方式に対応してもよい。
【0068】
ストレージ16は、たとえば、ハードディスクドライブ、または、SSD(Solid State Drive)などの不揮発性メモリデバイスであってもよい。ストレージ16は、プロセッ
シングユニット11にて実行される、学習用プログラム16A、前処理プログラム16B、アプリケーションプログラム16C、および、OS(Operating System)16Dを格納する。
【0069】
プロセッシングユニット11は、学習用プログラム16A、前処理プログラム16B、アプリケーションプログラム16C、および、OS(オペレーティングシステム)16Dを実行する。実現例では、サーバ100は異なるユーザから音声データを受信してもよく、それぞれのユーザの音声データを利用して、各ユーザについて学習済モデル16Gを構築してもよい。当該学習済モデル16Gは当該ユーザのユーザ端末200にダウンロードされて、当該ユーザ端末200がローカルで当該ユーザの発話の発話認識をできるようにされてもよい。
【0070】
それに向けて、サーバ100は、クエリの発話認識に利用される学習済モデル16Gの学習のための学習用プログラム16Aを有していても良い。実現例では、学習用プログラム16Aは、ニューラルネットワークの構造を有していてもよい。前処理プログラム16Bは、学習済モデル16Gの学習のために各ユーザから入力された音声データを収集及び前処理することにより、各ユーザのための学習用データセット16Hを生成するためのプログラムである。学習済モデル16Gの学習に特定のユーザから収集された音声データのみが利用された場合、学習済モデル16Gは特定のユーザについて個別に学習され得る。アプリケーションプログラム16Cは、クライアント端末200からのクエリの入力に応じて、クライアント端末200へ、当該クエリへの応答を送信するためのプログラムである。OS16Dは、サーバ100における処理の基本となるソフトウェアプログラムである。
【0071】
ストレージ16は、さらに、文法ライブラリ16E、ユーザ情報16F、学習済モデル
16G、学習用データセット16H、および、音声データ16Xを格納する。
【0072】
文法ライブラリ16Eは、クエリの意味の解釈に利用される文法に関する情報を格納する。文法ライブラリ16Eのデータ構造は、
図11を参照して後述される。
【0073】
ユーザ情報16Fは、クエリ処理システムにおいて登録される各ユーザに関する情報を格納する。ユーザ情報16Fのデータ構造は、
図12を参照して後述される。
【0074】
学習済モデル16Gは、上記のように、クエリの発話認識に利用される。学習用データセット16Hは、学習済モデル16Gの学習に利用されるデータセットである。学習用データセット16Hにおいて、各データセットは、対応する音声を発したユーザ、ユーザが発することを意図した単語またはフレーズを表す音声表記、ユーザの特性(年齢、性別、職業、など)、および/または、ユーザが対応する音声を発した状況(場所、時刻、など)にタグ付けされていてもよい。
【0075】
4.文法ライブラリ16Eのデータ構成
図11は、文法ライブラリ16Eのデータ構造を示す図である。
【0076】
文法ライブラリ16Eは、クエリの意味の解釈に利用される文法と、および、各文法に関連する情報とを格納する。
【0077】
各文法に関連する情報は、文法を分類するための項目(ドメイン)を含む。
図11には、ドメインA~Gが示される。
図11のすべてのドメインは複数の文法を含むが、1つの文法のみを含むドメインがあってもよい。
【0078】
ドメインAは、文法A1、A2、A3等を含む。文法A1は、「ラジオを点けて」という単語の組み合わせ(「ラジオ」「を」「点けて」)を規定する。文法A2,A3のそれぞれは、「窓を閉めて」「窓を開けて」という単語の組み合わせを規定する。ドメインAに属する文法は、自動車の要素を操作する機能を実現するために、車内で入力されたクエリの解釈に主に利用される。
【0079】
ドメインBは、文法B1等を含む。文法B1は、「カルテを見せて」という単語の組み合わせを規定する。ドメインBに属する文法は、手術室においてユーザに情報を提供する機能を実現するために、手術室で入力されたクエリの解釈に主に利用される。
【0080】
ドメインCは、文法C1等を含む。文法C1は、会社名を表すスロット(
図11中の<name of company>)、および、「をチェックして」という単語の組み合わせを規定する。
ドメインCに属する文法は、株価に関する情報を提供する機能を実現するために、オフィスで入力されたクエリの解釈に主に利用される。
【0081】
ドメインDは、文法D1,D2等を含む。文法D1は、アドレス帳の登録された名前を表すスロット(
図11中の<name>)、および、「に電話をかけて」という単語の組み合わせを規定する。文法D2は、ミュージシャンの名前を表すスロット(
図11中の<musician>)、「の」という単語、曲のタイトルを表すスロット(
図11中の<title>)、および
、「をかかけて」という単語の組み合わせを規定する。ドメインDに属する文法は、汎用の情報提供機能および通話機能を実現するために、家またはオフィスで入力されるクエリの解釈に主に利用される。
【0082】
ドメインEは、文法E1等を含む。文法E1は、料理名を表すスロット(
図11中の<dish>)、および、「のレシピを教えて」という単語の組み合わせを規定する。ドメインE
に属する文法は、調理に関する情報提供機能を実現するために、キッチンで入力されたクエリの解釈に主に利用される。
【0083】
ドメインFは、文法F1等を含む。文法F1は、時間または日付を表すスロット(
図11中の<time>)、および、「はテレビで何があるかな」という単語の組み合わせを規定する。ドメインFに属する文法は、テレビ番組に関する情報を提供する機能を実現するために、家のテレビの前で入力されたクエリの解釈に主に利用される。
【0084】
ドメインGは、文法G1,G2等を含む。文法G1は、「今日の天気を教えて」という単語の組み合わせを規定する。文法G2は、街の名前を表すスロット(
図11中の<city>)、および、「の今日の天気を教えて」という単語の組み合わせを規定する。ドメインGに属する文法は、天気に関する情報を提供する機能を実現するために、天気予報を尋ねるユーザが入力したクエリの解釈に主に利用される。
【0085】
文法ライブラリ16Eの項目「オフライン設定」は、各ドメインに属する文法を利用する機能が、ユーザ端末200がオフラインである間に利用され得るか否かを規定する。ユーザ端末200がオフラインである状態の一例は、ユーザ端末200がWi-Fiネットワークにつながっていないことによってサーバ100と通信ができない状態である。値「ON」は、ユーザ端末200がオフラインである間でも当該機能が利用され得ることを表す。値「OFF」は、ユーザ端末200がオフラインである間は当該機能が利用され得ないこ
とを表す。
【0086】
文法ライブラリ16Eの項目「予測されるデータタイプ」は、サーバ100があるユーザ端末からクエリを受信したときに、当該ユーザ端末が将来必要とすることが予測されるデータのタイプを規定する。
【0087】
たとえば、サーバ100は、クエリ「ビートルズのイエスタディをかけて!」を入力されると、文法D2("<musician>の<title>")を利用して当該クエリの意味を解釈す
る。文法D2の項目「予測されるデータタイプ」の値は、「<musician>の曲のタイトルのリスト」である。
【0088】
クエリ「ビートルズのイエスタディをかけて!」のうち、「ビートルズ」がスロット<musician>に対応し、「イエスタディ」がスロット<title>に対応する。一実現例では
、サーバ100は、上記のクエリ「ビートルズのイエスタディをかけて!」を入力されると、さらに、「予測されるデータタイプ」として「ビートルズの曲のタイトルのリスト」を特定してもよい。そして、サーバ100は、関連データとして、特定されたタイプのデータ、すなわち、ビートルズの曲のタイトルのリストを取得してもよい。サーバ100は、クエリ「ビートルズのイエスタディをかけて!」を送信してきたユーザ端末に、クエリ「ビートルズのイエスタディをかけて!」への応答に加えて、クエリ「ビートルズのイエスタディをかけて!」の関連データとして、ビートルズの曲のタイトルのリストを送信してもよい。
【0089】
文法ライブラリ16Eの項目「有効期限」は、関連データに付与される有効期限を規定する。有効期限は、主にユーザ端末200で利用され、クエリがユーザ端末200のメモリにおいて維持される期間(日数など)に関連する期間を規定する。
【0090】
たとえば、
図11では、文法G1の予測されるデータ「現在地の7日間の天気予報」に対して、有効期限「7日」が規定されている。この場合、サーバ100は、大阪に位置するユーザ端末200から10月1日にクエリ「今日の天気を教えて」を入力されると、当該クエリへの応答として大阪の10月1日の天気予報を送信し、さらに、関連データとし
て、10月2日から10月8日までの7日間の大阪の天気予報を送信する。当該関連データには、「7日間」の有効期限が付与される。ユーザ端末200は、10月1日より後の7日後、すなわち、10月8日まで、サーバ100から送信された関連データを保持する。ユーザ端末200は、ユーザ端末200がオフラインである間、関連データを利用して、ユーザから入力されたクエリへの応答を出力し得る。有効期限を過ぎると、すなわち、10月8日を過ぎると、ユーザ端末200は、関連データを当該ユーザ端末200から削除する。
【0091】
文法ライブラリ16Eの項目「カウント(1)」は、各文法がクエリの意味の解釈に利用された回数を表す。項目「カウント(2)」は、各ドメインに属する文法がクエリの意味の解釈に利用された回数の合計を表す。たとえば、文法A1がクエリの意味の解釈に利用されると、文法A1のカウント(1)の値が1カウントアップされ、さらに、ドメインAのカウント(2)の値が1カウントアップされる。
【0092】
5.ユーザ情報16Fのデータ構成
図12は、ユーザ情報16Fのデータ構造を示す図である。ユーザ情報16Fは、「ユーザID」と、「端末ID」と、「送信された文法」とを関連付ける。「送信された文法」は、各端末に送信された文法が属するドメインの名称を規定する。
【0093】
ユーザIDは、各ユーザに割り振られた値を規定する。端末IDは、各ユーザ端末200に割り振られた値を表す。送信済文法は、各ユーザ端末200に送信された文法が属するドメインを表す。
【0094】
図12の例において、端末ID「SP01」は、ユーザID「0001」、ならびに、ドメインA,Cに関連付けられている。このことは、ユーザID「0001」を割り当てられたユーザが端末ID「SP01」を割り当てられた端末を用いてサーバ100に1つ以上のクエリを送信したこと、および、サーバ100が端末ID「SP01」を割り当てられた端末にドメインAおよびドメインCに属する文法を送信したことを意味する。
【0095】
一実現例では、サーバ100は、各ユーザ端末200に、ドメインの一部の文法のみを送信してもよい。この場合、ユーザ情報16Fは、「送信済文法」の値として、各ユーザ端末200に送信された文法(文法A1、など)を規定してもよい。
【0096】
6.ハードウェア構成(ユーザ端末200)
図13は、ユーザ端末200のハードウェア構成を示す図である。
【0097】
図13を参照して、ユーザ端末200は、主要なハードウェア要素として、CPU201と、ディスプレイ202と、マイクロフォン203と、スピーカ204と、GPS(Global Positioning System)受信器205と、通信インターフェース(I/F)206と
、ストレージ207と、メモリ210とを含む。
【0098】
CPU201は、各種プログラムを実行することで、ユーザ端末200の実現に必要な処理を実行する演算主体である。
【0099】
ディスプレイ202は、たとえば液晶ディスプレイデバイスであってもよい。CPU201は、処理の実行結果をディスプレイ202に表示してもよい。
【0100】
マイクロフォン203は、音声の入力を受け付け、受け付けられた音声に対応する信号をCPU201によるアクセスのためにストレージ207へ出力する。スピーカ204は、音声を出力する。CPU201は、処理の実行結果を音声としてスピーカ204から出
力してもよい。
【0101】
GPS受信器205は、GPS衛星からの信号を受信して、CPU201によるアクセスのためにストレージ207へ当該信号を出力する。CPU201は、GPS受信器205からの信号に基づいて、ユーザ端末200の現在位置を特定してもよい。
【0102】
通信I/F206は、公衆回線および/またはLANを介して、サーバ100を含む任意の情報処理装置との間でデータを送受信する。通信I/F206は、たとえばモバイルネットワークインターフェースであってもよい。
【0103】
ストレージ207は、たとえば、ハードディスクドライブまたはSSD(Solid State Drive)などの不揮発性メモリデバイスであってもよい。ストレージ207は、アプリケ
ーションプログラム2071を格納する。ストレージ207は、文法領域2072、関連データ領域2073、失敗データ領域2074、場所情報2075、および、学習済モデル2076を含む。
【0104】
アプリケーションプログラム2071は、ユーザからのクエリの入力を受け付け、当該クエリへの応答を出力するためのプログラムである。アプリケーションプログラム2071は、たとえば、カーナビゲーションプログラムまたはアシスタントプログラムであってもよい。
【0105】
文法領域2072は、サーバ100から送信された文法を格納するための領域である。関連データ領域2073は、サーバ100から送信された関連データを格納するための領域である。失敗データ領域2074は、ユーザ端末200においてクエリの意味の解釈が実行された場合であって、解釈が失敗した場合に、対象となったクエリを格納するための領域である。
【0106】
場所情報2075は、ユーザ端末200の場所を表し、クエリの意味の解釈に利用される文法の種類を選択するために利用され得る情報とを格納するための領域である。場所情報2075のデータ構造は、
図14を参照して後述される。学習済モデル16Gは、サーバ100から送信されて、ストレージ207に学習済モデル2076として格納される。
【0107】
7.場所情報2075のデータ構造
図14は、場所情報2075のデータ構造の一例を示す図である。場所情報2075は、場所「自宅」と文法「ドメインD,E,F,G」とを関連付け、場所「オフィス」と文法「ドメインC」とを関連付けている。
【0108】
ユーザ端末200は、
図14に示された情報に基づいて、オフライン時のクエリの意味の解釈において利用する文法を決定してもよい。たとえば、ユーザ端末200は当該ユーザ端末200の場所に応じて異なる文法を利用してもよい。
【0109】
ユーザ端末200は、クエリの入力に応じて、当該ユーザ端末200自身の位置を特定してもよい。一例では、ユーザ端末200の位置は、GPS受信器205によって受信されたGPSデータに基づいて特定され得る。他の例では、ユーザ端末200の位置は、ユーザ端末200が受信したビーコン信号の種類に基づいて特定され得る。他の例では、ユーザ端末200の位置は、IPアドレスまたは携帯電話基地局ID等のネットワーク情報に基づいて特定され得る。
【0110】
一実現例では、特定された位置が「自宅」として予め登録された場所にあれば、ユーザ端末200は、ドメインD,E,F,Gに属する文法を利用してクエリの解釈を試み、他
のドメインに属する文法を利用してクエリの解釈を試みなくてもよい。特定された位置が「オフィス」として予め登録された場所にあれば、ユーザ端末200は、ドメインCに属する文法を利用してクエリの解釈を試み、他のドメインに属する文法を利用してクエリの解釈を試みなくてもよい。
【0111】
8.サーバ100における処理
図15および
図16は、サーバ100においてクエリへの応答の出力のために実行される処理のフローチャートである。一実現例では、
図15および
図16の処理は、プロセッシングユニット11がアプリケーションプログラム16Cを実行することによって実現される。一実現例では、サーバ100は、ユーザ端末200からクエリの送信を宣言するデータを受信したことを起因として
図15および
図16の処理を開始する。
【0112】
まず
図15を参照して、ステップS100にて、サーバ100は、ユーザ端末200からクエリを受信する。
【0113】
ステップS102にて、サーバ100は、ユーザ端末200から送信されたクエリに対して発話認識を実行することにより、クエリのトランスクリプションを生成する。ユーザ端末200からクエリが音声以外の形式で送信された場合には、ステップS102は省略され得る。ユーザはユーザ端末200にテキスト形式でクエリを入力することができる。ユーザ端末200はサーバ100にテキスト形式でクエリを送信することができる。ユーザ端末200から送信されたクエリがテキスト形式であれば、サーバ100はステップS102を省略してもよい。
【0114】
ステップS104にて、サーバ100は、ステップS102にて生成されたトランスクリプション(またはユーザ端末200から送信されたテキストデータ)に対して自然言語解釈を実施する。これにより、クエリの意味の解釈が実施される。
【0115】
サーバ100は、ステップS104において、複数の文法の中からクエリの意味の解釈に利用可能な文法を選択し、選択された1つの文法を用いてクエリの意味を解釈してもよい。
【0116】
一実現例では、ユーザの1回のスピーチが複数のトランスクリプションを含むことが想定される場合に、当該複数のトランスクリプションのためのステップS102およびステップS104のそれぞれのステップは結合され得る。
【0117】
ステップS106にて、サーバ100は、ステップS104においてクエリの意味の解釈に利用された文法について文法ライブラリ16Eのカウントを加算する。より具体的には、サーバ100は、利用された文法についてカウント(1)を1加算更新し、利用された文法が属するカウント(2)を1加算更新する。
【0118】
ステップS108にて、サーバ100は、ステップS104における解釈に基づいて、クエリへの応答を生成する。
【0119】
一例では、サーバ100は、クエリ「ラジオをつけて」への応答として、自動車に搭載されたラジオをONする指示を取得する。他の例では、サーバ100は、クエリ「A社をチェックして」への応答を取得するために、株価を提供するAPIに対してクエリの少なくとも一部(A社)を送信することによりA社の株価を問合せてもよい。サーバ100は、当該問合せへの回答としてAPIから取得したA社の株価を、クエリ「A社をチェックして」への回答として取得する。
【0120】
さらに他の例では、サーバ100は、クエリ「ビートルズのイエスタディをかけて」への応答として、ビートルズのイエスタディの音声ファイルを検索する指示と当該音声ファイルを再生する指示とを取得する。
【0121】
ステップS110にて、サーバ100は、ステップS108にて取得された応答をユーザ端末200へ送信する。
【0122】
ステップS112にて、サーバ100は、ステップS104において利用された文法が、ユーザ端末200において格納されているか否かを判断する。一実現例では、サーバ100は、ユーザ情報16F(
図12)において、ステップS100において送信されたクエリの送信元であるユーザ端末200の送信済文法を参照する。より具体的には、サーバ100は、送信済文法として格納されたドメインに属する文法が、ステップS104にて利用された文法を含む場合には、サーバ100は、当該文法がユーザ端末200に格納されていると判断する。
【0123】
サーバ100は、ステップS104において利用された文法がユーザ端末200において格納されていると判断すると(ステップS112にてYES)、ステップS120(
図16)へ制御を進め、そうでなければ(ステップS112にてNO)、ステップS114へ制御を進める。
【0124】
ステップS112を含まない実現例があってもよい。このような実現例では、ステップS110からステップS114へ直接進められても良い。このような実現例では、ユーザ端末200は同一の文法を複数回受信すると、同一の文法のコピーを無視(または削除)する。このような実現例は、ネットワークトラフィックの増加により通信帯域をより多く利用することになるが、ユーザ端末においてどの文法が格納されているかという情報をサーバにおいて正確に管理する煩雑さは回避し得る。
【0125】
ステップS114にて、サーバ100は、ステップS104において利用された文法の「オンライン設定」の値が、文法ライブラリ16EにおいてONと設定あれているか否かを判断する。サーバ100は、ステップS104において利用された文法の「オンライン設定」の値がONであれば(ステップS114にてYES)、ステップS116へ制御を進め、そうでなければ(ステップS114にてNO)、ステップS120(
図16)へ制御を進める。
【0126】
実現例では、ユーザ端末200は、あるクエリに対して所与の回数利用された文法のみを受信する要求に構成されていてもよい。この場合、あまり利用されない文法のダウンロードが回避され得る。このような実現例に応じて、ステップS116にて、サーバ100は、ステップS104において利用された文法に関連するカウント値が所与の閾値を超えているか否かを判断する。ステップS116における「カウント値」は、文法ライブラリ16Eにおけるカウント(1)の値、カウント(2)の値、または、カウント(1)とカウント(2)の双方の値であってもよい。サーバ100は、カウント値が所与の閾値を超えていると判断すると(ステップS116にてYES)、ステップS118へ制御を進め、そうでなければ(ステップS116にてNO)、ステップS120(
図16)へ制御を進める。
【0127】
ステップS118にて、サーバ100は、ステップS104において利用された文法をユーザ端末200へ送信する。ステップS118において、サーバ100は、さらに、ステップS104において利用された文法と同じドメインに属する他の文法をユーザ端末200へ送信してもよい。その後、ステップS120(
図16)へ制御を進める。
【0128】
図16を参照して、ステップS120にて、サーバ100は、ステップS114と同様に、テップS104において利用された文法の「オンライン設定」の値が、文法ライブラリ16EにおいてONと設定されているか否かを判断する。サーバ100は、「オンライン設定」の値がONであれば(ステップS120にてYES)、ステップS122へ制御を進め、そうでなければ(ステップS120にてNO)、処理を終了させる。
【0129】
ステップS122にて、サーバ100は、文法ライブラリ16Eにおいて、ステップS104において利用された文法に対応する「予測されるデータタイプ」を特定する。
【0130】
ステップS104において文法D2が利用されれば、サーバ100は、「予測されるデータタイプ」として、クエリに含まれたミュージシャンの曲のタイトルリストを特定する。より具体的には、クエリ「ビートルズのイエスタディをかけて」の意味が文法D2を利用して解釈された場合、サーバ100は、「予測されるデータタイプ」として、「ビートルズの曲のタイトルリスト」を特定する。
【0131】
ステップS104において文法G2が利用されれば、サーバ100は、「予測されるデータタイプ」として、クエリに含まれた都市の7日間の天気予報を特定する。より具体的には、クエリ「大阪の天気を教えて」の意味が文法G2を利用して解釈された場合、サーバ100は、「予測されるデータタイプ」として、「クエリを入力された日の翌日から7日分の大阪の天気予報」を特定する。
【0132】
ステップS124にて、サーバ100は、関連データとして、ステップS122にて特定されたタイプのデータを取得する。たとえば、「予測されるデータタイプ」として「ビートルズの曲のタイトルリスト」が特定された場合、サーバ100は、当該タイトルリストのデータを取得する。「予測されるデータタイプ」として「クエリを入力された日の翌日から7日分の大阪の天気予報」が特定された場合、サーバ100は、天気予報APIに大阪の当該7日分の天気予報を要求し、当該要求に応じて得られた天気予報のデータを取得する。
【0133】
ステップS126にて、サーバ100は、ステップS124において取得された関連データをユーザ端末200へ送信する。
【0134】
ステップS128にて、サーバ100は、ユーザ端末200のユーザに対応する学習済モデル16Gをユーザ端末200へ送信する。一実現例では、サーバ100は、ユーザ情報16F(
図12)を参照することにより、通信相手であるユーザ端末200に関連付けられたユーザIDを特定し、特定されたユーザに対応してストレージ16において格納されている学習済モデル16Gをユーザ端末200へ送信する。その後、サーバ100は処理を終了させる。
【0135】
以上、
図15および
図16を参照して説明された処理によれば、サーバ100は、ユーザ端末200から送信されたクエリの自然言語解釈に利用された文法を、ユーザ端末200へ送信する。
【0136】
ステップS112に関連して説明されたように、サーバ100は、上記文法がユーザ端末200に格納されていないことを条件として、ユーザ端末200へ文法を送信してもよい。ステップS114に関連して説明されたように、サーバ100は、ユーザ端末200が上記文法を用いた機能をオフライン状態で実行するように構成されていることを条件として(オフライン設定の値がON)、ユーザ端末200へ上記文法を送信してもよい。ステップS116に関連して説明されたように、サーバ100は、ステップS104において利用された文法の利用回数(カウント(1))、または、当該文法と同じドメインに属
する文法の利用回数(カウント(2))が所与の閾値を超えたことを条件として、ユーザ端末200へ上記文法を送信してもよい。
【0137】
ステップS122~S126に関連して説明されたように、サーバ100は、サーバ100は、入力されたクエリに基づいて将来のクエリへの応答に必要なデータのタイプ(予測されるデータタイプ)を予測し、予測されたタイプのデータ(関連データ)をユーザ端末200へ送信してもよい。
【0138】
サーバ100は、ステップS126において、さらに、関連データの有効期限を送信してもよい。有効期限は、
図11において示されるように、「予測されるデータタイプ」ごとに特定され得る。有効期限は、関連データのメタデータとして送信されてもよい。
【0139】
サーバ100は、学習済モデル16Gの訓練のための処理を実行してもよい。訓練は、ユーザごとに実行されてもよい。ステップS128に関連して説明されたように、サーバ100は、ユーザ端末200に、ユーザ端末200のユーザの学習済モデル16Gを送信してもよい。
【0140】
一実現例では、サーバ100における学習済モデル16Gの学習には、1人以上のユーザの発話の音声データと各音声データに対応するテキストデータとが学習用データセット16Hとして利用され得る。教師データは、さらに、上記1人以上のユーザのそれぞれに関する情報(たとえば、各ユーザのユーザ端末に格納されている「連絡先」ファイルの中の名前)を含んでも良い。訓練には、たとえば、参考文献1("Robust i-vector based Adaptation of DNN Acoustic Model for Speech Recognition", <URL: http://www1.icsi.berkeley.edu/~sparta/2015_ivector_paper.pdf >)、参考文献2("PERSONALIZED SPEECH RECOGNITION ON MOBILE DEVICES", <URL: https://arxiv.org/pdf/1603.03185.pdf>)
、参考文献3("Speech Recognition Based on Unified Model of Acoustic and Language Aspects of Speech", <URL: https://www.ntt-review.jp/archive/ntttechnical.php?contents=ntr201312fa4.pdf&mode=show_pdf>)、および、参考文献4(音声と言語の一体
型学習に基づく音声認識技術, <URL: https://www.ntt.co.jp/journal/1309/files/jn201309022.pdf>)に記載の技術が利用され得る。
【0141】
9.ユーザ端末200における処理
図17および
図18は、ユーザ端末200において実行される処理のフローチャートである。一実現例では、ユーザ端末200のCPU201が所与のプログラムを実行することによって、
図17および
図18の処理が実現される。
図17および
図18の処理は、たとえば一定時間ごとに開始される。
【0142】
図17を参照して、ステップS200にて、ユーザ端末200は、関連データ領域2073に格納された関連データの中で、有効期限を過ぎた関連データを削除する。
【0143】
ステップS202にて、ユーザ端末200は、当該ユーザ端末200がオンラインであるか(サーバ100と通信可能であるか)否かを判断する。ユーザ端末200は、当該ユーザ端末200がオンラインであると判断すると(ステップS202にてYES)、ステップS204へ制御を進め、そうでなければ(ステップS202にてNO)、ステップS226(
図18)へ制御を進める。
【0144】
ステップS204にて、ユーザ端末200は、失敗データ領域2074(後述のステップS242参照)に格納されたクエリをサーバ100へ送信する。クエリが時刻情報および/または位置情報と関連付けられている場合、ステップS204では時刻情報および/または位置情報もサーバ100へ送信されてもよい。クエリの送信後、ユーザ端末200
は、送信されたクエリを失敗データ領域2074から削除してもよい。
【0145】
ステップS206にて、ユーザ端末200は、クエリを取得する。一例では、クエリはマイクロフォン203を介して音声で入力される。他の例では、クエリはユーザ端末200のタッチセンサ(図示略)に対する操作によってテキストデータで入力される。
【0146】
ステップS208にて、ユーザ端末200は、ステップS206において取得されたクエリをサーバ100へ送信する。送信されたクエリは、ステップS100(
図15)においてサーバ100によって受信され得る。
【0147】
ステップS210にて、ユーザ端末200は、サーバ100から、クエリへの応答を受信する。応答は、ステップS110(
図15)においてサーバ100から送信され得る。
【0148】
ステップS212にて、ユーザ端末200は、サーバ100から送信された応答を出力する。応答の出力の一例は、応答に含まれる指示に従った動作である。たとえば、応答が「ラジオをONする指示」を含む場合、ユーザ端末200は、当該ユーザ端末200が搭載されている自動車に搭載されているラジオをONする。
【0149】
ステップS214にて、ユーザ端末200は、サーバ100から送信された文法を受信する。文法は、ステップS118(
図15)においてサーバ100から送信され得る。
【0150】
ステップS216にて、ユーザ端末200は、ステップS214において受信した文法を文法領域2072に格納する。
【0151】
ステップS218にて、ユーザ端末200は、関連データを受信する。関連データは、ステップS126(
図16)においてサーバ100から送信され得る。
【0152】
ステップS220にて、ユーザ端末200は、ステップS218において受信した関連データを関連データ領域2073に格納する。
【0153】
ステップS222にて、ユーザ端末200は、学習済モデル16Gを受信する。学習済モデル16Gは、ステップS128(
図16)においてサーバ100から送信され得る。
【0154】
ステップS224にて、ユーザ端末200は、ステップS222において受信した学習済モデル16Gをストレージ207に学習済モデル2076として格納する。その後、ユーザ端末200は処理を終了させる。
【0155】
ステップS208においてサーバ100へ送信されたクエリは、ステップS214の文法、ステップS218の関連データ、および、ステップS222の学習済モデルの中の少なくとも1つの影響を及ぼしても良いし、及ぼさなくてもよい。
【0156】
本件の技術の局面に従えば、ステップS202においてユーザ端末200がオフライン(サーバ100との接続がない)であるか否かが決定されるとき、ユーザ端末200は発話を解析してクエリを生成するために発話認識を利用する。個人に最適化された学習済モデル2076(サーバ100で生成され、ユーザ端末200にダウンロードされる)は、この目的において利用され得る。クエリが認識されると、本件技術は、クエリの自然言語的な意味を解釈するために、ダウンロードされてローカルで格納された、1つ以上の文法を利用してもよい。本件技術は、ローカルに格納されている文法かサーバ100に格納されている文法のいずれを使用するかの選択において、以下に説明されるようなあらゆる所与の基準を適用してもよい。
【0157】
図18を参照して、ステップS226にて、ユーザ端末200は、ステップS206と同様にクエリを取得する。
【0158】
ステップS228にて、ユーザ端末200は、クエリを取得したときの時刻情報を取得する。取得された時刻情報は、ステップS226において取得されたクエリに関連付けられてストレージ207に格納されてもよい。
【0159】
ステップS230にて、ユーザ端末200は、クエリを取得したときのユーザ端末200の位置情報を取得する。取得された位置情報は、ステップS226において取得されたクエリに関連付けられてストレージ207に格納されてもよい。
【0160】
ステップS231にて、ユーザ端末200は、想定される1以上のユーザから、ユーザ端末200を使用していると1人のユーザを特定する。実現例では、1人のユーザの特定は、ログインアカウントのプロファイルを読み出すことによって行なわれても良い。実現例では、1人のユーザの特定は、音によるクエリの音声に関する音声のフィンガープリントアルゴリズムを利用することによって行なわれても良い。ユーザの特定に基づいて、ユーザ端末200は、個人に最適化された学習済モデル2076として、1以上のモデルから1つの学習済モデルを選択する。
【0161】
ステップS232にて、ユーザ端末200は、ステップS226において取得されたクエリの発話認識を実行する。発話認識において、ユーザ端末200は、学習済モデル2076を利用してもよい。ステップS232の制御は、クエリが音声で入力されたことを条件として実施されてもよい。クエリがテキストデータとして入力された場合には、ステップS232の制御は省略されてもよい。
【0162】
ステップS234にて、ユーザ端末200は、ステップS226において取得されたクエリについて自然言語解釈を実施する。これにより、当該クエリの意味が解釈される。自然言語解釈において、ユーザ端末200は、文法領域2072に格納された文法を利用してもよい。文法領域2072において格納された文法は、ステップS206において取得されたクエリの意味の解釈に利用された文法を含む。すなわち、ユーザ端末200は、ステップS206において取得されたクエリ(第1のクエリ)の意味の解釈に利用された文法を、ステップS226において取得されたクエリ(第2のクエリ)の意味の解釈に利用することができる。
【0163】
自然言語解釈に利用される文法は、ユーザ端末200がクエリを取得した状況に従って選択されてもよい。状況の違いによって使用される文法がどのように異なるかが以下に説明される。状況に応じて利用可能な文法を制限することによって、クエリの自然言語解釈に誤った文法が利用されることがより確実に回避され得る。すなわち、クエリの意味の解釈の精度が向上され得る。
【0164】
一例では、ユーザ端末200は、場所情報2075(
図14)を参照して、クエリが取得されたときに取得された位置情報に従って、自然言語解釈に利用され得る文法の範囲を選択してもよい。
図14の例では、クエリを取得されたときの位置情報が「自宅」として登録されている場所に含まれる場合、自然言語解釈に利用される文法は、ドメインD,E,F,およびGの中から選択される。クエリを取得されたときの位置情報が「オフィス」として登録されている場所に含まれる場合、自然言語解釈に利用される文法は、ドメインCから選択される。
【0165】
他の例では、ユーザ端末200は、クエリが取得されたときに取得された時刻情報に従
って、自然言語解釈に利用され得る文法の範囲を選択してもよい。より具体的には、時刻情報がユーザの就業時間として登録されている時間帯に含まれる場合、自然言語解釈に利用される文法は、ドメインCから選択される。時刻情報がユーザの就業時間として登録されている時間帯に含まれない場合、自然言語解釈に利用される文法は、ドメインD,E,F,およびGの中から選択される。
【0166】
さらに他の例では、ユーザ端末200は、クエリが取得されたときに取得された位置情報と時刻情報との組合せに従って、自然言語解釈に利用され得る文法の範囲を選択してもよい。より具体的には、クエリを取得されたときの位置情報が「自宅」として登録されている場所に含まれる場合、時刻情報がユーザの調理時間として登録されている時間帯に含まれるときには、自然言語解釈に利用される文法はドメインEから選択され、当該時間帯に含まれないときには、自然言語解釈に利用される文法はドメインD,F,およびGから選択される。
【0167】
ある実現例では、位置情報および/または時間情報は文法の範囲の選択のための厳密な条件である代わりに、あるテキストデータまたは発話のトランスクリプションの解釈のために正しい文法であると仮定された1つ以上の文法に重みを付しても良い。一例では、アプリケーションプログラム16Cは、各文法について、上記テキストデータまたは発話のトランスクリプションへの適用のための確率を出力する。アプリケーションプログラム16Cは、出力された確率と上述の重みの和が最も大きい文法を、上記テキストデータまたは発話のトランスクリプションの解釈に利用する文法として選択する。
【0168】
ステップS236にて、ユーザ端末200は、ステップS234における自然言語解釈が成功したか否かを判断する。クエリが文法領域2072に格納されている1以上の文法のいずれかによって解釈された場合、ユーザ端末200は自然言語解釈が成功したと判断する。クエリが文法領域2072に格納されている1以上の文法のいずれかによっても解釈されなかった場合、ユーザ端末200は自然言語解釈が失敗したと判断する。
【0169】
ステップS234における自然言語解釈が成功したと判断すると(ステップS236にてYES)、ユーザ端末200はステップS238へ制御を進める。ステップS234における自然言語解釈が失敗したと判断すると(ステップS236にてNO)、ユーザ端末200はステップS242へ制御を進める。
【0170】
ステップS238にて、ユーザ端末200は、ステップS234における解釈に基づいて、ステップS226において取得されたクエリへの応答を取得する。ユーザ端末200は、関連データ領域2073内の関連データからクエリへの応答を取得してもよい。
【0171】
一例では、ステップSステップS206においてクエリ「ビートルズのイエスタディをかけて」が取得されると、ユーザ端末200は、ステップS220において、関連データとしてビートルズの曲のタイトルのリストを関連データ領域2073に格納する。その後、ステップS226にて、クエリ「ビートルズの曲のリストを教えて」を取得すると、ユーザ端末200は、当該クエリへの応答として、関連データ領域2073に格納されたビートルズの曲のリストを取得する。
【0172】
ステップS240にて、ユーザ端末200は、ステップS238において取得された応答を出力する。その後、ユーザ端末200は処理を終了させる。
【0173】
ステップS242にて、ユーザ端末200は、ステップS226において取得されたクエリを失敗データ領域2074に格納する。失敗データ領域2074に格納されたクエリは、ステップS204においてサーバ100へ送信される。その後、ユーザ端末200は
処理を終了させる。
【0174】
図17および
図18を参照して説明された処理では、ユーザ端末200がオフライン状態にあるときに自然言語解釈に失敗したクエリがサーバ100へ送信される。ユーザ端末200がオフライン状態にあるときに自然言語解釈に成功したクエリもサーバ100へ送信されてもよい。これにより、サーバ100は、オフライン状態にあるときにユーザ端末200に入力されたクエリを取得し得る。サーバ100は、これらのクエリの意味の解釈に利用される文法を特定してもよい。サーバ100は、特定された文法に関するカウント(1)およびカウント(2)を加算更新してもよい。これにより、カウント(1)およびカウント(2)の値に、オフライン時にユーザ端末200に入力されたクエリに関する情報も反映され得る。
【0175】
開示された特徴はコンピュータによって実行される方法、システム、コンピュータソフトウェア(プログラム)、および/または、当該方法を実施するための命令を格納した非一時的にデータを記録するコンピュータ可読記録媒体として要約され得る。たとえば、本開示の1つの局面に従うと、非一時的にデータを記録するコンピュータ可読記録媒体は、クライアント端末からクエリの入力を受信すること、文法を利用して当該クエリの自然言語解釈を実行すること、当該自然言語解釈の実行の後にクエリへの応答を出力すること、および、当該クライアント端末に当該文法を送信することを含む方法を実行するための命令を格納する。
【0176】
今回開示された各実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合わせても、実施することが意図される。
【符号の説明】
【0177】
100 サーバ、200,200A~200G ユーザ端末、1500 推定モデル。
【手続補正書】
【提出日】2021-10-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータによって実行される方法であって、
クライアント端末からクエリの入力を受け付けるステップと、
文法を利用して、前記クエリの自然言語解釈を実行するステップと、
自然言語解釈の前記実行の後、前記クエリへの応答を出力するステップと、
前記クライアント端末へ前記文法を送信するステップと、
前記クライアント端末へ、前記クライアント端末における発話認識に利用される発話認識モデルを送信するステップと、を備え、
前記発話認識モデルは、前記クライアント端末のユーザから入力された音声を含む学習用データセットを利用して学習されており、
前記学習用データセットは、前記クライアント端末に格納されている前記ユーザに関する情報を、教師データとして含む、方法。
【請求項2】
前記クライアント端末のユーザから入力された音声を用いて、前記発話認識モデルの学習用データセットを生成するステップをさらに備える、請求項1に記載の方法。
【請求項3】
前記ユーザに関する情報は、連絡先ファイルに含まれる、請求項1または請求項2に記載の方法。
【請求項4】
前記ユーザに関する情報は、連絡先ファイルの中の名前を含む、請求項1または請求項2に記載の方法。
【請求項5】
1以上のプロセッサと、
前記1以上のプロセッサによって実行されることにより、前記1以上のプロセッサに、請求項1~請求項4のいずれか1項に記載の方法を実施させるコンピュータプログラムを格納した記憶装置と、を備えるサーバ装置。
【請求項6】
ユーザに関する情報を格納する記憶装置を含むコンピュータによって実行される方法であって、
サーバ装置へ第1のクエリを送信するステップと、
前記サーバ装置から前記第1のクエリの自然言語解釈に利用された文法を受信するステップと、
前記サーバ装置から発話認識に利用される発話認識モデルを受信するステップと、
受信された前記文法をメモリに格納するステップと、
音声入力を受け付けるステップと、
前記音声入力に対して、前記発話認識モデルを用いて発話認識することにより、第2のクエリを生成するステップと、
前記コンピュータが前記サーバ装置と接続されていないときに、前記文法を利用して、前記第2のクエリの自然言語解釈を実行するステップと、を備え、
前記発話認識モデルは、前記ユーザから入力された音声を含む学習用データセットを利用して学習されており、
前記学習用データセットは、前記記憶装置に格納されている前記ユーザに関する情報を、教師データとして含む、方法。
【請求項7】
コンピュータの1以上のプロセッサによって実行されることにより、前記コンピュータに請求項6に記載の方法を実施させる、コンピュータプログラム。
【請求項8】
クライアント端末と、
前記クライアント端末から入力されたクエリに対する応答を前記クライアント端末に送信するサーバ装置と、を備え、
前記サーバ装置は、文法を利用して、前記クエリの自然言語解釈を実行する1つ以上のプロセッサを含み、
前記1つ以上のプロセッサは、発話認識に利用される発話認識モデルおよび前記文法を前記クライアント端末へ送信し、
前記発話認識モデルは、前記クライアント端末のユーザから入力された音声を含む学習用データセットを利用して学習されており、
前記学習用データセットは、前記クライアント端末に格納されている前記ユーザに関する情報を、教師データとして含む、情報処理システム。