(57)【要約】実装は受信メッセージに含まれる画像への自動応答提案に関する。ある実装形態ではコンピュータ実装方法は、第１のユーザにより第１のメッセージ内に投稿された画像を検出すること、画像をプログラム的に分析し画像を表す特徴ベクトルを判定することを含む。方法は特徴ベクトルに基づき第１のメッセージに対する１つ又は複数の提案された応答をプログラム的に生成し、各提案された応答は第１のメッセージへの会話型の返信である。提案された応答を生成することは、前の画像に対する前の応答でトレーニングされたモデルを用いて特徴ベクトルについて単語シーケンスに関連する確率を判定すること、関連する確率に基づき単語シーケンスの１つ又は複数を選択することを含む。提案された応答は選択された単語シーケンスに基づき判定される。方法は提案された応答を第２のユーザに対する１つ又は複数の提案としてメッセージングアプリケーションでレンダリングする。
2019536135.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実施される、メッセージングアプリケーションにおいてコンテンツを自動的に提案する方法であって、
第１のユーザによって第１のメッセージ内に投稿された画像を検出すること、
前記画像をプログラム的に分析して、前記画像を表す特徴ベクトルを判定すること、
前記特徴ベクトルに基づいて、前記第１のメッセージに対する１つまたは複数の提案された応答をプログラム的に生成することであって、前記１つまたは複数の提案された応答は、それぞれ前記第１のメッセージに対する会話型の返信であり、前記１つまたは複数の提案された応答をプログラム的に生成することは、
前の画像に対する前の応答でトレーニングされたモデルを用いて前記特徴ベクトルについて単語シーケンスに関連する確率を判定すること、
前記単語シーケンスに関連する確率に基づいて、前記単語シーケンスのうちの１つまたは複数の単語シーケンスを選択することであって、前記１つまたは複数の提案された応答は、選択された１つまたは複数の単語シーケンスに基づいて判定される、前記選択すること
を含む、前記生成すること、
前記１つまたは複数の提案された応答が、第２のユーザに対する１つまたは複数の提案として前記メッセージングアプリケーションにおいてレンダリングされるようにすること
を含む、方法。
【請求項２】
前記特徴ベクトルは、前記画像の視覚的ピクセルコンテンツの要約された数値表現である、請求項１に記載の方法。
【請求項３】
前記１つまたは複数の提案された応答を提供することは、前記メッセージングアプリケーションにおいて前記１つまたは複数の提案された応答をレンダリングするためのコマンドを送信することを含む、請求項１または２に記載の方法。
【請求項４】
前記確率は、格納されたボキャブラリにおける各単語が前記１つまたは複数の単語シーケンスのうちの１つにおける次の単語である確率を含み、前記１つまたは複数の単語シーケンスを選択することは、判定された確率のうちの１つまたは複数の最高確率に関連付けられた１つまたは複数の単語シーケンスのうちの複数を選択することを含む、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記モデルは、調整された言語モデルであり、前記単語シーケンスに関連する確率を判定することは、前記特徴ベクトルを前記調整された言語モデルに入力することを含む、請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
前記調整された言語モデルは、長期短期記憶（ＬＳＴＭ）ネットワークを使用する、請求項５に記載の方法。
【請求項７】
前記調整された言語モデルは、トレーニングされたニューラルネットワークを含む、請求項５または６に記載の方法。
【請求項８】
前記１つまたは複数の単語シーケンスを選択することは、ビームサーチ技術を使用することを含む、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
前記１つまたは複数の単語シーケンスの各々は、前記単語シーケンスおよび前記特徴ベクトルに含まれる単語を符号化する単語埋め込みとして前記モデルによって使用されている、請求項１乃至８のいずれか一項に記載の方法。
【請求項１０】
前記１つまたは複数の単語シーケンスは、前記前の応答から判定されたボキャブラリ内の複数の単語から判定されており、前記単語シーケンスに関連する確率を判定することは、前記ボキャブラリ内の各単語が、前記単語シーケンス内の次の単語になる確率を各単語シーケンスに対して反復的に判定することを含む、請求項１乃至９のいずれか一項に記載の方法。
【請求項１１】
前記前の応答は、前記前の画像に対する応答のより大きいセットから選択されたものであり、前記前の応答は、前記応答のより大きいセットの他の前の応答よりも前記前の画像の特定のコンテンツに対してより特有のものである、請求項１乃至１０のいずれか一項に記載の方法。
【請求項１２】
前記モデルは、調整された言語モデルであり、前記１つまたは複数の単語シーケンスを選択することは、反復的に、
前記特徴ベクトルおよび前の単語シーケンスを前記調整された言語モデルに供給して、前記特徴ベクトルおよび前の単語シーケンスに基づいて、新しい単語シーケンスのセットおよび前記新しい単語シーケンスに関連する確率を判定することであって、前記新しい単語シーケンスのうちの１つまたは複数は、前記前の単語シーケンスに対して少なくとも１つの追加の単語を有する、前記判定すること、
前記新しい単語シーケンスに関連する確率に基づいて新しい単語シーケンスのセットのサブセットを選択し、選択されたサブセットのうちの１つの単語シーケンスを次の反復のための前の単語シーケンスとして選択すること
を含む、請求項１乃至１１のいずれか一項に記載の方法。
【請求項１３】
前記第２のユーザが前記提案された応答を選択すると、前記提案された応答をメッセージ応答として前記第１のメッセージに投稿することをさらに含む、請求項１乃至１２のいずれか一項に記載の方法。
【請求項１４】
前記１つまたは複数の単語シーケンスの各々が、単語シーケンスのホワイトリストに存在するかどうかをチェックすることをさらに含み、選択された１つまたは複数の単語シーケンスは、前記ホワイトリストに存在するものである、請求項１乃至１３のいずれか一項に記載の方法。
【請求項１５】
前記１つまたは複数の単語シーケンスを選択することは、前記第２のユーザによって提供された前のメッセージ応答に対する類似性に基づいて重み付けされた少なくとも１つの単語シーケンスを選択することを含む、請求項１乃至１４のいずれか一項に記載の方法。
【請求項１６】
前記調整された言語モデルを第１の言語に固有の第１の調整された言語モデルとして提供すること、
第２の言語に固有の第２の調整された言語モデルを提供すること、
前記第１のメッセージが受信されるメッセージ会話のための言語が、前記第１の言語であることを判定すること、
前記第１の調整された言語モデルを選択して、前記１つまたは複数の提案された応答をプログラム的に生成することにおいて用いられるようにすること
をさらに含む、請求項５、６、および７のいずれか一項に記載の方法。
【請求項１７】
メッセージングアプリケーションにおいてコンテンツを自動的に提案するためのシステムであって、
メモリと、
前記メモリにアクセスするように構成され、かつ動作を実行するように構成された少なくとも１つのプロセッサであって、前記動作は、
第１のユーザによって第１のメッセージ内に投稿された画像を検出すること、
前記画像をプログラム的に分析して、前記画像を表す特徴ベクトルを判定すること、
前記特徴ベクトルに基づいて前記第１のメッセージに対する１つまたは複数の提案された応答をプログラム的に生成することであって、前記１つまたは複数の提案された応答は、それぞれ、前記第１のメッセージに対する会話型の返信であり、かつ単語シーケンス内に配列された１つまたは複数の単語を有するものであり、前記１つまたは複数の提案された応答をプログラム的に生成することは、前記１つまたは複数の提案された応答のうちの各１つに対し、前記特徴ベクトルに基づいて、および前記単語シーケンス内の１つまたは複数の前の単語に基づいて、前記単語シーケンス内に配列された１つまたは複数の単語のうちの各単語を反復的に判定することを含む、前記生成すること、
前記１つまたは複数の提案された応答が、第２のユーザに対する１つまたは複数の提案としてメッセージングアプリケーションにレンダリングされるようにすること
を含む、システム。
【請求項１８】
前記１つまたは複数の提案された応答をプログラム的に生成する動作は、前の画像に対する前の応答を含むデータに基づいて前記１つまたは複数の単語シーケンスに関連する確率を判定することを含む、請求項１７に記載のシステム。
【請求項１９】
前記１つまたは複数の提案された応答をプログラム的に生成する動作は、前記１つまたは複数の単語シーケンスに関連する確率に基づいて前記１つまたは複数の提案された応答を選択することを含む、請求項１８に記載のシステム。
【請求項２０】
前記単語シーケンスの確率を判定する動作は、前の画像に対する前の応答を含む前記データを使用してトレーニングされた調整された言語モデルを使用することを含み、前記調整された言語モデルは、入力として受信された前記特徴ベクトルによって調整されており、長期短期記憶（ＬＳＴＭ）ネットワークを使用する、請求項１８または１９に記載のシステム。
【請求項２１】
プロセッサによって実行されると、動作を実行することによって、提案されたコンテンツを前記プロセッサに自動的に提供させるソフトウェア命令を格納する非一時的コンピュータ可読媒体であって、前記動作は、
画像を受信すること、
前記画像をプログラム的に分析して、前記画像を表す特徴ベクトルを判定すること、
前記特徴ベクトルに基づいて前記画像に対する１つまたは複数の提案された応答をプログラム的に生成することであって、前記１つまたは複数の提案された応答は、それぞれ、前記画像に対する会話型の返信であり、かつ単語シーケンス内に配列された１つまたは複数の単語を有するものであり、前記１つまたは複数の提案された応答をプログラム的に生成することは、前記１つまたは複数の提案された応答の各々について、前記特徴ベクトルおよび前記単語シーケンス内の１つまたは複数の前の単語に基づいて、前記単語シーケンス内に配列された前記１つまたは複数の単語の各単語を反復的に判定することを含む、前記生成すること、
前記１つまたは複数の提案された応答を出力して、ユーザに対する１つまたは複数の提案としてアプリケーションにおいてレンダリングされるようにすること
を含む、コンピュータ可読媒体。
【請求項２２】
前記提案された応答は、メッセージングアプリケーションにおいてレンダリングされるものであり、前記１つまたは複数の提案された応答をプログラム的に生成する動作は、
前の画像に対する前の応答を含むデータに基づいてトレーニングされ、かつ入力として受信された前記特徴ベクトルにより調整された、調整された言語モデルを用いて前記１つまたは複数の提案された応答に関連する確率を判定することであって、前記調整された言語モデルは、長期短期記憶（ＬＳＴＭ）ネットワークを使用する、前記判定すること、
前記１つまたは複数の提案された応答に関連する確率に基づいて、前記１つまたは複数の提案された応答を選択すること
を含む、請求項２１に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタルモバイルデバイスの人気および利便性、ならびにインターネット通信の広範な使用は、ユーザデバイス間の通信をユビキタスなものにした。例えば、ユーザは一般にそのデバイスを用いて、テキストメッセージ、チャットメッセージ、電子メール等として他のユーザに電子メッセージを送信する。ユーザは、メッセージにおいて画像を他のユーザに送信して、視覚的コンテンツを受信ユーザに提供することができる。
【０００２】
本明細書で提供される背景の説明は、本開示の状況を概略的に提示することを目的としている。出願時に先行技術として認められない可能性がある記載の態様だけでなく、本背景技術の欄に記載されている限りにおいて、本発明者らの取り組みは、明示的にも暗示的にも本開示に対する先行技術として認めたものではない。
【発明の概要】
【０００３】
本出願の実装形態は、受信されたメッセージに含まれる画像に対する自動応答提案に関する。いくつかの実装形態では、コンピュータにより実装される方法は、第１のユーザによって第１のメッセージ内に投稿された画像を検出すること、画像をプログラム的に分析して、画像を表す特徴ベクトルを判定することを含む。方法は、特徴ベクトルに基づいて、第１のメッセージに対する１つまたは複数の提案された応答をプログラム的に生成し、１つまたは複数の提案された応答は、それぞれ第１のメッセージに対する会話型の返信である。１つまたは複数の提案された応答をプログラム的に生成することは、前の画像に対する前の応答でトレーニングされたモデルを使用して、特徴ベクトルについて単語シーケンスに関連する確率を判定すること、および単語シーケンスに関連する確率に基づいて、単語シーケンスのうちの１つまたは複数の単語シーケンスを選択することを含む。１つまたは複数の提案された応答は、１つまたは複数の選択された単語シーケンスに基づいて判定される。本方法は、１つまたは複数の提案された応答が、第２のユーザに対する１つまたは複数の提案としてメッセージングアプリケーションにおいてレンダリングされるようにする。
【０００４】
方法の様々な実装形態および例が説明される。例えば、いくつかの実装形態では、１つまたは複数の提案された応答を提供することは、メッセージングアプリケーションにおいて１つまたは複数の提案された応答をレンダリングするためのコマンドを送信することを含む。いくつかの実装形態では、確率は、格納されたボキャブラリにおける各単語が１つまたは複数の単語シーケンスのうちの１つにおける次の単語である確率を含み、１つまたは複数の単語シーケンスを選択することは、判定された確率のうちの１つまたは複数の最高確率に関連付けられた１つまたは複数の単語シーケンスのうちの複数を選択することを含む。いくつかの実装形態では、モデルは、調整された言語モデルであり、単語シーケンスに関連する確率を判定することは、特徴ベクトルを調整された言語モデルに入力することを含む。いくつかの例では、調整された言語モデルは、長期短期記憶（ＬＳＴＭ）ネットワークを使用する。いくつかの実装形態は、ビームサーチ技術を使用して１つまたは複数の単語シーケンスを選択する。いくつかの実装形態では、１つまたは複数の単語シーケンスの各々は、単語シーケンスおよび特徴ベクトルに含まれる単語を符号化する単語埋め込みとしてモデルによって使用される。
【０００５】
さらなる例示的実装形態では、１つまたは複数の単語シーケンスは、前の応答から判定されたボキャブラリ内の複数の単語から判定されており、確率を判定することは、ボキャブラリ内の各単語が、単語シーケンス内の次の単語になる確率を各単語シーケンスに対して反復的に判定することを含む。いくつかの例では、前の応答は、前の画像に対する応答のより大きいセットから選択されたものであり、前の応答は、応答のより大きいセットの他の前の応答よりも前の画像の特定のコンテンツに対してより特有のものである。
【０００６】
さらなる例示的実装形態では、モデルは、調整された言語モデルであり、１つまたは複数の単語シーケンスを選択することは、反復的に、特徴ベクトルおよび前の単語シーケンスを調整された言語モデルに供給して、特徴ベクトルおよび前の単語シーケンスに基づいて、新しい単語シーケンスのセットおよび新しい単語シーケンスに関連する確率を判定することを含み、新しい単語シーケンスのうちの１つまたは複数は、前の単語シーケンスに対して少なくとも１つの追加の単語を有し、１つまたは複数の単語シーケンスを選択することは、新しい単語シーケンスに関連する確率に基づいて新しい単語シーケンスのセットのサブセットを選択し、選択されたサブセットの１つの単語シーケンスを次の反復のための前の単語シーケンスとして選択することを含む。
【０００７】
さらなる例示的実装形態では、方法は、第２のユーザが提案された応答を選択すると、提案された応答をメッセージ応答として第１のメッセージに投稿することをさらに含む。いくつかの実装形態では、方法は、１つまたは複数の単語シーケンスの各々が、単語シーケンスのホワイトリストに存在するかどうかをチェックすることをさらに含み、選択された１つまたは複数の単語シーケンスは、ホワイトリストに存在するものである。いくつかの実装形態は、第２のユーザによって提供された前のメッセージ応答に対する類似性に基づいて重み付けされた少なくとも１つの単語シーケンスを選択する。いくつかの実装形態では、調整された言語モデルは、第１の言語に固有の第１の調整された言語モデルとして提供され、方法は、第２の言語に固有の第２の調整された言語モデルを提供すること、第１のメッセージが受信されるメッセージ会話のための言語が、第１の言語であることを判定すること、第１の調整された言語モデルを選択して、１つまたは複数の提案された応答をプログラム的に生成することにおいて用いられるようにすることを含む。
【０００８】
いくつかの実装形態では、システムは、メモリと、メモリにアクセスするように構成され、かつ動作を実行するように構成された少なくとも１つのプロセッサを含み、動作は、第１のユーザによって第１のメッセージ内に投稿された画像を検出すること、画像をプログラム的に分析して、画像を表す特徴ベクトルを判定することを含む。動作は、特徴ベクトルに基づいて第１のメッセージに対する１つまたは複数の提案された応答をプログラム的に生成することを含み、１つまたは複数の提案された応答は、それぞれ、第１のメッセージに対する会話型の返信であり、かつ単語シーケンス内に配置された１つまたは複数の単語を有する。１つまたは複数の提案された応答をプログラム的に生成することは、１つまたは複数の提案された応答のうちの各１つに対し、特徴ベクトルに基づいて、および単語シーケンス内の１つまたは複数の前の単語に基づいて、単語シーケンス内に配列された１つまたは複数の単語のうちの各単語を反復的に判定することを含む。動作は、１つまたは複数の提案された応答が、第２のユーザに対する１つまたは複数の提案としてメッセージングアプリケーションにレンダリングされるようにすることを含む。
【０００９】
システムの様々な実装および例が説明される。例えば、いくつかの実装形態では、１つまたは複数の提案された応答をプログラムによって生成する動作は、前の画像に対する前の応答を含むデータに基づいて１つまたは複数の単語シーケンスに関連する確率を判定することを含む。いくつかの実装形態では、１つまたは複数の提案された応答をプログラム的に生成する動作は、１つまたは複数の単語シーケンスに関連する確率に基づいて１つまたは複数の提案された応答を選択することを含む。いくつかの実装形態では、単語シーケンスの確率を判定する動作は、前の画像に対する前の応答を含むデータを使用してトレーニングされた調整された言語モデルを使用することを含み、調整された言語モデルは、入力として受信された特徴ベクトルにより調整されており、長期短期記憶（ＬＳＴＭ）ネットワークを使用する。
【００１０】
いくつかの実装形態では、非一時的コンピュータ可読媒体は、プロセッサによって実行されると、動作を実行することによって、提案されたコンテンツをプロセッサに自動的に提供させるソフトウェア命令を格納している。動作は、画像を受信すること、および画像をプログラム的に分析して、画像を表す特徴ベクトルを判定することを含む。動作は、特徴ベクトルに基づいて画像に対する１つまたは複数の提案された応答をプログラム的に生成することを含み、１つまたは複数の提案された応答は、それぞれ、画像に対する会話型の返信であり、かつ単語シーケンス内に配列された１つまたは複数の単語を有している。１つまたは複数の提案された応答をプログラム的に生成することは、１つまたは複数の提案された応答の各々について、特徴ベクトルおよび単語シーケンス内の１つまたは複数の前の単語に基づいて、単語シーケンス内に配列された１つまたは複数の単語の各単語を反復的に判定することを含む。動作は、１つまたは複数の提案された応答を出力して、ユーザに対する１つまたは複数の提案としてアプリケーションにおいてレンダリングされるようにすることを含む。
【００１１】
コンピュータ可読媒体の様々な実装形態は、例えば、メッセージングアプリケーションでレンダリングされる提案された応答を含み、いくつかの実装形態では、１つまたは複数の提案された応答をプログラム的に生成する動作は、前の画像に対する前の応答を含むデータに基づいてトレーニングされ、かつ入力として受信された特徴ベクトルによって調整された、調整された言語モデルを用いて１つまたは複数の提案された応答に関連する確率を判定することを含み、調整された言語モデルは、長期短期記憶（ＬＳＴＭ）ネットワークを使用するものであり、１つまたは複数の提案された応答をプログラム的に生成する動作は、１つまたは複数の提案された応答に関連する確率に基づいて、１つまたは複数の提案された応答を選択することを含む。
【図面の簡単な説明】
【００１２】
【図１】本明細書に記載の１つまたは複数の実装形態に使用することができる例示的なシステムおよびネットワーク環境のブロック図である。
【図２】いくつかの実装形態による画像を含むメッセージに対する提案された応答を提供するための例示的な方法を示すフロー図である。
【図３】いくつかの実装形態による画像を表す特徴ベクトルに基づいて１つまたは複数の提案された応答を生成するための例示的な方法を示すフロー図である。
【図４】いくつかの実装形態による１つまたは複数の説明された提案された応答機能を実装することができる例示的なモジュールを示すブロック図である。
【図５】いくつかの実装形態による調整された言語モデルのうちの１つまたは複数の機能を実装することができるアーキテクチャの一例を示すブロック図である。
【図６】いくつかの実装形態による画像に対する判定された提案応答の例を示すグラフィック図である。
【図７】いくつかの実装形態による画像に対する判定された提案応答の例を示すグラフィック図である。
【図８】いくつかの実装形態による画像に対する判定された提案応答の例を示すグラフィック図である。
【図９】いくつかの実装形態による画像に対する判定された提案応答の例を示すグラフィック図である。
【図１０】いくつかの実装形態による画像に対する判定された提案応答の例を示すグラフィック図である。
【図１１】いくつかの実装形態による画像に対する判定された提案応答の例を示すグラフィック図である。
【図１２】本明細書に記載の１つまたは複数の実装形態に使用できる例示的なデバイスのブロック図である。
【発明を実施するための形態】
【００１３】
本明細書に記載の１つまたは複数の実装形態は、受信されたメッセージに含まれる画像に対する自動応答提案に関する。いくつかの実装形態では、メッセージングアプリケーションにおいてコンテンツを自動的に提案することは、第１のユーザによってメッセージ内に投稿された画像を検出すること、および画像をプログラム的に分析して画像を表す特徴ベクトルを判定することを含む。特徴ベクトルは、メッセージに対する１つまたは複数の提案された応答を生成するために使用され、提案された応答は、第１のメッセージに対する会話型の返信である。例えば、いくつかの実装形態では、調整された言語モデルは、前の画像に対する前の応答を含むトレーニングデータに基づいて、特徴ベクトルについての単語シーケンスに関連する確率を判定するようにトレーニングされる。単語シーケンスのうちの１つまたは複数が確率に基づいて選択され、提案された応答は選択された単語シーケンスに基づいている。提案された応答は出力され、例えば、第２のユーザに対する１つまたは複数の提案としてメッセージングアプリケーションにおいてレンダリングされる。
【００１４】
さまざまな機能が説明される。例えば、提案された応答は、それぞれ単語シーケンス内に配列された１つまたは複数の単語を有することができ、各提案された応答について、単語シーケンスの各単語は、特徴ベクトルに基づいて、かつ単語シーケン内の１つまたは複数の前の単語に基づいて、反復的に判定されることが可能である。提案された応答は、単語シーケンス内の次の単語となるべき単語の確率に基づいて選択されることが可能であり、例えば、提案された応答は、ボキャブラリの単語の中のそれらの構成要素単語が順に最も高い確率を有するように判定された単語シーケンスとすることができる。例えば、１つまたは複数の単語シーケンスは、トレーニングデータに基づくボキャブラリ内の単語のセット、例えば前のメッセージ画像およびそれらの画像への前の応答を含むトレーニングメッセージデータのセットから得られた単語のセットから判定されることが可能である。いくつかの例では、トレーニングデータは、トレーニングデータ内の前の応答が、フィルタリングされている他の前の応答よりも前の画像の特定のコンテンツに対してより特有のものとなるようにフィルタリングされることが可能である。
【００１５】
様々な例では、調整された言語モデルは、長期短期記憶（long-short term memory：ＬＳＴＭ）ネットワークを使用することができる。単語シーケンスは、ビームサーチ技術を用いて選択されることが可能である。いくつかの例では、システムは、１つまたは複数の単語シーケンスの各々が単語シーケンスのホワイトリストに存在するかどうかをチェックすることができ、その結果、ホワイトリストに存在する単語シーケンスは、提案された応答として適格なものとなる。いくつかの実装形態では、提案された応答の出力後、第２のユーザが提案された応答を選択する場合、選択された提案された応答は、第１のメッセージおよび画像に対するメッセージ応答として第１のユーザに送信される。いくつかの実装形態では、１つまたは複数の単語シーケンスは、現在受信している画像と同様の前の画像の受信に応答して第２のユーザによって提供された前のメッセージ応答との類似性に基づいて、提案応答としての選択のために重み付けされる。いくつかの実装形態では、複数の調整された言語モデルが提供されることが可能であり、各言語モデルは異なる言語に関連する。特定の調整された言語モデルは、第１のメッセージが受信されるメッセージ会話の検出された言語に基づいて、画像に対する提案された応答を判定するために選択されることが可能である。いくつかの実装形態では、１つまたは複数のメッセージ応答は、例えば、取得された画像に関する情報についての、ボットへのコマンドまたは要求であると判定され得る。
【００１６】
本明細書に記載の１つまたは複数の特徴は、メッセージ内の受信された画像に応答して、提案応答を自動的に提供することを可能にし、提案された応答は、受信された画像のコンテンツに対するメッセージ応答として適切であり、かつ関連性を有するものである。例えば、本明細書に記載の機能は、あたかもユーザがメッセージ応答を作成しているかのように、画像内の特定のコンテンツに対する適切な反応を含むことができる提案された応答を提供することが可能である。これは、メッセージ会話におけるユーザの応答を判定する際のより柔軟なオプションをユーザに提供し、そうでなければメッセージに適切に応答することができないユーザに対してオプションを提供することができる。
【００１７】
例えば、メッセージ会話中の様々な時点で、ユーザは、適切な応答で受信されたメッセージに対し応答するのに十分な注意および／または集中を提供することができない可能性があり、および／またはそのような適切な応答を作成するためにユーザデバイスに詳細なユーザ入力を提供することができない可能性がある。いくつかの例では、ユーザは活動を実行しているか、または適切な応答が不可能であるか、またはユーザが提供することがより困難である環境にいる可能性がある。本明細書に記載の１つまたは複数の機能は、画像に応答してユーザに自動メッセージ提案を有利に提供する。例えば、１つまたは複数の自動メッセージ応答が、ユーザデバイス間のメッセージング会話において受信された画像に基づいて自動的に提案され、ユーザは、会話に投稿するために提案から所望の応答を単に選択することができる。メッセージ提案は受信された画像に関連し、デバイス上で応答を作成するためのユーザ入力および応答時間を低減して、ユーザが受信された画像に対し簡単かつ迅速に応答することを可能にし、したがってそうでなければ可能性のある応答の大量のセットを表示するために必要とされるデバイスリソースの消費を減少させ、および／または、応答を作成し、検索し、編集し、または提案された応答を完成させ、および／または電子デバイスを介して行われる会話に参加するためのユーザからの追加入力を可能にし、かつ処理するために必要とされるデバイスリソースの消費を減少させる。結果として、１つまたは複数の記載された実装形態の技術的効果は、結果を得るために費やされる計算時間およびリソースをより少なくしつつ、デバイスで実装される会話において応答の作成および送信が達成されることである。例えば、説明された技術および特徴の技術的効果は、説明された技術または特徴のうちの１つまたは複数を提供しないシステムと比較して、メッセージ応答を表示、作成、および送信するために利用されるシステム処理リソースの消費が低減されることである。
【００１８】
従来技術では、画像内の１つまたは複数のオブジェクトまたは特徴を認識することに基づいて画像に対する提案された応答を判定することが可能であり、例えば、画像がリンゴを含むことを認識することに応じて、そのような認識に対応する提案された応答が提供され得る。しかしながら、そのような技術の多くは、例えば、オブジェクトが認識されていない画像に対しては、提案を提供することができない可能性がある。さらに、これらの技術のうちのいくつかは、例えば、オブジェクト認識が誤っているか、または不完全である場合、不正確な提案を提供する可能性がある。加えて、画像内で複数のオブジェクト（例えば、りんごおよびナイフ）が認識される場合、これらの技術のうちのいくつかは、オブジェクトをリストする単純な応答、例えば「りんごおよびナイフ」、またはユーザによって選択されることがほとんどない応答を生成する可能性がある。
【００１９】
本明細書に記載の技術は、これらおよび他の欠点を克服する。例えば、本技術は、より多様性および／または質の高い提案応答を提供することが可能である。例えば、本明細書に記載の技術は、得られた画像のピクセルから直接判定された画像特徴ベクトルをトレーニングされたニューラルネットワークに供給して、応答を生成する。そのようなニューラルネットワークは、画像内のオブジェクトを明確に認識する必要なしに、任意の種類の画像に対する応答を提供することができる。さらに、画像ピクセルに基づいてトレーニングされたモデルの使用は、オブジェクトを認識し、それらのオブジェクトに関連する予め定義されたラベルを使用することに依存する技術よりも幅広い種類の応答を可能にし得る。例えば、いくつかの実装形態では、提案された応答における単語が選択されるボキャブラリは、複数の言語からの単語、辞書内の単語ではない可能性がある人間の表現（例えば、「ａｗｗ」、「！！！」など）、他の種類の記号（絵文字、ステッカーなど）、異なる画像、または組み合わせを含み得る。加えて、本明細書に記載の技術は、ユーザによって選択される可能性がより高い応答提案を提供することができるが、これは、認識された画像の特徴に基づいて構築される応答提案よりも自然であることが可能だからである。したがって、説明された技術および特徴の別の技術的効果は、説明された技術または特徴のうちの１つまたは複数を提供しないシステム、例えば、関連性のあると思われる多数の提案された応答を表示するため、および／またはユーザが送信しようとしている応答を特定し、選択し、編集し、または作成するのに必要なユーザからの入力を受信するために、追加の計算リソースが必要とされる従来のコンテンツ認識技術を使用するシステムと比較して、メッセージ応答を作成および送信するために利用されるシステム処理リソースの消費を低減できることである。
【００２０】
記載された技術はさらなる利点を提供する。例えば、いくつかの実装において、応答のホワイトリストを使用することは、特定のタイプの応答が提案から削除されることを可能にし、応答提案をユーザによって選択される可能性が高いものとすることを可能にする。さらに、いくつかの実装形態では、本明細書で説明される技術は、計算リソースの使用量を減らして、画像特徴ベクトルに基づいて多数の可能な単語シーケンスを有利に評価することができるビームサーチ（beam search）を利用する。いくつかの実装形態では、説明される技術は、画像特徴ベクトルに基づいて、画像が提案を提供するのに適さないと判定し、応答を生成するための計算ステップを実行しないことによって計算リソースを節約し得る。ユーザがそのようなデータの使用を許可するいくつかの実装形態では、言語モデルは、例えば追加のトレーニングデータおよびユーザの選択に基づいて定期的に再トレーニングされることが可能であり、したがってそのような再トレーニングに基づく改善された提案を提供することができる。
【００２１】
本明細書で説明される特定の実装形態が、ユーザに関する個人情報（例えば、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの所在地および所在地における時間、ユーザのバイオメトリック情報、ユーザの活動およびデモグラフィック情報）を収集または使用し得る状況において、ユーザには、情報が収集されるかどうか、個人情報が格納されるかどうか、個人情報が使用されるかどうか、およびユーザに関する情報がどのように収集、格納、および使用されるかを制御するための１つまたは複数の機会が提供される。すなわち、本明細書で論じられるシステムおよび方法は、関連するユーザからそのようにするための明示的な許可を受け取ることに明確に基づいて、ユーザの個人情報を収集し、格納し、および／または使用する。例えば、ユーザは、プログラムまたは機能がその特定のユーザまたはプログラムまたは機能に関連する他のユーザについてのユーザ情報を収集するかどうかについての制御を提供される。個人情報が収集される各ユーザには、そのユーザに関連する情報収集を制御することを許可し、情報が収集されるかどうか、および情報のどの部分が収集されるかについて許可または認証を与えるための１つまたは複数のオプションが提示される。例えば、ユーザは、通信ネットワークを介して１つまたは複数のそのような制御オプションを提供されることが可能である。さらに、特定のデータは、個人を特定できる情報が削除されるように、それが保存または使用される前に１つまたは複数の方法で処理されることが可能である。一例として、個人を識別可能な情報が判定され得ないように、ユーザの識別情報が扱われることが可能である。別の例として、ユーザの地理的位置は、ユーザの特定の位置が判定され得ないように、より大きな領域に一般化することができる。
【００２２】
本明細書で言及される「画像」は、１つまたは複数のピクセル値（例えば、色値、輝度値など）を備えるピクセルを有するデジタル画像である。画像は、静止画像または単一画像、または一連の画像に含まれる画像、例えばビデオフレームのビデオシーケンス内のフレーム、または異なるタイプのシーケンス内の画像または画像のアニメーションであってよい。例えば、本明細書に記載の実装形態は、単一の画像、画像のビデオシーケンス、またはアニメ画像（例えば、シネマグラフまたは他のアニメーション）と共に使用することができる。
【００２３】
図１は、自動支援エージェントを可能とし、いくつかの実施形態では自動支援エージェントを提供するメッセージングサービスを提供するための例示的な環境１００のブロック図を示す。例示的な環境１００は、メッセージングサーバ１０１、１つまたは複数のクライアントデバイス１１５ａ、１１５ｎ、サーバ１３５、応答提案生成器１５０、およびネットワーク１４０を含む。ユーザ１２５ａ〜１２５ｎは、それぞれのクライアントデバイス１１５ａ、１１５ｎに関連付けられることができる。サーバ１３５は、例えば、メッセージングサービスを提供する当事者とは異なる当事者によって制御されるサードパーティサーバであり得る。様々な実装形態では、以下でさらに詳細に説明するように、サーバ１３５はボットサービスを実装することができる。いくつかの実装形態では、環境１００は、図１に示されている１つまたは複数のサーバまたはデバイスを含まないことがあり、または図１に示されない他のサーバまたはデバイスを含むことがある。図１および残りの図において、参照番号の後続の文字、例えば「１１５ａ」は、その特定の参照番号を有する要素への参照を表す。後続の文字を除いた本文中の参照番号、例えば「１１５」は、その参照番号を有する要素の実装に対する一般的な参照を表す。
【００２４】
図示の実装形態では、メッセージングサーバ１０１、クライアントデバイス１１５、サーバ１３５、および応答生成器１５０は、ネットワーク１４０を介して通信可能に結合されている。様々な実装形態では、ネットワーク１４０は、有線または無線の従来型のものとすることができ、星型構成、トークンリング構成または他の構成を含む多数の異なる構成をとることができる。さらに、ネットワーク１４０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（例えばインターネット）、および／または複数のデバイスが通信することができる他の相互接続されたデータパスを含むことができる。いくつかの実装形態では、ネットワーク１４０はピアツーピアネットワークであってよい。ネットワーク１４０は、様々な異なる通信プロトコルでデータを送信するために電気通信ネットワークの一部に結合されるかまたはその一部を含むこともできる。いくつかの実装形態では、ネットワーク１４０は、ショートメッセージングサービス（ＳＭＳ）、マルチメディアメッセージングサービス（ＭＭＳ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、直接データ接続、電子メールなどを介することを含むデータの送受信のための、ブルートゥース（登録商標）通信ネットワーク、Ｗｉ−Ｆｉ（登録商標）、またはセルラー通信ネットワークを含む。図１は、クライアントデバイス１１５、メッセージングサーバ１０１、およびサーバ１３５に結合された１つのネットワーク１４０を示しているが、実際には、１つまたは複数のネットワーク１４０が、これらのエンティティに結合し得る。
【００２５】
メッセージングサーバ１０１は、プロセッサ、メモリ、およびネットワーク通信機能を含み得る。いくつかの実装形態では、メッセージングサーバ１０１は、ハードウェアサーバである。いくつかの実装形態では、メッセージングサーバ１０１は、仮想化環境に埋め込まれ得る。例えば、メッセージングサーバ１０１は、１つまたは複数の他の仮想マシンを含み得るハードウェアサーバ上で実行される仮想マシンであってよい。メッセージングサーバ１０１は、信号線１０２を介してネットワーク１４０に通信可能に結合されている。信号線１０２は、イーサネット（登録商標）、同軸ケーブル、光ファイバケーブルなどのような有線接続、またはＷｉ−Ｆｉ、ブルートゥース、または他の無線技術などの無線接続とすることができる。いくつかの実装形態では、メッセージングサーバ１０１は、ネットワーク１４０を介して、クライアントデバイス１１５ａ〜１１５ｎ、サーバ１３５、応答生成器１５０、およびボット１１３のうちの１つまたは複数との間でデータを送受信する。いくつかの実装形態では、メッセージングサーバ１０１は、ユーザ（例えば、ユーザ１２５のうちのいずれか）が他のユーザおよび／またはボットとメッセージを交換することを可能にするためのクライアント機能を提供するメッセージングアプリケーション１０３ａを含み得る。メッセージングアプリケーション１０３ａは、サーバアプリケーション、クライアント−サーバアプリケーションのサーバモジュール、または（例えば、１つまたは複数のクライアントデバイス１１５上の対応するクライアントメッセージングアプリケーション１０３ｂを有する）分散アプリケーションとすることができる。
【００２６】
メッセージングサーバ１０１は、メッセージングサーバ１０１を介して交換されたメッセージ、１つまたは複数のボットのデータおよび／または構成、コンテンツ分類器１３０によって提供された情報、ならびに１つまたは複数のユーザ１２５に関連するユーザデータを、それぞれのユーザからそのようなデータを格納するための明示的な許可がある場合には格納することができるデータベース１９９も含む。いくつかの実施形態では、メッセージングサーバ１０１は、１つまたは複数の支援エージェント、例えばボット１０７ａおよび１１１を含むことができる。他の実施形態では、支援エージェントは、メッセージングサーバ１０１上ではなく、クライアントデバイス１１５ａ〜ｎ上に実装され得る。
【００２７】
メッセージングアプリケーション１０３ａは、ユーザ１２５と１つまたは複数のボット１０５、１０７ａ、１０７ｂ、１０９ａ、１０９ｂ、１１１、および１１３との間のメッセージの交換を可能にするためのプロセッサによって動作可能なコードおよびルーチンであり得る。いくつかの実装形態では、メッセージングアプリケーション１０３ａは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）を含むハードウェアを使用して実装され得る。いくつかの実装形態では、メッセージングアプリケーション１０３ａは、ハードウェアとソフトウェアとの組み合わせを使用して実装され得る。
【００２８】
様々な実装形態では、クライアントデバイス１１５に関連するそれぞれのユーザが、メッセージの格納について同意したときに、データベース１９９は、１つまたは複数のクライアントデバイス１１５間で交換されたメッセージを格納することができる。いくつかの実装形態では、クライアントデバイス１１５に関連するそれぞれのユーザがメッセージの格納について同意したときに、データベース１９９は、１つまたは複数のクライアントデバイス１１５と、例えば他のクライアントデバイス、メッセージングサーバ１０１、およびサーバ１３５などの異なるデバイス上に実装された１つまたは複数のボットとの間で交換されるメッセージを格納し得る。一または複数のユーザが同意しない実装形態では、それらのユーザによって送受信されたメッセージは格納されない。
【００２９】
いくつかの実装形態では、メッセージは、例えば、メッセージの送信者および受信者だけが暗号化されたメッセージを見ることができるように暗号化されてもよい。いくつかの実装形態では、メッセージが格納されている。いくつかの実装形態では、データベース１９９は、例えば、ボット１０７ａ、ボット１１１などの１つまたは複数のボットのデータおよび／または構成をさらに格納することができる。ユーザ１２５が、（ソーシャルネットワークデータ、連絡先情報、画像などのような）ユーザデータの格納に同意するいくつかの実装形態では、データベース１９９はそのような同意を提供したそれぞれのユーザ１２５に関連するユーザデータを格納することもできる。
【００３０】
いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂは、ユーザ１２５が新しいボットを作成することを可能にするユーザインタフェースを提供することができる。これらの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂは、メッセージングアプリケーション１０３ａ／１０３ｂのユーザ間の会話にユーザ作成ボットを含めることを可能にする機能を含み得る。
【００３１】
応答生成器１５０は、プロセッサ、メモリおよびネットワーク通信機能を含むことができる。いくつかの実装形態では、応答生成器１５０はハードウェアサーバである。応答生成器１５０は信号線１５２を介してネットワーク１４０に通信可能に結合されている。信号線１５２は、イーサネット（登録商標）、同軸ケーブル、光ファイバケーブルなどのような有線接続、またはＷｉ−Ｆｉ（登録商標）、ブルートゥース（登録商標）、または他の無線技術などの無線接続とすることができる。いくつかの実装形態では、応答生成器１５０は、ネットワーク１４０を介してメッセージングサーバ１０１およびクライアントデバイス１１５ａ〜１１５ｎのうちの１つまたは複数との間でデータを送受信する。応答生成器１５０は１つのサーバとして示されているが、複数の応答生成器１５０が可能である。いくつかの実装形態では、応答生成器１５０は、環境１００の１つまたは複数の他の構成要素、例えばメッセージングサーバ１０１、クライアントデバイス１１５ａ、サーバ１３５、コンテンツサーバ１５４などに含めることができる。
【００３２】
応答生成器１５０は、特定の画像への返信として１つまたは複数の提案された応答を判定し提供する。例えば、提案された応答は、メッセージングサーバ１０１、および／または、１つまたは複数のクライアントデバイス１１５のメッセージングアプリケーションに提供され得る。応答生成器は機械学習を使用でき、例えば、提案された応答を判定するために機械学習を利用する調整された言語モデルを使用することができる。例えば、応答生成器は、画像のトレーニングデータ（例えば、メッセージトレーニングデータ）と、メッセージングアプリケーションのコンテキストにおける画像に対する正しい、実際の、および／または所望の応答とを使用してトレーニングされることが可能であり、次に応答生成器は、それが受信する新しい画像に対する応答を判定することが可能である。例えば、調整された言語モデルは、合成データ、例えば、ユーザ情報を使用せずにコンピュータによって自動的に生成されたデータを使用してトレーニングされ得る。いくつかの実装形態では、調整された言語モデルは、サンプルデータ、例えば、トレーニングのためにユーザデータを利用する許可がメッセージデータを提供するユーザから明示的に得られているサンプルメッセージデータに基づいてトレーニングされ得る。例えば、サンプルデータは、受信されたメッセージと、受信されたメッセージに対して送信された応答とを含み得る。サンプルデータに基づいて、モデルは受信されたメッセージに対する応答を予測することができ、その後、それを提案された応答として提供することが可能である。いくつかの実装形態では、応答生成器１５０は、長期短期記憶（ＬＳＴＭ）ネットワークを用いて、応答の単語が反復的に、例えば一度に１単語で、判定される単語シーケンスとして、応答を判定することが可能である。
【００３３】
いくつかの実装形態は、１つまたは複数の特徴について検出された画像特徴、例えば、提案された応答のランク付けを使用することもできる。例えば、画像の特徴には、人物（人物の身元を特定することなく）、動物、オブジェクト（品物、乗り物など）、特定の記念碑、風景の特徴（葉、山、湖、空、雲、日の出または日の入り、建物、橋など）天気などを含み得る。さまざまな画像認識および検出技術（例えば、トレーニング画像に基づく機械学習、参照画像内の参照特徴との比較など）が画像の特徴を検出するために使用され得る。
【００３４】
応答生成器１５０は、メッセージングサーバ１０１を管理するのと同じ者によって管理されてもよく、またはサードパーティによって管理されてもよい。いくつかの実装形態では、応答生成器１５０はボットをホストする。ボットは、提案を提供するために特定の機能を実行するコンピュータプログラムであってよく、例えば、予約ボットは予約を行い、自動返信ボットは返信メッセージテキストを生成し、スケジューリングボットはカレンダーの予定を自動的にスケジュールする等である。応答生成器１５０は、メッセージングアプリケーション１０３への提案された応答として１つまたは複数のボットを提供または参照する。例えば、ボットのためのコードはメッセージングアプリケーション１０３に組み込まれてもよく、またはメッセージングアプリケーション１０３は応答生成器１５０で実装されるボットに要求を送信してもよい。いくつかの実装形態では、メッセージングアプリケーション１０３は、応答生成器１５０にボットコマンドを提供し、ボットコマンドに基づいた提案を受け取ることによって、ユーザ１２５と応答生成器１５０との間の仲介として機能する。
【００３５】
いくつかの実装形態では、コンテンツサーバ１５４は、例えばハードウェアサーバとして環境１００において提供することができ、プロセッサ、メモリ、およびネットワーク通信機能を含むことができる。コンテンツサーバ１５４は、１つまたは複数のネットワーク接続１５６を介してネットワーク１４０に結合されることが可能である。いくつかの実装形態では、コンテンツ分類器は、メッセージングアプリケーション１０３に情報を提供することができる。例えば、コンテンツサーバ１５４は、電子百科事典、ナレッジグラフ、１つまたは複数のデータベース、ソーシャルネットワークアプリケーション（例えば、ソーシャルグラフ、友人用のソーシャルネットワーク、ビジネス用のソーシャルネットワークなど）、場所またはロケーションのウェブサイト（例えば、レストラン、自動車販売店など）、マッピングアプリケーション（例えば、案内を提供するウェブサイト）などを保持することができる。例えば、コンテンツサーバ１５４は、メッセージングアプリケーション１０３からの情報の要求を受信し、検索を実行し、および要求内の情報を提供することができる。いくつかの実装形態では、コンテンツサーバ１５４は、画像内の特定のタイプのコンテンツの分類子を含むことができ、特定のクラスのうちのいずれかが画像のコンテンツ（例えば、ピクセル）内で検出されたかどうかを判定することが可能である。いくつかの例では、メッセージングアプリケーション１０３は、コンテンツサーバ１５４によってアクセスされたマッピングアプリケーションからの道案内または到着予定時刻を要求することができる。
【００３６】
いくつかの実装形態では、ユーザがそのようなデータの使用に同意する場合、コンテンツサーバ１５４は、メッセージングアプリケーション１０３が画像内の人物を対応するソーシャルネットワークプロファイルを使用して識別するために使用できるユーザのプロファイル情報またはプロファイル画像をメッセージングアプリケーション１０３に提供し得る。別の例では、提供されたユーザデータについてユーザの同意が得られた場合、コンテンツサーバ１５４は、メッセージングアプリケーション１０によって使用されるメッセージ内で識別されたエンティティに関する情報をメッセージングアプリケーション１０３に提供することができる。例えば、コンテンツサーバ１５４は、画像内で識別されたランドマークについての情報を提供する電子百科事典、メッセージ内で識別されたエンティティを購入するための情報を提供する電子ショッピングウェブサイト、ユーザの同意を条件としてメッセージ内で識別されたユーザからの旅程を提供する電子カレンダーアプリケーション、メッセージ内のエンティティが訪れることのできる近くの場所に関する情報を提供するマッピングアプリケーション、メッセージ内で言及された料理が提供されたレストランのウェブサイトなどを含み得る。いくつかの実装形態では、コンテンツサーバ１５４は、応答生成器１５０と通信して情報を取得することができる。コンテンツサーバ１５４は、要求された情報を応答生成器１５０に提供することができる。
【００３７】
いくつかの実装形態では、応答生成器１５０および／またはコンテンツサーバ１５４は、メッセージングアプリケーション１０３から情報を受信して、例えばこれらのモジュールによって使用または保持されるデータベースを更新することができる。例えば、コンテンツサーバ１５４がレストランについてのウェブサイトを保持する場合、メッセージングアプリケーション１０３は、レストランでのユーザのお気に入りの料理など、レストランについての更新された情報をコンテンツサーバ１５４に提供することができる。
【００３８】
クライアントデバイス１１５は、メモリおよびハードウェアプロセッサを含むコンピューティングデバイス、例えば、カメラ、ラップトップコンピュータ、タブレットコンピュータ、携帯電話、ウェアラブルデバイス、モバイル電子メールデバイス、携帯型ゲーム機、携帯型音楽プレーヤー、リーダデバイス、ヘッドマウントディスプレイ、またはネットワーク１４０に無線でアクセスすることができる他の電子デバイスなどであり得る。
【００３９】
図示の実装形態では、クライアントデバイス１１５ａは信号線１０８を介してネットワーク１４０に結合され、クライアントデバイス１１５ｎは信号線１１０を介してネットワーク１４０に結合されている。信号線１０８および１１０は、例えばイーサネットなどの有線接続、またはＷｉ−Ｆｉ、ブルートゥース、または他の無線技術などの無線接続とすることができる。クライアントデバイス１１５ａ、１１５ｎは、それぞれユーザ１２５ａ、１２５ｎによってアクセスされる。図１のクライアントデバイス１１５ａ、１１５ｎは例として用いられている。図１は２つのクライアントデバイス１１５ａおよび１１５ｎを示しているが、本開示は１つまたは複数のクライアントデバイス１１５を有するシステムアーキテクチャに適用される。
【００４０】
いくつかの実装形態では、クライアントデバイス１１５は、ユーザ１２５によって着用されるウェアラブルデバイスであり得る。例えば、クライアントデバイス１１５は、クリップ（例えば、リストバンド）の一部、宝飾品の一部、または眼鏡の一部として含まれてもよい。別の例では、クライアントデバイス１１５は、スマートウォッチとすることができる。様々な実装形態では、ユーザ１２５は、デバイスのディスプレイ上でメッセージングアプリケーション１０３ａ／１０３ｂからのメッセージを閲覧することができ、スピーカまたはデバイスの他の出力デバイスなどを介してメッセージにアクセスすることができる。例えば、ユーザ１２５は、スマートウォッチやスマートリストバンドのディスプレイ上でメッセージを閲覧することができる。別の例では、ユーザ１２５は、クライアントデバイス１１５に結合された、またはその一部であるヘッドホン（図示せず）、クライアントデバイス１１５のスピーカ、クライアントデバイス１１５の触覚フィードバック要素などを介してメッセージにアクセスすることができる。
【００４１】
いくつかの実装形態では、メッセージングアプリケーション１０３ｂはクライアントデバイス１１５ａに格納されている。いくつかの実装形態では、メッセージングアプリケーション１０３ｂ（例えば、シンクライアントアプリケーション、クライアントモジュールなど）は、メッセージングサーバ１０１に格納されている対応するメッセージングアプリケーション１０３ａ（例えば、サーバアプリケーション、サーバモジュールなど）を有するクライアントデバイス１１５ａに格納されているクライアントアプリケーションであり得る。例えば、メッセージングアプリケーション１０３ｂは、クライアントデバイス１１５ａ上のユーザ１２５ａによって作成されたメッセージをメッセージングサーバ１０１に格納されているメッセージングアプリケーション１０３ａに送信することができる。
【００４２】
いくつかの実装形態では、メッセージングアプリケーション１０３ａは、メッセージングサーバ１０１に格納されているスタンドアロンアプリケーションとすることができる。ユーザ１２５ａは、クライアントデバイス１１５ａ上のブラウザまたは他のソフトウェアを使用してウェブページを介してメッセージングアプリケーション１０３ａにアクセスすることができる。いくつかの実装形態では、クライアントデバイス１１５ａ上に実装されているメッセージングアプリケーション１０３ｂは、メッセージングサーバ１０１上に含まれているものと同じまたは類似のモジュールを含むことができる。いくつかの実装形態では、メッセージングアプリケーション１０３ｂは、例えば、１つまたは複数のクライアントデバイス１１５が他のクライアントデバイス１１５とのメッセージ交換を可能にする機能を含むピアツーピアまたは他の構成で、スタンドアロンクライアントアプリケーションとして実装され得る。これらの実装形態では、メッセージングサーバ１０１は、限定されたメッセージング機能（例えば、クライアント認証、バックアップなど）を含むか、またはそのような機能を含まない可能性がある。いくつかの実装形態では、メッセージングサーバ１０１は、１つまたは複数のボット、例えばボット１０７ａおよびボット１１１を実装することができる。
【００４３】
サーバ１３５は、プロセッサ、メモリ、およびネットワーク通信機能を含み得る。いくつかの実装形態では、サーバ１３５はハードウェアサーバである。サーバ１３５は、信号線１２８を介してネットワーク１４０に通信可能に結合されている。信号線１２８は、イーサネット、同軸ケーブル、光ファイバケーブルなどのような有線接続、またはＷｉ−Ｆｉ、ブルートゥース、または他の無線技術などの無線接続とすることができる。いくつかの実装形態では、サーバ１３５は、ネットワーク１４０を介してメッセージングサーバ１０１およびクライアントデバイス１１５のうちの１つまたは複数との間でデータを送受信する。サーバ１３５は１つのサーバとして示されているが、様々な実装態様は１つまたは複数のサーバ１３５を含み得る。サーバ１３５は、サーバアプリケーションまたはサーバモジュールとして１つまたは複数のボット、例えばボット１０９ａおよびボット１１３を実装することができる。
【００４４】
様々な実装形態では、サーバ１３５は、メッセージングサーバ１０１を管理するのと同じエンティティ、例えばメッセージングサービスのプロバイダの一部とすることができる。いくつかの実装形態では、サーバ１３５は、例えば、メッセージングアプリケーション１０３ａ／１０３ｂを提供するエンティティとは異なるエンティティによって制御されるサードパーティサーバとすることができる。
【００４５】
いくつかの実装形態では、サーバ１３５はボットを提供またはホストする。ボットは、１つまたは複数のコンピュータ上で実装され、ユーザが主にテキストを通じて、例えばメッセージングアプリケーション１０３ａ／１０３ｂを介して対話する自動化されたサービスである。ボットについては後でより詳しく説明する。
【００４６】
いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂは、１つまたは複数の提案、例えば提案された応答を、例えばボタンのユーザインタフェース、または他のユーザインタフェース要素を介してユーザ１２５に提供することもできる。提案された応答は、例えば、ユーザが応答を入力する必要性を減らすか、または無くすことによって、より迅速な対話を可能にし得る。提案された応答は、例えば、クライアントデバイスがテキスト入力機能を欠いているとき（例えば、キーボードまたはマイクロフォンを含まないスマートウォッチ）に、ユーザがメッセージに迅速かつ容易に応答することを可能にし得る。提案された応答は、例えば、ユーザが提案された応答を選択したときに（例えば、タッチスクリーン上の対応するユーザインタフェース要素を選択することによって）、ユーザがメッセージに迅速に応答することも可能にし得る。提案された応答は、応答を生成するようにトレーニングされた予測モデル、例えば機械学習モデルを使用して生成されることが可能である。
【００４７】
例えば、メッセージングアプリケーション１０３ａ／１０３ｂは、メッセージングアプリケーション１０３とのユーザの対話を向上させることが可能な、例えばディープラーニングモデルなどの機械学習を実装することができる。応答生成器１５０は、例えば、機械学習を利用して、メッセージングアプリケーション１０３ａ／１０３ｂに提案を提供することができる。いくつかの実装形態では、機械学習は、環境１００の１つまたは複数の他の構成要素上で、例えば応答生成器１５０を使用せずに実装することができる。機械学習モデルは、合成データ、例えば、ユーザ情報を使用せずにコンピュータによって自動的に生成されたデータを使用してトレーニングすることができる。いくつかの実装形態では、機械学習モデルは、例えば、トレーニングのためにユーザデータを利用する許可がユーザから明示的に得られているサンプルデータに基づいてトレーニングされ得る。例えば、サンプルデータは、受信されたメッセージと、受信されたメッセージに対して送信された応答とを含み得る。サンプルデータに基づいて、機械学習モデルは受信されたメッセージに対する応答を予測することができ、次にそれを提案された応答として提供することができる。例えば、受信されたメッセージおよびユーザのコンテキストに基づいてカスタマイズされた応答の選択を提供することにより、受信されたメッセージに対する応答を作成するユーザの負担を軽減することによって、ユーザの対話は強化される。例えば、ユーザが同意するとき、提案された応答は、ユーザの以前の活動、例えば、会話における以前のメッセージ、異なる会話におけるメッセージなどに基づいてカスタマイズされ得る。例えば、そのような活動は、ユーザに対する適切な提案応答、例えば、ユーザの対話スタイルに基づく遊び心のある応答、フォーマルな応答などを判定するために用いられ得る。別の例では、ユーザが１つまたは複数の優先言語および／またはロケールを指定すると、メッセージングアプリケーション１０３ａ／１０３ｂは、ユーザの優先言語で提案された応答を生成することができる。様々な例では、提案される応答は、テキスト応答、画像、マルチメディアなどであり得る。
【００４８】
いくつかの実装形態では、調整された言語モデルを使用するなどの機械学習は、応答生成器１５０上、および／またはメッセージングサーバ１０１上、クライアントデバイス１１５上、またはメッセージングサーバ１０１およびクライアントデバイス１１５の両方の上で実装され得る。いくつかの実装形態では、単純な機械学習モデルがクライアントデバイス１１５上に実装され（例えば、クライアントデバイスのメモリ、ストレージ、および処理制約内でモデルの動作を可能にするため）、複雑な機械学習モデルがメッセージングサーバ１０１および／または応答生成器１５０上に実装され得る。ユーザが機械学習技術の使用について同意しない場合、そのような技術は実装されない。いくつかの実装形態では、ユーザは、機械学習がクライアントデバイス１１５上にのみ実装されることに選択的に同意し得る。これらの実装形態では、機械学習はクライアントデバイス１１５上で実装されることができ、これにより、機械学習モデルに対する更新または機械学習モデルによって使用されるユーザ情報がローカルに格納または使用されて、メッセージングサーバ１０１、サーバ１３５、他のクライアントデバイス１１５などの他のデバイスと共有されない。
【００４９】
例えば、機械学習技術に基づく提案を受け取ることに同意するユーザに対し、提案は、メッセージングアプリケーション１０３によって提供され得る。例えば、提案は、コンテンツ（例えば、映画、本など）、スケジュール（例えば、ユーザのカレンダー上の利用可能時間）、イベント／開催地（例えば、レストラン、コンサートなど）等の提案を含み得る。いくつかの実装形態では、会話に参加しているユーザが会話データの使用に同意する場合、提案は、会話内容に基づいた、着信メッセージへの提案された応答を含み得る。例えば、会話の内容に基づく提案に同意した２人のユーザのうちの第１のユーザが「軽い食事はどうですか？イタリア料理はどうですか？」というメッセージを送信すると、例えば、「＠アシスタントランチ、イタリア料理、２人用のテーブル（@assistant lunch, Italian, table for 2）」という応答が、第２のユーザに提案され得る。この例では、提案された応答は（記号＠およびボットハンドルアシスタントによって識別された）ボットを含む。第２のユーザがこの応答を選択すると、アシスタントボットが会話に追加され、メッセージがボットに送信される。次に、ボットからの応答が会話に表示され、２人のユーザのいずれかがボットにさらにメッセージを送信することができる。この例では、アシスタントボットは会話のコンテンツへのアクセスを提供されず、提案された応答はメッセージングアプリケーション１０３によって生成される。
【００５０】
特定の実装形態では、提案された応答の内容は、ボットがすでに会話中に存在しているか、または会話に組み込むことができるかに基づいてカスタマイズされ得る。例えば、旅行ボットをメッセージングアプリに組み込むことができると判定された場合、フランスへの航空券の費用についての質問に対する提案された応答は、「旅行ボットに質問しましょう！」であり得る。
【００５１】
異なる実装形態では、提案、例えば本明細書で説明される提案された応答は、テキスト（例えば、「素晴らしい！」）、絵文字（例えば、笑顔、眠そうな顔など）、画像（例えば、ユーザの写真ライブラリからの写真）、テンプレートのフィールドにユーザデータが挿入されたテンプレートに基づいて生成されたテキスト（例えば、「彼女の番号は＜電話番号＞」、ここで、ユーザがユーザデータへのアクセスを提供するならば、フィールド＜電話番号＞は、ユーザデータに基づいて記入されている）、リンク（例えば、ユニフォームリソースロケータ）、メッセージステッカーなどのうちの一つまたは複数を含み得る。いくつかの実装形態では、提案された応答は、例えば、色、フォント、レイアウトなどを使用してフォーマットおよび／またはスタイル設定され得る。例えば、映画の推薦を含む提案された応答は、映画についての説明文、映画からの画像、およびチケットを購入するためのリンクを含むことができる。異なる実装形態では、提案された応答は、異なるタイプのユーザインタフェース要素として、例えば、テキストボックス、情報カードなどとして提示され得る。
【００５２】
様々な実装形態では、ユーザは、提案された応答を受信するかどうか、どのような種類の提案された応答を受信するか、提案された応答の頻度などの制御を提供されている。例えば、ユーザは、提案された応答を完全に受信することを拒否することができ、あるいは特定の種類の提案された応答を選択することができ、または１日の特定の時間帯にのみ提案された応答を受信することができる。別の例では、ユーザは、パーソナライズされた提案された応答を受け取ることを選択し得る。この例では、機械学習を使用して、ユーザのデータの使用および機械学習技術の使用に関するユーザの嗜好に基づいて提案応答を提供することができる。
【００５３】
図２は、いくつかの実装形態による、画像を含むメッセージに対する提案された応答を提供するための例示的な方法２００を示すフロー図である。いくつかの実装形態では、方法２００は、例えば図１に示されるようなメッセージングサーバ１０１などのサーバシステム１０２上で実装され得る。いくつかの実装形態では、方法２００のいくつかまたはすべては、図１に示されるような１つまたは複数のクライアントデバイス１１５などのシステム、および／またはサーバシステムと１つまたは複数のクライアントシステムとの両方で実装され得る。記載の例では、実施するシステムは、１つまたは複数のプロセッサまたは処理回路と、データベースまたは他のアクセス可能な記憶装置などの１つまたは複数の記憶装置とを含む。いくつかの実装形態では、１つまたは複数のサーバおよび／またはクライアントの異なる構成要素は、方法２００の異なるブロックまたは他の部分を実行することができる。
【００５４】
ブロック２０２において、方法２００の実施において（後述の図３の方法３００におけるユーザデータの使用を含む）ユーザデータを使用するためのユーザの同意（例えば、ユーザ許可）が得られているかどうかがチェックされる。例えば、ユーザデータは、例えば、メッセージングアプリケーション１０３を使用して、ユーザによって送信または受信されたメッセージ、ユーザの嗜好、ユーザバイオメトリック情報、ユーザ特性（識別情報、名前、年齢、性別、職業など）、ユーザのソーシャルネットワークと連絡先についての情報、ソーシャルおよびその他の種類の行動や活動、ユーザにより作成または送信されたコンテンツ、評価、および意見、ユーザの現在位置、ユーザの履歴データ、ユーザにより生成、受信、および／またはアクセスされた画像等を含み得る。本明細書に記載の方法の１つまたは複数のブロックは、いくつかの実装形態ではそのようなユーザデータを使用することができる。
【００５５】
方法２００においてユーザデータが使用され得る関連ユーザからユーザ同意が得られた場合、ブロック２０４において、本明細書の方法のブロックは、それらのブロックについて説明されるように、ユーザデータの可能な利用により実装され得ると判断され、方法はブロック２１０に続く。ユーザの同意が得られていない場合、ブロック２０６において、ブロックはユーザデータを使用せずに実施されるべきであると判定され、方法はブロック２１０に続く。いくつかの実装形態では、ユーザの同意が得られていない場合、ブロックは、ユーザデータを使用せずに、合成データおよび／または一般的もしくは公衆によりアクセス可能で公衆に使用可能なデータを用いて実装される。
【００５６】
本明細書に記載の実装形態は、画像に基づいてメッセージ提案を提供することができる。メッセージの提案はさまざまな状況で提供され得る。例えば、メッセージ提案は、例えばメッセージングアプリケーション１０３によって、任意のユーザデバイス１１５から特定のユーザ（例えば、ユーザ１２５ａ）のクライアントデバイス１１５ａ上で画像を受信することに応答して提供されてもよい。例えば、メッセージングアプリケーション１０３は、インスタントメッセージングアプリケーション、ソーシャルネットワークアプリケーション、電子メールアプリケーション、マルチメディアメッセージングアプリケーションなどであってよい。メッセージ提案は、特定のユーザ、および画像を送信および／または受信した１人または複数の他のユーザからの同意により、自動的に生成され、特定のユーザに提供され得る。例えば、メッセージングアプリケーションがインスタントメッセージングアプリケーションである場合、画像は、特定のユーザ１２５ａと１人または複数の他のユーザ１２５との間のインスタントメッセージング通信の一部として、例えば、２人の参加者を有するメッセージングセッション（例えばチャット）や、３人以上の参加者を含むグループメッセージングセッション等において受信されてもよい。様々な実装形態において、ユーザのうちの１人または複数がボットであってもよい。いくつかの実装形態では、ボットは、ソフトウェアおよび／またはハードウェアで実装される自動化エージェントであり得る。いくつかの実装形態では、ボットは、カメラ（例えば、防犯カメラ、ウェブカメラ、監視カメラなど）、電化製品（例えば、スマート冷蔵庫、警報デバイス、産業用電化製品など）、イメージングデバイス（例えば、顕微鏡、医療用イメージングデバイスなど）を表すかまたはそれらと関連付けられてもよく、メッセージングアプリケーション１０３を介して１つまたは複数の画像を送信することが可能である。ユーザのうちの１または複数がボットである実装形態では、ボットによって生成されたメッセージを使用することについてボットの所有者またはオペレータから同意が得られる。いくつかの実装形態では、同意は、ボット、カメラ、機器などの構成パラメータとして指定され得、ボットがメッセージングアプリケーション１０３と対話するとメッセージングアプリケーション１０３に対し提供され得る。
【００５７】
いくつかの実装形態では、メッセージ提案は、ユーザデータにアクセスすることに同意したユーザに特に提供され得る。いくつかの実装形態では、メッセージ提案は、自動的にまたはユーザ入力に基づいて提供されることが可能であり、例えば、提案を要求するためにユーザにユーザインタフェースが提供され得る。
【００５８】
ブロック２０８において、調整された言語モデルがトレーニングされる。例えば、このブロックは、方法２００の他のブロックを実行する同一または異なるシステムによる前処理ステップとして実行されることが可能であり、方法２００の他のブロックとは異なる時点で実行され得る。調整された言語モデルは、入力としての画像特徴ベクトルおよび前の予測された単語（例えば単語シーケンス）を提供されることが可能であり、ボキャブラリ内のすべての単語について、生成された応答における次の単語である確率を判定することができる。いくつかの実装形態では、調整された言語モデルは、（以下で説明されるように）画像を表す画像特徴に条件付けられたチャットのような応答（すなわち一連の単語）をモデル化する長期短期記憶ネットワーク（ＬＳＴＭ）を含む。調整された言語モデルをトレーニングするために使用されるトレーニングデータは、メッセージング会話のコンテキストにおける画像と、その画像に対する応答とを含む複数の画像−応答ペアを含み得る。いくつかの実装形態では、所与の画像に対する応答は、（例えば、人間による）トレーニングデータに対して合成的に作成されることが可能であり、および／または、応答は、テスト中のメッセージまたはユーザからの同意が得られた場合には実際のメッセージ会話コンテキストにおける特定の画像を受信することに対するユーザからの実際の応答のサンプルから得ることができる。トレーニングデータのいくつかの例は、以下でさらに詳細に説明される。
【００５９】
ブロック２１０において、画像が取得される。様々な実装形態において、画像は、静止画像（例えば、写真、絵文字、または他の画像）、シネマグラフまたはアニメ画像（例えば、動きを含む画像、アニメーションおよび音声を含むステッカー等）、ビデオなどであり得る。
【００６０】
いくつかの実装形態では、画像は、メッセージ会話コンテキスト内で受信されたものとして、例えば通信ネットワークを介して別のユーザデバイスから受信された電子メッセージ内に含まれるものとして、検出されることによって取得され得る。いくつかの実装形態では、画像は、１つまたは複数の提案された応答について、例えばアプリケーションプログラムインタフェース（ＡＰＩ）を介して、アプリケーションプログラムからの要求の一部として受信されたものであり得る。
【００６１】
いくつかのさらなる例では、画像は、１つまたは複数のクライアントデバイス１１５によって、またはメッセージを送信するボットによって送信されたものである可能性があり、画像はネットワーク１４０を介してクライアントデバイス１１５によって受信され得る。２人の参加者との１対１（１：１）メッセージングセッションでは、画像は特定のユーザのクライアントデバイスによって受信され得る。グループメッセージングセッションでは、画像は、グループメッセージングセッションの参加者のうちの２つ以上のクライアントデバイスによって受信され得る。いくつかの実装形態では、画像は、ストレージ、例えばクライアントデバイス１１５のローカルストレージ（例えば、メモリ、ストレージドライブなど）および／またはネットワーク１４０を介してクライアントデバイスにアクセス可能なリモートストレージ（例えば、リモートクライアントデバイス、サーバデバイス、またはストレージデバイスのストレージドライブなど）から取得されることが可能である。いくつかの実装形態では、ユーザによって送信されている画像を含むメッセージに基づいて、画像をメッセージングアプリケーション内に投稿することができる。例えば、メッセージングサーバは、メッセージングアプリケーション１０３ａ内に画像を投稿することができる。別の例では、クライアントデバイス１１５は、メッセージングアプリケーション１０３ｂ内に画像を投稿することができる。方法はブロック２１２に続くことができる。
【００６２】
ブロック２１２において、いくつかの実装形態では、画像が生成された提案に適しているかどうかが判定される。この例示的方法では、画像は生成された提案に適格であることが判明したと想定されている（画像が適格であると判明しなかった場合、例えば、方法は中止されるか、または別の画像を取得する）。いくつかの例では、画像は、メッセージの提案が提供されるべきではないコンテンツの特定の種類または分類に関してチェックされる。例えば、画像および／またはそのメタデータは、コンテンツサーバ１５４に送信されることが可能であり、コンテンツサーバ１５４は、画像コンテンツが、メッセージ提案が提供されるべきではない特定の所定の分類に含まれるかどうかを判定することができる。コンテンツサーバ１５４は、例えば、オブジェクト検出技術を使用し、および／または不適当であることを示す画像の他の属性を検出することができる。方法はブロック２１４に続く。
【００６３】
ブロック２１４において、特徴ベクトルが判定される。特徴ベクトルは、ブロック２１０で取得された画像の視覚的ピクセルコンテンツの要約された数値表現である。例えば、特徴ベクトルは、各次元に対する値と共に、特定の次元数を有するベクトルであり得る。いくつかの実装形態では、１２８次元が使用され得る。いくつかの実装形態では、特徴ベクトルは、画像ピクセル値（例えば色値）に基づいてニューラルネットワークによって生成され得る。
【００６４】
いくつかの実装形態では、１つまたは複数の特徴ベクトルが、画像の特定の部分、例えば、画像検出またはオブジェクト認識技術（例えば、パターンマッチング、機械学習など）に基づいて検出された「ローカル」画像特徴から判定されることが可能である。例えば、顔（識別情報なし）、動物、オブジェクト、風景の特徴（葉、建物、空、夕焼けなど）を含む画像特徴が検出されることが可能である。例えば、画像の主要サブジェクトが判定された場合、その主要サブジェクトを表す画像の部分から特徴ベクトルが作成されることが可能である。いくつかの実装形態では、画像の主要サブジェクトの特徴ベクトルは、画像全体を代表すると見なすことができ、方法２００で使用されることが可能である。方法はブロック２１６に続く。
【００６５】
ブロック２１６において、画像を表す特徴ベクトルに基づいて、その画像に対する１つまたは複数の提案された応答が生成される。いくつかの実装形態では、提案された応答は、メッセージ会話（例えば、ユーザデバイス間で送信された電子メッセージを含む会話）で受信されたメッセージ（例えば、画像）に対する１つまたは複数の会話型の返信として送信されるメッセージ提案であり、受信されたメッセージは、画像を含む。いくつかの例では、１つまたは複数の言語モデルによる推論、例えば、提案された応答を判定するためにブロック２０８でトレーニングされた調整された言語モデルが、使用され得る。さらに、調整された言語モデルの出力に基づいて提案応答を判定するために異なる技術を使用することができる。提案された応答を生成するいくつかの例示的な実装形態は、ビームサーチ技術およびＬＳＴＭネットワークを使用する図３〜５を参照して以下に説明される。いくつかの実装形態では、サンプリング技術を使用して提案された応答を判定することができ、例えば、次の単語である可能性が最も高い判定された単語が単語シーケンスに追加される。
【００６６】
いくつかの実装形態では、デバイスにアクセス可能な１つまたは複数のボットからの情報の呼び出しまたは要求に基づいて、１つまたは複数の提案された応答が生成され得る。調整された言語モデルによって生成された応答が組み合わせられ、ランク付けされて、１つまたは複数の上位の提案応答を識別することができる。提案された応答は、テキスト（例えば、フレーズ、単語など）、画像、ビデオ、および／または他の種類のメディアコンテンツであり得る。いくつかの例示的な実装形態では、提案された応答は、以下で詳細に説明されるいくつかの例で説明されるようにテキスト形式で生成されることが可能であり、この生成されたテキストは、他のタイプのメディアコンテンツ（ユーザの同意が得られている場合、ユーザのコレクションまたはアクセス可能な画像ライブラリまたはフォトライブラリからの画像など）で検出される概念（例えばラベル）と照合され得、これらの概念は、本明細書で説明されているのと同様にメディアコンテンツ内で識別されることが可能である。そのような照合されたメディアコンテンツは、本明細書で説明されるようにメッセージ提案としてその後提供され得る。方法はブロック２１８に続く。
【００６７】
ブロック２１８において、上位ランクの提案された応答のうちの１つまたは複数がユーザに提供される。例えば、上位ランクの提案された応答は、ユーザによって使用されるクライアントデバイス１１５の表示装置上に表示され得る。いくつかの例では、画像が受信されたメッセージ内で取得された場合、その画像は、メッセージングインタフェース内に表示されることができ、上位ランクの提案された応答は、その画像に関連して、例えば画像の片側に表示され得る。様々な実装形態では、例えば、３、１０など、特定の数の上位ランクの提案応答が表示されることが可能である。いくつかの実装形態では、提示された提案応答の数は、例えばユーザ入力および／または保存されたユーザプリファレンスを介して、ユーザによって判定され得る。いくつかの実装形態では、上位ランクの提案された応答のうちの１つまたは複数が、要求側のデバイスまたはアプリケーション、例えば１つまたは複数の提案された応答を要求した方法２００を実行する同じシステム上または異なるシステム上のアプリケーションに提供（例えば送信）される。方法はブロック２２０に続く。
【００６８】
ブロック２２０において、いくつかの実装形態では、表示された上位ランクの提案された応答のうちの１つまたは複数の選択が受信される。例えば、選択は、例えば、ユーザのタッチを受け取るタッチスクリーンまたはトラックパッドなどの入力デバイス、音声コマンドを受け取るマイクロフォン、ユーザ操作を受け取るボタン、マウス、またはジョイスティックなどを介して、ユーザデバイスでユーザによって提供されたユーザ入力に基づくことができる。いくつかの例では、ユーザは、タッチスクリーン上のシングルタップを入力して、関連する提案された応答を選択することができ、したがって手動で応答を入力することと比べてユーザ入力の量を減らすことができる。いくつかの実装形態では、１つまたは複数の提案された応答は、例えば、ユーザの嗜好、ユーザの状況（例えば、もしユーザの同意があれば、地理的位置、時間または日付など）、または他の予め定義された条件に基づいて、自動的に選択され得る。
【００６９】
いくつかの実装形態では、ブロック２２０は、クライアントデバイスによって実装され得、例えば、クライアントデバイスに接続された入力デバイスを介して選択を受信する。いくつかの実装形態は、例えば、通信ネットワークを通じて、クライアントデバイスまたは他のデバイスにおいてユーザによって使用される入力デバイスから直接サーバデバイスへ送信されるか、またはその他のデバイス（クライアントデバイスおよび／またはサーバデバイスなど）を介して送信される選択を受信するサーバデバイスを使用してブロック２２０を実装することができる。方法はブロック２２２に続く。
【００７０】
ブロック２２２では、いくつかの実装形態では、ブロック２２０で選択された提案された応答が送信される（またはそうでなければ出力される）。例えば、選択された応答は、１つまたは複数の受信デバイスに１つまたは複数のメッセージとして送信され得る。いくつかの例では、メッセージは、ネットワーク１４０を通じてメッセージングサーバ１０１を介して１つまたは複数の他のクライアントデバイス１１５に、および／または直接他のクライアントデバイス１１５に送信されることが可能である。いくつかの実装形態では、例えば、１対１の会話では、メッセージは、例えば、チャットメッセージ、テキストメッセージ、電子メールメッセージなど、ユーザデバイスによって受信されたメッセージにおいて、ブロック２１０で取得された画像を送信したユーザデバイスに送信される。いくつかの実装形態では、メッセージは、ブロック２１０で取得された画像の送信元のユーザアカウントに対して構成されている１つまたは複数のユーザデバイスに対して送信される。いくつかの実装形態では、例えば、ユーザが複数の提案された応答を選択する場合、選択された応答は、別個のメッセージ、組み合わされたメッセージなどとして送信され得る。いくつかの実装形態において、例えば、メッセージを出力する前に、選択された提案応答がメッセージ作成インタフェースにおいて編集されることを許可するユーザインタフェースが提供され得る。この方法は、次に、いくつかの実装形態では、例えば、別の画像が取得された場合に、ブロック２１０に戻ることができる。
【００７１】
図３は、画像を表す特徴ベクトルに基づいて１つまたは複数の提案された応答を生成するための例示的な方法３００を示すフロー図である。例えば、方法３００は、図２の例示的方法２００のブロック２１６を実行するために使用されてもよい。
【００７２】
一般的な概要および例において、方法３００はいくつかの実装形態では以下の特徴を含むことができる。まず、開始トークンがビームキュー（beam queue）にプッシュされる。さらに、画像の特徴ベクトルが調整された言語モデルに供給される。初期段階（ブロック３０４）において、調整された言語モデルは、特徴ベクトルに基づいて判定される第１の単語として、ボキャブラリからの１つまたは複数の単語、例えば、「pretty」、「cute」、「neat」などの、トレーニングデータとして使用された前の応答からの単語を生成する。初期段階の各単語について、次の単語を追加してシーケンスを作成することにより、１つまたは複数の単語シーケンスが決定される。例えば、最初の単語が「pretty」の場合、例えば、「pretty woman」、「pretty girl」、「pretty cool」などの、それぞれ「pretty」で始まるシーケンスが決定され得る。後の段階において、追加の単語が同様に続いて単語シーケンスに追加され得る。単語の並びが異なると長さが異なる場合があり、例えば、「pretty good deal」はサイズ３のシーケンスである。このプロセスは、初期段階で決定された他の単語、例えば、「cute!」、「cute poster」、「neat trick」などに対し繰り返され得る（ブロック３０６−３２０）。１つまたは複数の最初の単語に基づいて、決定された単語シーケンスからの上位Ｎ個のシーケンスが、提案された応答として選択され得る。
【００７３】
ブロック３０２において、特徴ベクトルが調整された言語モデルに入力されて、モデルを調整する。例えば、特徴ベクトルは、図２について上述したようにして取得された画像の要約表現であり得る。調整された言語モデルは、例えば、図２のブロック２０８に関して上述したように、画像のトレーニングデータおよび一般的な応答を使用してトレーニングされたトレーニング済みニューラルネットワークを含むことができる。トレーニングデータ応答は、提案された応答を形成するために使用される利用可能な単語のボキャブラリを形成する単語を含む。例えば、長期短期記憶（ＬＳＴＭ）ニューラルネットワークが使用されることが可能であり、画像特徴ベクトルがＬＳＴＭの第１のインスタンシエーションに入力される。使用することができるＬＳＴＭネットワークのいくつかの例は、図５に関して以下に説明される。ＬＳＴＭネットワーク（または他の調整された言語モデル）は、デバイスの記憶装置（例えば、メモリ）内に、１つまたは複数のハードウェアプロセッサを使用して実装することができる。画像を表す所定の特徴ベクトルを調整された言語モデルに入力することのいくつかの利点は、特徴抽出器を調整された言語モデルにデプロイする必要がなく、調整された言語モデルのより小さいサイズおよび潜在的により速いモデルの実行が可能であることを含む。
【００７４】
ブロック３０４において、最初の単語がビームキューにプッシュされる。この例では、ビームサーチ技術が、画像と調整された言語モデルの出力に基づいて応答を検索して構成するために使用される。各応答は「単語シーケンス」であり、これは１つまたは複数の単語をシーケンス、例えば、「so cute（とてもかわいい）」や「I like it（いいね）」などの応答に見られる単語の列として提供されることが可能である。単語は１つまたは複数の符号の列であり得、符号は、文字、句読点記号（例えば、「！」や「？」など）、またはいくつかの実装形態においては、アイコン、絵文字、記号、またはその他の符号であり得る。
【００７５】
ビームキューにプッシュされる最初の単語は、単語シーケンスの単語生成プロセスを開始するために使用される。いくつかの実装形態では、最初の単語は、それがプロセスの開始であることを示す特別な開始トークンである。例えば、調整された言語モデルから出力された応答は、開始トークンおよび任意の終了トークンを無視することが可能である（後述）。いくつかの実装形態では、ビームキューは最大サイズＱを有し、これは、最大でＱ個の単語シーケンス（ビーム）が以下に説明されるように処理されるべきであることを示す。例えば、Ｑは、１０、２０、または他の数であり得る。
【００７６】
ブロック３０６において、ビームキュー内の単語シーケンスが選択される。例えば、方法３００の最初の反復では、選択された単語シーケンスは、上述のように開始トークンなどの最初の単語である。後の反復では、選択された単語シーケンスは、まだ処理されていない（例えば、その単語シーケンスの次の単語を見つけるためにまだ処理されていない）ビームキュー内の次の単語シーケンスであり得る。いくつかの実装形態では、ビームキューに格納された単語シーケンスは、ＬＳＴＭニューラルネットワークによって生成された単語−画像埋め込み（word-image embedding）であり、各埋め込みは、単語シーケンスの中にこれまで含まれてきた単語と特徴ベクトルの画像とを要約形式で符号化する数のベクトルである。例えば、各単語は、特徴ベクトルと同じ数の次元を有することができる単語埋め込みによって表すことができ、例えば、それらは同じ空間にマッピングされ、単語−画像埋め込みに組み合わせることができる。
【００７７】
ブロック３０８において、選択された単語シーケンスは調整された言語モデルに入力される。例えば、選択された単語シーケンスは、調整された言語モデルを提供するＬＳＴＭネットワークの１つのＬＳＴＭ（例えば、インスタンシエーション）に入力されることが可能である。ＬＳＴＭアーキテクチャの例を図５に示す。いくつかの例では、ブロック３０８の初期反復において、ブロック３０２で入力された画像特徴ベクトルが第１のＬＳＴＭ（例えば、インスタンシエーション）に入力され、初期単語（例えば、開始トークン）も第１のＬＳＴＭに入力される。ブロック３０８の後の反復において、選択された単語シーケンスは、画像特徴ベクトルおよび選択された単語シーケンスにこれまで含まれていた単語を符号化する埋め込みであり、単語シーケンスの次の単語を提供する後のＬＳＴＭ（例えば、インスタンシエーション）に入力される。
【００７８】
ブロック３１０では、調整された言語モデルを使用して、複数の単語が、単語シーケンス内の次の候補単語となるように、単語のボキャブラリから判定または生成され、複数の単語が、選択された単語シーケンスにおいて次の単語となる確率が判定される。例えば、選択された単語シーケンスがブロック３０８で入力されたＬＳＴＭは、単語および確率を判定する。単語および確率は、単語のボキャブラリを提供する前の画像および関連する前の応答を含むトレーニングデータを使用した調整された言語モデルのトレーニングに基づいて、調整された言語モデルによって判定される。例えば、単語のボキャブラリは、調整された言語モデルをトレーニングするのに使用されるトレーニングデータの応答において使用される単語を含む。いくつかの実装形態では、単語のボキャブラリは、多数、例えば数千の単語を含むことができる。いくつかの実装形態では、調整された言語モデルは、特定の画像への応答を含むトレーニングデータからのトレーニングに基づくように、ボキャブラリ内の各単語が、画像特徴ベクトルを前提とした単語シーケンス内の次の単語である確率を判定し、ボキャブラリ内の全ての単語が判定された確率を有するようにする。
【００７９】
いくつかの実装形態では、ボキャブラリ単語のセットのサブセット、例えばボキャブラリ内のすべての名詞、副詞、または他の種類の単語、またはボキャブラリ単語の異なる選択されたサブセットについて確率を判定することができる。いくつかの実装形態では、ボキャブラリ単語のサブセットは、例えば、以前に送信されたメッセージおよび応答からの一般的なユーザデータ（そのようなメッセージの送信者／受信者からのユーザ同意が得られた場合）に基づいて、それらが受信された電子メッセージへの応答で使用され、かつ／またはそのようなメッセージにおいて受信された画像への応答で使用される確率が高い（例えば、閾値確率または頻度を超える）と知られている単語のサブセットとすることができる。上述のように、単語は、テキスト単語、記号（例えば句読点記号、楕円など）、絵文字などを含むことができる。いくつかの実装形態では、単語は画像（例えば「ステッカー」）、アニメーションを含むことができる。いくつかの実装形態では、ボキャブラリからの任意の単語シーケンスについて可能な次の単語のうちの１つは、特別な終了トークン、例えば、単語シーケンスの終了を示すように指定されたトークンである。いくつかの実装形態では、複数の異なる単語シーケンスは、各使用されたボキャブラリ単語を、選択された単語シーケンスの末尾にそれぞれ付加することに基づいて、効果的に作成される。
【００８０】
ブロック３１２において、ブロック３１０で判定された次の単語を含むいくつか（例えば、Ｑ個）の単語シーケンスが、ブロック３１０で判定された次の単語の確率に基づいて選択される。したがって、Ｑ個の単語シーケンスは、それらの次の単語に対する関連する確率に基づいて選択される。選択されたＱ個の単語シーケンスは、ブロック３１０で判定された次の単語を、選択された（前の）単語シーケンスにそれぞれ付加することから形成された単語シーケンスのサブセットである。例えば、ブロック３１０で判定されるように、それらの次の単語が最も高い確率を有するＱ個の単語シーケンスが選択される。例えば、ビームキュー内の単語シーケンスの各々について各次の単語に対する確率が生成され、最も高い確率に関連するＱ個の単語シーケンスが選択される。例えば、選択された各単語シーケンスは、画像ベクトル、この単語シーケンスの前に選択された単語、およびこの単語シーケンスの最後に現在埋め込まれている次の単語を含む単語埋め込みである。場合によっては、これらは次の単語が終了トークンである単語シーケンスであり得る。いくつかの実装形態では、所定の確率閾値を上回る確率を有するＱ個の単語シーケンスが選択される。
【００８１】
いくつかの実装形態では、Ｑ個の単語シーケンスの選択は、他の要因によって影響を受ける可能性がある。例えば、１つの要因は、提案された応答が生成されているユーザによって送信された１つまたは複数の前のメッセージ応答であり得る。いくつかの例では、生成された単語シーケンスのうちの１つまたは複数がメッセージングコンテキストにおいてユーザによって提供された前の応答と同じか、または類似する（例えば、同じシーケンス内の同じ単語のパーセンテージ閾値を有する）場合、より大きな重み付けが、それらの類似した生成された単語シーケンスに割り当てられ得る。例えば、より大きな重み付けは、重み付けされた単語シーケンスと同じまたは類似の確率に関連する他の単語シーケンスよりも、重み付けされた単語シーケンスを選択させ得る。ユーザの同意が得られた場合、前のユーザ応答は、例えば、メッセージアプリケーションデータベース１９９などのメッセージデータ記憶装置から取得することができる。いくつかの実装形態では、前の応答が返信した前の画像も、（例えば、メッセージデータストレージ内において）そのような前の画像が利用可能であれば、現在の画像と比較することができる。現在の画像が前の画像と類似している場合（例えば、それらの特徴ベクトル内に値の類似性パーセンテージがある場合）、それは前の応答が現在の画像と類似した前の画像に対して返信したことを示す。その結果、その前の画像に対応する前の応答に類似する生成された単語シーケンスは、ブロック３１２において選択されるそれらの適格性を高めるためにより大きい重み付けを割り当てられることができる。
【００８２】
いくつかの実装形態では、ユーザまたはユーザデバイスによって受信または送信された前の画像は、単語シーケンスの選択（例えばブロック３１２）および／または単語シーケンスの生成（例えばブロック３１０）に影響を及ぼす可能性がある。一例では、提案された応答は、現在の（より最近受信された）画像のコンテキストにおいて前の画像を参照するように生成および／または重み付けされ得る。例えば、そのような提案された応答は、現在の画像が受信される前の所定の期間内に前の画像が受信されたかどうかを判定されることが可能である。いくつかの例では、前の画像が第１の種類のオブジェクト（例えば、シャツなどの衣料品）を表すと判定され、現在の画像も同じ種類のオブジェクトを表す（例えば、画像オブジェクト認識技術、画像タグ、または他のメタデータに基づく）場合、生成された提案応答は、「他のものの方が好きだった（I liked the other one better）」および／または「これの方が好き（I like this one better）」を含み得る。
【００８３】
別の例では、提案された応答は、互いの閾値期間内に送信または受信された一連の、またはセットのそのような前の画像に応答して前に送信された前の応答に基づいて生成および／または重み付けされ得る。いくつかの例では、そのような提案された応答は、前の画像のセットに類似または対応する画像のセットが現在受信されている場合（例えば、前の画像のセットが、現在の時刻からの閾値期間内に受信された場合）に生成および／またはより大きく重み付けされ得る。場合によっては、１つまたは複数の前のメッセージは、前の画像に関連付けられる（例えば、前の画像に添付する、または前の画像を送信する閾値期間内に送信する）ことが可能であり、そのような前のメッセージが応答生成および／または重み付けにおいても使用され得る。いくつかの例では、いくつかの前の画像が、現在の時間の閾値期間内にユーザによって受信されていることがあり、それらの主題においてそれらは互いに関連している。例えば、前の画像は、同じ種類（例えば、特定の種類の衣料品）のオブジェクトを示す場合があり、それらは、画像内に描かれた（そして、１つまたは複数の物体認識技術を用いて検出された）、および／または画像のメタデータに示された異なる特性（例えば、色、サイズ、スタイルなど）を有する。また、「どちらを購入すればいいですか（which one should I buy?）」などの前のメッセージが受信された可能性があり、これは前の画像のうちの１つまたは複数に関連付けられている。そのような前の画像および／または前のメッセージのセットに対する前の応答は、「２番目のもの（the second one）」、「青いものが欲しい（I like the blue one）」（描かれた品物のうちの１つが青色の場合）などである可能性がある。提案された応答は、そのような前のメッセージおよび画像を含むトレーニングデータに基づく画像の現在のセットに対して生成され得る。例えば、「１番目のもの」、「２番目のもの」、「３番目のもの」、「青いもの」などの提案された応答は、どのオブジェクトを購入するかを尋ねる画像の受信されたセットおよび／または受信されたメッセージへの応答として、生成された提案応答において生成および／またはより大きく重み付けされ得る。
【００８４】
ブロック３１４において、いくつかの実装形態では、選択された単語シーケンスのすべてがホワイトリストに載っているかどうかが判定される。例えば、ホワイトリストは、調整された言語モデルをトレーニングするために使用されるトレーニングデータに提供された応答のサブセットであり得る。ホワイトリストは、アクセス可能な記憶装置、例えば環境１００のアクセス可能なデバイスのメモリまたは他の記憶装置に格納され得る。いくつかの実装形態では、ホワイトリストは、出力が許可されている応答を提供する。ブロック３１２から選択された各単語シーケンスは、ホワイトリスト上の応答と比較されることが可能である。ホワイトリストに載っていない単語シーケンスは、提案された応答として出力されることは許可されていない。いくつかの実装形態では、ブラックリストを使用することができ、例えば、出力が許可されない応答を提供して、ブラックリスト上の応答に一致する選択された単語シーケンスが出力されることが許可されないようにする。
【００８５】
ブロック３１４において、選択された単語シーケンスの全てがホワイトリスト上に発見された場合、方法は後述するブロック３１８に続く。ブロック３１４において、選択された単語シーケンスのうちの１つまたは複数がホワイトリスト上に見つからない場合、方法はブロック３１６に続き、そこでホワイトリストに存在しなかった単語シーケンスは、ブロック３１０において調整された言語モデルによって判定されたような異なる次の単語を含む他の単語シーケンスと置き換えられる。例えば、Ｎ個の最高確率の後の次に最も高い確率を有する次の単語を有する単語シーケンスが選択されて、ホワイトリストに載っていない単語シーケンスを置き換えることが可能である。方法はブロック３１８に続く。
【００８６】
ブロック３１８において、選択された単語シーケンスはビームキューにプッシュされる。例えば、ビームキュー内の前のバージョンの単語シーケンスから導出された単語シーケンス（例えば、前のバージョンの方がより少ない単語を有している）が、ビームキュー内の前のバージョンの代わりに（例えば、いくつかの実装形態では、終了トークンを有しない前のバージョンの代わりに）格納され得る。
【００８７】
ブロック３２０において、ビームキュー内の全ての単語シーケンスが１つまたは複数の終了条件を満たしたかどうかがチェックされる。例えば、１つの終了条件は、ビームキュー内の全ての単語シーケンスが、それらの最後の単語として特別な終了トークンで終わっていることであってよく、これは、それらの単語シーケンスにこれ以上単語が追加されないことを示す。調整された言語モデルは、シーケンスの生成された次の単語のうちの１つとして、単語シーケンスの終了トークンを生成することが可能である。別の終了条件は、ビームキュー内の単語シーケンスについて、単語シーケンス内の単語の最大長に達したことであり得る。終了条件の組み合わせ、例えば、ビームキュー内のすべての単語シーケンスが特別な終了トークンで終わるか、または最大の単語長を有することが確認されることも可能である。
【００８８】
ビームキュー内のすべての単語シーケンスが１つまたは複数の終了条件を満たすとは限らない場合、方法はブロック３０６に戻り、ビームキュー内の単語シーケンスを選択する。いくつかの実装形態では、選択された単語シーケンスは、特別な終了トークンで終了していない、最大単語長に達していない、または他の何らかの終了条件を達成していない単語シーケンスであり得る。いくつかの実装形態では、選択された単語シーケンスは、直前に生成され（例えば、単語が追加され）、かつ最後の反復でビームキューに格納された単語シーケンスのうちの１つとすることができる。
【００８９】
ブロック３２０において、ビームキュー内のすべての単語シーケンスが、１つまたは複数の終了条件を満たす場合、方法はブロック３２２に進み、そこでビームキュー内の単語シーケンスが提案された応答として指定される。例えば、これらの単語シーケンスおよびこれらの単語シーケンスのスコア（後述）は、提案された応答としてフラグを立てられ、および／または格納されることが可能である。方法は次にブロック３２４に続く。
【００９０】
ブロック３２４において、処理すべき１つまたは複数の追加の単語シーケンスがあるかどうかがチェックされる。例えば、処理のために他の選択された単語シーケンスがビームキューにプッシュされたために終了条件をまだ満たしていない、前の反復からブロック３１２で選択された（そしてブロック３１４で適格とされた）１つまたは複数の単語シーケンスが存在し得る。処理する単語シーケンスがさらにある場合、方法はブロック３０４に進み、未処理の単語シーケンスを（空の）ビームキューにプッシュし、ブロック３０６〜３２０の処理を繰り返す。
【００９１】
ブロック３２４でチェックされるように、処理すべき単語シーケンスがこれ以上ない場合、方法はブロック３２６に進み、ここで指定された単語シーケンスが生成された提案応答として出力される。例えば、出力された提案応答は、図２のブロック２１８に提供されることが可能である。いくつかの実装形態では、ブロック３２２に関して上述したように、ビームサーチは各単語シーケンスについてスコアを生成し、単語シーケンスはこのスコアに基づいてランク付けされる。例えば、単語シーケンスのスコアは、調整された言語モデルによって判定されるような、その単語シーケンスに含まれる１つまたは複数の単語の確率に基づくことができる。様々な実装形態では、単語シーケンスのスコアは、単語シーケンスに最後の単語が追加される確率、または単語シーケンス内の単語の確率の組み合わせ（例えば平均）、および／または他の要因（例えば、より少ない単語を有する単語シーケンスは、より多くの単語を有する単語シーケンスよりも良い（例えば、より高い）スコアを割り当てられることが可能であり、（例えば、所定のリストからの）特定の単語を有する単語シーケンスは、リストに載っていない単語よりもより高いスコアを割り当てられることが可能である等）に基づくことができる。
【００９２】
いくつかの実装形態では、単語シーケンスは、それらのスコアに基づいてランク付けされた順序で、ブロック３２０において出力されることが可能であり、例えば、ブロック２１８は、特定の数の上位ランクの提案された応答を選択し得る。
【００９３】
他の実装形態では、図３のブロックの他の方法または変形形態が、調整された言語モデルを使用して提案された応答を判定するために用いられ得る。例えば、いくつかの実装形態は、異なるサイズのビームキュー、１つまたは複数のブロックの異なる実行順序、調整された言語モデルから提供される異なる単語シーケンスを生成し保持するための異なる技術などを使用することができる。
【００９４】
図４は、本明細書に記載の１つまたは複数の提案された応答機能を実装することができる１つの例示的モジュール４００を示すブロック図である。いくつかの実装形態では、メッセージングモジュール４０２は、メッセージングアプリケーション１０３の構成要素とすることができ、例えば、異なるユーザデバイスからの受信されたメッセージの一部として、図２に関して上述したように画像を取得することができる。画像は、いくつかの異なる構成要素を含み得るメッセージ提案モジュール４０４に送信されることができる。メッセージ提案モジュール４０４の構成要素の一部または全部は、メッセージングアプリケーション１０３、応答生成器１５０、および／または環境１００に示されるシステムの他のモジュールもしくは構成要素において実装されることが可能である。
【００９５】
例えば、画像（例えば、画像ピクセル）は、メッセージングモジュール４０２から図２を参照して上述した特徴ベクトル生成器４０６に送信され得る。上述のように、特徴ベクトル生成器４０６は、画像ピクセルに基づいて特徴ベクトルを判定し、特徴ベクトルは画像を表す。特徴ベクトル生成器は、いくつかの次元の特徴ベクトルを出力し、それは応答生成器４０８に出力される。
【００９６】
いくつかの実装形態では、応答生成モジュール４０８は、調整された言語モデル４１０を使用することによって画像特徴ベクトルに対する１つまたは複数の提案された応答を判定する。応答生成モジュール４０８（および／または調整された言語モデル４１０）は、いくつかの実装形態ではホワイトリスト４１２を使用して、例えばホワイトリストに現れない、いくつかの提案された応答を潜在的にフィルタ除去することができる。
【００９７】
いくつかの実装形態では、デバイスにアクセス可能な１つまたは複数のボットから情報を呼び出すこと、または要求することに基づいて、１つまたは複数の提案された応答を生成することができる。例えば、適切な提案応答が画像のコンテンツに関連する特定の情報であると応答生成コンポーネント４０８（またはシステムの他の構成要素）が判定した場合、その情報を取得できるボットが判定されることが可能であり、ボットへのコマンドおよび／または要求が、提案された応答として生成され得る。
【００９８】
いくつかの実装形態では、メッセージランク付けコンポーネント４１４は、応答生成モジュール４０８によって生成された提案応答を受信し、提案された応答をランク付けされた順序に組み合わせてランク付けすることができる。例えば、提案された応答は、計算されたスコアに基づいてランク付けされることができ、スコアは画像について判定された各提案された応答に対して判定され得る。いくつかの実装形態では、提案された応答ごとにスコアが判定され得る。いくつかの実装形態では、スコアは、上記のように調整された言語モデルによって判定された確率に基づいている。いくつかの実装形態では、スコアは、提案された応答が画像に関連するという判定された確率に基づくことができ、その確率は、例えば、履歴メッセージデータ（および／または上述のトレーニングデータ）における応答の発生頻度に基づくことができる。履歴メッセージデータは、会話の参加者が、提案応答機能を実装するためにそのようなデータの使用について同意を提供した、前の会話からのデータであり得る。ユーザがそのような使用の許可を与えていない場合、履歴メッセージデータは使用されない。いくつかの実装形態では、応答生成モジュール４０８は、応答に対してスコアを提供することができ、それはメッセージランク付けコンポーネント４１４によって応答をランク付けするために使用することができる。いくつかの実装形態では、応答生成モジュール４０８は、図３に関して上で説明したように、生成された提案応答のスコアおよびランク付けを提供することができ、例えば、メッセージランク付けコンポーネント４１４は、応答生成モジュール４０８に含まれ得る。
【００９９】
提案された応答はランク付けされた順序で出力されることが可能である。いくつかの実装形態では、ボットからの情報を要求する提案応答は、類似の要因（トレーニングメッセージデータ内の頻度など）に基づいて判定された１つまたは複数の信頼スコアに基づいて同様にランク付けされることができ、および／または、いくつかの実装形態では、少なくとも１つのボット関連応答は、常に高いランクにランク付けされ得る（例えば、ボットを起動する応答は、ユーザに対する代替の提案応答として提示され得る）。いくつかの実装形態では、システムは、多様性に基づいて提案応答をランク付けすることもできる。例えば、複数の最高ランクの提案された応答が、単語、文字、または（例えば、辞書、シソーラス、または他の技術および／またはデータを参照することによって判定されるような）意味論的意味において互いに類似している場合、例えば、類似した応答のうちの少なくとも１つのランクを下げることによって、提案された応答の多様性を増すようにランク付けが調整され得る。
【０１００】
いくつかの実装形態では、特定の数の上位ランクの提案された応答が送信され、ユーザデバイス上に表示されるか、そうでなければ出力されることが可能である。これらの提案された応答のうちの１つまたは複数は、ユーザ入力により選択されて、他のデバイスに対し１つまたは複数のメッセージを送信することができ、１つまたは複数のメッセージは、選択された提案応答のコンテンツを含む。いくつかの実装形態では、選択された提案応答がボットへのコマンドまたは要求である場合、ボットがメッセージ会話に追加され、要求された情報を取得して会話インタフェースに表示し、ユーザはさらなるメッセージをボットに送信することができる。
【０１０１】
図５は、本明細書に記載の１つまたは複数の機能を実装することができるＬＳＴＭアーキテクチャ５００の一例を示すブロック図である。ＬＳＴＭアーキテクチャ５００は、調整された言語モデルを実装し、実行されたプロセスの異なる段階におけるＬＳＴＭモデルブロックのインスタンシエーションまたはコピーを表す複数のＬＳＴＭ５０２を含む。
【０１０２】
この例では、トレーニングが最初にシステムに提供される。いくつかの実装形態では、トレーニングデータは、フィルタリングされている（例えば、自己相互情報量（pointwise mutual information：ＰＭＩ）フィルタリングによりフィルタリングされている）、および／または他の方法で処理されている可能性がある上述のような画像−応答ペアを含み得る。ＬＳＴＭモデルは、画像特徴ベクトルと単語シーケンス内のすべての前の単語とを含む埋め込みが入力された後、単語シーケンス内の次の単語の確率を出力するようにトレーニングされる。トレーニングのために、トレーニングデータの画像を表す画像特徴ベクトルが第１のＬＳＴＭ５０６に入力される。さらに、（推論のためではなく）トレーニングのために、単語埋め込みがＬＳＴＭ５０６の後のＬＳＴＭに入力され、単語埋め込みは、画像に対応するトレーニングデータの応答に含まれた個々の単語を表す。いくつかの例では、トレーニングデータ応答の単語は、一度にＬＳＴＭに入力される。いくつかの例では、単語ＩＤ（例えば、単語ＩＤ５１４または５２４）は、特定の単語を表し、ボキャブラリの次元サイズを有するｏｎｅ−ｈｏｔベクトルであってよく、これは、例えば、画像特徴ベクトルの次元を有する、より低い次元のベクトルである単語埋め込み（例えば単語埋め込み５１６または５２６）を生成するためにニューラルネットワークに供給される。
【０１０３】
例示的なトレーニングプロセスでは、第１のＬＳＴＭ５０６は、単語１に対する単語の分布を示す情報を符号化する値のベクトル（ＬＳＴＭニューラルネットワークの出力、例えば、ＬＳＴＭのトップレイヤ）を出力し、ベクトルはソフトマックス関数５０８へ入力される。ソフトマックス関数５０８は、ボキャブラリの単語が単語シーケンス内の次の単語（単語１）である確率を示す単語１の確率分布５１０を出力する。ボキャブラリの単語は、調整された学習モデルをトレーニングするために使用されるトレーニングデータで使用された応答からのものである。第１のＬＳＴＭ５０６は、第２のＬＳＴＭ５１２に入力される埋め込みも出力し、埋め込みは、画像特徴ベクトル５０４の表現およびシーケンスの前の単語を含む。図５の例では、サンプル単語１ＩＤ５１４が、第２のＬＳＴＭ５１２に入力される単語埋め込み５１６として提供され、例えば、画像特徴ベクトル５０４によって表される画像に対する応答に含まれる第１の単語を表す。ＬＳＴＭ５１２は、ソフトマックス関数５１８に入力される次の単語（単語２）に対する単語の分布を示す情報を符号化する値のベクトルを出力し、ソフトマックス関数５１８は、ボキャブラリの単語が単語シーケンスの次の単語（単語２）となる確率を示す単語２の確率分布５２０を出力する。ＬＳＴＭ５１２は、画像特徴ベクトルおよびシーケンスの前の単語を表す埋め込みを出力し、埋め込みはＮ番目のＬＳＴＭ５２２に入力される。Ｎ番目のＬＳＴＭ５２２への単語埋め込み５２６として、Ｎ−１番目の単語ＩＤ５２４が与えられる。ＬＳＴＭ５２２は、判定された次の単語（単語Ｎ）に対するベクトルを出力し、それはソフトマックス関数５２８に入力され、そしてソフトマックス関数５２８は、ボキャブラリの単語が単語シーケンス内の次の単語（単語Ｎ）である確率を示す単語Ｎの確率分布５３０を出力する。
【０１０４】
例示的なトレーニングプロセスでは、判定された確率がＬＳＴＭにフィードバックされ、例えば、トレーニングデータの画像（画像特徴ベクトルによって表される）に対応するトレーニングデータの応答に含まれていることが知られている単語１の埋め込み５１６から単語Ｎ−１の埋め込み５２６の入力に基づいて、ＬＳＴＭが応答に使用された単語シーケンスに対して高い確率を生成するように重み付けが調整される。
【０１０５】
ランタイム（例えば、その例が図３について説明されている、入力画像に基づいて単語確率を判定する推論処理）の間、調整された言語モデルはあらかじめトレーニングされている。画像特徴ベクトル５０４によって表される新しい画像は、ＬＳＴＭ５０６に入力される。ＬＳＴＭ５０６は、画像特徴ベクトルに基づいて次の単語である単語１についてのボキャブラリの単語にわたる分布を判定し、ソフトマックス関数５０８に入力される分布についての値のベクトルを出力する。ソフトマックス関数５０８は、単語シーケンス内の次の単語として単語１に使用することができるボキャブラリの単語の確率を示す確率分布５１０を判定して出力する。サーチ方法は、例えば、図３を参照して上述したビームサーチ技術を使用して、これらの確率に基づいてこれらの単語のうちの１つまたは複数を選択することができる。
【０１０６】
後続の反復において、サーチ方法（例えば、図３のブロック３０８）は、特徴ベクトルと単語シーケンスのために選択された前の単語とを表す埋め込みを第２のＬＳＴＭ５１２に提供する。ＬＳＴＭ５１２は、埋め込みに基づいて、単語シーケンスの次の単語である単語２についてのボキャブラリから単語の分布を判定し、ソフトマックス関数５１８に入力される分布についての値のベクトルを出力する。ソフトマックス関数５１８は、単語シーケンス内の次の単語として単語２に使用することができるボキャブラリの単語の確率を示す確率分布５２０を判定して出力する。サーチ方法は、これらの確率に基づいて、これらの単語の１つまたは複数を選択する。後続の反復では、サーチ方法は、特徴ベクトルと単語シーケンスに対して選択された前の単語とを表す埋め込みを次のＬＳＴＭ５２２に入力して、単語シーケンスのＮ番目の単語に対する単語分布を判定することができ、ＬＳＴＭ５２２は、単語Ｎに対する確率分布５３０を同様に生成する。サーチ方法は、これらの確率に基づいて、これらの単語の１つまたは複数を選択する。
【０１０７】
したがって、図５のＬＳＴＭネットワークは、単語シーケンス内の各次の単語の確率を判定する。実際には、ＬＳＴＭネットワークは、各単語シーケンスに関連する確率を判定し、これは、それらの確率に基づいて判定された前の単語が、ＬＳＴＭインスタンシエーションが次のＬＳＴＭインスタンシエーションに提供する単語シーケンス埋め込みに含まれるからである。単語シーケンスから判定された提案応答は、このように確率にも関連している。
【０１０８】
調整された言語モデルは、上記のようにトレーニングデータに基づいてトレーニングすることができる。調整された言語モデルは、提案応答が生成されるべき画像を受信する前に、トレーニングデータに基づいて作成されることができるので、画像を受信すると、既存のモデルを使用して提案されたメッセージが生成され得る。
【０１０９】
いくつかの実装形態では、調整された言語モデルの一部または全部は、ランタイム中に受信された画像に基づいて、およびメッセージで送信するために最終的にユーザ（またはアプリケーション）によって選択された、または他の利用のために選択された提案応答に基づいて更新され得る。例えば、受信された画像とユーザが選択した応答とは、モデルのトレーニングを更新する際に使用する新しい画像−応答ペアとして提供され得る。
【０１１０】
いくつかの例では、トレーニングデータは、画像およびそれらの画像に対する応答を含むメッセージデータであり得る。例えば、メッセージデータは、例えば人間のユーザが参加していない擬似会話に基づく合成データとすることができる。いくつかの実装形態では、トレーニングデータは、トレーニング目的でそのようなデータを提供することに同意したユーザによって実際に交換された画像およびメッセージを含み得る。トレーニングデータは、ユーザ識別子やその他のユーザ関連情報を削除するために使用前に処理される。例えば、いくつかの実装形態では、画像−応答ペアがトレーニングメッセージデータとして取得されることが可能であり、これは、受信された特定の画像と、ユーザによって選択され特定の画像を受信することへの返信として送信された応答のコンテンツとを識別する。例えば、応答は、会話中にメッセージングアプリケーションにおいて選択されている場合がある。
【０１１１】
いくつかの実装形態では、メッセージデータのセットからトレーニングメッセージデータの少なくとも一部を判定するために、システムは、メッセージ内の画像を受信することへの返信としての、メッセージデータのセットにおけるユーザからの頻度の高い履歴応答を判定することができ、最も頻繁な応答および画像が、トレーニングデータとしてシステムによって編成され格納されることができる。
【０１１２】
いくつかの実装形態では、メッセージデータのセット内の最も頻度の高い応答の多くは、他のより頻度の低い応答ほど提案された応答を判定するのに適していない可能性がある。例えば、最も頻度の高い応答は、特定の画像（例えば、特定の種類の画像コンテンツ）に特有ではない可能性がある応答によって支配されることがある。いくつかの例では、「lol（笑）」などの一般的な応答は、多くの異なる画像および／または多くの異なるタイプの画像コンテンツ（例えば、画像特徴）に対する最も頻度の高い応答であり得、特定の画像コンテンツまたは画像コンテンツのタイプに特有ではない。いくつかの実装形態は、そのような頻繁な一般的な応答を除外して、トレーニングデータのために、画像に対して、よりコンテンツ固有の応答を得ることができる。例えば、画像と応答との間の統計的関連スコアが計算されることが可能である。いくつかの例では、自己相互情報量（ＰＭＩ）が、以下のように各画像−応答ペアについて判定され得る。
【０１１３】
【数１】
2019536135.tif 000003
特定の関連閾値（例えば、ＰＭＩ閾値）よりも低い関連スコア（例えば、ＰＭＩ）を有するペアは、トレーニングデータから削除され得る。いくつかの例では、１の関連閾値が使用され得る。画像と応答とが独立してメッセージデータのセット内で発生する場合、フィルタリング後に残るペアは、フィルタリングされたペアよりも頻繁に発生し、従って、これらの残りのペアの応答は、これらの残りのペアの画像コンテンツに対し、より特有のものである（例えば、残りのペアは、相互により関連性の高い画像および応答を有するが、フィルタ除去されたペアは、相互により関連性の低い画像および応答を有する）。残りのペアは、調整された言語モデルをトレーニングするためのトレーニングデータとして使用することができ、残りのペアに含まれる画像と類似していることが検出された新しい画像に対する提案された応答を生成する。したがって、トレーニングデータは、トレーニングデータ内の前の応答が、トレーニングデータから除外された他のより一般的な前の応答よりも、前の画像の特定のコンテンツに対してより特有であるように、フィルタリングされ得る。
【０１１４】
いくつかの実装形態では、ユーザの同意が得られている場合、（例えば、前の応答データに示されているように）１つまたは複数の応答に対するユーザの嗜好を使用して、モデルのトレーニングのためのトレーニングデータ中の同じまたは類似の応答に重み付けすることができる。ユーザの嗜好は、例えば、ユーザによって頻繁に提供された（例えば、閾値回数を超えてユーザによって提供された）応答、および／またはユーザによって好意的に受信され評価された（例えば、明示的なユーザ評価または肯定的な折り返しの返信がある）応答について示され得る。例えば、同じまたは類似の応答は、モデルのトレーニングにおいてより大きなバイアスを有する可能性があり、例えば、上述のようにモデルが確率を生成するときにこれらの応答により大きい確率またはスコアを持たせる。同様の応答には、同じ語根（例えば、接尾辞や句読点のない単語）、および／または参照されているデータベース（例えば、シソーラス、辞書など）、ナレッジグラフ、またはモデルによって判定されるのと同じ意味論的意味を持つ応答が含まれ得る。
【０１１５】
本明細書に記載の方法、ブロック、および動作は、図示または説明したものとは異なる順序で実行することができ、および／または適切な場合には他のブロックまたは動作と（部分的または完全に）同時に実行することができる。いくつかのブロックまたは動作は、データのある部分に対して実行され、後で、例えば、データの別の部分に対して、再度実行されることができる。説明されたブロックおよび動作のすべてが様々な実装形態において実行される必要があるわけではない。いくつかの実装形態では、ブロックおよび動作は、異なる順序で、および／または方法の中で異なる時間に、複数回実行することができる。
【０１１６】
いくつかの実装形態では、いくつかの、またはすべての方法は、１つまたは複数のクライアントデバイスなどのシステム上に実装することができる。いくつかの実装形態では、本明細書で説明されている１つまたは複数の方法は、例えば、サーバシステム上、および／またはサーバシステムおよびクライアントシステムの両方の上に実装することができる。いくつかの実装形態では、１つまたは複数のサーバおよび／またはクライアントの異なる構成要素は、異なるブロック、動作、または方法の他の部分を実行することができる。
【０１１７】
図６は、メッセージングアプリケーションがユーザ間の会話に使用されるユーザインタフェース６０１を表示する例示的なクライアントデバイス６００のグラフィック表現である。この例では、第１のユーザと第２のユーザとは、彼らのクライアントデバイスを介してチャットに参加しており、第２のユーザはクライアントデバイス６００を操作している。表示されているアイコン６０２で表される第１のユーザは、ユーザインタフェースに表示されているようにメッセージ６０４を第２のユーザに送信する。例えば、メッセージ６０２は、ネットワークを介して第１のユーザのユーザデバイスから第２のユーザによって操作されるクライアントデバイス６００に送信された可能性がある。第２のユーザは、ユーザインタフェースに表示されているメッセージ６０６で応答する。例えば、第２のユーザは、例えば表示されたキーボードまたは他の入力ディスプレイまたはデバイスを介して、メッセージ６０６をユーザインタフェース６０１に入力した可能性がある。それに応答して、第１のユーザは、画像６０８を含むメッセージを第２のユーザに送信し、画像６０８は、会話の前のメッセージの後に（例えば、下に）ユーザインタフェースで表示される。いくつかの例では、第１のユーザ６０２は人間のユーザである。いくつかの実装形態では、第１のユーザ６０２はボットであってよい。
【０１１８】
いくつかの実装形態では、第１のユーザは、電話番号をメッセージングすること（例えば、メッセージングアプリケーション１０３が、ＳＭＳ、または電話番号を利用する別のメッセージングアプリケーションで動作する場合）により、または連絡先リストからユーザを選択すること（例えば、メッセージングアプリケーション１０３がリッチコミュニケーションサービス（ＲＣＳ）または他のチャットインタフェースで動作する場合）により、メッセージを送信する。
【０１１９】
図７は、受信された画像に対する生成された提案応答を含むメッセージングアプリケーションにおける会話を伴う、図６の例示的なクライアントデバイス６００およびユーザインタフェース６０１のグラフィック表現である。図７に示す会話は、図６の会話と同じである。図７に見られるように、メッセージングアプリケーション１０３は、例えば、図２に示される方法を使用することによって、画像６０８に対する１つまたは複数の提案された応答７１０を提供し、それはユーザインタフェース６０１に表示される。あるいは、メッセージフィールド７１８が、（例えばキーボード、音声コマンドなどを介して）第１のユーザに送信するためのテキストメッセージを入力するために第２のユーザによって使用され得る。提案された応答７１０のうちのいずれも、画像６０８を受信したことに対する応答として第２のユーザによって選択され得る。例えば、（テキスト「おー（aww）」を有する）提案された応答７１２、（テキスト「かわいいカップル？（cute couple?）」を有する）提案された応答７１４、および（テキスト「それはどこ？（where is that?）」を有する）提案された応答８０６が、画像６０８を含むメッセージに応答するために第２のユーザが選択するためのオプションとしてユーザインタフェース６０１に表示される。例えば、提案された応答７１２、７１４、および７１６は、図７の受信された画像６０８の下に表示されているが、ユーザインタフェースの様々な場所のいずれにも（例えば、画像６０８の上、側方、または周囲、ユーザインタフェース６０１内の別個に表示されたフィールドまたはウィンドウ内などに）表示され得る。
【０１２０】
図７に示される例では、画像６０８は、本明細書に記載されるようにモデルのトレーニングに基づいて提案応答を判定するために、調整された言語モデルによって処理されている。提案された応答７１０のうちの１つまたは複数は、画像６０８と同様のピクセルを描画する画像に対してユーザによって提供された前の応答を含むトレーニングデータによってトレーニングされた調整された言語モデルに基づいて判定され得る。応答は画像ピクセルの表現に基づいて直接判定されるので、画像に対し適切かつ関連性があり、かつ画像６０８においてシステムによって検出された概念または描かれた画像特徴に基づく判定されたラベルに限定されない提案応答を判定し提示することができる。この例では、提案された応答７１２「おー（aww）」は、画像ピクセルと、前のメッセージデータに基づく機械学習トレーニングとに基づいて判定される。ラベルが判定され、提案された応答が、ラベルから、例えば提案された応答にラベルを関連付けるデータに基づいて判定される他の技術によっては、提案された応答７１２は判定することができなかったかもしれない。例えば、そのようなラベルは、システムによって画像６０８において検出された画像特徴を記述するために「人」、「男性」、および「女性」を含むことができ、そのようなラベルは、応答７１２および／または他の応答７１４または７１６などの提案された応答を生成する可能性が低いかもしれない。
【０１２１】
図８、９、１０、および１１は、例えば異なるユーザデバイスからのメッセージで受信された、画像に対する判定された提案応答の追加の例を示すグラフィック表現である。これらの例では、提案された応答は、メッセージングアプリケーションのユーザインタフェースに表示され、本明細書に記載の１つまたは複数の機能を使用してメッセージングアプリケーションによって、またはメッセージングアプリケーションに対して生成することができる。
【０１２２】
図８は、受信された画像８０２と、画像８０２に基づいて、調整された言語モデルを使用して判定され、画像８０２への返信として第２のユーザによる選択のためにユーザインタフェース８００に提示された提案応答８０４とを表示するユーザインタフェース８００を示す。この例では、提案された応答は、提案された応答８０６（「美しい（beautiful）」）、提案された応答８０８（「きれい（pretty）」）、および提案された応答８１０（「それはどこ？（where is that?）」）を含む。応答８０６、８０８、および８１０のうちの１つまたは複数が選択されて、選択された応答を第１のユーザに通信ネットワークを介して送信することができる（例えば、確認プロンプトが表示されて、選択された提案応答が送られるべきことを第２のユーザが確認することを要求することが可能である）。代わりに、メッセージフィールド８１２が、第１のユーザに送信するためのテキストメッセージを入力するために第２のユーザによって使用され得る。応答８０６、８０８、および８１０は、画像ピクセルに基づいて直接判定された適切な応答であり得る。例えば、検出された画像特徴および画像に描かれた概念に基づいて判定された「湖」、「空」、および「木」などのラベルに基づいて提案応答が判定される他の技術によっては、応答８０６が判定されることはなかった可能性がある。
【０１２３】
図９は、同様に、受信された画像９０２と、画像９０２に基づいて、調整された言語モデルを使用して判定され、画像９０２への返信として第２のユーザによる選択のためにユーザインタフェース９００に提示された提案応答９０４とを表示するユーザインタフェース９００を示す。この例では、提案された応答は、提案された応答９０６（「楽しそう（looks like fun）」）、提案された応答９０８（「わーい（whee）」）、および提案された応答９１０（「楽しいね！（fun!）」）を含む。応答９０６、９０８、および９１０のうちの１つまたは複数が第２のユーザによって選択されて、選択された応答を第１のユーザに通信ネットワークを介して送信することができる。代わりに、メッセージフィールド９１２が、第１のユーザに送信するためのテキストメッセージを入力するために第２のユーザによって使用され得る。応答９０６、９０８、および９１０は、画像ピクセルに基づいて直接判定された適切な応答であり得る。例えば、検出された画像特徴および画像に描かれた概念に基づいて画像に対し判定された「人」、「男性」、「女性」、および「木」などのラベルに基づいて提案応答が判定される他の技術によっては、応答９０６が判定されることはなかった可能性がある。
【０１２４】
図１０は、受信された画像１００２と、画像１００２に基づいて調整された言語モデルを使用して判定され、画像１００２への返信として第２のユーザによる選択のためにユーザインタフェース１０００に提示される提案された応答１００４とを表示するユーザインタフェース１０００を同様に示す。この例では、提案された応答は、提案された応答１００６（「これはかわいい（those are cute）」）、提案された応答１００８（「いいね（I like it）」）、および提案された応答１０１０（「赤もありますか？（available in red?）」）を含む。応答１００６、１００８、および１０１０のうちの１つまたは複数が第２のユーザによって選択されて、選択された応答を第１のユーザに通信ネットワークを介して送信することができる。代わりに、メッセージフィールド１０１２が、第１のユーザに送信するためのテキストメッセージを入力するために第２のユーザによって使用され得る。応答１００６、１００８、および１０１０は、画像ピクセルに基づいて直接判定された適切な応答であり得る。例えば、検出された画像特徴および画像に描かれた概念に基づいて画像に対し判定された「衣服」および「ズボン」などのラベルに基づいて提案応答が判定される他の技術によっては、応答１００６が判定されることはなかった可能性がある。
【０１２５】
図１１は、受信された画像１１０２と、画像１１０２に基づいて調整された言語モデルを使用して判定され、画像１１０２への返信として第２のユーザによる選択のためにユーザインタフェース１１００に提示される提案された応答１１０４とを表示するユーザインタフェース１１００を同様に示す。この例では、提案された応答は、提案された応答１１０６（「素敵ですね（You look great）」）、提案された応答１００８（「彼女はあなたを愛している！（she loves you!）」）、および提案された応答１０１０（「幸せ者（lucky guy）」）を含む。応答１１０６、１１０８、および１１１０のうちの１つまたは複数が第２のユーザによって選択されて、選択された応答を第１のユーザに通信ネットワークを介して送信することができる。代わりに、メッセージフィールド１１１２が、第１のユーザに送信するためのテキストメッセージを入力するために第２のユーザによって使用され得る。応答１１０６、１１０８、および１１１０は、画像ピクセルに基づいて直接判定された適切な応答であり得る。例えば、検出された画像特徴および画像に描かれている概念に基づいて画像に対し判定された「人」、「女性」、「男性」、および「キス」などのラベルに基づいて提案応答が判定される他の技術によっては、応答１１０６が判定されることはなかった可能性がある。
【０１２６】
ボットの実装
ボットは自動化されたサービスで、１つまたは複数のコンピュータに実装されており、ユーザは主にテキストを通じて、例えばメッセージングアプリケーション１０３ａ／１０３ｂを介して対話する。ボットは、ボットが様々なメッセージングアプリケーションのユーザと対話できるように、ボットプロバイダによって実装され得る。いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂのプロバイダは、１つまたは複数のボットを提供することもある。いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂのプロバイダによって提供されるボットは、ボットが他のメッセージングアプリケーションに含まれることができるように、例えば他のプロバイダによって提供されるように構成され得る。ボットは他のモードに比べていくつかの利点を提供することが可能である。例えば、ボットは、クライアントデバイスにアプリケーションをインストールしたり、ウェブサイトにアクセスしたりすることなく、ユーザが新しいサービス（例えば、タクシー予約サービス、レストラン予約サービスなど）を試すことを許可することができる。さらに、ユーザは、テキストを介してボットと対話することができ、これは、ウェブサイト、ソフトウェアアプリケーション、電話通話、例えば、対話式音声応答（interactive voice response：ＩＶＲ）サービス、またはサービスとやり取りする他の方法を使用するのに必要な学習と比較して、最小限の学習しか必要とせず、または全く学習を必要としない。メッセージングサービスまたはアプリケーションにボットを組み込むことで、ユーザは、メッセージングサービス内で旅行の計画、買い物、イベントのスケジュール、情報の取得などのさまざまなタスクを他のユーザと協力することも可能となり、タスクを実行するためのさまざまなアプリケーション（例えば、タクシー予約アプリケーション、レストラン予約アプリケーション、カレンダーアプリケーションなど）間またはＷｅｂサイト間での切り替えのような面倒な操作を排除することができる。
【０１２７】
ボットは、メッセージングアプリケーション１０３ａ／１０３ｂを介して一または複数のユーザ（例えば、ユーザ１２５ａ〜ｎのうちのいずれか）と対話して情報を提供するか、またはメッセージングアプリケーション１０３内で特定のアクションを実施するように構成されたコンピュータプログラムまたはアプリケーション（例えば、ソフトウェアアプリケーション）として実装されてもよい。一例として、情報検索ボットは、インターネット上の情報を検索し、メッセージングアプリ内で最も関連性の高い検索結果を提示することができる。別の例として、トラベルボットは、例えば、メッセージングアプリ内で旅行およびホテルのチケットの購入を可能にし、メッセージングアプリ内でホテルを予約し、メッセージングアプリ内でレンタカーを予約することなどによって、メッセージングアプリケーション１０３を介して旅行手配をする能力を有し得る。別の例として、タクシーボットは、別個のタクシー予約アプリを起動することも呼び出すこともせずに、例えば、（ユーザ１２５が位置情報へのアクセスを許可する場合にクライアントデバイス１１５からタクシーボットによって取得される）ユーザの位置にタクシーを呼び出す能力を有し得る。別の例として、コーチ／チューターボットは、ユーザを個人指導して、例えば、試験に現れる可能性がある質問をし、ユーザの応答が正しいか誤っているかについてのフィードバックを提供することによって、メッセージングアプリ内のいくつかの科目の内容についてユーザを指導し得る。別の例として、ゲームボットは、メッセージングアプリ内においてユーザとは反対サイドまたは同じサイドでゲームをプレイすることができる。別の例として、コマーシャルボットは、例えば、商人のカタログから製品情報を検索し、メッセージングアプリを通じて購入を可能とすることによって、特定の商人からサービスを提供することができる。別の例として、インタフェースボットは、メッセージングアプリのユーザが遠隔デバイスまたは車両とチャットし、そこから情報を検索し、および／または遠隔デバイスまたは車両に命令を提供できるように遠隔デバイスまたは車両とインタフェースしてもよい。
【０１２８】
ボットの機能には、ユーザの意図を理解して実行することが含まれ得る。ユーザの意図は、ユーザの会話およびその文脈を分析し理解することによって理解され得る。ボットは、会話の変化するコンテキスト、または時間の経過とともに進化する会話に基づくユーザの変化する感情および／または意図を理解することもできる。例えば、ユーザＡがコーヒーのための会議を提案したが、ユーザＢがコーヒーを好まないと述べた場合、ボットはユーザＢにコーヒーに対する否定的な感情スコアを割り当て、会議のためにコーヒーショップを提案しない可能性がある。
【０１２９】
メッセージングアプリケーション１０３ａ／１０３ｂのユーザと通信することができるボットを実装することは、多くの利点を提供することができる。従来、ユーザは、請求書の支払い、食べ物の注文、チケットの予約などの活動を実行するためにソフトウェアアプリケーションまたはウェブサイトを利用することがある。そのような実施に関する問題は、複数の活動を実行するために、ユーザが複数のソフトウェアアプリケーションやウェブサイトをインストールまたは使用することを要求されることである。例えば、ユーザは、（例えば、公益事業会社からの）公共料金の請求書に対する支払いをするため、映画のチケットを購入するため（例えば、チケットサービスプロバイダからのチケット予約アプリケーション）、（例えばそれぞれのレストランから）レストランの予約をするために、異なるソフトウェアアプリケーションをインストールしなければならない場合があり、または各活動のためにそれぞれのウェブサイトを訪問する必要があり得る。そのような実施に関する別の問題は、ユーザが複雑なユーザインタフェース、例えばウィンドウ、ボタン、チェックボックス、ダイアログボックスなどのような複数のユーザインタフェース要素を使用して実装されたユーザインタフェースなどを学習しなくてはならないことである。
【０１３０】
したがって、１つまたは複数の説明された実装形態の利点は、単一のアプリケーションが、別個のウェブサイトへのアクセスまたはソフトウェアアプリケーションのインストールおよび実行を必要とせずに、ユーザが任意の数の相手との対話を含むアクティビティを実行できることであり、これはクライアントデバイス上のメモリ、ストレージ、および処理リソースの消費を削減する技術的効果を有する。説明された実装形態の利点は、会話型インタフェースにより、ユーザが、例えば複雑なユーザインタフェースを学習する必要なしに、そのような活動を完了することをより簡単かつ迅速とすることであり、これは計算リソースの消費を低減するという技術的効果を有する。説明された実装形態の別の利点は、ボットを実装することによって、例えば、通信サーバ、１つまたは複数のＷｅｂサーバでホストされているＷｅｂサイト、ＥメールサーバでホストされているカスタマーサポートＥメールなどのうちの一つまたは複数を使用して実装された無料電話番号など、様々な参加エンティティがより低いコストでユーザ対話を提供できるようになることであり、これは、ユーザ対話を可能とするために展開される計算リソースの必要性を減らすことができるという技術的効果を有する。説明された特徴の他の技術的効果は、通信ネットワークにわたってユーザタスクを完了するために必要とされるシステム処理および伝送リソースの消費の問題の縮小である。
【０１３１】
本明細書における特定の例は、ボットと一または複数のユーザとの間の対話を説明しているが、ボットとユーザ１２５との間の１対１の対話、ボットと二以上のユーザとの間の（例えば、グループメッセージングの会話における）１対多の対話、複数のボットとユーザとの間の多対１の対話、および複数のボットと複数のユーザとの間の多対多の対話などの様々なタイプの対話が可能である。さらに、いくつかの実装形態では、ボットは、メッセージングアプリケーション１０３を介して、ボット間の直接通信を介して、または組み合わせにより、他のボット（例えば、ボット１０７ａ／１０７ｂ、１０９ａ／１０９ｂ、１１１、１１３など）と対話するようにも構成され得る。例えば、レストラン予約ボットは、テーブルを予約するために特定のレストランのボットと対話することができる。
【０１３２】
特定の実施形態では、ボットは会話型インタフェースを使用して自然言語を使用してユーザと会話的に対話することができる。いくつかの実施形態では、ボットは、例えばレストランの住所の要求に応じて、「レストランＲの位置はＬである」などのテンプレートを使用するなど、テンプレートベースのフォーマットを使用して、ユーザと対話するための文章を作成することができる。場合によっては、例えばボットがユーザと対話するために自然言語を使用するかどうか、ボットがテンプレートベースの対話を使用するかどうかなど、ユーザが、ボット対話フォーマットを選択できるようにすることが可能であり得る。
【０１３３】
ボットが自然言語を使用して会話的に対話する場合、ボットの対話の内容および／またはスタイルは、自然言語処理を使用して判定される会話の内容、会話中のユーザの識別情報、１つまたは複数の会話コンテキスト（例えば、ユーザの対話に関する履歴情報、ソーシャルグラフに基づく会話内のユーザ間の関係）、外部条件（例えば、天気、交通）、ユーザのスケジュール、ユーザに関連する関連コンテキストなどのうちの一つまたは複数に基づいて動的に変化し得る。このような場合、ボットの対話の内容とスタイルは、会話に参加しているユーザが同意した要素のみに基づいて異なる。
【０１３４】
一例として、会話のユーザがフォーマルな言葉を使用していると判断された場合（例えば、俗語や絵文字がない、または最小限の俗語または絵文字）、ボットもフォーマルな言葉を使用してその会話内で対話することができ、逆もまた同様である。別の例として、会話中のユーザが（現在および／または過去の会話に基づいて）絵文字のヘビーユーザであると判定された場合、ボットは、１つまたは複数の絵文字を使用してそのユーザと対話することもできる。別の例として、会話中の２人のユーザがソーシャルグラフ内で遠い関係であると判定された場合（例えば、彼らの間に２人以上の中間ノードを有する、例えば、彼らが友達の友達の友達であることを示す）、ボットはその会話でよりフォーマルな言葉を使用し得る。会話に参加しているユーザが、ユーザのソーシャルグラフ、スケジュール、場所、またはユーザに関連するその他のコンテキストなどの要素をボットが利用することに同意していない場合、ボットの対話の内容およびスタイルは、このような要素を利用する必要がないデフォルトスタイル、例えばニュートラルスタイルであり得る。
【０１３５】
さらに、いくつかの実装形態では、一または複数のボットは、ユーザとの会話をやり取りするための機能を含むことができる。例えば、ユーザが、「＠ムービーボット映画を推薦してくれませんか？（@moviebot Can you recommend a movie?）」と入力することにより映画に関する情報を要求した場合、「ムービーボット（moviebot）」というボットが「コメディーの気分ですか？」と応答し得る。次に、ユーザは、例えば「いいえ」と応答する場合があり、これに対し、ボットは、「了解しました。「宇宙と星」というタイトルのＳＦ映画は素晴らしい評価を得ています。チケットを予約しましょうか？」と応答し得る。するとユーザは、「はい、私は午後６時より後に行くことができます。スティーブが参加できるかどうか確認してください」と表明することができる。ボットが自分の連絡先についての情報にアクセスすることに対するユーザの同意、およびボットからメッセージを受信することに対する友人スティーブの同意があると、ボットはユーザの友人スティーブにメッセージを送信し、適切な時間に映画チケットを予約するさらなるアクションを実行することが可能である。
【０１３６】
特定の実施形態では、会話に参加しているユーザは、例えば、ボット名またはボットハンドル（例えば、タクシー（taxi）、＠タクシーボット（@taxibot）、＠ムービー（@movies）など）を入力すること、音声コマンド（例えば、「銀行ボットを呼び出して」など）を使用すること、ユーザインタフェース要素（例えば、ボット名またはハンドルでラベル付けされたボタンまたはその他の要素）をアクティブにすることなどによって、特定のボットまたは特定のタスクを実行するボットを呼び出すことが可能とされ得る。ボットが呼び出されると、ユーザ１２５は、他のユーザ１２５にメッセージを送信するのと同様の方法で、メッセージングアプリケーション１０３ａ／１０３ｂを介してボットにメッセージを送信することができる。例えば、タクシーを呼ぶには、ユーザは「＠タクシーボットタクシーを呼んで（@taxibot get me a cab）」と入力することができ、ホテルを予約するには、ユーザは「＠ホテルボット私の近くの中華料理店で４人のテーブルを予約して（@hotelbot book a table for 4 at a Chinese restaurant near me）」と入力することができる。
【０１３７】
特定の実施形態では、ボットは、具体的に呼び出されることなく、メッセージング会話内の情報またはアクションを自動的に提案することができる。つまり、ユーザはボットを特別に呼び出す必要がないかもしれない。これらの実施形態では、ボットは、継続的にまたは別々の時点での会話の分析および理解に依存することができる。会話の分析は、特定のユーザのニーズを理解し、いつボットが支援を提案すべきかを識別するために使用することができる。一例として、ボットは、ユーザが情報を必要としていると判定した場合（例えば、ユーザが他のユーザに質問することに基づいて、複数のユーザがある情報を有していないことを示すことに基づいて）、何らかの情報を検索して答えを提案することが可能である。別の例として、複数のユーザが中華料理を食べることに興味を表明したと判定された場合、ボットは自動的にユーザの近くにある一連の中華レストランを提案してもよく、これは、レストランの場所、評価、ウェブサイトへのリンクなどの任意の情報の提案を含む。
【０１３８】
特定の実施形態では、ボットを自動的に呼び出したり、またはユーザがボットを明示的に呼び出すのを待ったりするのではなく、自動的な提案がメッセージング会話中の一または複数のユーザに対し行われて、一または複数のボットを呼び出すことができる。これらの実施形態では、会話は継続的にまたは別々の時点で分析されることができ、会話の分析は、特定のユーザのニーズを理解し、いつ会話内でボットを提案すべきかを識別するために使用することができる。
【０１３９】
ボットが具体的に呼び出されることなく、メッセージング会話内において情報またはアクションを自動的に提案することができる実施形態では、例えば、メッセージング会話に参加している一または複数のユーザが、ユーザの会話の分析をボットが実施することについて同意しない場合、そのような機能は無効にされる。さらに、そのような機能は、ユーザ入力に基づいて一時的に無効にされてもよい。例えば、会話がプライベートであることをユーザが示したとき、会話コンテキストの分析は、ユーザがボットをアクティブにするための入力を提供するまで一時停止される。さらに、分析機能が無効化されているという標示を、例えばユーザインタフェース要素を用いて、会話の参加者に提供することができる。
【０１４０】
様々な実装形態では、ボットは様々な構成で実装され得る。例えば、図１に示されるように、ボット１０５はクライアントデバイス１１５ａ上に実装される。この例では、ボットは、クライアントデバイス１１５ａに対してローカルなソフトウェアアプリケーション内のモジュールであり得る。例えば、ユーザがクライアントデバイス１１５ａ上にタクシーを呼ぶアプリケーションをインストールした場合、ボット機能はタクシーを呼ぶアプリケーションにモジュールとして組み込まれることができる。この例では、ユーザは、例えば「＠タクシーボットタクシーを呼んで（@taxibot get me a cab）」というメッセージを送信することによって、タクシーボットを呼び出すことが可能である。メッセージングアプリケーション１０３ｂは、タクシーを呼ぶアプリケーション内のボットモジュールを自動的に起動させることができる。このようにして、ユーザがメッセージングアプリケーション１０３を介してボットと会話することができるように、ボットはクライアントデバイス上にローカルに実装され得る。
【０１４１】
図１に示す別の例では、ボット１０７ａはクライアントデバイス１１５ａ上に実装されているように示され、ボット１０７ｂはメッセージングサーバ１０１上に実装されているように示されている。この例では、ボットは、ボット１０７ａ（サーバモジュール）およびボット１０７ｂ（クライアントモジュール）のそれぞれによって提供されるボット機能の一部を用いて、例えばクライアント−サーバコンピュータプログラムとして、実装することができる。例えば、ボットがハンドル＠カレンダー（@calendar）を有するスケジューリングボットである場合、ユーザ１１５ａは、「＠カレンダー夕方に洗濯物を受け取ることをリマインドして（@calendar remind me to pick up laundry in the evening）」と入力することによって、リマインダをスケジュールすることができ、これは、ボット１０７ｂ（クライアントモジュール）によって取り扱われ得る。この例を続けると、ユーザ１１５ａがボットに「ジムは４時に会えるかをチェックして」と言うと、ボット１０７ａ（サーバモジュール）はメッセージを交換するためにユーザであるジム（またはジムのスケジューリングボット）に連絡し、ユーザ１１５ａに応答を提供する。
【０１４２】
別の例では、ボット１０９ａ（サーバモジュール）はサーバ１３５上に実装され、ボット１０９ｂ（クライアントモジュール）はクライアントデバイス１１５上に実装される。この例では、ボット機能は、クライアントデバイス１１５、およびメッセージングサーバ１０１とは異なるサーバ１３５上に実装されたモジュールによって提供される。いくつかの実装形態では、ボットは、例えば、複数のクライアントデバイスおよびサーバ（例えば、クライアントデバイス１１５、サーバ１３５、メッセージングサーバ１０１など）にわたって分散されたモジュールを用いて、分散アプリケーションとして実装され得る。いくつかの実装形態では、ボットは、サーバアプリケーションとして実装されることができ、それは、例えば、メッセージングサーバ１０１上に実装されるボット１１１、およびサーバ１３５上に実装されるボット１１３である。
【０１４３】
クライアントのみ、サーバのみ、クライアント−サーバ、分散などの種々の実装は、様々な利点を提供することができる。例えば、クライアントのみの実装では、ボット機能をローカルで、例えば、ネットワークアクセスがなくても、提供することが可能であり、これは、例えば、ユーザがネットワークのサービスエリア外にいるとき、または少ないまたは限られたネットワーク帯域幅しか有しない任意のエリア内にいる場合のような、特定の状況において有利であり得る。サーバのみ、クライアント−サーバ、または分散構成などの１つまたは複数のサーバを含む実装では、例えば、金融取引、チケットの予約などのクライアントデバイスでローカルに提供できない特定の機能が許可され得る。
【０１４４】
図１では、ボットをメッセージングアプリケーション１０３とは異なるものとして示しているが、いくつかの実装形態では、１つまたは複数のボットは、メッセージングアプリケーション１０３の一部として実装され得る。ボットがメッセージングアプリケーション１０３の一部として実装される実装形態では、ボットを実行する前にユーザの許可が取得される。例えば、ボットがメッセージングアプリケーション１０３ａ／１０３ｂの一部として実行される場合、メッセージングアプリケーション１０３ａ／１０３ｂは、特定の活動を実施することができるボット、例えば、送受信メッセージを翻訳する翻訳ボット、ユーザのカレンダー上のイベントをスケジュールするスケジューリングボットなどを提供することが可能である。この例では、翻訳ボットはユーザの具体的な許可がある場合にのみアクティブになる。ユーザが同意しない場合、メッセージングアプリケーション１０３ａ／１０３ｂ内のボットは実装されない（例えば、無効化、削除など）。ユーザが同意する場合、ボットまたはメッセージングアプリケーション１０３ａ／１０３ｂは、メッセージングアプリケーション１０３ａ／１０３ｂを介してユーザ間で交換されるメッセージを限定的に使用して、特定の機能、例えば、翻訳、スケジューリングなどを提供することができる。
【０１４５】
いくつかの実装形態では、メッセージングアプリケーション１０３ａ／１０３ｂのプロバイダおよびユーザ１２５とは異なるサードパーティが、特定の目的のためにメッセージングアプリケーション１０３ａ／１０３ｂを介してユーザ１２５と通信することができるボットを提供し得る。例えば、タクシーサービスプロバイダはタクシーボットを提供し、発券サービスはイベントチケットを予約できるボットを提供し、銀行ボットは金融取引を実行する機能を提供することができる。
【０１４６】
メッセージングアプリケーション１０３を介してボットを実装する際、ボットは、特定のユーザ許可があった場合にのみユーザと通信することを許可される。例えば、ユーザがボットを呼び出すと、ボットは、例えば、ボットを呼び出すというユーザの動作に基づいて返信することができる。別の例では、ユーザは、ユーザに連絡することができる特定のボットまたはボットの種類を示すことができる。例えば、ユーザは、旅行ボットが自分と通信することを許可するが、ショッピングボットには許可を与えないことがある。この例では、メッセージングアプリケーション１０３ａ／１０３ｂは、旅行ボットがユーザとメッセージを交換することを許可するが、ショッピングボットからのメッセージをフィルタリングまたは拒否することができる。
【０１４７】
さらに、いくつかの機能（例えば、タクシーの呼出、フライト予約、友達への連絡など）を提供するために、ボットは、場所、支払い情報、連絡先などのユーザデータへのボットのアクセスをユーザが許可することを要求し得る。そのような場合、ユーザには、ボットへアクセスを許可または拒否するオプションが提示される。ユーザがアクセスを拒否した場合、ボットはメッセージで、例えば「申し訳ありませんが、タクシーを予約することができません」と、応答する可能性がある。さらに、ユーザは、限定されたやり方で情報へのアクセスを提供することができ、例えば、ユーザは、ボットの特定の起動時にのみタクシーボットが現在位置にアクセスすることを許可し、他の場合は許可しないことができる。異なる実装形態では、ユーザは、ボットがアクセスできる情報の種類、量、および粒度を制御することができ、そのような許可をいつでも変更することができる（例えば、ユーザインタフェースを介した）機能が提供されている。いくつかの実装形態では、ボットがそのようなデータにアクセスすることができるようになる前に、例えば、個人を識別可能な情報を削除するなど、情報を特定のデータ要素に制限するためにユーザデータが処理され得る。さらに、ユーザは、メッセージングアプリケーション１０３ａ／１０３ｂおよび１つまたは複数のボットによるユーザデータの使用を制御することができる。例えば、ユーザは、金融取引を行う能力を提供するボットが、取引完了前にユーザ認証を必要とすることを指定することができ、例えば、ボットは、「映画「宇宙と星」のチケットは各１２ドルです。このまま予約しますか？」というメッセージ、または「このシャツの最安値は送料込みで１２５ドルです。あなたの下４桁１２３４のクレジットカードに請求しますか？」というメッセージを送信し得る。
【０１４８】
いくつかの実装形態では、上記のシステム（例えば、図２〜１１について説明したシステム）によって生成された１つまたは複数の提案された応答は、ボットを起動または命令するために使用されるメッセージであり得る。例えば、システムは、受信された画像が、ボットによって提供される情報および／または１つまたは複数の機能によって支援されることになるコンテンツを含むかどうかを判断することができる。いくつかの例では、会話中の第１のユーザは、「Guess where?（どこだと思う？）」というテキストメッセージを第２のユーザに送信することができる。次に、第１のユーザは画像を第２のユーザの装置に送信する。システムは、提案された応答が画像コンテンツに関連する情報を見つけるための要求であり得ることを、単語「guess（だと思う）」を含むフレーズが示していると判断することができる。（「where（どこ）」、「what（何）」などの他の単語もそのような要求を示し得る。）応答として、システムは、関連情報を提供することができる適切なボットへの要求またはコマンドである提案された応答を生成することができる。例えば、提案された応答は、画像内に描かれた場所の名前を提供するためのマッピングボットへの要求であり得る（例えば、ボットがウェブ検索、地図および地図帳、受信された画像の地理的位置メタデータ等を使用してそのような情報を判定し得る場合）。いくつかの実装形態では、トレーニングメッセージデータが、（例えば、もしユーザの同意が得られているならば、１つまたは複数の画像検出または認識技術を使用して）画像内で検出された特定の種類の画像コンテンツについて適切な種類のボットを判定するために使用されることができ（ユーザの同意が得られている場合）、および／またはルールベースの文法が、画像コンテンツの種類および／または画像コンテンツで検出された概念に基づいて、提案応答においてどの種類のボットを呼び出すべきかを判定することが可能である。
【０１４９】
いくつかの実装形態では、ボット関連の提案された応答が可能な応答としてユーザに対し表示され、ユーザがその提案を選択する場合、ボットがメッセージ会話およびメッセージングインタフェースに追加され、例えばボット名で表されることが可能である。ボットは、会話において要求された情報を判定し、例えば、メッセージングユーザインタフェース内の第１のユーザおよび第２のユーザの両方へのメッセージとして出力することができる。
【０１５０】
別の例では、第１のユーザは、第２のユーザにとって外国語であるテキストを描く画像を送信する。システムは、適切な提案応答が、画像内のテキストを翻訳すること、およびメッセージ会話インタフェース内に翻訳されたテキストを出力するための言語ボットへの要求であると判定することができる。
【０１５１】
別の例では、第１のユーザは食品を描く画像を送信する。システムは、適切な提案応答が、１つまたは複数のアクセス可能なデータソース（例えばインターネット上）をチェックして、典型的にまたは具体的にその食品に含まれる成分および／またはカロリーを判定し、その情報をメッセージ会話インタフェースに出力するためのボットへの要求であると判定することができる。
【０１５２】
本明細書に記載の実装形態は、一般にメッセージングアプリケーションに関する。特定の実装形態は、１つまたは複数のメッセージング会話の画像コンテンツおよび／またはユーザ情報を（例えば、ユーザの介入なしに）自動的に分析して、メッセージングアプリケーション内でユーザに対し提案された応答を自動的に提供し得る。いくつかの例では、自動的に提案された応答は、メッセージングアプリケーションで応答するためにユーザによって選択されてもよく、および／またはユーザに代わって１つまたは複数の適切な応答として自動的に送信されてもよい。他の特定の例では、提案は、特定の非メッセージング機能をメッセージングアプリケーションに自動的に組み込むことができる。
【０１５３】
前述の説明は、画像を受信したことに応答して、提案された応答を提供するための技術を含むが、提案された応答は、会話において受信される任意の種類のメディアコンテンツに応答して提供され得る。例えば、そのようなコンテンツは、（例えば、チャットアプリケーションにおける）ステッカー、アニメ画像（例えば、シネマグラフ、ＧＩＦ画像など）、およびビデオを含み得る。さらに、前述の説明は、提案された応答をテキスト応答として説明しているが、他のタイプの応答も、例えば受信された画像の分析に基づいて提案されてもよい。例えば、他の応答は、提案された画像、提案されたステッカー、提案されたアニメ画像（例えば、シネマグラフ、ＧＩＦ画像など）および提案されたビデオのうちの１つまたは複数を含み得る。これらの提案を提供するために、提案モジュール３０４は、例えば、受信されたアイテム（例えば、テキスト、画像、ビデオ、ステッカー、アニメ画像など）内の識別された概念の、異なるタイプの応答内の概念との比較を実行することができ、テキストを含む提案された応答を参照して上述したように、適切な応答を選択することが可能である。ユーザが同意を提供する異なる実装形態では、応答のタイプはコンテキストに基づいて選択または優先順位付けされることが可能であり、例えば、ステッカーは、着信ステッカーに応答して、提案された応答として選択される場合があり、ビデオは、着信画像に応答して、提案された応答として選択される場合がある。
【０１５４】
特定の実装形態は、人間のユーザおよび／またはチャットボットとのメッセージングを可能にする。特定の実装形態では、チャットボットがメッセージング会話に参加しているかどうかに基づいて、自動メッセージ提案がカスタマイズされ得る。いくつかの例では、チャットボットがメッセージング会話中に存在しない場合、第１セットの自動メッセージ提案が提供され、チャットボットがメッセージング会話中に存在する場合、第２セットの自動的に提案されたメッセージが提供され得、第１セットおよび第２セットの応答は、少なくとも部分的に異なる。例えば、これらの実装は、チャットボットの従う会話ルールを採用し、そのルールに基づいてメッセージをユーザに提案することができる。これにより、チャットボットにより容易に理解される言語および形式でチャットボットと通信する際にユーザが抱える課題を軽減できる。
【０１５５】
いくつかの実装形態は、ユーザの場所に関連する地域、市場、および国のうちの少なくとも１つにおける他のメッセージに基づいて１つまたは複数のトレンディング応答（例えば、多くの異なるユーザによって送信される人気のメッセージコンテンツを含むメッセージ応答）を判定することを含み得る。１つまたは複数の判定された提案応答は、１つまたは複数のトレンディング応答を含み得る。いくつかの実装形態では、ユーザの状況、例えば地理的位置、休日、またはイベントなどが、提示のために提案された応答のうちの１つまたは複数を生成および判断するために用いられ得る。
【０１５６】
いくつかの実装形態では、１つまたは複数の提案された応答を判定することは、機械学習を使用してユーザのためのパーソナライズされたモデルを開発することに基づいてもよい。提案された応答を判定することは、ユーザの嗜好および／または通信中のユーザの前の動作に基づくことができる（そのような動作およびデータの使用についてのユーザの同意が得られた場合）。例えば、ユーザの嗜好は、含めることができる特定の単語を示すホワイトリスト、および／またはメッセージの提案に含めることができない特定の単語を示すブラックリストを含むことができる。ユーザの同意が得られた場合、メッセージの提案は、前の機会にユーザによって提供された句読点の使用、絵文字の使用、または他のコンテンツのうちの１つまたは複数に基づいて生成または修正され得る。
【０１５７】
提案された応答を提供するために使用されるモデル、例えば上述の調整された言語モデルは、クライアントデバイス１１５および／またはサーバ、例えばサーバ１０１および／または応答生成器１５０によって実装され得る。いくつかの実装形態では、会話の参加者のクライアントデバイスだけが会話コンテンツにアクセスできるように、会話を暗号化することができる。これらの実装形態では、それぞれのクライアントデバイスによって実装されたモデルが、提案された応答を提供するために使用されることが可能であり、サーバによって実装されたモデルは使用されない。例えば、ユーザがサーバによって実装されるモデルの使用について同意を与えない場合、クライアントデバイスによって実装されるモデルが使用されてもよい。いくつかの実装形態では、クライアント実装モデルは、サーバ実装モデルに基づくかまたはそれから導出され得る。いくつかの実装形態では、例えば、クライアントデバイスがクライアントモデルを実装する能力を欠いている場合、サーバモデルが使用され得、クライアントモデルは使用されない可能性がある。いくつかの実装形態では、クライアントモデルおよびサーバモデルの組み合わせが使用され得る。
【０１５８】
この文書に記載されている例は英語で示されている概念を利用しているが、提案は、任意の言語、例えばクライアントデバイス１１５に対して構成された言語、ロケール、または他の地理的情報、ユーザプリファレンスに基づいて選択された言語などで提供され得る。ユーザが会話のコンテキストの分析について同意を提供するいくつかの実装形態では、ユーザを含む（例えば、最近のメッセージにおける）様々な会話で使用された言語が検出されることが可能であり、メッセージの提案がその言語で提供され得る。
【０１５９】
いくつかの実装形態では、本明細書に記載の１つまたは複数の機能に従って、複数の調整された言語モデルが格納され、トレーニングされ、利用され得る。いくつかの例では、各調整された言語モデルは、特定の人間により使用される言語の単語および応答でトレーニングされ、かつ使用され得る。例えば、第１の調整された言語モデルは、具体的には英語の応答でトレーニングされることが可能であり、第２の調整された言語モデルは、具体的にはヒンディー語の応答でトレーニングされることが可能である。いくつかの実装形態では、複数の利用可能な調整された言語モデルのうちの１つが、ランタイム中に使用するために、現在のユーザメッセージング会話について判定された言語に基づいて選択され得る。例えば、ユーザの同意が得られた場合、ユーザの現在の会話における前のメッセージ（例えば、現在のメッセージより前の所定の時間内のメッセージ、または所定の数の送信された新しいメッセージ）が、（例えば、メッセージングアプリケーションデータベース１９９から）読み出されることが可能であり、会話の言語は、例えば、使用された単語およびアクセス可能な記憶装置から言語データにアクセスすることに基づいて、システムによって検出される。検出された言語が利用可能な調整された言語モデルの言語と一致する場合、一致する調整された言語モデルが使用のために選択されて、本明細書で説明されるように、画像に対して１つまたは複数の提案された応答をプログラム的に生成する。
【０１６０】
いくつかの実装形態では、複数の調整された言語モデルが、特定の画像に対する応答を生成するために使用され得る。例えば、受信された画像は、第１の調整された言語モデルおよび第２の調整された言語モデルに入力されることが可能であり、結果として得られる提案された応答のセットにおいて両方のモデルからの応答が使用される。いくつかの実装形態では、単一の調整された言語モデルがトレーニングされ、複数の言語に対する応答を提供するために使用され得、例えば、複数の言語において提供された応答が、調整された言語モデルのトレーニングに使用される。
【０１６１】
図１２は、本明細書に記載の１つまたは複数の機能を実装するために使用することができる例示的なデバイス１２００のブロック図である。一例では、デバイス１２００は、クライアントデバイス、例えば図１に示されるクライアントデバイス１１５のうちのいずれかを実装するために使用され得る。あるいは、デバイス１２００は、サーバデバイス、例えば、図１のメッセージングサーバ１０１、概念識別器１２０、およびコンテンツ分類器１３０を実装する。デバイス１２００は、上述したような任意の適切なコンピュータシステム、サーバ、または他の電子もしくはハードウェアデバイスであり得る。
【０１６２】
本明細書に記載の１つまたは複数の方法は、任意のタイプのコンピューティングデバイス上で実行することができるスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティングデバイス（携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス（腕時計、アームバンド、宝飾品、帽子、バーチャルリアリティゴーグルまたはメガネ、拡張現実ゴーグルまたはメガネなど）、ラップトップコンピュータなど）上で実行されるモバイルアプリケーション（「ａｐｐ」）において実行することができる。一例では、クライアント／サーバアーキテクチャを使用することができ、例えば、（クライアントデバイスとしての）モバイルコンピューティングデバイスは、ユーザ入力データをサーバデバイスに送信し、出力のための（例えば、表示のための）最終出力データをサーバから受信する。別の例では、すべての計算は、モバイルコンピューティングデバイス上のモバイルアプリ（および／または他のアプリ）内で実行することができる。別の例では、計算は、モバイルコンピューティングデバイスと１つまたは複数のサーバデバイスとの間で分割することができる。
【０１６３】
いくつかの実装形態では、デバイス１２００は、プロセッサ１２０２、メモリ１２０４、および入力／出力（Ｉ／Ｏ）インタフェース１２０６を含む。プロセッサ１２０２は、プログラムコードを実行し、デバイス１２００の基本動作を制御するための１つまたは複数のプロセッサおよび／または処理回路であり得る。「プロセッサ」は、データ、信号または他の情報を処理する任意の適切なハードウェアおよび／またはソフトウェアシステム、機構または構成要素を含む。プロセッサは、汎用中央処理装置（ＣＰＵ）、複数の処理装置、機能を達成するための専用回路、または他のシステムを有するシステムを含み得る。処理は特定の地理的位置に限定される必要はなく、または時間的な制限がある必要もない。例えば、プロセッサは、その機能を「リアルタイム」、「オフライン」、「バッチモード」などで実行することができる。処理の部分は、異なる時間に、異なる場所で、異なる（または同じ）処理システムにより実行することができる。コンピュータは、メモリと通信する任意のプロセッサであり得る。
【０１６４】
メモリ１２０４は、通常、プロセッサ１２０２によるアクセスのためにデバイス１２００に設けられ、プロセッサにより実行される命令を格納するのに適したランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的消去可能読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリなどの任意の適切なプロセッサ読み取り可能記憶媒体とすることができ、プロセッサ１２０２とは別個に配置され、および／またはそれと一体化され得る。メモリ１２０４は、オペレーティングシステム１２０８、メッセージングアプリケーション１２１６、およびデータ表示エンジン、ウェブホスティングエンジン、画像表示エンジン、通知エンジン、ソーシャルネットワーキングエンジンなどの他のアプリケーション１２１４を含む、プロセッサ１２０２によってサーバデバイス１２００上で動作するソフトウェアを格納することができる。いくつかの実装形態では、メッセージングアプリケーション１２１６は、プロセッサ１２０２が本明細書に記載の機能、例えば、図２の方法のうちのいくつかまたは全てを実施することを可能とする命令を含み得る。例えば、メッセージングアプリケーション１２１６は、本明細書で説明されたようなメッセージ提案を提供することができる。いくつかの実装形態では、メッセージングアプリケーション１２１６は、特徴ベクトル生成器１２１６Ａ、応答生成器１２１６Ｂ、およびユーザ対話モジュール１２１６Ｃなどの１つまたは複数のモジュールを含むことができ、および／または、これらのモジュールは、デバイス１２００と通信する他のアプリケーションまたはデバイスに実装されることが可能である。アプリケーションのうちの１つまたは複数は、例えば、選択可能なオプションまたはコントロール、および選択されたオプションに基づくデータを表示するためのユーザ入力に応答して表示されるユーザインタフェースを提供することができる。他のアプリケーションまたはエンジン１２１４は、例えば、画像編集アプリケーション、メディア表示アプリケーション、通信アプリケーション、ウェブホスティングエンジンまたはアプリケーションなどを同様にまたは代替的に含むことができる。本明細書で開示された１つまたは複数の方法は、いくつかの環境およびプラットフォーム、例えば、任意のタイプのコンピューティングデバイス上で実行できるスタンドアロンコンピュータプログラム、ウェブページを有するウェブアプリケーション、モバイルコンピューティングデバイス上で実行されるモバイルアプリケーション（「ａｐｐ」）などとして、動作することができる。
【０１６５】
あるいは、メモリ１２０４内のソフトウェアのいずれも、他の任意の適切な記憶場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ１２０４（および／または他の接続された単数または複数の記憶デバイス）は、１つまたは複数のメッセージ、１つまたは複数の分類法、電子百科事典、辞書、シソーラス、メッセージデータ、文法、ユーザの嗜好、および／または本明細書で説明された機能で使用される他の命令およびデータを格納することができる。メモリ１２０４および他の任意の種類の記憶装置（磁気ディスク、光ディスク、磁気テープ、または他の有形の媒体）は、「記憶装置」または「記憶デバイス」と見なすことができる。
【０１６６】
Ｉ／Ｏインタフェース１２０６は、サーバデバイス１２００を他のシステムおよびデバイスとインタフェースすることを可能にするための機能を提供することができる。インタフェースされたデバイスは、デバイス１２００の一部として含めることができ、または分離してデバイス１２００と通信することができる。例えば、ネットワーク通信デバイス、記憶デバイス（例えば、メモリおよび／またはデータベース１０６）、および入力／出力デバイスは、Ｉ／Ｏインタフェース１２０６を介して通信することができる。いくつかの実装形態では、Ｉ／Ｏインタフェースは、入力デバイス（キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサなど）および／または出力デバイス（表示デバイス、スピーカーデバイス、プリンター、モーターなど）のようなインタフェースデバイスに接続することができる。
【０１６７】
Ｉ／Ｏインタフェース１２０６に接続することができるインタフェースデバイスのいくつかの例は、コンテンツ、例えば、本明細書で説明されるような出力アプリケーションの画像、ビデオ、および／またはユーザインタフェースを表示するために使用できる表示デバイス１２２０を含み得る。表示デバイス１２２０は、ローカル接続（例えば、表示バス）および／またはネットワーク接続を介してデバイス１２００に接続されることができ、任意の適切な表示デバイスとすることができる。表示デバイス１２２０は、ＬＣＤ、ＬＥＤ、またはプラズマディスプレイスクリーン、ＣＲＴ、テレビ、モニタ、タッチスクリーン、３Ｄディスプレイスクリーン、または他の視覚的表示デバイスのような任意の適切な表示デバイスを含むことができる。例えば、表示デバイス１２２０は、モバイルデバイスに提供されるフラットディスプレイスクリーン、ゴーグルデバイスに提供される複数の表示スクリーン、またはコンピュータデバイス用のモニタスクリーンであり得る。
【０１６８】
Ｉ／Ｏインタフェース１２０６は、他の入力および出力デバイスとインタフェースすることができる。いくつかの例は、画像をキャプチャすることができる１つまたは複数のカメラを含む。いくつかの実装形態は、（例えば、キャプチャされた画像、音声コマンドなどの一部として）音声をキャプチャするためのマイクロフォン、音声を出力するためのオーディオスピーカデバイス、または他の入出力デバイスを提供することができる。
【０１６９】
説明を簡単にするために、図１２は、プロセッサ１２０２、メモリ１２０４、Ｉ／Ｏインタフェース１２０６、およびソフトウェアブロック１２０８、１２１４、および１２１６の各々について１つのブロックを示している。これらのブロックは、１つまたは複数のプロセッサまたは処理回路、オペレーティングシステム、メモリ、Ｉ／Ｏインタフェース、アプリケーション、および／またはソフトウェアモジュールを表すことができる。他の実装形態では、デバイス１２００は、示された構成要素の全てを有しない場合があり、かつ／または本明細書に示されたものの代わりにまたはそれに加えて他のタイプの要素を含む他の要素を有し得る。いくつかの構成要素は、本明細書のいくつかの実装形態で説明されるように、ブロックおよび動作を実行するものとして説明されているが、環境１００、デバイス１２００、同様のシステム、またはそのようなシステムに関連する任意の適切な１つまたは複数のプロセッサの任意の適切なコンポーネントまたはコンポーネントの組合せが、説明されているブロックおよび動作を実行し得る。
【０１７０】
本明細書に記載の方法は、コンピュータプログラム命令またはコードによって実装することができ、それらはコンピュータ上で実行することができる。例えば、コードは、１つまたは複数のデジタルプロセッサ（例えば、マイクロプロセッサまたは他の処理回路）によって実装することができ、半導体または固体メモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、リジッドメモリを含む、磁気、光学、電磁気、または半導体の記憶媒体のような、非一時的コンピュータ可読媒体（例えば、記憶媒体）を含むコンピュータプログラム製品に格納することができる。プログラム命令は、例えば、サーバ（例えば、分散システムおよび／またはクラウドコンピューティングシステム）から配信されるサービスとしてのソフトウェア（ＳａａＳ）の形で、電子信号に含まれ、電子信号として提供されることもできる。あるいは、１つまたは複数の方法をハードウェア（論理ゲートなど）で、またはハードウェアとソフトウェアの組合せで実装することができる。ハードウェアの例は、プログラマブルプロセッサ（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス）、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路（ＡＳＩＣ）などであり得る。１つまたは複数の方法は、システム上で実行されているアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションおよびオペレーティングシステムと共に実行されているアプリケーションまたはソフトウェアとして実行することができる。
【０１７１】
説明は、特定の実装形態に関して記載されているが、これらの特定の実装形態は単なる例示であり、限定的なものではない。例に示されている概念は、他の例および実装にも適用することができる。
【０１７２】
本明細書で説明する特定の実装形態が、ユーザに関する個人情報（例えば、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの位置および時間、ユーザのバイオメトリック情報、ユーザの活動およびデモグラフィック情報）を収集または使用し得る状況では、個人情報が収集されるかどうか、個人情報が保存されるかどうか、個人情報が使用されるかどうか、およびどのようにユーザに関する情報が収集され、保存され、使用されるかを制御する一または複数の機会がユーザに提供される。すなわち、本明細書で論じられるシステムおよび方法は、具体的にそのようにすることについて関連するユーザから明示的な許可を受けた場合に、ユーザの個人情報を収集し、保存し、かつ／または使用する。さらに、特定のデータは、個人を特定できる情報が削除されるように、保存または使用される前に１つまたは複数の方法で処理され得る。一例として、ユーザの識別情報は、個人を識別可能な情報が判定され得ないように取り扱われ得る。別の例として、ユーザの地理的位置は、ユーザの特定の位置が判定されることができないように、より大きな領域に一般化され得る。
【０１７３】
本開示に記載されている機能ブロック、動作、特徴、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組み合わせに統合または分割することができることに留意されたい。特定の実装形態のルーチンを実装するために、任意の適切なプログラミング言語およびプログラミング技術が使用され得る。手続き型またはオブジェクト指向などの異なるプログラミング技術が使用され得る。ルーチンは、単一の処理デバイスまたは複数のプロセッサ上で実行することができる。ステップ、動作、または計算は特定の順序で提示され得るが、異なる特定の実装形態においてはその順序は変更されてもよい。いくつかの実装形態では、本明細書において連続的なものとして示されている複数のステップまたは動作が同時に実行され得る。
【図１】
2019536135.tif 000004
【図２】
2019536135.tif 000005
【図３】
2019536135.tif 000006
【図４】
2019536135.tif 000007
【図５】
2019536135.tif 000008
【図６】
2019536135.tif 000009
【図７】
2019536135.tif 000010
【図８】
2019536135.tif 000011
【図９】
2019536135.tif 000012
【図１０】
2019536135.tif 000013
【図１１】
2019536135.tif 000014
【図１２】
2019536135.tif 000015
【手続補正書】
【提出日】平成31年4月17日(2019.4.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータにより実施される、メッセージングアプリケーションにおいてコンテンツを自動的に提案する方法であって、
第１のユーザによって第１のメッセージ内に投稿された画像を検出すること、
前記画像をプログラム的に分析して、前記画像を表す特徴ベクトルを判定すること、
前記特徴ベクトルに基づいて、前記第１のメッセージに対する１つまたは複数の提案された応答をプログラム的に生成することであって、前記１つまたは複数の提案された応答は、それぞれ前記第１のメッセージに対する会話型の返信であり、前記１つまたは複数の提案された応答をプログラム的に生成することは、
前の画像に対する前の応答でトレーニングされたモデルを用いて前記特徴ベクトルについて単語シーケンスに関連する確率を判定すること、
前記単語シーケンスに関連する確率に基づいて、前記単語シーケンスのうちの１つまたは複数の単語シーケンスを選択することであって、前記１つまたは複数の提案された応答は、選択された１つまたは複数の単語シーケンスに基づいて判定され、前記１つまたは複数の単語シーケンスを選択することは、第２のユーザによって提供された前のメッセージ応答に対する類似性に基づいて重み付けされた少なくとも１つの単語シーケンスを選択することを含む、前記選択すること
を含む、前記生成すること、
前記１つまたは複数の提案された応答が、前記第２のユーザに対する１つまたは複数の提案として前記メッセージングアプリケーションにおいてレンダリングされるようにすること
を含む、方法。
【請求項２】
前記１つまたは複数の提案された応答がレンダリングされるようにすることは、前記メッセージングアプリケーションにおいて前記１つまたは複数の提案された応答をレンダリングするためのコマンドを送信することを含む、請求項１に記載の方法。
【請求項３】
前記確率は、格納されたボキャブラリにおける各単語が前記１つまたは複数の単語シーケンスのうちの１つにおける次の単語である確率を含み、前記１つまたは複数の単語シーケンスを選択することは、判定された確率のうちの１つまたは複数の最高確率に関連付けられた１つまたは複数の単語シーケンスのうちの複数を選択することを含む、請求項１または２に記載の方法。
【請求項４】
前記モデルは、調整された言語モデルであり、前記単語シーケンスに関連する確率を判定することは、前記特徴ベクトルを前記調整された言語モデルに入力することを含む、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記調整された言語モデルは、長期短期記憶（ＬＳＴＭ）ネットワークを使用する、請求項４に記載の方法。
【請求項６】
前記１つまたは複数の単語シーケンスを選択することは、ビームサーチ技術を使用することを含む、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記１つまたは複数の単語シーケンスの各々は、前記単語シーケンスおよび前記特徴ベクトルに含まれる単語を符号化する単語埋め込みとして前記モデルによって使用されている、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記１つまたは複数の単語シーケンスは、前記前の応答から判定されたボキャブラリ内の複数の単語から判定されており、前記単語シーケンスに関連する確率を判定することは、前記ボキャブラリ内の各単語が、前記単語シーケンス内の次の単語になる確率を各単語シーケンスに対して反復的に判定することを含む、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
前記前の応答は、前記前の画像に対する応答のより大きいセットから選択されたものであり、前記前の応答は、前記応答のより大きいセットの他の前の応答よりも前記前の画像の特定のコンテンツに対してより特有のものである、請求項１乃至８のいずれか一項に記載の方法。
【請求項１０】
前記モデルは、調整された言語モデルであり、前記１つまたは複数の単語シーケンスを選択することは、反復的に、
前記特徴ベクトルおよび前の単語シーケンスを前記調整された言語モデルに供給して、前記特徴ベクトルおよび前の単語シーケンスに基づいて、新しい単語シーケンスのセットおよび前記新しい単語シーケンスに関連する確率を判定することであって、前記新しい単語シーケンスのうちの１つまたは複数は、前記前の単語シーケンスに対して少なくとも１つの追加の単語を有する、前記判定すること、
前記新しい単語シーケンスに関連する確率に基づいて新しい単語シーケンスのセットのサブセットを選択し、選択されたサブセットのうちの１つの単語シーケンスを次の反復のための前の単語シーケンスとして選択すること
を含む、請求項１乃至９のいずれか一項に記載の方法。
【請求項１１】
前記第２のユーザが前記提案された応答を選択すると、前記提案された応答をメッセージ応答として前記第１のメッセージに投稿することをさらに含む、請求項１乃至１０のいずれか一項に記載の方法。
【請求項１２】
前記１つまたは複数の単語シーケンスの各々が、単語シーケンスのホワイトリストに存在するかどうかをチェックすることをさらに含み、選択された１つまたは複数の単語シーケンスは、前記ホワイトリストに存在するものである、請求項１乃至１１のいずれか一項に記載の方法。
【請求項１３】
前記少なくとも１つの単語シーケンスは、前記第２のユーザによって提供された前のメッセージ応答に対する類似性に基づいてより大きく重み付けされたものである、請求項１乃至１２のいずれか一項に記載の方法。
【請求項１４】
前記調整された言語モデルを第１の言語に固有の第１の調整された言語モデルとして提供すること、
第２の言語に固有の第２の調整された言語モデルを提供すること、
前記第１のメッセージが受信されるメッセージ会話のための言語が、前記第１の言語であることを判定すること、
前記第１の調整された言語モデルを選択して、前記１つまたは複数の提案された応答をプログラム的に生成することにおいて用いられるようにすること
をさらに含む、請求項４または５に記載の方法。
【請求項１５】
メッセージングアプリケーションにおいてコンテンツを自動的に提案するためのシステムであって、
メモリと、
前記メモリにアクセスするように構成され、かつ動作を実行するように構成された少なくとも１つのプロセッサであって、前記動作は、
第１のユーザによって第１のメッセージ内に投稿された画像を検出すること、
前記画像をプログラム的に分析して、前記画像を表す特徴ベクトルを判定すること、
前記特徴ベクトルに基づいて前記第１のメッセージに対する１つまたは複数の提案された応答をプログラム的に生成することであって、前記１つまたは複数の提案された応答は、それぞれ、前記第１のメッセージに対する会話型の返信であり、前記１つまたは複数の提案された応答をプログラム的に生成することは、
前の画像に対する前の応答でトレーニングされたモデルを用いて前記特徴ベクトルについて単語シーケンスに関連する確率を判定すること、
前記単語シーケンスに関連する確率に基づいて、前記単語シーケンスのうちの１つまたは複数の単語シーケンスを選択することであって、前記１つまたは複数の提案された応答は、選択された１つまたは複数の単語シーケンスに基づいて判定され、前記１つまたは複数の単語シーケンスを選択することは、第２のユーザによって提供された前のメッセージ応答に対する類似性に基づいて重み付けされた少なくとも１つの単語シーケンスを選択することを含む、前記選択すること
を含む、前記生成すること、
前記１つまたは複数の提案された応答が、前記第２のユーザに対する１つまたは複数の提案としてメッセージングアプリケーションにレンダリングされるようにすること
を含む、システム。
【請求項１６】
前記モデルは、調整された言語モデルであり、前記１つまたは複数の単語シーケンスを選択する動作は、反復的に、
前記特徴ベクトルおよび前の単語シーケンスを前記調整された言語モデルに供給して、前記特徴ベクトルおよび前の単語シーケンスに基づいて、新しい単語シーケンスのセットおよび前記新しい単語シーケンスに関連する確率を判定することであって、前記新しい単語シーケンスのうちの１つまたは複数は、前記前の単語シーケンスに対して少なくとも１つの追加の単語を有する、前記判定すること、
前記新しい単語シーケンスに関連する確率に基づいて新しい単語シーケンスのセットのサブセットを選択し、選択されたサブセットのうちの１つの単語シーケンスを次の反復のための前の単語シーケンスとして選択すること
を含む、請求項１５に記載のシステム。
【請求項１７】
前記前の応答は、前記前の画像に対する応答のより大きいセットから選択されたものであり、前記前の応答は、前記応答のより大きいセットの他の前の応答よりも前記前の画像の特定のコンテンツに対してより特有のものである、請求項１５に記載のシステム。
【請求項１８】
前記モデルは、調整された言語モデルであり、前記調整された言語モデルは、入力として受信された前記特徴ベクトルによって調整されており、長期短期記憶（ＬＳＴＭ）ネットワークを使用する、請求項１５に記載のシステム。
【請求項１９】
プロセッサによって実行されると、動作を実行することによって、提案されたコンテンツを前記プロセッサに自動的に提供させるソフトウェア命令を格納する非一時的コンピュータ可読媒体であって、前記動作は、
第１のユーザによって第１のメッセージ内に投稿された画像を検出すること、
前記画像をプログラム的に分析して、前記画像を表す特徴ベクトルを判定すること、
前記特徴ベクトルに基づいて前記第１のメッセージに対する１つまたは複数の提案された応答をプログラム的に生成することであって、前記１つまたは複数の提案された応答は、それぞれ、前記第１のメッセージに対する会話型の返信であり、前記１つまたは複数の提案された応答をプログラム的に生成することは、
前の画像に対する前の応答でトレーニングされたモデルを用いて前記特徴ベクトルについて単語シーケンスに関連する確率を判定することであって、前記前の応答は、前記前の画像に対する応答のより大きいセットから選択されたものであり、前記前の応答は、前記応答のより大きいセットの他の前の応答よりも前記前の画像の特定のコンテンツに対してより特有のものである、前記単語シーケンスに関連する確率を判定すること、
前記単語シーケンスに関連する確率に基づいて、前記単語シーケンスのうちの１つまたは複数の単語シーケンスを選択することであって、前記１つまたは複数の提案された応答は、選択された１つまたは複数の単語シーケンスに基づいて判定される、前記選択すること
を含む、前記生成すること、
前記１つまたは複数の提案された応答を出力して、ユーザに対する１つまたは複数の提案としてメッセージングアプリケーションにおいてレンダリングされるようにすること
を含む、コンピュータ可読媒体。
【請求項２０】
前記モデルは、調整された言語モデルであり、前記調整された言語モデルは、入力として受信された前記特徴ベクトルにより調整されており、長期短期記憶（ＬＳＴＭ）ネットワークを使用する、請求項１９に記載のコンピュータ可読媒体。
【国際調査報告】
2019536135.tif 000016
2019536135.tif 000017
2019536135.tif 000018