(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-27
(45)【発行日】2023-12-05
(54)【発明の名称】代替インタフェースでのプレゼンテーションのための電子会話の解析
(51)【国際特許分類】
G06F 16/35 20190101AFI20231128BHJP
G10L 13/08 20130101ALI20231128BHJP
G06F 3/16 20060101ALI20231128BHJP
【FI】
G06F16/35
G10L13/08 122
G06F3/16 690
G06F3/16 650
(21)【出願番号】P 2021085306
(22)【出願日】2021-05-20
(62)【分割の表示】P 2019559778の分割
【原出願日】2018-10-29
【審査請求日】2021-05-20
(32)【優先日】2017-11-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100142907
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】メイリー、スティーブン
【審査官】酒井 恭信
(56)【参考文献】
【文献】特開2011-248508(JP,A)
【文献】特開2010-039289(JP,A)
【文献】特開2008-081031(JP,A)
【文献】特開2016-014969(JP,A)
【文献】特開平10-254470(JP,A)
【文献】特開2008-071052(JP,A)
【文献】特開2006-033741(JP,A)
【文献】特開2006-039307(JP,A)
【文献】特開2007-013361(JP,A)
【文献】国際公開第2017/095560(WO,A1)
【文献】特開2010-072704(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00 - 16/958
G10L 13/00 - 13/10
G06F 3/16
(57)【特許請求の範囲】
【請求項1】
コンピュータが実施する方法であって、
複数の参加者間の電子メッセージング交換を音声インタフェースにより提示することを、ユーザのコンテキス
トに基づいて決定するステップであって、前記
ユーザのコンテキストは、ユーザに関連付けられたユーザデバイスの位置、ユーザに関連付けられた前記ユーザデバイスの動き、またはユーザが移動中の車両に搭乗していることの表示のうちの1つ以上に基づいており、
前記電子メッセージング交換を分析することにユーザが同意しない場合、ユーザ入力に基づいて
、前記電子メッセージング交換を分析して前記電子メッセージング交換を前記音声インタフェースにより提示する機能が一時的に無効にされる、決定するステップと、
前記電子メッセージング交換における複数のオブジェクトを識別するステップであって、前記電子メッセージング交換は、異なるメディアタイプのオブジェクトを含み、前記複数のオブジェクトは、言語オブジェクトおよび非言語オブジェクトを含み、前記言語オブジェクトと前記非言語オブジェクトとは、異なるメディアタイプのオブジェクトである、前記複数のオブジェクトを識別するステップと、
前記複数のオブジェクトを、各オブジェクトの異なるメディアタイプによって言語オブジェクトグループと非言語オブジェクトブループとにグループ化するステップと、
前記言語オブジェクトグループおよび前記非言語オブジェクトブループに基づいて前記電子メッセージング交換を分析して、前記電子メッセージング交換の会話構造を決定するステップと、
前記電子メッセージング交換の前記会話構造に基づいて、前記言語オブジェクトグループおよび前記非言語オブジェクトブループに会話フレーミングを適用するステップと、
前記非言語オブジェクトのテキスト説明の言語表現を含む音声インタフェース会話プレゼンテーションを生成するステップと、
音声出力デバイスによる出力のために前記音声インタフェース会話プレゼンテーションを提供するステップと、を含む方法。
【請求項2】
前記
ユーザのコンテキストは、ユーザに関連付けられた前記ユーザデバイスの位置、ユーザに関連付けられた前記ユーザデバイスの動き、ユーザが移動中の車両に搭乗していることの表示、または前記ユーザデバイスの利用可能なバッテリー容量のうちの1つ以上に基づく、請求項1に記載のコンピュータが実施する方法。
【請求項3】
前記
ユーザのコンテキストは、ユーザに関連付けられた前記ユーザデバイスの位置、ユーザに関連付けられた前記ユーザデバイスの動き、ユーザが移動中の車両に搭乗していることの表示、またはユーザに関連付けられたカレンダー上のスケジュールされたアクティビティのうちの1つ以上に基づく、請求項1に記載のコンピュータが実施する方法。
【請求項4】
前記非言語オブジェクトは、複数の非言語オブジェクトのうちの1つであり、方法は、前記複数の非言語オブジェクトが同じメディアタイプであることに基づいて、前記複数の非言語オブジェクトを同じグループにグループ化するステップをさらに含む、請求項1に記載のコンピュータが実施する方法。
【請求項5】
前記言語オブジェクトを分析して、前記言語オブジェクト内の2つ以上の文字または数字を含む省略形のテキストを1つ以上の単語に展開するステップをさらに含む、請求項1に記載のコンピュータが実施する方法。
【請求項6】
前記コンピュータは
、前記
ユーザのコンテキストに基づいて、前記電子メッセージング交換を前記音声インタフェースにより提示することが可能であると判断し
、ユーザに前記電子メッセージング交換を前記音声インタフェースで提示する許可を求める、請求項1に記載のコンピュータが実施する方法。
【請求項7】
ユーザへの受信メッセージを解析して前記音声インタフェースで読み上げ
るステップをさらに含む、請求項6に記載のコンピュータが実施する方法。
【請求項8】
前記会話フレーミングは、音声インタフェース会話プレゼンテーションの冒頭に挿入される導入会話フレーミング、前記言語オブジェクトグループと前記非言語オブジェクトブループとの間に挿入される中間フレーミング、または最後の言語または非言語オブジェクトグループの前に挿入される結論会話フレーミングの1つ以上を含む、請求項1に記載のコンピュータが実施する方法。
【請求項9】
1つまたは複数のコンピュータによる実行時に、前記1つまたは複数のコンピュータに動作を実行させる命令を格納した非一時的コンピュータ可読記録媒体であって、前記動作は、
複数の参加者間の電子メッセージング交換を音声インタフェースにより提示することを、ユーザのコンテキス
トに基づいて決定することであって、前記
ユーザのコンテキストは、ユーザに関連付けられたユーザデバイスの位置、ユーザに関連付けられた前記ユーザデバイスの動き、またはユーザが移動中の車両に搭乗していることの表示のうちの1つ以上に基づいており、
前記電子メッセージング交換を分析することにユーザが同意しない場合、ユーザ入力に基づいて
、前記電子メッセージング交換を分析して前記電子メッセージング交換を前記音声インタフェースにより提示する機能が一時的に無効にされる、決定することと、
前記電子メッセージング交換における複数のオブジェクトを識別することであって、前記電子メッセージング交換は、異なるメディアタイプのオブジェクトを含み、前記複数のオブジェクトは、言語オブジェクトおよび非言語オブジェクトを含み、前記言語オブジェクトと前記非言語オブジェクトとは、異なるメディアタイプのオブジェクトである、前記複数のオブジェクトを識別することと、
前記複数のオブジェクトを、各オブジェクトの異なるメディアタイプによって言語オブジェクトグループと非言語オブジェクトブループとにグループ化することと、
前記言語オブジェクトグループおよび前記非言語オブジェクトブループに基づいて前記電子メッセージング交換を分析して、前記電子メッセージング交換の会話構造を決定することと、
前記電子メッセージング交換の前記会話構造に基づいて、前記言語オブジェクトグループおよび前記非言語オブジェクトブループに会話フレーミングを適用することと、
前記非言語オブジェクトのテキスト説明の言語表現を含む音声インタフェース会話プレゼンテーションを生成することと、
音声出力デバイスによる出力のために前記音声インタフェース会話プレゼンテーションを提供することと、を含む、非一時的コンピュータ可読記録媒体。
【請求項10】
前記
ユーザのコンテキストは、ユーザに関連付けられた前記ユーザデバイスの位置、ユーザに関連付けられた前記ユーザデバイスの動き、ユーザが移動中の車両に搭乗していることの表示、または前記ユーザデバイスの利用可能なバッテリー容量のうちの1つ以上に基づく、請求項9に記載の非一時的コンピュータ可読記録媒体。
【請求項11】
前記
ユーザのコンテキストは、ユーザに関連付けられた前記ユーザデバイスの位置、ユーザに関連付けられた前記ユーザデバイスの動き、ユーザが移動中の車両に搭乗していることの表示、またはユーザに関連付けられたカレンダー上のスケジュールされたアクティビティのうちの1つ以上に基づく、請求項9に記載の非一時的コンピュータ可読記録媒体。
【請求項12】
前記非言語オブジェクトは、複数の非言語オブジェクトのうちの1つであり、前記動作は、前記複数の非言語オブジェクトが同じメディアタイプであることに基づいて、前記複数の非言語オブジェクトを同じグループにグループ化することをさらに含む、請求項9に記載の非一時的コンピュータ可読記録媒体。
【請求項13】
前記動作は、前記言語オブジェクトを分析して、前記言語オブジェクト内の2つ以上の文字または数字を含む省略形のテキストを1つ以上の単語に展開することをさらに含む、請求項9に記載の非一時的コンピュータ可読記録媒体。
【請求項14】
前記1つまたは複数のコンピュータは
、前記
ユーザのコンテキストに基づいて、前記電子メッセージング交換を前記音声インタフェースにより提示することが可能であると判断し
、ユーザに前記電子メッセージング交換を前記音声インタフェースで提示する許可を求める、請求項9に記載の非一時的コンピュータ可読記録媒体。
【請求項15】
前記動作は、ユーザへの受信メッセージを解析して前記音声インタフェースで読み上げ
ることをさらに含む、請求項14に記載の非一時的コンピュータ可読記録媒体。
【請求項16】
前記会話フレーミングは、音声インタフェース会話プレゼンテーションの冒頭に挿入される導入会話フレーミング、前記言語オブジェクトグループと前記非言語オブジェクトブループとの間に挿入される中間フレーミング、または最後の言語または非言語オブジェクトグループの前に挿入される結論会話フレーミングの1つ以上を含む、請求項9に記載の非一時的コンピュータ可読記録媒体。
【請求項17】
システムであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサによる実行時に、前記1つまたは複数のプロセッサに動作を実行させる命令を格納したメモリと、を備え、前記動作は、
複数の参加者間の電子メッセージング交換を音声インタフェースにより提示することを、ユーザのコンテキス
トに基づいて決定することであって、前記
ユーザのコンテキストは、ユーザに関連付けられたユーザデバイスの位置、ユーザに関連付けられた前記ユーザデバイスの動き、またはユーザが移動中の車両に搭乗していることの表示のうちの1つ以上に基づいており、
前記電子メッセージング交換を分析することにユーザが同意しない場合、ユーザ入力に基づいて
、前記電子メッセージング交換を分析して前記電子メッセージング交換を前記音声インタフェースにより提示する機能が一時的に無効にされる、決定することと、
前記電子メッセージング交換における複数のオブジェクトを識別することであって、前記電子メッセージング交換は、異なるメディアタイプのオブジェクトを含み、前記複数のオブジェクトは、言語オブジェクトおよび非言語オブジェクトを含み、前記言語オブジェクトと前記非言語オブジェクトとは、異なるメディアタイプのオブジェクトである、前記複数のオブジェクトを識別することと、
前記複数のオブジェクトを、各オブジェクトの異なるメディアタイプによって言語オブジェクトグループと非言語オブジェクトブループとにグループ化することと、
前記言語オブジェクトグループおよび前記非言語オブジェクトブループに基づいて前記電子メッセージング交換を分析して、前記電子メッセージング交換の会話構造を決定することと、
前記電子メッセージング交換の前記会話構造に基づいて、前記言語オブジェクトグループおよび前記非言語オブジェクトブループに会話フレーミングを適用することと、
前記非言語オブジェクトのテキスト説明の言語表現を含む音声インタフェース会話プレゼンテーションを生成することと、
音声出力デバイスによる出力のために前記音声インタフェース会話プレゼンテーションを提供することと、を含む、システム。
【請求項18】
前記
ユーザのコンテキストは、ユーザに関連付けられた前記ユーザデバイスの位置、ユーザに関連付けられた前記ユーザデバイスの動き、ユーザが移動中の車両に搭乗していることの表示、または前記ユーザデバイスの利用可能なバッテリー容量のうちの1つ以上に基づく、請求項17に記載のシステム。
【請求項19】
前記
ユーザのコンテキストは、ユーザに関連付けられた前記ユーザデバイスの位置、ユーザに関連付けられた前記ユーザデバイスの動き、ユーザが移動中の車両に搭乗していることの表示、またはユーザに関連付けられたカレンダー上のスケジュールされたアクティビティのうちの1つ以上に基づく、請求項17に記載のシステム。
【請求項20】
前記非言語オブジェクトは、複数の非言語オブジェクトのうちの1つであり、前記動作は、前記複数の非言語オブジェクトが同じメディアタイプであることに基づいて、前記複数の非言語オブジェクトを同じグループにグループ化することをさらに含む、請求項17に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
モバイルデバイスのユーザは、電子会話に参加できる。電子会話は、混合メディア(例えば、1つまたは複数のテキストメッセージ、絵文字などの記号、省略されたテキスト短縮形、画像、ビデオ、マルチメディアオブジェクト、ユニフォームリソースロケーターなどの他のリソースへのリンクなど)を含む。ユーザは、ディスプレイ上で電子会話を閲覧することが適切でない設定にある場合がある(例えば、ユーザが車両を操作している場合)。従って、音声などの代替インタフェースを介した電子会話のプレゼンテーションは、あるモバイルデバイスユーザにとって有用であり得る。
【0002】
本明細書で提供される背景の説明は、本開示の状況を概略的に提示することを目的としている。この背景技術の欄において記載される限りにおいて、現時点で明記されている本発明者らの取り組み、ならびにその他、出願時に先行技術としてみなされない記載の態様は、明示的にも黙示的にも、本開示に対する先行技術として認めたものではない。
【発明の概要】
【0003】
いくつかの実装形態は、一般に電子メッセージングに関連し、特に、音声インタフェースまたは他の非表示インタフェースのような代替インタフェース(例えば、非表示インタフェース)における少なくとも部分的なプレゼンテーションのために電子会話を解析する方法およびシステムに関連する。
【0004】
いくつかの実装形態は、コンピュータ実装方法を含み得る。方法は、複数のオブジェクトを含む電子会話内の1つまたは複数のオブジェクトを識別することであって、複数のオブジェクトは、異なるメディアタイプのものである、識別すること、1つまたは複数のオブジェクトを1つまたは複数のオブジェクトグループにグループ化することであって、各オブジェクトグループは、少なくとも1つのオブジェクトを含む、グループ化することを含み得る。方法は、1つまたは複数のオブジェクトグループに基づいて電子会話を分析して電子会話の会話構造を決定すること、電子会話の会話構造に基づいて1つまたは複数のオブジェクトグループに会話フレーミング(conversational framing)を適用して音声インタフェース会話プレゼンテーションを生成することも含み得る。電子会話のオブジェクトは、各メッセージまたは会話の一部内の情報に基づいて決定され得る。例えば、マルチメディアメッセージング会話には、各メッセージまたは会話の一部のコンテンツのタイプを示すヘッダー情報を含む会話内のオブジェクトのエンコードが存在し得る。例えば、テキスト部分は、ヘッダーまたはメッセージの他の部分に示される第1のタイプを有し、画像は、ヘッダーまたは他の部分で示される第2のタイプを有するなどの場合がある。従って、電子会話を分析し、電子会話の会話構造を決定することは、例えば、各オブジェクトが含むヘッダー情報を使用して、電子会話が含むオブジェクトのエンコードを分析することを含んでよく、ヘッダー情報は、1つまたは複数のオブジェクトが1つまたは複数のオブジェクトグループにグループ化される基となるオブジェクトタイプを示す。方法は、さらに、音声出力デバイスによる出力のために構成された前記音声インタフェース会話プレゼンテーションを提供することを含み得る。
【0005】
いくつかの実装形態では、1つまたは複数のオブジェクトを識別することは、1つまたは複数の言語オブジェクトおよび1つまたは複数の非言語オブジェクトを識別することを含み得る。1つまたは複数のオブジェクトをグループ化することは、連続する言語オブジェクトをグループ化すること、連続する非言語オブジェクトをグループ化すること、および電子会話のシーケンス情報を保持することを含み得る。いくつかの実装形態では、各グループが、同じ(オブジェクト)タイプの1つまたは複数のオブジェクトを含む。いくつかの実装形態では、会話フレーミングを適用することは、非言語オブジェクトのコンテンツを自動的に識別すること、非言語オブジェクトのテキスト説明を含めることを含み得る。
【0006】
いくつかの実装形態では、会話フレーミングを適用することは、オブジェクトグループの前、または2つのオブジェクトグループの間に、事前定義された会話フレーム部分を挿入するための会話参照ポイントを使用することを含むことができ、参照ポイントは、電子会話を分析する際に識別され、新しいオブジェクトグループの開始を示す。
【0007】
会話フレーミングを適用することは、音声インタフェース会話プレゼンテーションの冒頭に、導入会話フレーミング部分を挿入することを含み得る。いくつかの実装形態では、導入会話フレーミング部分は、電子会話の1人または複数の参加者の識別を含み得る。
【0008】
会話フレーミングを適用することは、1つまたは複数の中間会話フレーミング部分をオブジェクトグループのペア間に挿入することを含み得る。1つまたは複数のオブジェクトグループは、少なくとも2つのオブジェクトグループを含むことができ、1つまたは複数の中間会話フレーミング部分は、少なくとも2つのオブジェクトグループの、1つまたは複数のそれぞれのペア間に挿入され得る。
【0009】
会話フレーミングを適用することは、最後のオブジェクトグループと前のオブジェクトグループとの間に結論会話フレーミング部分を挿入することを含むことができ、前のオブジェクトグループは、最後のオブジェクトグループの直前にある。電子会話内の1つまたは複数のオブジェクトを識別することは、電子会話内のオブジェクトのエンコードを分析することを含み得る。
【0010】
電子会話を分析することは、少なくとも1つのルックアップテーブルに基づいて、識別されたオブジェクトのテキスト表現を提供することを含み得る。いくつかの実装形態では、ルックアップテーブルの各インデックスが少なくとも1つのテキスト表現に関連付けられるように、ルックアップテーブルは、オブジェクトに対応するインデックスと、インデックスに対応するテキスト表現とを含み得る。従って、分析は、例えば、グラフィカル記号の表現を言語要素として(例えば、テキスト説明として)提供することを含むことができ、記号要素を言語要素として表すことは、ルックアップテーブルを使用して、記号(例えば、絵文字)に対応する数値コードを検索し、テーブルからその記号の言語説明またはテキストを取り出し、会話の代替インタフェースプレゼンテーションのための要素としてその言語説明を提供することを含み得る。例えば、笑っている顔の絵文字が分析されて、「笑顔」などのテキストとして表され得る。従って、分析は、例えば、省略形のテキストを展開することも含むことができ(例えば、CUL8trは、「後で会いましょう(see you later)」と展開され得る)、オブジェクト「CUL8tr」または対応するインデックスは、「また後で会いましょう」というテキスト表現に関連付けられている。従って、会話フレーミングを適用することは、省略形のテキストを展開すること、省略形のテキストを所定の位置に残すこと、およびテキストを別の言語のテキストで置換することのうちの1つまたは複数を含み得る。会話フレーミングを適用することは、グラフィカル記号をグラフィカル記号のテキスト説明に変換することを含み得る。
【0011】
方法は、音声インタフェースプレゼンテーションがプレゼンテーションの適切な形式であることを、動作コンテキストが示すという決定がなされた場合、ユーザに音声クエリを提示すること、および音声クエリに対する音声応答を受信することを含み得る。方法は、音声応答に基づいて、音声インタフェース会話プレゼンテーションが音声出力デバイスから出力されるようにすることをさらに含み得る。電子会話は、テキスト部分と、画像、グラフィカル記号、およびユニフォームリソースロケーターのうちの少なくとも1つとを含み得る。
【0012】
方法は、デバイスのコンテキストを判定することを含み得る。方法は、デバイスのコンテキストが音声出力に適したものである場合(すなわち、プレゼンテーションの適切な形式)、音声インタフェース会話プレゼンテーションが音声出力デバイスを介して出力されるようにすること、デバイスのコンテキストが視覚表示に適したものである場合、電子会話をディスプレイデバイスに表示させることをさらに含み得る。デバイスのコンテキストを判定することは、例えば、デバイスの少なくとも1つのセンサ、特に音声出力デバイスまたはディスプレイデバイスの少なくとも1つのセンサを使用することを含み、それを介してデバイスの周囲の測定データが受信される。測定データは、デバイスのコンテキストを示し、例えば、ユーザが車両を運転していることを示すカメラ画像を含む場合があり、その結果、音声または他の非表示インタフェースによる電子会話のプレゼンテーションは、視覚的なインタフェースよりも適したプレゼンテーション形式である。
【0013】
いくつかの実装形態は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに動作を実行させるソフトウェア命令を格納した非一時的コンピュータ可読媒体に結合された1つまたは複数のプロセッサを含むシステムを含むことができる。動作は、複数のオブジェクトを含む電子会話内の1つまたは複数のオブジェクトを識別することであって、複数のオブジェクトは異なるメディアタイプのものである、識別すること、電子会話を分析して電子会話の会話構造を決定することを含み得る。動作は、電子会話の会話構造に基づいて、1つまたは複数のオブジェクトに会話フレーミングを適用し、代替インタフェース会話プレゼンテーションを生成することも含み得る。動作はさらに、非表示出力デバイスによる出力のために構成された少なくとも一部を有する代替インタフェース会話プレゼンテーションを提供することを含み得る。
【0014】
1つまたは複数のオブジェクトを識別することは、1つまたは複数の言語オブジェクトおよび1つまたは複数の非言語オブジェクトを識別することを含み得る。1つまたは複数のオブジェクトを識別することは、1つまたは複数のオブジェクトのエンコードを分析することを含み得る。
【0015】
いくつかの実装形態は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに動作を実行させるソフトウェア命令を格納した非一時的コンピュータ可読媒体を含み得る。動作は、複数のオブジェクトを含む電子会話内の1つまたは複数のオブジェクトを識別することであって、複数のオブジェクトは異なるメディアタイプのものである、識別すること、電子会話を分析して電子会話の会話構造を決定することを含み得る。動作は、電子会話の会話構造に基づいて、1つまたは複数のオブジェクトに会話フレーミングを適用し、代替インタフェース会話プレゼンテーションを生成することも含み得る。動作はさらに、非表示出力デバイスによる出力のために構成された少なくとも一部を有する代替インタフェース会話プレゼンテーションを提供することを含み得る。1つまたは複数のオブジェクトを識別することは、1つまたは複数の言語オブジェクトおよび1つまたは複数の非言語オブジェクトを識別することを含み得る。
【図面の簡単な説明】
【0016】
【
図1】本明細書に記載の1つまたは複数の実装形態に使用することができる例示的なシステムおよびネットワーク環境のブロック図である。
【
図2】いくつかの実装形態による、音声インタフェースでのプレゼンテーションのために電子会話を解析する例示的な方法を示すフロー図である。
【
図3】AおよびBは、いくつかの実装形態による、解析の前後の電子会話の図である。
【
図4】いくつかの実装形態による、会話フレーミングにより解析および拡張された例示的な電子会話の図である。
【
図5】本明細書に記載の1つまたは複数の実装形態に使用できる例示的なデバイスのブロック図である。
【発明を実施するための形態】
【0017】
本明細書で提供されるシステムおよび方法は、いくつかの従来のメッセージングシステムおよび方法の1つまたは複数の欠陥を克服し得る。例えば、電子メッセージングシステムは、ユーザが他のユーザと電子会話(例えば、電話、タブレット、ウェアラブルデバイス、コンピュータなどの電子デバイスを使用して行われ、チャットまたはメッセージングプラットフォーム、ソーシャルネットワークなどの電子プラットフォームによって仲介される会話)を行うことを可能にする。電子会話は、ユーザが受信されたメッセージを閲覧し、メッセージを送信し、電子会話への参加者を追加または削除し、会話を保存するなどのためのユーザインタフェースを提供するチャットまたはメッセージングアプリケーションを介して実行され得る。メッセージは、言語メッセージ、例えばテキスト、および非言語メッセージ、例えば、画像、ビデオ、URL、インタラクティブオブジェクト(例えば、招待、支払いの通知)、コンピュータファイルなどを含み得る。
【0018】
電話、ウェアラブルデバイス、ヘッドマウントデバイス、タブレット、パーソナルコンピュータなどのモバイルデバイスを簡単に利用できるため、ユーザは、さまざまな設定やコンテキストにおいて互いに電子会話に参加することが可能である。ユーザが電子会話に参加している可能性のある設定およびコンテキストのいくつかは、会話の視覚的な表示に適さない場合がある。いくつかの従来のメッセージングシステムは、会話のための視覚表示ユーザインタフェース以外の代替インタフェースを提供しないか、効率的ではない代替インタフェースを提供する場合があり、電子会話を効率的に提示することがユーザにとって有用であり得る。
【0019】
例えば、いくつかの従来のメッセージングシステムは、会話を提示するための代替インタフェース、例えば、会話の音声インタフェースプレゼンテーションなどを提供し得る。しかしながら、このようなプレゼンテーションは、1つまたは複数の制限のために有用でない場合がある。例えば、会話の従来の音声プレゼンテーションのいくつかは、非言語的な会話要素の逐語的な音声出力(例えば、他のリソースへのリンク、画像、ビデオ、絵文字、省略形テキストなど)を含み得る。非言語アイテムのそのような逐語的な音声出力は、ユーザの時間の非効率的な使用であり、プロセッサ利用、バッテリーまたは電力使用、メモリ利用などに関しても非効率的である可能性がある。例えば、対応するウェブページのタイトル(例えば、「Google Pixel、素晴らしいレビューでリリース」)ではなく、URL全体(例えば、http://www.technologynews.com/consumer/smartphone/2017/oct/google-pixel-released-to-great-reviews/)の音声プレゼンテーション(例えば、スピーカーデバイスを使用)には、より大きなバッテリー電力とプロセッサ利用が必要とされる可能性があり、前者のプレゼンテーションが、ユーザにとってより効果的である。
【0020】
従来のメッセージングシステムは、代替インタフェースプレゼンテーションを提供するときに非言語的会話要素を認識しないか、代替インタフェースプレゼンテーションのための非言語的要素を効率的に解釈またはフォーマットしない場合がある。さらに、従来のメッセージングシステムは、ユーザがコンテキストを収集し、代替インタフェースプレゼンテーション内の会話の流れに従うことができるように、代替インタフェースでのプレゼンテーションのための会話フレーミングを提供しない場合がある。
【0021】
本明細書で説明する例示的なシステムおよび方法は、従来のメッセージングシステムの1つまたは複数の欠陥を克服して、非言語会話要素を処理し、会話フレーミングも提供する電子会話の代替インタフェースプレゼンテーションをユーザに提供することができる。いくつかの従来のメッセージングシステムの技術的な問題は、そのようなシステムが非言語的な会話要素を解釈せず、会話の代替インタフェースプレゼンテーションのための会話フレーミングを提供しないことであり得る。さらに、代替インタフェースを提供する従来のシステムは、デバイスの計算サイクル、メモリ使用量および/または電力使用量に関して非効率的である可能性のある逐語的な非言語アイテムを提示する代替インタフェースプレゼンテーションを生成する可能性がある。
【0022】
開示される主題は、電子会話の代替インタフェースプレゼンテーション(例えば、マルチメディアチャット会話の音声表示)を生成する特定の技術に関する。代替インタフェースプレゼンテーションは、コンピュータ上のプロセスをインスタンス化して会話を解析し、会話内のオブジェクトとそれらのオブジェクトのタイプ(例えば、言語または非言語)を決定することにより、会話を解析することに基づく。コンピュータ上のプロセスは、会話オブジェクトの1つまたは複数のグループを決定し、1つまたは複数のグループに対し会話フレーミングを提供し得る。
【0023】
特定の実装形態では、次の利点のうちの1つまたは複数を実現し得る。本明細書で説明する方法およびシステムに基づいて会話の代替インタフェースプレゼンテーションを生成する利点は、代替インタフェースプレゼンテーションが、(例えば、表示インタフェースが適切でない場合にユーザがメッセージを受信できるようにすることにより)ユーザにとってより効率的であり得ること、およびプレゼンテーションを提供するデバイスにとってより効率的であり得ること(例えば、計算リソース、バッテリーまたは電力リソース、および/またはメモリリソースの節約)である。別の利点は、デバイスが、非言語的な会話要素を解釈し、それらの要素をより効率的に提示することに基づいて、(例えば、非言語オブジェクトのテキストによる言語要約を提示することにより)より短いプレゼンテーション期間で会話を提示できることであり、その結果、処理操作が少なくなり、システム全体の待ち時間が短縮されることである。会話言語の規則で提示する別の利点は、インタフェースプレゼンテーションの新しい形式を学習する必要がなくなることを含む(例えば、会話言語に精通していることにより、ユーザは会話音声インタフェースを理解するためのトレーニングを必要としない場合がある)。デバイスの使用のためのトレーニング期間を排除することに加えて、会話音声インタフェースで提示することは、ユーザの認知負荷を軽減し、潜在的にデバイスの使用効率を改善するのに役立ち得る。
【0024】
いくつかの実装形態のさらなる利点は、代替インタフェースで会話を提示する決定が、ユーザの許可により取得されるユーザのコンテキスト(例えば、デバイスの位置、デバイスの移動、カレンダー上のスケジュールされたアクティビティなどのうちの1つまたは複数によって示される)に基づき得ることであり、これにより、使用のコンテキストにふさわしい、または適したインタフェースを使用して会話が自動的に提示されるようになり、これにより、デバイスのより安全な使用(例えば、ユーザが車両を操作しているとき)、従来のユーザインタフェースが不適切なコンテキストでのデバイスの使用(例えば、ユーザがアクティビティ、例えば料理、トレーニング、掃除などに従事している場合)、よりタイムリーなデバイスの使用(例えば、ユーザはよりタイムリーな方法で会話に参加できるようになり得る)、および対話の改善(例えば、ユーザが使用コンテキストまたは設定を変更したときに会話に参加できる)などの利点がもたらされ得る。
【0025】
図1は、本明細書で説明されるいくつかの実装形態で使用され得る例示的なネットワーク環境100のブロック図を示している。いくつかの実装形態では、ネットワーク環境100は、1つまたは複数のサーバシステム、例えば
図1の例のサーバシステム102を含む。サーバシステム102は、例えばネットワーク130と通信することができる。サーバシステム102は、サーバデバイス104およびデータベース106または他の記憶デバイスを含み得る。ネットワーク環境100は、ネットワーク130を介して、相互に、および/またはサーバシステム102と通信することができる1つまたは複数のクライアントデバイス、例えば、クライアントデバイス120、122、124、および126を含み得る。ネットワーク130は、インターネット、ローカルエリアネットワーク(LAN)、無線ネットワーク、スイッチまたはハブ接続などのうちの1つまたは複数を含む、任意のタイプの通信ネットワークであり得る。いくつかの実装形態では、ネットワーク130は、例えばピアツーピア無線プロトコルを使用した、デバイス間のピアツーピア通信132を含み得る。
【0026】
説明を簡単にするために、
図1は、サーバシステム102、サーバデバイス104、およびデータベース106の1つのブロックを示し、クライアントデバイス120、122、124、および126の4つのブロックを示している。サーバシステム102、104、および106を表すブロックは、複数のシステム、サーバデバイス、およびネットワークデータベースを表すことができ、ブロックは、示されているものとは異なる構成で提供され得る。例えば、サーバシステム102は、ネットワーク130を介して他のサーバシステムと通信できる複数のサーバシステムを表し得る。いくつかの例では、データベース106および/または他の記憶デバイスは、サーバデバイス104とは別個のサーバシステムブロックで提供され、ネットワーク130を介してサーバデバイス104および他のサーバシステムと通信することができる。また、任意の数のクライアントデバイスが存在し得る。
【0027】
各クライアントデバイスは、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルまたはモバイルデバイス、カメラ、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、TVセットトップボックスまたはエンターテインメントデバイス、ウェアラブルデバイス(ディスプレイメガネまたはゴーグル、ヘッドマウントディスプレイ(HMD)、腕時計、ヘッドセット、アームバンド、ジュエリーなど)、仮想現実(VR)および/または拡張現実(AR)対応デバイス、携帯情報端末(PDA)、メディアプレーヤー、ゲームデバイスなど、任意のタイプの電子デバイスであり得る。一部のクライアントデバイスは、データベース106または他のストレージに類似したローカルデータベースも有し得る。他の実装形態では、ネットワーク環境100は、示された構成要素の全てを有しない場合があり、かつ/または本明細書に記載されたものの代わりにまたはそれに加えて他のタイプの要素を含む他の要素を有し得る。
【0028】
様々な実装形態において、エンドユーザU1、U2、U3、およびU4は、会話の1人または複数の参加者を含むことができ、それぞれのクライアントデバイス120、122、124、および126を使用してサーバシステム102および/または相互に通信することができる。いくつかの例では、ユーザU1、U2、U3、およびU4は、それぞれのクライアントデバイスおよび/またはサーバシステム102上で実行されるアプリケーションを介して、および/またはサーバシステム102上で実装されるネットワークサービス、例えば画像共有サービス、メッセージングサービス、ソーシャルネットワークサービス、または他のタイプのネットワークサービスを介して相互に対話することができる。例えば、それぞれのクライアントデバイス120、122、124、および126は、1つまたは複数のサーバシステム(例えば、サーバシステム102)との間でデータを通信することができる。
【0029】
いくつかの実装形態では、サーバシステム102は、各クライアントデバイスがサーバシステム102および/またはネットワークサービスにアップロードされた通信コンテンツまたは共有コンテンツを受信できるように、適切なデータをクライアントデバイスに提供し得る。いくつかの例では、ユーザは、音声またはビデオ会議、音声、ビデオ、またはテキストチャット、または他の通信モードまたはアプリケーションを介して対話できる。いくつかの例では、ネットワークサービスは、ユーザがさまざまな通信を実行し、リンクや関連付けを形成し、画像、画像構成(例えば、1つまたは複数の画像を含むアルバム、画像コラージュ、動画など)、音声データ、その他のタイプのコンテンツなどの共有コンテンツをアップロードおよび投稿し、さまざまな形式のデータを受信し、および/または社会関連機能を実行することを可能にする任意のシステムを含み得る。例えば、ネットワークサービスは、ユーザが特定または複数の他のユーザにメッセージを送信し、ネットワークサービス内の他のユーザとの関連付けの形でソーシャルリンクを形成し、ユーザリスト、フレンドリスト、または他のユーザグループで他のユーザをグループ化し、テキスト、画像、画像構成、音声シーケンスまたは録音、またはネットワークサービスの指定されたセットのユーザによるアクセスのための他の種類のコンテンツを含むコンテンツを投稿または送信し、ライブビデオ、音声、および/またはテキストビデオ会議、またはサービスの他のユーザとのチャットなどに参加することを可能にする。いくつかの実装形態では、「ユーザ」は、1つまたは複数のプログラムまたは仮想エンティティ、およびシステムまたはネットワークとのインタフェースを持つ人物を含み得る。
【0030】
ユーザインタフェースは、クライアントデバイス120、122、124、126(代替的にはサーバシステム102)上での、画像、画像構成、データ、および他のコンテンツ、ならびに通信、プライバシー設定、通知、および他のデータの表示を可能にできる。そのようなインタフェースは、クライアントデバイス上のソフトウェア、サーバデバイス上のソフトウェア、および/またはサーバデバイス104上で実行されるクライアントソフトウェアとサーバソフトウェアとの組み合わせ、例えばサーバシステム102と通信するアプリケーションソフトウェアまたはクライアントソフトウェアを使用して表示され得る。ユーザインタフェースは、クライアントデバイスまたはサーバデバイスのディスプレイデバイス、例えばディスプレイスクリーン、プロジェクタなどによって表示され得る。いくつかの実装形態では、サーバシステム上で実行されるアプリケーションプログラムは、クライアントデバイスと通信して、クライアントデバイスでユーザ入力を受信し、クライアントデバイスで視覚データ、音声データなどのデータを出力できる。
【0031】
本明細書で説明される機能の様々な実装形態は、任意のタイプのシステムおよび/またはサービスを使用し得る。例えば、ソーシャルネットワーキングサービス、画像収集および共有サービス、アシストメッセージングサービス、または他のネットワークサービス(例えば、インターネットに接続された)は、クライアントおよびサーバデバイスによってアクセスされる1つまたは複数の説明された機能を含み得る。任意のタイプの電子デバイスが、本明細書で説明されている機能を利用できる。いくつかの実装形態は、コンピュータネットワークから切断された、または断続的に接続されたクライアントまたはサーバデバイス上に、本明細書に記載の1つまたは複数の機能を提供することができる。いくつかの例では、表示デバイスを含むまたは表示デバイスに接続されたクライアントデバイスは、(例えば、通信ネットワークを介して接続されていない)クライアントデバイスのローカル記憶デバイスに格納された画像を調べて表示でき、ユーザにより閲覧可能な、本明細書に記載されるような機能および結果を提供し得る。
【0032】
図2は、いくつかの実装形態による、音声インタフェースなどの代替インタフェースでのプレゼンテーションのために電子会話を解析し、会話的にフレーム化するための例示的な方法200(例えば、コンピュータ実装方法)を示すフロー図である。
【0033】
いくつかの実装形態では、方法200は、例えば
図1に示されるようなサーバシステム102上で実装され得る。他の実装形態では、方法200の一部またはすべては、
図1に示される1つまたは複数のクライアントデバイス120、122、124、または126、1つまたは複数のサーバデバイス、および/またはサーバデバイスおよびクライアントデバイスの両方上で実装され得る。記載の例では、実施するシステムは、1つまたは複数のデジタルハードウェアプロセッサまたは処理回路(「プロセッサ」)と、1つまたは複数の記憶デバイス(例えば、データベース106または他の記憶装置)とを含む。いくつかの実装形態では、1つまたは複数のサーバおよび/またはクライアントの異なる構成要素は、方法200の異なるブロックまたは他の部分を実行することができる。
【0034】
いくつかの実装形態は、ユーザ入力および/またはデバイスコンテキスト(ユーザの許可を得て)に基づいて方法200を開始することができる。例えば、ユーザは、表示されたユーザインタフェースから方法200の開始を選択した可能性がある。いくつかの実装形態では、方法200またはその一部は、ユーザ入力を介したユーザによるガイダンスで実行され得る。例えば、いくつかの実装形態は、音声インタフェースプレゼンテーションがプレゼンテーションの適切な形式であることを、動作コンテキストが示すという決定がなされた場合、ユーザに音声クエリを提示すること、および音声クエリに対する音声応答を受信することを含み得る。実装形態は、音声応答に基づいて、音声インタフェース会話プレゼンテーションが音声出力デバイスから出力されるようにすることを含み得る。システムは、ユーザからの明示的な許可がない限り、デバイスコンテキスト、場所などのようなユーザ情報を使用、処理、または格納しない。
【0035】
いくつかの実装形態では、デバイスのコンテキストが音声(または他の非表示)インタフェースによる電子会話のプレゼンテーションが、プレゼンテーションの適切な形式であると判断された場合(例えば、ユーザが車を運転しているというコンテキスト、またはユーザが物理的な制限またはディスプレイを閲覧するのに適さない周囲などの他の制限のために非視覚インタフェースを要求したというコンテキストをデバイスが検出した場合)、方法200は自動的に呼び出され得る(またはユーザの許可で自動的に呼び出され得る)。もう1つのコンテキストは、ユーザのデバイスのバッテリー残量が少ない場合、またはユーザが電源から離れている場合であり、この場合、ディスプレイ画面をオフにして音声ユーザインタフェースを提示することは、バッテリー容量を節約するために有利であり得る。コンテキストは、アプリケーションまたはシステムがコンテキスト情報を取得するための明示的な許可がユーザから与えられた場合に判定され得る。
【0036】
いくつかの実装形態では、方法200または方法の一部は、デバイスによって自動的に開始され得る。例えば、方法(またはその一部)は、定期的に実行されるか、または、1つまたは複数の特定のイベントまたは条件の発生に基づいて実行され得る。例えば、そのようなイベントまたは条件は、デバイス(例えば、ユーザデバイス)によって受信された、またはデバイスにアップロードされた、またはデバイスによりアクセス可能なメッセージ、方法200の最後の実行以降に満了した所定の期間、および/または方法200を実装するデバイスの設定で指定できる、発生する1つまたは複数の他のイベントまたは条件を含み得る。いくつかの実装形態では、そのような条件は、(ユーザの同意を得てデバイスまたは方法からアクセス可能な)ユーザの保存されたカスタム設定でユーザにより事前に指定され得る。いくつかの例では、デバイス(サーバまたはクライアント)は、電子会話メッセージを受信する1つまたは複数のアプリケーションにアクセスして方法200を実行し得る(ユーザの同意が受信された場合)。別の例では、カメラ、携帯電話、タブレットコンピュータ、ウェアラブルデバイス、または他のクライアントデバイスは、電子会話メッセージを受信し、方法200を実行することができる。加えて、または代替的に、クライアントデバイスは、ネットワークを介して1つまたは複数の電子会話メッセージをサーバに送信でき、サーバは、方法200を使用してメッセージを処理できる。
【0037】
ブロック202では、電子会話内の1つまたは複数のオブジェクトが識別される。システムがユーザの電子会話にアクセスする前に、ユーザの許可が取得される。電子会話は、様々な異なるタイプのメッセージを有する会話などの混合メディア電子会話を含み得る。メッセージタイプは、テキストメッセージ、音声メッセージ、画像、ビデオ、記号(例えば、絵文字)、省略形のテキスト、他の言語のテキスト、インタラクティブオブジェクト、マルチメディアオブジェクト、通貨、仮想ギフト、インタラクティブ仮想オブジェクト、ゲームオブジェクトなどを含み得る。会話のオブジェクトは、各メッセージまたは会話の一部内の情報に基づいて決定され得る。例えば、マルチメディアメッセージング会話には、各メッセージまたは会話の一部のコンテンツのタイプを示すヘッダー情報を含む会話内のオブジェクトのエンコードが存在し得る。例えば、テキスト部分は、ヘッダーまたはメッセージの他の部分に示される第1のタイプを有し、画像は、ヘッダーまたは他の部分で示される第2のタイプを有するなどの場合がある。処理は204に続く。
【0038】
204では、202で識別されたオブジェクトが、任意選択で1つまたは複数のオブジェクトグループにグループ化されることができ、各グループは、同じオブジェクトタイプ(例えば、グループ化された言語オブジェクト、画像、URLなどのようなタイプによりグループ化された非言語オブジェクト)の1つまたは複数のオブジェクトを含む。例えば、会話が2つのテキストメッセージとそれに続く3つの画像、次にテキストメッセージおよび絵文字を含む場合、グループ化は、2つのテキストメッセージを含む第1のグループ、3つの画像の第2のグループ、テキストメッセージの第3のグループ、および絵文字を有する第4のグループを含み得る。別の例は、テキストの後にビデオとURLが続き、さらにテキストが続き、三目並べボードゲームオブジェクトが続くものを含む。オブジェクトのグループ化は、言語的および非言語的オブジェクトに基づいて、または独立したグループ、例えば、言語、ビデオ、画像、インタラクティブオブジェクトなどに基づいて行うことができ、適切な会話フレーミングが使用される。グループは、会話内のメッセージのシーケンスに対応する情報を保存およびキャプチャするように形成および編成され得る。シーケンス情報は、会話フレーミングを提供する際に、および会話を提示する際に使用され得る。
【0039】
別の例では、
図3のAの電子会話300が解析され(例えば202で)、言語オブジェクト(302)、2つの非言語オブジェクト(304、306)、言語オブジェクト2(308)、および非言語オブジェクト(310)を含むと判定され得る。電子会話300は、ブロック204に従ってグループ化されて、
図3のBのグループ化された会話301を生成することができ、グループ化された会話301は、第1の言語オブジェクトグループ312、第1の非言語グループ314、第2の言語グループ316、および第2の非言語グループ318を含む。処理は206に続く。
【0040】
206では、会話の会話構造を決定するために会話が分析される。ユーザの許可は、電子会話を分析する前に取得される(例えば、分析の許可は、電子会話へのアクセスの許可と併せて提供されるか、または個別に提供され得る)。会話を分析することは、204からの1つまたは複数のグループを分析すること(グループ化が使用された場合)および/または202で識別されたオブジェクトを分析することを含み得る。分析は、会話の構造を決定し、会話フレーミングを提供するために使用され得る会話参照ポイントを識別する。会話参照ポイントは、オブジェクトグループのペア間の会話におけるポイントを含み得る。
【0041】
会話の分析は、非言語オブジェクトまたはオブジェクトのグループの分析も任意選択で含み得る。分析は、非言語オブジェクトを識別すること、音声などの代替インタフェースでのプレゼンテーションに適している可能性があるオブジェクトの言語表現を提供することを含み得る。例えば、3つの画像オブジェクトのグループが分析され、(例えば、ヘッダー情報の分析を介して)画像タイプの3つのオブジェクトであると決定され、「3つの写真」または類似の言語会話要素として表され得る。別の例では、システムは、音声インタフェースで招待状、例えば、「送信者Aは明日の午後10時の彼の家でのパーティーにあなたを招待しました」を提示し得る。別の例では、システムは、音声インタフェースで支払いまたはギフトの受領、例えば、「送信者Aが10ドルをあなたに送信し、「これは昨日の映画のチケット代です」と述べました」を提示し得る。このような分析は、アニメーション画像や動画にも適用され得る。
【0042】
分析は、システムまたはサービスを使用して、画像、アニメーション画像、またはビデオのコンテンツを識別し、非言語オブジェクトのコンテンツの標示を提供することも含み得る。画像、ビデオなどの非言語オブジェクトのコンテンツへのアクセス、および画像コンテンツの分析などを実行する処理は、ユーザの明示的な許可を受けて実行されることが可能である。そして、コンテンツ標示は、非言語オブジェクトの言語表現に含まれ得る。例えば、メッセージが、テキストオブジェクト(「これらの場所をチェックしてください」)、3つの画像オブジェクト(例えば、ビーチリゾートの3つの写真)、および最後のテキストオブジェクト(「どれが好きか教えてください」)を含む場合、3つの画像オブジェクトの分析は、画像コンテンツ分析のためにシステムに画像を送信すること、コンテンツ分析の結果を音声表現で利用することを含み得る。例えば、画像コンテンツ分析が、3つの画像がそれぞれビーチリゾートであるという結果を返すと、分析は、非言語画像オブジェクトの言語表現として「ビーチリゾートの3つの写真」などの言語表現を生成できる。分析のために非言語オブジェクトを外部システムに送信することに加えて、またはその代替として、非言語オブジェクトメタデータを使用して、非言語オブジェクトのコンテンツまたは特徴を決定し、コンテンツのローカル分析が実行され得る。
【0043】
分析は、グラフィカル記号の表現を言語要素として(例えば、テキスト説明として)提供することを含み得る。例えば、笑っている顔の絵文字は、分析されて、「笑顔」などのテキストとして表され得る。記号要素を言語要素として表すプログラム分析は、ルックアップテーブルを使用して、記号(例えば、絵文字)に対応する数値コードを検索し、テーブルからその記号の言語説明またはテキストを取り出し、会話の代替インタフェースプレゼンテーションのための要素としてその言語説明を提供することを含み得る。
【0044】
分析は、省略形のテキストを展開することも含み得る(例えば、CUL8trは「また後で会いましょう(see you later)」と展開され得る)。省略形のテキストの展開は、テーブル検索またはその他の適切な方法で実現され得る。分析は、省略形のテキスト(または他の言語または非言語オブジェクト)を別の言語に翻訳することも含み得る。例えば、英語の省略形コードが使用されているが、ユーザがスペイン語話者である場合、システムは、英語の省略形コードを言語プレゼンテーションのためにスペイン語の単語に展開し得る。
【0045】
別の例では、
図3のBの非言語グループ314が分析され、
図4の言語表現404を生成することができる。また、
図3のBの第2の非言語グループ318が分析され、
図4の言語表現408を生成することができる。処理は208に続く。
【0046】
208において、会話フレーミングが分析された会話に適用される。例えば、会話フレーミングは、202のオブジェクト、204のオブジェクトのグループ、および/または206で生成された言語表現のうちの1つまたは複数に適用され得る。会話フレーミングは、メッセージの送信者に関する情報を任意選択で含むことができる導入会話フレーミング部分を含み得る。例えば、導入会話フレーミングは、「それは言います(It says)」を含んでもよく、または導入会話フレーミングは、送信者を参照して「メアリーは言います(Mary says)」などを含んでもよい。導入会話フレーミング部分は、音声インタフェース会話プレゼンテーション(または点字などの他の代替インタフェース会話プレゼンテーション、または音声および制限付きディスプレイの組み合わせなど)の冒頭に挿入され得る。
【0047】
会話フレーミングは、「次にそれは言います(Then it say)」などの1つまたは複数の中間フレーミング部分を任意選択で含み得る。中間フレーミング部分の存在と数は、会話内のオブジェクトまたはオブジェクトのグループの数、または代替インタフェースにおけるプレゼンテーションのために解析およびフレーム化される会話の一部に依存し得る。中間会話フレーミング部分は、オブジェクトグループの1つまたは複数のそれぞれのペアの間に挿入され得る。
【0048】
会話フレーミングは、最後のオブジェクトグループの前に(または最後のオブジェクトグループと、最後のオブジェクトグループの隣の前のオブジェクトグループとの間に)挿入される「そして次にそれは言います(And then it says)」または「そして最後にそれは言います(And finally it says)」などのオプションの結論会話フレーミング部分を含み得る。導入、中間、および/または結論会話のフレーミング部分は、言語オブジェクトまたは非言語オブジェクトの言語表現と組み合わせられ得る。例えば、第2の非言語グループ318(絵文字)は、結論会話フレーミング要素と組み合わせられて、絵文字の言語表現と結論会話フレーミング部分(例えば、言語表現408)とを含む会話要素を生成し得る。一部の実装形態は、「50件の未読メッセージがあります。ジェシカとショーンはタイでの休暇について話し、いくつかの写真を交換し、12月の第1週のチケットを見つけました。」のような、より長い概要(複数のメッセージの概要、メッセージ数の概要、複数の会話の概要など)を提供し得る。
【0049】
例えば、
図3のBのグループ化された会話301は、
図4に示されるような音声インタフェース会話プレゼンテーション400を生成するために適用される会話フレーミングを有することができる。会話フレーミングは、導入会話フレーミング部分402、中間会話フレーミング部分406、および言語表現408(結論会話フレーミング部分を含む)を含むことができる。処理は210に続く。
【0050】
210では、代替インタフェース会話プレゼンテーションが、出力として提供される。例えば、音声インタフェース会話プレゼンテーション400は、スピーカー、ヘッドフォンなどの音声出力デバイスを介して再生するための出力として提供され得る。
【0051】
図2では、様々なブロック(例えば、ブロック202~210)が、順次実行されるものとして示されている。しかしながら、これらのブロックは、特定の実施形態に適するように便宜的に再配置されてもよく、これらのブロックまたはその一部は、いくつかの実施形態で同時に実行されてもよいことが理解されるであろう。また、いくつかの例では、さまざまなブロックが、削除され、追加のブロックに分割され、および/または他のブロックと組み合わせられ得ることも理解されよう。テーブルを使用して、テーブルの値に基づいて閾値を決定できる。
【0052】
図3のAおよびBは、例示的な電子会話300および例示的なグループ化された電子会話301の図を示す。電子会話300は、第1の言語オブジェクト302(例えば、「これらは私が見つけることのできる最良の選択肢です」、または別の例では「これらは私が見つけることのできる最良の選択肢であるとユーザAは言っています」)を含む。電子会話300は、2つの非言語オブジェクト304および306(例えば、URL)を含む。電子会話300は、第2の言語オブジェクト308(例えば、「どう思いますか?(What do you think?)」)に続き、非言語オブジェクト310(例えば、笑顔の絵文字)が続く。
【0053】
グループ化された電子会話301は、第1の言語オブジェクトグループ312、第1の非言語オブジェクトグループ314、第2の言語オブジェクトグループ316、および第2の非言語オブジェクトグループ318を含む。
【0054】
図4は、音声インタフェース会話プレゼンテーション400の図を示し、これは、導入会話フレーミング402、第1の言語オブジェクトグループ312、第1の非言語オブジェクトグループ404の会話表現、中間会話フレーミング406、第2の言語オブジェクトグループ316、および第2の非言語オブジェクトグループ408の会話フレーミング(結論会話フレーミングを含む)を含む。
【0055】
図5は、本明細書に記載の1つまたは複数の機能を実装するために使用することができる例示的なデバイス500のブロック図である。一例では、デバイス500を使用して、コンピュータデバイス、例えば、サーバデバイス(例えば、
図1のサーバデバイス104)を実装し、本明細書で説明する適切な方法実装形態を実行することができる。デバイス500は、任意の適切なコンピュータシステム、サーバ、または他の電子もしくはハードウェアデバイスであり得る。例えば、デバイス500は、メインフレームコンピュータ、デスクトップコンピュータ、ワークステーション、ポータブルコンピュータ、または電子デバイス(ポータブルデバイス、モバイルデバイス、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、TVセットトップボックス、携帯情報端末(PDA)、メディアプレーヤー、ゲームデバイス、ウェアラブルデバイスなど)であってよい。いくつかの実装形態では、デバイス500は、プロセッサ502、メモリ504、およびI/Oインタフェース506を含む。
【0056】
プロセッサ502は、プログラムコードを実行し、デバイス500の基本動作を制御するための1つまたは複数のプロセッサおよび/または処理回路であり得る。「プロセッサ」は、データ、信号または他の情報を処理する任意の適切なハードウェアおよび/またはソフトウェアシステム、機構、またはコンポーネントを含む。プロセッサは、汎用中央処理ユニット(CPU)、複数の処理ユニット、機能を達成するための専用回路、または他のシステムを有するシステムを含み得る。処理は特定の地理的位置に限定される必要はなく、または時間的な制限がある必要もない。例えば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などでその機能を実行し得る。処理の一部は、異なる時間および異なる場所で、異なる(または同じ)処理システムによって実行され得る。コンピュータは、メモリと通信する任意のプロセッサであり得る。
【0057】
メモリ504は、通常、プロセッサ502によるアクセスのためにデバイス500に設けられ、プロセッサにより実行される命令を格納するのに適した、例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的消去可能読み取り専用メモリ(EEPROM)、フラッシュメモリなどの任意の適切なプロセッサ読み取り可能記憶媒体とすることができ、プロセッサ502とは別個に配置され、および/またはそれと一体化され得る。メモリ504は、オペレーティングシステム508、1つまたは複数のアプリケーション510、例えば、代替インタフェースプレゼンテーションアプリケーション512、他のアプリケーション514、およびアプリケーションデータ520を含む、プロセッサ502によってサーバデバイス500上で動作するソフトウェアを格納することができる。いくつかの実装形態では、アプリケーション510は、プロセッサ502が本明細書に記載の機能、例えば、
図2の方法のうちのいくつかまたは全てを実施することを可能とする命令を含み得る。
【0058】
例えば、アプリケーション510は、本明細書で説明するように、電子会話解析および会話フレーミング、および他の機能、例えば、音声インタフェースまたは他の非表示インタフェースまたは非表示出力デバイスによる出力のために構成された会話を提供することができる音声インタフェースプレゼンテーションアプリケーション412を含み得る。いくつかの実装形態では、音声インタフェースプレゼンテーションアプリケーションは、デバイス500の音声デバイスでの出力のための音声インタフェースプレゼンテーションを提供するために、1つまたは複数の電子会話メッセージを受信し、メッセージを解析し、解析されたメッセージに会話フレーミングを追加することを含み得る。他のアプリケーション514(またはエンジン)は、同様に、または代替的に、アプリケーション510、例えば、電子メールアプリケーション、SMSおよび他の電話通信アプリケーション、ウェブブラウザアプリケーション、メディアディスプレイアプリケーション、通信アプリケーション、ウェブホスティングエンジンまたはアプリケーション、ソーシャルネットワーキングエンジンまたはアプリケーションなどに含まれてもよい。あるいは、メモリ504内のソフトウェアのうちの任意のものは、他の任意の適切なストレージロケーションまたはコンピュータ可読媒体に格納され得る。加えて、メモリ504(および/または他の接続された記憶装置)は、電子会話メッセージ、電子会話メッセージのグループ、会話フレーミング要素、ユーザデータおよびプリファレンス、および本明細書に記載の機能で用いられる他の命令およびデータなどのアプリケーションデータを格納し得る。メモリ504および他の任意の種類の記憶装置(磁気ディスク、光ディスク、磁気テープ、または他の有形の媒体)は、「記憶装置」または「記憶デバイス」と見なすことができる。
【0059】
例えば、アプリケーションデータ520は、グループ522およびフレーミング524を含み得る。例えば、グループ522は、グループ化された電子会話メッセージまたは部分(例えば、テキストグループ、画像グループ、URLグループなど)を含み得る。会話フレーミング524は、音声または他のインタフェースによるプレゼンテーションのために電子会話グループをフレーム化するために使用され得る複数の会話フレーミング要素を含むことができる。例えば、会話フレーミング要素は、フレーミング部分のリストまたはテーブルに格納され得る。例えば、単一の会話フレーミング要素は、「写真(a picture)」、「<X>の写真(a picture of <X>)」、「動画(a video)」、「<X>の動画(a video of <X>)」、「ウェブリンク(a weblink)」、「<X>へのリンク(a link to <X>)」などを含み得る。類似タイプの複数のグループ化の会話フレーミング部分は、「いくつかの写真(some pictures)」、「<X>のいくつかの写真(some pictures of <X>)」などを含み得る。一部の実装形態では、機械学習を使用して、上記のXで示されるような画像説明を決定できる(例えば、ユーザは画像をXとして説明し、自動化されたアシスタントは、類似の画像をXとして説明する)。
【0060】
I/Oインタフェース506は、デバイス500を他のシステムおよびデバイスとインタフェースすることを可能にするための機能を提供することができる。例えば、ネットワーク通信デバイス、記憶デバイス(例えば、メモリおよび/またはデータベース106)、および入力/出力デバイスは、I/Oインタフェース506を介して通信することができる。いくつかの実装形態では、I/Oインタフェースは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナなど)および/または出力デバイス(表示デバイス、スピーカーデバイス、プリンター、モーター、触覚出力デバイスなど)を含むインタフェースデバイスに接続することができる。音声入力/出力デバイス530は、本明細書で説明されるように、音声入力を受信し、音声出力(例えば、音声インタフェース出力)を提供するために使用され得る入力および出力デバイスの一例である。音声入力/出力デバイス530は、ローカル接続(例えば、有線バス、無線インタフェース)および/またはネットワーク接続を介してデバイス500に接続されることが可能であり、任意の適切なデバイスとすることができ、そのいくつかの例が以下に説明される。
【0061】
説明を簡単にするために、
図5は、プロセッサ502、メモリ504、I/Oインタフェース506、およびソフトウェアブロック508および510の各々について1つのブロックを示している。これらのブロックは、1つまたは複数のプロセッサまたは処理回路、オペレーティングシステム、メモリ、I/Oインタフェース、アプリケーション、および/またはソフトウェアモジュールを表すことができる。他の実装形態では、デバイス500は、示された構成要素の全てを有しない場合があり、かつ/または本明細書に示されたものの代わりにまたはそれに加えて他のタイプの要素を含む他の要素を有し得る。サーバシステム102は、本明細書のいくつかの実装形態で説明されるように、動作を実行するものとして説明されているが、サーバシステム102または同様のシステム、またはそのようなシステムに関連する任意の適切な1つまたは複数のプロセッサの任意の適切なコンポーネントまたはコンポーネントの組合せが、説明されている動作を実行し得る。
【0062】
クライアントデバイスは、本明細書で説明される機能、例えば
図1に示されるクライアントデバイス120~126と共に実装および/または使用され得る。クライアントデバイスの例は、デバイス500と同様のいくつかのコンポーネント、例えばプロセッサ502、メモリ504、およびI/Oインタフェース506を含むコンピュータデバイスであり得る。クライアントデバイスに適したオペレーティングシステム、ソフトウェア、およびアプリケーション、例えば、画像管理ソフトウェア、クライアントグループ通信アプリケーションソフトウェアなどは、メモリで提供され、プロセッサにより使用され得る。クライアントデバイスのためのI/Oインタフェースは、ネットワーク通信デバイス、および入出力デバイス、例えば、音をキャプチャするためのマイク、画像またはビデオをキャプチャするためのカメラ、音を出力するためのオーディオスピーカーデバイス、画像やビデオを出力するための表示デバイス、またはその他の出力デバイスに接続され得る。音声入力/出力デバイス530は、例えば、音声入力(例えば、音声コマンド)を受信し、音声出力(例えば、音声インタフェース)を提供するためにデバイス500に接続される(または含まれる)ことが可能であり、マイク、スピーカー、ヘッドフォンなどのような適切なデバイスを含み得る。一部の実装形態は、音声出力デバイス、例えば、テキストを話す音声出力または合成を提供できる。
【0063】
本明細書に記載の1つまたは複数の方法(例えば、方法200)は、コンピュータプログラム命令またはコードによって実装することができ、それらはコンピュータ上で実行することができる。例えば、コードは、1つまたは複数のデジタルプロセッサ(例えば、マイクロプロセッサまたは他の処理回路)によって実装することができ、半導体または固体メモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、リジッドメモリを含む、例えば、磁気、光学、電磁気、または半導体の記憶媒体などの、非一時的コンピュータ可読媒体(例えば、記憶媒体)を含むコンピュータプログラム製品に格納することができる。プログラム命令は、例えば、サーバ(例えば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されるサービスとしてのソフトウェア(SaaS)の形で、電子信号に含まれ、電子信号として提供されることもできる。代替的に、1つまたは複数の方法は、ハードウェア(論理ゲートなど)、またはハードウェアとソフトウェアの組み合わせで、実施することができる。ハードウェアの例は、プログラマブルプロセッサ(例えば、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス)、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路(ASIC)などであり得る。1つまたは複数の方法は、システム上で実行されているアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションおよびオペレーティングシステムと共に実行されているアプリケーションまたはソフトウェアとして実行することができる。
【0064】
本明細書に記載の1つまたは複数の方法は、任意のタイプのコンピューティングデバイス上で実行することができるスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティングデバイス(携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、宝飾品、帽子、ゴーグルまたはメガネなど)、ラップトップコンピュータなど)上で実行されるモバイルアプリケーション(「app」)において実行することができる。一例では、クライアント/サーバアーキテクチャを使用することができ、例えば、(クライアントデバイスとしての)モバイルコンピューティングデバイスは、ユーザ入力データをサーバデバイスに送信し、出力のための(例えば、表示のための)最終出力データをサーバから受信する。別の例では、すべての計算は、モバイルコンピューティングデバイス上のモバイルアプリ(および/または他のアプリ)内で実行することができる。別の例では、計算は、モバイルコンピューティングデバイスと1つまたは複数のサーバデバイスとの間で分割することができる。
【0065】
いくつかの実装形態では、代替のインタフェースは、音声以外の他の非視覚的態様、例えば、視覚障害のあるユーザ向けの点字、および触覚(例えば、「love」のステッカーは、触覚出力デバイスからの特定のビートまたはパターンに対応し得る)を含み得る。いくつかの実装形態では、会話は、音声および視覚ディスプレイなどの出力デバイスの組み合わせを使用して出力され得る。例えば、いくつかのデバイス(例えば、時計、他のウェアラブル)は、あるメディア(例えば、テキスト、写真)の表示に適しているが、他のメディア(例えば、ビデオ、パノラマ写真、3Dメディアなど)には適さない場合がある。いくつかのデバイスは、特定のメディアを再生できない場合がある(例えば、音声出力機能のないデバイス、3Dコンテンツを出力する2Dディスプレイを有するデバイス、カラーを表示する白黒スクリーンなど)。上記のコンテキストでは、電子会話のプレゼンテーションは、テキストまたは音声形式の会話フレーミング(例えば、ビデオ、3Dコンテンツなどの説明)とともに、言語および非言語オブジェクト(例えば、テキストおよび画像)を含み得る。例えば、家庭用またはその他の設定用のアシスタント製品は、音声出力のみを有するか、または音声および制限されたディスプレイを有する場合がある。そのような例では、実装形態は、利用可能な出力デバイスに適した形式で会話オブジェクトを出力すること、利用可能な適切な出力デバイスを持たないオブジェクトに会話フレーミングを提供することを含むように、電子会話のプレゼンテーションを調整し得る。
【0066】
非言語オブジェクトは、静止画像(例えば、動きのない単一のフレーム)、アニメーション画像、ビデオ(例えば、複数のフレームを有する)などを含み得る。例えば、静止画像は、固定された表情の1つまたは複数の顔を描写し、アニメーション画像は、画像内で変化する表情で1つまたは複数の顔を描写し得る(例えば、目が閉じた状態と開いた状態との間を遷移する顔、笑顔でないポジションから笑顔のポジションへと動く口を有する顔などをキャプチャするライブ写真)。ビデオは、1人または複数人の人物を表す複数のフレームを含み得る。
【0067】
非言語オブジェクトの分析は、アクションを検出すること、およびビデオの顔認識を行って(例えば、ビデオ全体またはビデオフレームの一部を使用してビデオを分析し得る)、言語説明(例えば、「馬に乗っているアレン」)を生成すること、顔認識なしでアクションを検出すること(例えば、「歩いている2人の人」)、有名人および/または映画クリップを検出すること(例えば、「ミッション・インポッシブルからの抜粋」)、他の種類のビデオまたはアニメーションのオブジェクトおよび動きを検出すること(例えば、「猫とネズミを示すアニメーション」)を含み得る。
【0068】
他の非言語オブジェクトおよび関連するテキスト表現の例は、360度ビュー(例えば、タージマハルの没入型ビュー)、シネマグラフ/アニメーションGIF(「あなたの友人のボブが目を回すジェスチャーをしています」)、音声(例えば、音声トランスクリプトの概要、音楽や歌などの音声の認識)、ゲームおよびインタラクティブマルチメディアオブジェクト(例えば、ジェスチャーで投げることができるフットボール)、およびミーム(例えば、「バットマンキャラクタージョーカーの笑い声」)を含む。
【0069】
非言語オブジェクトは、非言語オブジェクトの言語表現または概要を生成するために分析されることが可能なメタデータを含み得る。非言語オブジェクトの言語説明は、電子会話を仲介しているサーバデバイス(例えば、104)によって生成され得る。いくつかの実装形態では、電子会話に使用されるクライアントデバイスは、非言語オブジェクトの言語またはテキスト説明を生成し得る。本明細書で説明される技術は、暗号化されていない会話および暗号化された会話で使用され得る。エンドツーエンドの暗号化された会話では、方法200は、クライアントデバイス上でのみ実行され得る。いくつかの実装形態では、非言語オブジェクトは、分析される前に処理され得る(例えば、圧縮、低解像度への変換など)。ユーザの同意なしに、会話に関する情報がサーバに提供されることはない。
【0070】
一部の実装形態では、代替インタフェースにおける解析、会話フレーミング、およびプレゼンテーションは、支援ソフトウェアアプリケーションまたはボットによって全体的または部分的に実行され得る。ボットは、例えば、クライアントデバイス120のようなクライアントデバイスおよび/またはサーバデバイス104のようなサーバデバイス上で動作するメッセージングアプリケーションを介して、ユーザが通常テキストまたは音声を通じて対話する、1つまたは複数のコンピュータ上で実装される自動化されたサービスを含み得る。ボットは、ボットが様々なメッセージングアプリケーションまたは他のアプリケーションのユーザと対話できるように、ボットプロバイダによって実装され得る。いくつかの実装形態では、メッセージングアプリケーションのプロバイダは、1つまたは複数のボットを提供することもある。いくつかの実装形態では、メッセージングアプリケーションのプロバイダによって提供されるボットは、ボットが他のメッセージングアプリケーションに含まれることができるように、例えば他のプロバイダによって提供されるように構成され得る。ボットは他のモードに比べていくつかの利点を提供することが可能である。ユーザは、テキストおよび/または音声を介してボットと対話することができ、これは、ウェブサイト、ソフトウェアアプリケーション、電話通話、例えば、対話式音声応答(interactive voice response:IVR)サービス、またはサービスとやり取りする他の方法を使用するのに必要である可能性がある学習と比較して、最小限の学習しか必要とせず、または全く学習を必要としない可能性がある。メッセージングサービスまたはアプリケーションにボットを組み込むことで、ユーザは、メッセージングサービス内で旅行の計画、買い物、イベントのスケジュール、情報の取得などのさまざまなタスクを他のユーザと協力することも可能となり、タスクを実行するためのさまざまなアプリケーション(例えば、タクシー予約アプリケーション、レストラン予約アプリケーション、カレンダーアプリケーションなど)間またはWebサイト間での切り替えのような面倒な操作を排除することができる。
【0071】
本明細書で説明される代替インタフェースでのプレゼンテーションのために電子会話を解析するためのボットは、1つまたは複数のメッセージングアプリケーションに関連して、1または複数のユーザ(例えば、ユーザU1~U4のいずれか)と対話するように構成されたコンピュータプログラムまたはアプリケーション(例えば、ソフトウェアアプリケーション)として実装され得る。
【0072】
メッセージングアプリケーションのユーザと通信することができるボットを実装することは、多くの利点を提供し得る。前述のように、ボットは、電子会話を解析し、クライアントデバイスが使用されているコンテキストに適した代替インタフェースでそれらの会話を提示できる(例えば、ユーザが車両を操作している場合は、音声インタフェースで会話を提示する)。
【0073】
特定の実施形態では、ボットは会話型インタフェースを使用して自然言語(例えば、会話フレーミング)を使用してユーザと会話的に対話することができる。いくつかの実施形態では、ボットは、例えばレストランの住所の要求に応じて、「レストランRの位置はLである」などのテンプレートを使用するなど、テンプレートベースのフォーマットを使用して、ユーザと対話するための文章を作成することができる。場合によっては、例えばボットがユーザと対話するために自然言語を使用するかどうか、ボットがテンプレートベースの対話を使用するかどうかなど、ユーザが、ボット対話フォーマットを選択できるようにすることが可能であり得る。
【0074】
ボットが自然言語を使用して会話的に対話する場合、ボットの対話の内容および/またはスタイルは、自然言語処理を使用して判定される会話のコンテンツ、会話中のユーザの識別情報、1つまたは複数の会話コンテキスト(例えば、ユーザの対話に関する履歴情報、ソーシャルグラフに基づく会話内のユーザ間の関係)、外部条件(例えば、天気、交通)、ユーザのスケジュール、ユーザに関連する関連コンテキストなどのうちの一つまたは複数に基づいて動的に変化し得る。このような場合、ボットの対話の内容とスタイルは、会話に参加しているユーザが同意した要素のみに基づいて異なる。
【0075】
一例として、会話のユーザがフォーマルな言葉を使用していると判断された場合(例えば、俗語や絵文字がない、または最小限の俗語または絵文字)、ボットもフォーマルな言葉を使用してその会話内で対話することができ、逆もまた同様である。
【0076】
特定の実施形態では、会話に参加しているユーザは、例えば、ボット名またはボットハンドル(例えば、タクシー(taxi)、@タクシーボット(@taxibot)、@ムービー(@movies)など)を入力すること、音声コマンド(例えば、「銀行ボットを呼び出して」など)を使用すること、ユーザインタフェース要素(例えば、ボット名またはハンドルでラベル付けされたボタンまたはその他の要素)をアクティブにすることなどによって、特定のボットまたは特定のタスクを実行するボットを呼び出すことが可能とされ得る。ボットが呼び出されると、ユーザは、ボットが音声インタフェースでユーザに受信されたメッセージを解析して読むことを要求し得る。
【0077】
特定の実施形態では、ボットは、具体的に呼び出されることなく、メッセージング会話内の情報またはアクションを自動的に提案することができる。即ち、ユーザはボットを特に起動する必要がないことがあり得る。これらの実施形態では、ボットは、継続的にまたは別々の時点でのユーザのコンテキスト(ユーザの許可により取得される)の分析および理解に依存することができる。コンテキストの分析は、特定のユーザのニーズを理解し、いつボットが支援を提案すべきかを識別するために使用することができる。一例として、ボットは、ユーザが車両にいることを示唆する方法でユーザデバイスが動いていると判断し、ボットは、着信メッセージが解析され、音声インタフェースまたは他の代替インタフェースで提示されることを示唆し得る。
【0078】
ボットが具体的に呼び出されることなく、メッセージング会話内において情報またはアクションを自動的に提案することができる実施形態では、例えば、メッセージング会話に参加している一または複数のユーザが、ユーザの会話の分析をボットが実施することについて同意しない場合、そのような機能は無効にされる。さらに、そのような機能は、ユーザ入力に基づいて一時的に無効にされてもよい。例えば、会話がプライベートまたはセンシティブであることをユーザが示したとき、会話コンテキストの分析は、ユーザがボットをアクティブにするための入力を提供するまで一時停止される。さらに、分析機能が無効化されているという標示を、例えばユーザインタフェース要素を用いて、会話の参加者に提供することができる。
【0079】
様々な実装形態では、ボットは様々な構成で実装され得る。例えば、ボットはクライアントデバイス(例えば、120-126)上に実装され得る。この例では、ボットは、クライアントデバイスに対してローカルなソフトウェアアプリケーション内のモジュールであり得る。ユーザが、クライアントデバイス上のメッセージングアプリケーションに関連してボットと会話することができるように、ボットはクライアントデバイス上にローカルに実装され得る。
【0080】
別の例では、ボットは、クライアントデバイスおよびサーバデバイスの両方に実装され得る。この例では、ボットは、例えば、ボット機能の一部がクライアントボットおよびサーバボットの各々によって提供される、クライアント-サーバコンピュータプログラムとして実装され得る。いくつかの実装形態において、ボットは、例えば、複数のクライアントデバイスおよびサーバ(例えば、クライアントデバイス、サーバデバイスなど)にわたって分散されたモジュールを有する分散アプリケーションとして実施されてもよい。いくつかの実装形態では、ボットは、サーバデバイス上に実装されるサーバアプリケーションとして実装され得る。
【0081】
クライアントのみ、サーバのみ、クライアント-サーバ、分散などのような異なる実装形態は、異なる利点を提供し得る。例えば、クライアントのみの実装形態では、例えば、ネットワークアクセスなしで、ボット機能をローカルに提供することができ、このことは、例えば、ユーザがネットワークのカバレッジエリア外にある場合、またはネットワーク帯域幅が狭いか、または制限されている任意のエリア内にある場合など、特定の状況で有利となり得る。サーバのみ、クライアント-サーバ、または分散構成などの1つまたは複数のサーバを含む実装では、例えば、チケットの予約などのクライアントデバイスでローカルに提供できない特定の機能が許可され得る。
【0082】
ボットは、メッセージングアプリケーションとは異なるものであってよく、いくつかの実装形態では、1つまたは複数のボットは、メッセージングアプリケーションの一部として実装され得る。ボットがメッセージングアプリケーションの一部として実装される実装形態では、ボットを実行する前にユーザの許可が取得され得る。いくつかの実装形態において、メッセージングアプリケーションのプロバイダおよびユーザとは異なるサードパーティが、ユーザと通信することができるボットを提供し得る。
【0083】
非言語オブジェクトのオブジェクト認識および解析、並びに会話フレーミングの識別およびレンダリングは、機械学習技術を使用して実行され得る。例えば、言語オブジェクトは、LSTMモデルを使用して解析および要約され、画像/ビデオコンテンツは、オブジェクト認識用のためにトレーニングされた機械学習モデルを使用して解析され得る。インタラクティブなオブジェクトは、これらのタイプのオブジェクトなどのために特別にトレーニングされたモデルを使用して認識され得る。例えば、電子的コミュニケーション分析アプリケーションは、メッセージングアプリケーションとのユーザの対話を向上させることが可能な、例えばディープラーニングモデルなどの機械学習を実装することができる。機械学習モデルは、合成データ、例えば、ユーザ情報を使用せずにコンピュータによって自動的に生成されたデータを使用してトレーニングすることができる。いくつかの実装形態では、機械学習モデルは、例えば、トレーニングのためにユーザデータを利用する許可がユーザから明示的に得られているサンプルデータに基づいてトレーニングされ得る。例えば、サンプルデータは、受信されたメッセージを含み得る。サンプルデータに基づいて、機械学習モデルは、受信されたメッセージを解析して会話フレーミングを提供する方法を予測し、これは次に、代替インタフェースを介してプレゼンテーションとして提供され得る。
【0084】
いくつかの実装形態では、機械学習は、サーバデバイス、クライアントデバイス、またはその両方で実装され得る。いくつかの実装形態では、単純な機械学習モデルがクライアントデバイス上で実施され(例えば、クライアントデバイスのメモリ、ストレージ、および処理制約内でモデルの動作を可能にするため)、複雑な機械学習モデルがサーバデバイス上で実施され得る。ユーザが機械学習技術の使用について同意しない場合、そのような技術は実装されない。いくつかの実装形態において、ユーザは、クライアントデバイス上でのみ実施される機械学習のために同意を選択的に提供し得る。これらの実装形態では、機械学習モデルに対する更新または機械学習モデルによって使用されるユーザ情報は、ローカルに格納または使用され、かつサーバデバイスまたは他のクライアントデバイスなどの他のデバイスとは共有されないように、機械学習モデルがクライアントデバイス上で実施され得る。
【0085】
いくつかの実装形態では、機械学習アプリケーションは、1つまたは複数のプロセッサが本明細書に記載の機能、例えば、
図2の方法のうちのいくつかまたは全てを実施することを可能とする命令を含み得る。
【0086】
様々な実装形態では、本明細書に記載の機能を実行する機械学習アプリケーションは、ベイズ分類器、サポートベクターマシン、ニューラルネットワーク、または他の学習技術を利用することができる。いくつかの実装形態では、機械学習アプリケーションは、トレーニングされたモデル、推論エンジン、およびデータを含み得る。いくつかの実装形態では、データは、トレーニングデータ、例えばトレーニングされたモデルを生成するために使用されるデータを含み得る。例えば、トレーニングデータは、テキスト、画像、音声、ビデオなどのような任意の種類のデータを含み得る。トレーニングデータは、任意のソース、例えば、トレーニングのために特別にマークされたデータリポジトリ、機械学習のためのトレーニングデータとして使用するために許可が与えられているデータなどから取得することができる。1または複数のユーザが、機械学習モデル、例えば、トレーニングされたモデルをトレーニングするためにそれぞれのユーザデータの使用を許可する実装形態では、トレーニングデータは、そのようなユーザデータを含むことができる。ユーザがそれぞれのユーザデータの使用を許可する実装形態では、データは、画像(例えば、写真または他のユーザ生成画像)、通信(例えば、電子メール、テキストメッセージなどのチャットデータ、音声、ビデオなど)、およびドキュメント(例えば、スプレッドシート、テキストドキュメント、プレゼンテーションなど)などの許可されたデータを含み得る。
【0087】
いくつかの実装形態では、トレーニングデータは、例えばシミュレートされた会話から生成されたデータ、コンピュータ生成画像など、訓練されているコンテキストにおけるユーザ入力または活動に基づいていないデータのような、トレーニングの目的で生成された合成データを含み得る。いくつかの実装形態では、機械学習アプリケーションは、データを除外する。例えば、これらの実装形態では、トレーニングされたモデルは、例えば異なるデバイス上で生成され、機械学習アプリケーションの一部として提供され得る。様々な実装形態では、トレーニングされたモデルは、モデル構造または形態、ならびに関連する重みを含むデータファイルとして提供され得る。推論エンジンは、トレーニングされたモデルのデータファイルを読み取り、トレーニングされたモデルで指定されたモデル構造または形態に基づく、ノードの接続性、層、および重みを用いてニューラルネットワークを実装することができる。
【0088】
機械学習アプリケーションは、トレーニングされたモデルも含み得る。いくつかの実装形態では、トレーニングされたモデルは、1つまたは複数のモデル形態または構造を含み得る。例えば、モデル形態または構造は、線形ネットワーク、複数の層(例えば、入力層と出力層との間の「隠れ層」、各層は線形ネットワークである)を実装するディープニューラルネットワーク、畳み込みニューラルネットワーク(例えば、入力データを複数の部分またはタイルに分割または区分けし、1つまたは複数のニューラルネットワーク層を用いて各タイルを別個に処理し、各タイルの処理からの結果を集約するネットワーク)、sequence-to-sequenceニューラルネットワーク(例えば、文中の単語、ビデオのフレームなどの入力シーケンシャルデータを取り、結果シーケンスを出力として生成するネットワーク)のような、任意のタイプのニューラルネットワークを含み得る。モデル形態または構造は、様々なノード間の接続性およびノードの層への編成を指定することができる。例えば、第1層(例えば入力層)のノードは、入力データまたはアプリケーションデータとしてデータを受け取ることができる。そのようなデータは、例えば、トレーニングされたモデルが画像分析のために使用される場合、例えば、ノードごとに1つまたは複数のピクセルを含むことができる。後続の中間層は、モデル形態または構造で指定された接続性に従って、前の層のノードの入力出力を受け取ることができる。これらの層は、隠れ層とも呼ばれる。最終層(例えば、出力層)は、機械学習アプリケーションの出力を生成する。例えば、出力は、特定のトレーニングされたモデルに応じて、画像に対するラベルのセット、画像を他の画像と比較することを可能にする画像の表現(例えば、画像に対する特徴ベクトル)、入力文に応答した出力文、入力データのための1つまたは複数のカテゴリなどであり得る。いくつかの実装形態では、モデル形態または構造は、各層のノードの数および/またはタイプも指定する。
【0089】
異なる実装形態では、トレーニングされたモデルは、モデル構造または形態ごとに層に配置された複数のノードを含むことができる。いくつかの実装形態では、ノードは、メモリなしの計算ノード、例えば、1単位の入力を処理して1単位の出力を生成するように構成されたものであり得る。ノードによって実行される計算は、例えば、複数のノード入力の各々に重みを乗算すること、重み付き和を取得すること、および重み付き和をバイアスまたは切片値で調整してノード出力を生成することを含み得る。いくつかの実装形態では、計算は、調整された重み付き和にステップ/活性化関数を適用することを含み得る。いくつかの実装形態では、ステップ/活性化関数は、非線形関数であり得る。様々な実装形態では、計算は、行列乗算などの演算を含み得る。いくつかの実装形態では、複数のノードによる計算は、例えばマルチコアプロセッサの複数のプロセッサコアを使用して、GPUの個々の処理ユニットを使用して、または専用のニューラル回路を使用して、並列して実行され得る。いくつかの実装形態では、ノードは、メモリを含むことができ、例えば、後続の入力を処理する際に1つまたは複数の以前の入力を格納して使用することが可能であり得る。例えば、メモリを有するノードは、長期短期記憶(LSTM)ノードを含み得る。LSTMノードは、ノードが有限状態機械(FSM)のように動作することを可能にする「状態」を維持するためにメモリを使用することができる。そのようなノードを有するモデルは、連続データ、例えば文章または段落内の単語、ビデオ内のフレーム、スピーチまたは他の音声などを処理するのに有用であり得る。
【0090】
いくつかの実装形態では、トレーニングされたモデルは、個々のノードに対する埋め込みまたは重みを含み得る。例えば、モデルは、モデルの形態または構造によって指定されるような層に編成された複数のノードとして開始されてもよい。初期化時に、モデル形態ごとに接続されているノード、例えばニューラルネットワークの連続する層におけるノード、の各ペアの間の接続に、それぞれの重みが適用され得る。例えば、それぞれの重みは、ランダムに割り当てられてもよく、またはデフォルト値に初期化されてもよい。次いで、モデルが、例えばデータを使用してトレーニングされ、結果を生成することができる。
【0091】
例えば、トレーニングは、教師あり学習技術を適用することを含み得る。教師あり学習では、トレーニングデータは、複数の入力(例えば、一組の画像)および各入力に対する対応する予想される出力(例えば、各画像に対する1つまたは複数のラベル)を含み得る。モデルの出力と、期待される出力との比較に基づいて、重みの値が、例えば同様の入力が与えられたときにモデルが期待される出力を生成する確率を高めるように、自動的に調整される。
【0092】
いくつかの実装形態では、トレーニングは、教師なし学習技術を適用することを含み得る。教師なし学習では、入力データのみが提供され、モデルは、データを区別するように、例えば、入力データを複数のグループにクラスタ化するようにトレーニングされることが可能であり、各グループは、何らかの点で類似した入力データを含む。例えば、モデルが、抽象画像(例えば、合成画像、人間が描いた画像など)を自然画像(例えば、写真)から区別するように、画像を区別するようにトレーニングされ得る。
【0093】
別の例では、教師なし学習を使用してトレーニングされたモデルは、入力文における単語の使用に基づいて単語をクラスタ化することができる。いくつかの実装形態では、教師なし学習を使用して、例えば機械学習アプリケーションによって使用され得る知識表現を生成することができる。様々な実装形態では、トレーニングされたモデルは、モデル構造に対応する重みまたは埋め込みの集合を含む。データが省略される実装形態では、機械学習アプリケーションは、例えば、機械学習アプリケーションの開発者、またはサードパーティなどによる事前のトレーニングに基づくトレーニングされたモデルを含み得る。いくつかの実装形態では、トレーニングされたモデルは、例えば重みを提供するサーバからダウンロードされた、固定された重みのセットを含み得る。
【0094】
機械学習アプリケーションは、推論エンジンも含み得る。推論エンジンは、トレーニングされたモデルをアプリケーションデータなどのデータに適用して推論を提供するように構成されている。いくつかの実装形態では、推論エンジンは、プロセッサによって実行されるべきソフトウェアコードを含み得る。いくつかの実装形態では、推論エンジンは、プロセッサがトレーニングされたモデルを適用することを可能にする回路構成(例えば、プログラマブルプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)など)を指定することができる。いくつかの実装形態では、推論エンジンは、ソフトウェア命令、ハードウェア命令、またはそれらの組み合わせを含み得る。いくつかの実装形態では、推論エンジンは、例えばトレーニングされたモデルをアプリケーションデータに適用して推論を生成するために、オペレーティングシステムおよび/または他のアプリケーションによって使用されて、推論エンジンを呼び出すことができるアプリケーションプログラミングインタフェース(API)を提供し得る。
【0095】
機械学習アプリケーションは、複数の技術的利点を提供することができる。例えば、トレーニングされたモデルが、教師なし学習に基づいて生成される場合、トレーニングされたモデルが、推論エンジンによって適用されて、入力データ、例えばアプリケーションデータから知識表現(例えば、数値表現)を生成することができる。例えば、画像分析のためにトレーニングされたモデルは、入力画像(例えば10MB)よりも実質的に小さいサイズ(例えば1KB)を有する画像の表現を生成し得る。いくつかの実装形態では、そのような表現は、出力(例えば、ラベル、分類、画像を説明する文章など)を生成するための処理コスト(例えば、計算コスト、メモリ使用量など)を削減するのに役立ち得る。いくつかの実装形態では、そのような表現は、推論エンジンの出力から出力を生成する異なる機械学習アプリケーションへの入力として提供され得る。いくつかの実装形態では、機械学習アプリケーションによって生成された知識表現は、例えばネットワークを介して、さらなる処理を実行する異なるデバイスに提供され得る。そのような実装形態では、画像ではなく知識表現を提供することにより、実質的な技術的利益が提供され、例えば、より低いコストでより速いデータ伝送を可能にすることができる。別の例では、ドキュメントをクラスタ化するためにトレーニングされたモデルは、入力ドキュメントからドキュメントクラスタを生成することができる。ドキュメントクラスタは、元のドキュメントにアクセスする必要なしに、さらなる処理(例えば、ドキュメントがトピックに関連しているかどうかの判定、そのドキュメントの分類カテゴリの判定など)に適し、従って計算コストを節約することができる。
【0096】
いくつかの実装形態では、機械学習アプリケーションは、オフライン方式で実装され得る。これらの実装形態では、トレーニングされたモデルは、第一段階で生成され、機械学習アプリケーションの一部として提供され得る。いくつかの実装形態では、機械学習アプリケーションは、オンライン方式で実装され得る。例えば、そのような実装形態では、機械学習アプリケーションを呼び出すアプリケーション(例えば、オペレーティングシステム、および/または1つまたは複数の他のアプリケーション)は、機械学習アプリケーションによって生成された推論を利用することができ、例えば、その推論をユーザに提供し、システムログ(例えば、ユーザによって許可された場合、推論に基づいてユーザによって取られたアクション、またはさらなる処理のための入力として利用された場合、さらなる処理の結果)を生成することができる。システムログは、定期的に、例えば、毎時、毎月、毎四半期などに生成されてもよく、ユーザの許可を得て、トレーニングされたモデルを更新するために、例えばトレーニングされたモデルの埋め込みを更新するために使用され得る。
【0097】
いくつかの実装形態では、機械学習アプリケーションは、機械学習アプリケーションが実行されるデバイスの特定の構成に適応することができる方法で実装され得る。例えば、機械学習アプリケーションは、利用可能な計算資源、例えばプロセッサを利用する計算グラフを決定することができる。例えば、機械学習アプリケーションが複数のデバイス上の分散型アプリケーションとして実施される場合、機械学習アプリケーションは、計算を最適化する方法で個々のデバイス上で実行されるべき計算を決定することができる。別の例では、機械学習アプリケーションは、プロセッサが特定の数(例えば、1000)のGPUコアを有するGPUを含み、それに応じて推論エンジンを(例えば、1000個の個々のプロセスまたはスレッドとして)実装することを決定し得る。
【0098】
いくつかの実装形態では、機械学習アプリケーションは、トレーニングされたモデルのアンサンブルを実施し得る。例えば、トレーニングされたモデルは、それぞれ同じ入力データに適用可能な複数のトレーニングされたモデルを含み得る。これらの実装形態では、機械学習アプリケーションは、例えば、利用可能な計算リソース、以前の推論での成功率などに基づいて、特定のトレーニングされたモデルを選択することができる。いくつかの実装形態では、機械学習アプリケーションは、複数のトレーニングされたモデルが適用されるように推論エンジンを実行することができる。これらの実装形態では、機械学習アプリケーションは、個々のモデルの適用からの出力を、例えば、各トレーニング済みモデルの適用からの個々の出力を採点する投票技術を使用して、または1つまたは複数の特定の出力を選択することによって、組み合わせることができる。さらに、これらの実装形態では、機械学習アプリケーションは、個々のトレーニングされたモデルを適用するための時間閾値(例えば、0.5ms)を適用し、その時間閾値内で利用可能な個々の出力のみを利用することができる。時間閾値内に受信されない出力は利用されず、例えば破棄され得る。例えば、そのようなアプローチは、例えばオペレーティングシステム、または1つまたは複数のアプリケーションによって、機械学習アプリケーションを呼び出す間に指定された時間制限がある場合に適切であり得る。
【0099】
異なる実装形態では、機械学習アプリケーションは、異なるタイプの出力を生成することができる。例えば、機械学習アプリケーションは、表現またはクラスタ(例えば、入力データの数値表現)、ラベル(例えば、画像、ドキュメントなどを含む入力データに対する)、フレーズまたは文章(例えば、入力文に対する応答としての使用に適している画像またはビデオの説明など)、画像(例えば、入力に応答して機械学習アプリケーションによって生成される)、音声またはビデオ(例えば、入力ビデオに応答して、機械学習アプリケーションは、特定の効果が適用された出力ビデオ、例えば、トレーニングされたモデルがコミックブックまたは特定のアーティストなどからのトレーニングデータを使用してトレーニングされる場合、コミックブックまたは特定のアーティストのスタイルでレンダリングされた出力ビデオを生成し得る)を提供することができる。いくつかの実装形態では、機械学習アプリケーションは、呼び出し側アプリケーション、例えば、オペレーティングシステムまたは1つまたは複数のアプリケーションによって指定されたフォーマットに基づいて出力を生成することができる。いくつかの実装形態では、呼び出し側アプリケーションは、別の機械学習アプリケーションであり得る。例えば、そのような構成は、敵対的生成ネットワークで使用され得、呼び出し側機械学習アプリケーションが、機械学習アプリケーションからの出力を使用してトレーニングされ、その逆も同様である。
【0100】
あるいは、メモリ内のソフトウェアのいずれも、他の任意の適切な記憶場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ(および/または他の接続された単数または複数の記憶デバイス)は、1つまたは複数のメッセージ、1つまたは複数の分類法、電子百科事典、辞書、シソーラス、ナレッジベース、メッセージデータ、文法、ユーザプリファレンス、および/または本明細書で説明された機能で使用される他の命令およびデータを格納することができる。メモリおよび他の任意の種類の記憶装置(磁気ディスク、光ディスク、磁気テープ、または他の有形の媒体)は、「記憶装置」または「記憶デバイス」と見なすことができる。
【0101】
I/Oインタフェースは、サーバデバイスを他のシステムおよびデバイスとインタフェースすることを可能にするための機能を提供することができる。インタフェースされたデバイスは、デバイスの一部として含めることができ、または分離してデバイスと通信することができる。例えば、ネットワーク通信デバイス、記憶デバイス(例えば、メモリおよび/またはデータベース106)、および入力/出力デバイスは、I/Oインタフェースを介して通信することができる。いくつかの実装形態では、I/Oインタフェースは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサなど)および/または出力デバイス(表示デバイス、スピーカーデバイス、プリンター、モーターなど)のようなインタフェースデバイスに接続することができる。
【0102】
I/Oインタフェースに接続することができるインタフェースデバイスのいくつかの例は、コンテンツ、例えば、本明細書で説明されるような出力アプリケーションの画像、ビデオ、および/またはユーザインタフェースを表示するために使用できる1つまたは複数の表示デバイスを含み得る。表示デバイスは、ローカル接続(例えば、表示バス)および/またはネットワーク接続を介してデバイスに接続されることができ、任意の適切な表示デバイスとすることができる。表示デバイスは、LCD、LED、またはプラズマディスプレイスクリーン、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイスクリーン、または他の視覚的表示デバイスのような任意の適切な表示デバイスを含むことができる。例えば、表示デバイスは、モバイルデバイスに提供されるフラットディスプレイスクリーン、ゴーグルまたはヘッドセットデバイスに提供される複数の表示スクリーン、またはコンピュータデバイス用のモニタスクリーンであり得る。
【0103】
I/Oインタフェースは、他の入力および出力デバイスとインタフェースすることができる。いくつかの例は、画像をキャプチャすることができる1つまたは複数のカメラを含む。いくつかの実装形態は、(例えば、キャプチャされた画像、音声コマンドなどの一部として)音声をキャプチャするためのマイクロフォン、音声を出力するためのオーディオスピーカーデバイス、または他の入出力デバイスを提供することができる。
【0104】
説明は、その特定の実装形態に関して記載されているが、これらの特定の実装形態は単なる例示であり、限定的なものではない。例に示されている概念は、他の例および実装形態にも適用することができる。
【0105】
本明細書で説明される特定の実装形態が、ユーザに関する個人情報(例えば、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの所在地および所在地における時間、ユーザのバイオメトリック情報、ユーザの活動およびデモグラフィック情報)を収集または使用し得る状況において、ユーザには、情報が収集されるかどうか、個人情報が格納されるかどうか、個人情報が使用されるかどうか、およびユーザに関する情報がどのように収集、格納、および使用されるかを制御するための1つまたは複数の機会が提供される。すなわち、本明細書で説明されたシステムおよび方法は、特に、関連するユーザからの明確な許可を受けたときに、ユーザの個人情報を収集、格納および/または使用する。例えば、ユーザは、プログラムまたは機能がその特定のユーザまたはプログラムまたは機能に関連する他のユーザについてのユーザ情報を収集するかどうかについての制御を提供される。個人情報が収集される各ユーザには、そのユーザに関連した情報収集の制御を可能にする1つまたは複数のオプションが提供され、それにより、情報が収集されてよいかどうか、およびその情報のどの部分が収集されるかに関する許可または認可を与える。例えば、ユーザには、1つまたは複数のそのような制御オプションが、通信ネットワークを通じて提供されてよい。さらに、特定のデータは、個人を特定可能な情報が削除されるように、格納または使用される前に1つまたは複数の方法で処理され得る。一例として、個人を識別可能な情報が判定され得ないように、ユーザの識別情報が取り扱われ得る。別の例として、ユーザの地理的位置は、ユーザの特定の位置が判定され得ないように、より大きな領域に一般化することができる。
【0106】
本開示に記載されている機能ブロック、動作、特徴、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組み合わせに統合または分割することができることに留意されたい。特定の実装形態のルーチンを実装するために、任意の適切なプログラミング言語およびプログラミング技術が使用され得る。例えば、手続き型またはオブジェクト指向などの異なるプログラミング技術が使用され得る。ルーチンは、単一の処理デバイスまたは複数のプロセッサ上で実行することができる。ステップ、動作、または計算は特定の順序で提示され得るが、異なる特定の実装形態においてはその順序は変更されてもよい。いくつかの実装形態では、本明細書において連続的なものとして示されている複数のステップまたは動作が同時に実行され得る。