本出願は、2019年4月17日に出願された「ネットワーク環境における信頼値及びクールダウン係数に基づくメッセージ選択及び送信(”MESSAGE SELECTION AND TRANSMISSION BASED ON CONFIDENCE VALUES AND COOL DOWN FACTORS IN A NETWORKED ENVIRONMENT”)」と題した米国仮特許出願第62/835,267号、及び2019年4月17日に出願された「ネットワーク環境におけるメッセージング・システムに対する間接アップデート(”INDIRECT UPDATES TO MESSAGING SYSTEMS IN A NETWORKED ENVIRONMENT”)」と題した米国仮特許出願第62/835,271号の優先権を主張し、それら双方はその全体が参照により本明細書に組み込まれるものとする。
本発明の特徴および利点は、以下に記載される詳細な説明を図面と併せて読むことにより、より明らかになる。図面では、全体的に同様の参照文字が対応する要素を示している。図面において、同様の参照番号は、概して、同一の、機能的に類似した、又は構造的に類似した要素を示す。
以下の様々な実施形態の説明を読む目的で、本明細書のセクションとそれぞれの内容を以下のように列挙すると参考になるだろう。
セクションAは、本明細書に記載された実施形態を実践するのに有用なネットワーク及びコンピューティング環境を説明する。
セクションBでは、ネットワーク環境において、信頼値及びクールダウン係数に基づいてメッセージを選択並びに送信するためのシステム並びに方法の実施形態について説明する。
セクションCでは、メッセージング・システムへの間接的なアップデートのためのシステム及び方法の実施形態について説明する。
セクションDでは、信頼値を使用してネットワーク環境全体でメッセージを選択及び送信するシステム並びに方法の実施形態について説明する。
セクションEでは、ネットワーク環境で異なるタイプのメッセージを選択して送信するシステム及び方法の実施形態について説明する。
A.ネットワーク及びコンピューティング環境
本解決策の特定の実施形態を説明することに加えて、本明細書に記載されている方法及びシステムに関連して、動作環境の側面、並びに関連するシステムコンポーネント(例えば、ハードウェア要素)を説明することが有用である。図1Aを参照すると、ネットワーク環境の一実施形態が描かれている。簡単に概説すると、ネットワーク環境は、1つ以上のネットワーク104を介して1つ以上のサーバ106a~106n(一般に、サーバ(複数)106、ノード106、又はリモートマシン(複数)106とも称される)と通信している1つ以上のクライアント102a~102n(一般に、ローカルマシン(複数)102、クライアント(複数)102、クライアントノード(複数)102、クライアントマシン(複数)102、クライアントコンピュータ(複数)102、クライアントデバイス(複数)102、エンドポイント(複数)102、又はエンドポイントノード(複数)102とも称される)を含む。いくつかの実施形態では、クライアント102は、サーバによって提供されるリソースへのアクセスを求めるクライアントノードとして、及び他のクライアント102a~102nのためのホストとされたリソースへのアクセスを提供するサーバとしての両方として機能する能力を有する。
図1Aは、クライアント102とサーバ106との間のネットワーク104を示しているが、クライアント102とサーバ106とは、同じネットワーク104上にあってもよい。いくつかの実施形態では、クライアント102とサーバ106の間に複数のネットワーク104が存在する。これらの実施形態の1つでは、ネットワーク104'(図示せず)がプライベートネットワークであり、ネットワーク104がパブリックネットワークであってもよい。これらの実施形態の別のものでは、ネットワーク104がプライベートネットワークであり、ネットワーク104'がパブリックネットワークであってもよい。これらの実施形態の更に別のものでは、ネットワーク104及び104'は両方ともプライベートネットワークであってもよい。図1Aを参照すると、ネットワーク環境の一実施形態が描かれている。簡単に概説すると、ネットワーク環境は、1つ以上のネットワーク104を介して1つ以上のサーバ106a~106n(一般に、サーバ(複数)106、ノード106、又はリモートマシン(複数)106とも呼ばれる)と通信している1つ以上のクライアント102a~102n(一般に、ローカルマシン(複数)102、クライアント(複数)102、クライアントノード(複数)102、クライアントマシン(複数)102、クライアントコンピュータ(複数)102、クライアントデバイス(複数)102、エンドポイント(複数)102、またはエンドポイントノード(複数)102とも呼ばれる)を含む。 いくつかの実施形態では、クライアント102は、サーバによって提供されるリソースへのアクセスを求めるクライアントノードとして、及び他のクライアント102a~102nのためのホストとされたリソースへのアクセスを提供するサーバとしての両方として機能する能力を有する。
ネットワーク104は、有線リンクまたは無線リンクを介して接続されてもよい。 有線リンクは、デジタル加入者線(DSL)、同軸ケーブル回線、又は光ファイバ回線を含んでもよい。無線リンクは、BLUETOOTH(登録商標)、Wi-Fi(登録商標)、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(WiMAX:登録商標)、赤外線チャネル、又は衛星バンドを含んでもよい。また、無線リンクには、1G、2G、3G、4Gのいずれかに該当する規格を含むモバイル機器間の通信に使用されるセルラーネットワーク規格が含まれる。ネットワーク規格は、国際電気通信連合が整備している仕様などの規格を満たすことで、1世代以上のモバイル通信規格として適格であり得る。例えば、3G規格はインターナショナルモバイルテレコミュニケーション-2000(IMT-2000)仕様に対応し、1G規格はインターナショナルモバイルテレコミュニケーションアドバンスト(IMT-Advanced)仕様に対応してもよい。セルラーネットワーク規格の例としては、AMPS、GSM、GPRS、UMTS、LTE、LTEアドバンスト、モバイルWiMAX、及びWiMAXアドバンストが挙げられる。セルラーネットワーク規格は、FDMA、TDMA、CDMA、SDMAなどの様々なチャネルアクセス方式を使用してもよい。いくつかの実施形態では、異なるタイプのデータが、異なるリンク及び規格を介して送信してもよい。他の実施形態では、同じ種類のデータが異なるリンクや規格を介して送信してもよい。
ネットワーク104は、任意のタイプ又は形態のネットワークであってもよい。ネットワーク104の地理的範囲は広く異なっていてもよく、ネットワーク104は、ボディエリアネットワーク(BAN)、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、例えばイントラネット、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、又はインターネットであってもよい。ネットワーク104のトポロジーは、どのような形態であってもよく、例えば、ポイントツーポイント、バス、スター、リング、メッシュ、又はツリーのいずれかを含んでいてもよい。ネットワーク104は、仮想的であり、他のネットワーク104’の1つ以上の層の上に位置するオーバーレイネットワークであってもよい。ネットワーク104は、本明細書に記載された動作をサポートすることができる当業者に知られているような任意のそのようなネットワークトポロジーであってもよい。ネットワーク104は、例えば、イーサネットプロトコル、インターネットプロトコルスイート(TCP/IP)、ATM(非同期転送モード)技術、SONET(同期光ネットワーク)プロトコル、又はSDH(Synchronous Digital Hierarchy)プロトコルを含む、異なる技術およびプロトコルの層又はスタックを利用してもよい。TCP/IPインターネットプロトコルスイートは、アプリケーション層、トランスポート層、インターネット層(例えば、IPv6を含む)、又はリンク層を含んでいてもよい。ネットワーク104は、放送ネットワーク、通信ネットワーク、データ通信ネットワーク、又はコンピュータネットワークの一種であってもよい。
いくつかの実施形態では、システムは、複数の論理的にグループ化されたサーバ106を含んでもよい。 これらの実施形態の1つでは、サーバの論理的グループは、サーバファーム38又はマシンファーム38と呼ばれてもよい。これらの実施形態の別のものでは、サーバ106は、地理的に分散していてもよい。他の実施形態では、マシンファーム38は、単一のエンティティとして管理されてもよい。さらに他の実施形態では、マシンファーム38は、複数のマシンファーム38を含む。各マシンファーム38内のサーバ106は、異種であってもよく、サーバ106又はマシン106の1つ以上は、1種類のオペレーティングシステム・プラットフォーム(例えば、ワシントン州レドモンドのMicrosoft社によって製造されたWINDOWS NT)に従って動作することができ、一方、他のサーバ106の1つ以上は、別の種類のオペレーティングシステム・プラットフォーム(例えば、Unix、Linux、又はMac OS X)に従って動作することができる。
一実施形態では、マシンファーム38内のサーバ106は、関連するストレージシステムとともに高密度ラックシステムに格納され、企業のデータセンターに配置されてもよい。この実施形態では、サーバ106をこのように統合することで、サーバ106及び高性能ストレージシステムを局所的な高性能ネットワーク上に配置し、システムの管理性、データセキュリティ、システムの物理的セキュリティ、及びシステム性能を向上させることができる。サーバ106とストレージシステムを集中化し、高度なシステム管理ツールと結合することで、サーバリソースをより効率的に使用することができる。
各マシンファーム38のサーバ106は、同じマシンファーム38の別のサーバ106に物理的に近接している必要はない。したがって、マシンファーム38として論理的にグループ化されたサーバ106のグループは、ワイドエリアネットワーク(WAN)接続又はメトロポリタンエリアネットワーク(MAN)接続を用いて相互に接続されてもよい。例えば、マシンファーム38は、国、州、都市、キャンパス、部屋などの異なる大陸又は異なる地域に物理的に配置されたサーバ106を含んでいてもよい。マシンファーム38内のサーバ106間のデータ伝送速度は、サーバ106がローカルエリアネットワーク(LAN)接続又は何らかの形態の直接接続を用いて接続されている場合には、向上させることができる。さらに、異種マシンファーム38、一種のオペレーティングシステムに従って動作する1つ以上のサーバ106を含み、一方、1つ以上の他のサーバ106は、オペレーティングシステムではなく1つ以上のタイプのハイパーバイザを実行することができる。これらの実施形態では、ハイパーバイザは、仮想ハードウェアのエミュレーション、物理ハードウェアのパーティショニング、物理ハードウェアの仮想化、及びコンピューティング環境へのアクセスを提供する仮想マシンの実行に使用されてもよく、複数のオペレーティングシステムがホストコンピュータ上で同時に実行されることを可能にする。ネイティブハイパーバイザは、ホストコンピュータ上で直接実行することができる。ハイパーバイザには、カリフォルニア州パロアルトに本社を置くVMWare社のVMware ESX/ESXi、Citrix Systems社が開発しているオープンソースのXenハイパーバイザ、Microsoft社などが提供するHYPER-Vハイパーバイザなどがある。ホスト型ハイパーバイザは、オペレーティングシステム内で第2のソフトウェアレベルで動作する。ホスト型ハイパーバイザの例としては、VMware Workstation、VIRTUALBOXなどがある。
マシンファーム38の管理は分散化されてもよい。例えば、1つ以上のサーバ106は、マシンファーム38のための1つ以上の管理サービスをサポートするコンポーネント、サブシステム、及びモジュールを備えてもよい。これらの実施形態の1つにおいて、1つ以上のサーバ106は、フェイルオーバー、データ複製、及びマシンファーム38の頑強性を高めるための処理技術を含む、動的データ管理の機能を提供する。各サーバ106は、固定記憶装置と通信してもよく、一部の実施形態では、動的記憶装置と通信してもよい。サーバ106は、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、SSL VPNサーバ、又はファイアウォールであってもよい。一実施形態では、サーバ106は、リモートマシン又はノードと称することもできる。
図1Bを参照すると、クラウドコンピューティング環境が描かれている。クラウドコンピューティング環境は、ネットワーク環境によって提供される1つ以上のリソースをクライアント102に提供してもよい。クラウドコンピューティング環境としては、1つ以上のネットワーク104を介してクラウド108と通信する、1つ以上のクライアント102a~102nを含んでもよい。クライアント102としては、例えば、シッククライアント、シンクライアント、及びゼロクライアントを含んでもよい。シッククライアントは、クラウド108又はサーバ106から切断された場合でも、少なくともいくつかの機能を提供してもよい。シンクライアント又はゼロクライアントは、機能を提供するために、クラウド108又はサーバ106への接続に依存してもよい。ゼロクライアントは、クライアントデバイスのオペレーティングシステム・データを取得するために、クラウド108又は他のネットワーク104若しくはサーバ106に依存してもよい。クラウド108は、バックエンドプラットフォーム、例えば、サーバ106、ストレージ、サーバファーム又はデータセンターを含んでもよい。
クラウド108は、パブリック、プライベート、又はハイブリッドであってもよい。 パブリッククラウドは、クライアント102又はクライアントの所有者に対する第三者によって維持されるパブリックサーバ106を含んでもよい。サーバ106は、上記または他の方法で開示されるように、遠隔地の地理的位置にオフサイトで配置されてもよい。パブリッククラウドは、パブリックネットワークを介してサーバ106に接続されていてもよい。プライベートクラウドは、クライアント102又はクライアントの所有者によって物理的に維持されるプライベートサーバ106を含んでもよい。プライベートクラウドは、プライベートネットワーク104を介してサーバ106に接続されてもよい。 ハイブリッドクラウド108は、プライベートネットワーク104及びパブリックネットワーク106の両方を含んでいてもよい。
クラウド108は更にクラウドベースの配信、例えば、サービス型ソフトウェア(SaaS:Software as a Service)110、サービス型プラットフォーム(PaaS:Platform as s Service)112、及びサービス型インフラストラクチャ(IaaS:Infrastructure as a Service)114を含んでもよい。IaaSとは、特定期間中に必要とされるインフラストラクチャリソースの使用をレンタルするユーザーを指す場合がある。IaaSプロバイダは、ストレージ、ネットワーク、サーバ、又は仮想化リソースを大規模なプールから提供し、ユーザーは必要に応じてより多くのリソースにアクセスして迅速にスケールアップできるようにすることができる。IaaSの例としては、ワシントン州シアトルのAmazon社が提供するAMAZON WEB SERVICES、テキサス州サンアントニオのRackspace US社が提供するRACKSPACE CLOUD、カリフォルニア州マウンテンビューのGoogle社が提供するGoogle Compute Engine、カリフォルニア州サンタバーバラのRightScale社が提供するRIGHTSCALEなどがある。PaaSプロバイダは、ストレージ、ネットワーク、サーバ、仮想化などのIaaSが提供する機能に加えて、オペレーティングシステム、ミドルウェア、ランタイムリソースなどの追加リソースを提供することができます。PaaSの例としては、ワシントン州レドモンドのMicrosoft社が提供するWINDOWS AZURE、Google社が提供するGoogle App Engine、カリフォルニア州サンフランシスコのHeroku社が提供するHEROKUなどがある。SaaSプロバイダは、ストレージ、ネットワーク、サーバ、仮想化、オペレーティングシステム、ミドルウェア、又はランタイムリソースなど、PaaSが提供するリソースを提供することができる。いくつかの実施形態では、SaaSプロバイダは、例えば、データ及びアプリケーションリソースを含む追加リソースを提供することができる。SaaSの例には、グーグル(Google)社が提供するGOOGLE APPS、カリフォルニア州サンフランシスコのセールスフォース社が提供するSALESFORCE、又はマイクロソフト社が提供するOFFICE 365がある。また、SaaSの例には、データストレージプロバイダ、例えば、カリフォルニア州サンフランシスコのドロップボックス(Dropbox)社が提供するDROPBOX、マイクロソフト社が提供するMicrosoft SKYDRIVE、グーグル社が提供するグーグル・ドライブ、又は、カリフォルニア州クパチーノのアップル社が提供するApple ICLOUDがあり得る。
クライアント102は、例えば、Amazon Elastic Compute Cloud(EC2)、Open Cloud Computing Interface(OCCI)、Cloud Infrastructure Management Interface(CIMI)、又はOpenStackの標準を含む、1つ以上のIaaS標準を使用してIaaSリソースにアクセスしてもよい。一部のIaaS標準は、クライアントがHTTPを介してリソースにアクセスすることを許可してもよく、Representational State Transfer(REST)プロトコル又はSOAP(Simple Object Access Protocol)を使用してもよい。クライアント102は、異なるPaaSインターフェースを用いてPaaSリソースにアクセスしてもよい。いくつかのPaaSインターフェースは、HTTPパッケージ、標準的なJava API、JavaMail API、Java Data Objects(JDO)、Java Persistence API(JPA)、Python API、例えばRuby用のRack、Python用のWSGI、又はPerl用のPSGIを含む異なるプログラミング言語用のウェブ統合API、又はREST、HTTP、XML、若しくは他のプロトコル上に構築される可能性のある他のAPIを使用する。クライアント102は、ウェブブラウザ(例えば、GOOGLE CHROME、マイクロソフト・インターネット・エクスプローラー、又はカリフォルニア州マウンテンビューのモジラ(Mozilla)社が提供するMozilla Firefox)によって提供されるウェブベースのユーザーインタフェースを使用して、SaaSリソースにアクセスしてもよい。また、クライアント102は、例えば、セールスフォース・セールス・クラウド、又はグーグルドライブアプリを含む、スマートフォン若しくはタブレットのアプリケーションを介してSaaSリソースにアクセスしてもよい。また、クライアント102は、例えば、ドロップボックス(DROPBOX)社DROPBOXのWindowsファイルシステムを含むクライアントのオペレーティングシステムを介してSaaSリソースにアクセスしてもよい。
いくつかの実施形態では、IaaS、PaaS、又はSaaSリソースへのアクセスを認証してもよい。例えば、サーバ又は認証サーバは、セキュリティ証明書、HTTPS、若しくはAPIキーを介してユーザーを認証してもよい。APIキーは、例えば高度暗号化標準(AES:Advanced Encryption Standard)などの様々な暗号化規格を含んでいてもよい。データリソースは、トランスポート・レイヤー・セキュリティ(TLS:Transport Layer Security)又はセキュア・ソケット・レイヤー(SSL:Secure Socket Layer)を介して送信されてもよい。
クライアント102及びサーバ106は、例えばコンピュータ、ネットワークデバイス又は設備で任意のタイプ及び形態のネットワーク上で通信し、本明細書に記載された動作を実行することができる任意のタイプ及び形態のコンピューティングデバイスとして展開、若しくは実行されてもよい。図1C及び図1Dは、クライアント102又はサーバ106の一実施形態を実践するのに有用なコンピューティングデバイス100のブロック図を示している。図1C及び図1Dに示すように、各コンピューティングデバイス100は、中央処理ユニット121及びメインメモリユニット122を含む。図1Cに示すように、コンピューティングデバイス100は、記憶装置128、インストールデバイス116、ネットワークインターフェース118、I/Oコントローラ123、ディスプレイデバイス124a~124n、キーボード126及びポインティングデバイス127(例えばマウス)を含んでもよい。記憶装置128は、限定されるものではないが、オペレーティングシステム、ソフトウェア、及びメッセージ選択システム(MSS)197のソフトウェアを含んでもよい。また、図1Dに示すように、各コンピューティングデバイス100は、追加のオプション要素、例えば、メモリポート103、ブリッジ170、1つ以上のI/Oデバイス130a~130n(総括的に参照番号130を使用して参照される)、及び中央処理ユニット121と通信するキャッシュメモリ140を含んでもよい。
中央処理ユニット121は、メインメモリ装置122からフェッチされた命令に応答して処理する任意の論理回路である。多くの実施形態において、中央処理ユニット121は、マイクロプロセッサユニットによって提供され、このマイクロプロセッサユニットとしては、例えば、カリフォルニア州マウンテンビューのIntel社によって製造されたもの、イリノイ州シャンバーグのMotorola社によって製造されたもの、カリフォルニア州サンタクララのNvidia社によって製造されたARMプロセッサ及びTEGRAシステム・オン・ア・チップ(SoC:system on a chip)、POWER7プロセッサ、ニューヨーク州ホワイトプレーンズのインターナショナル・ビジネス・マシーンズ(IBM)社によって製造されたもの、又はカリフォルニア州サニーベールのアドバンスド・マイクロ・デバイセズ(Advanced Micro Devices)社によって製造されたものがある。コンピューティングデバイス100は、これらのプロセッサのいずれかをベースにしてもよいし、本明細書に記載されているように動作可能な他のプロセッサをベースにしてもよい。中央処理ユニット121は、命令レベルの並列処理、スレッドレベルの並列処理、異なるレベルのキャッシュ、及びマルチコアプロセッサを利用してもよい。マルチコアプロセッサは、単一のコンピューティングコンポーネント上の2つ以上の処理ユニットを含んでもよい。マルチコアプロセッサの例としては、AMD PHENOM IIX2、INTEL CORE i5及びINTEL CORE i7がある。
メインメモリ装置122は、データを記憶することができ、任意の記憶場所がマイクロプロセッサ121によって直接アクセスされることを可能にする1つ以上のメモリチップを含んでもよい。メインメモリ装置122は、揮発性であり、ストレージ128メモリよりも高速であってもよい。メインメモリ装置122は、ダイナミック・ランダム・アクセス・メモリ(DRAM)、又はスタティック・ランダム・アクセス・メモリ(SRAM)、バーストSRAM若しくは同期バーストSRAM(BSRAM)、高速ページモードDRAM(FPM DRAM)、エンハンスドDRAM(EDRAM)、拡張データ出力RAM(EDO RAM)、拡張データ出力DRAM(EDO DRAM)、バースト拡張データ出力DRAM(BEDO DRAM)、シングル・データレート同期DRAM(SDR SDRAM)、ダブル・データレートSDRAM(DDR SDRAM)、ダイレクト・ラムバスDRAM(DRDRAM)若しくはエクストリーム・データレートDRAM(XDR DRAM)を含む任意の変種であってもよい。いくつかの実施形態では、メインメモリ122又はストレージ128は、不揮発性であってもよく、例えば、不揮発性リードアクセスメモリ(NVRAM)、フラッシュメモリ不揮発性スタティックRAM(nvSRAM)、強誘電体RAM(FeRAM)、磁気抵抗RAM(MRAM)、相変化メモリ(PRAM)、導電性架橋RAM(CBRAM)、シリコン-酸化膜-窒化膜-酸化膜-シリコン(SONOS)、抵抗性RAM(RRAM)、レーストラック(Racetrack)、ナノRAM(NRAM)、又はミリピードメモリなどである。メインメモリ122は、上述したメモリチップのいずれかをベースにしてもよいし、本明細書で説明したように動作可能な他の利用可能なメモリチップをベースにしてもよい。図1Cに示す実施形態では、プロセッサ121は、システムバス150(以下で詳細に説明する)を介してメインメモリ122と通信する。図1Dは、プロセッサがメモリポート103を介してメインメモリ122と直接通信するコンピューティングデバイス100の一実施形態を示す。例えば、図1Dでは、メインメモリ122はDRDRAMであってもよい。
図1Dは、メインプロセッサ121が、バックサイドバスと呼ばれることもある二次バスを介して、キャッシュメモリ140と直接通信する実施形態を示している。他の実施形態では、メインプロセッサ121は、システムバス150を使用してキャッシュメモリ140と通信する。キャッシュメモリ140は、通常、メインメモリ122よりも速い応答時間を有し、通常、SRAM、BSRAM、又はEDRAMによって提供される。図1Dに示す実施形態では、プロセッサ121は、ローカルシステムバス150を介して様々なI/Oデバイス130と通信する。中央処理ユニット121をI/Oデバイス130のいずれかに接続するために、PCIバス、PCI-Xバス、又はPCI-Expressバス、若しくはNuBusなど、様々なバスを使用することができる。I/Oデバイスがビデオディスプレイ124である実施形態では、プロセッサ121は、アドバンストグラフィックスポート(AGP)を使用して、ディスプレイ124又はディスプレイ124用のI/Oコントローラ123と通信してもよい。図1Dは、メインプロセッサ121が、ハイパートランスポート(HYPERTRANSPORT)、ラピッドアイオー(RAPIDIO)、又はインフィニバンド(INFINIBAND)の通信技術を介して、I/Oデバイス130b又は他のプロセッサ121’と直接通信するコンピュータ100の一実施形態を示している。また、図1Dは、ローカルバスと直接通信が混在する実施形態を示しており、プロセッサ121は、ローカルインターコネクトバスを用いてI/Oデバイス130aと通信する一方で、I/Oデバイス130bと直接通信する。
コンピューティングデバイス100には、多種多様なI/Oデバイス130a~130nが存在してもよい。入力デバイスは、キーボード、マウス、トラックパッド、トラックボール、タッチパッド、タッチマウス、マルチタッチパッド及びタッチマウス、マイクロフォン、マルチアレイマイクロフォン、お絵かきタブレット、カメラ、一眼レフカメラ(SLR)、デジタル一眼レフカメラ(DSLR)、CMOSセンサ、加速度センサ、赤外光センサ、圧力センサ、磁力センサ、角速度センサ、深度センサ、近接センサ、環境光センサ、ジャイロセンサ、又はその他のセンサを含んでもよい。出力デバイスには、ビデオディスプレイ、グラフィックディスプレイ、スピーカー、ヘッドフォン、インクジェットプリンター、レーザープリンター、及び3Dプリンターなどを含んでもよい。
デバイス130a~130nは、例えば、マイクロソフトKINECT、任天堂Wii用リモコンWiimote、任天堂Wii U用ゲームパッド(GAMEPAD)、又はアップルiPhoneを含む複数の入力デバイス若しくは出力デバイスの組み合わせを含んでもよい。いくつかのデバイス130a~130nは、入力及び出力の一部を組み合わせることによって、ジェスチャー認識入力を可能にする。いくつかのデバイス130a~130nは、認証及び他のコマンドを含む異なる目的のための入力として利用され得る顔認識を提供する。いくつかのデバイス130a~130nは、例えば、マイクロソフトKINECT、アップルによるiPhone用SIRI、グーグル・ナウ(Google Now)又はグーグル・ボイス・サーチ(Google Voice Search)を含む音声認識及び入力を提供する。
追加のデバイス130a~130nは、例えば、触覚フィードバックデバイス、タッチスクリーンディスプレイ、又はマルチタッチディスプレイなど、入力及び出力の両方の機能を有する。タッチスクリーン、マルチタッチディスプレイ、タッチパッド、タッチマウス、又は他のタッチ感知デバイスは、例えば、容量性、表面容量性、投影型容量性タッチ(PCT)、セル内容量性、抵抗性、赤外線、導波管、分散信号タッチ(DST)、セル内光学、表面音響波(SAW)、曲げ波タッチ(BWT)、又は力ベースの感知技術を含むタッチを感知するための異なる技術を使用してもよい。マルチタッチデバイスの中には、表面に2つ以上の接触点を設けることで、ピンチ、スプレッド、ローテーション、スクロールなどのジェスチャーを含む高度な機能を実現できるものがある。例えば、マイクロソフトPIXELSENSE又はマルチタッチ・コラボレーション・ウォール(Multi-Touch Collaboration Wall)を含むいくつかのタッチスクリーンデバイスは、テーブルの上や壁の上など、より大きな表面を有していてもよく、更に他の電子デバイスと相互作用してもよい。いくつかのI/Oデバイス130a~130n、ディスプレイデバイス124a~124n、又はデバイスグループは、拡張現実デバイスであってもよい。I/Oデバイスは、図1Cに示すように、I/Oコントローラ123によって制御されてもよい。I/Oコントローラは、例えば、キーボード126や、例えば、マウスや光学ペンなどのポインティングデバイス127など、1つ以上のI/Oデバイスを制御してもよい。さらに、I/Oデバイスは、コンピューティングデバイス100のためのストレージ又はインストールデバイス116を提供することもできる。さらに他の実施形態では、コンピューティングデバイス100は、ハンドヘルドUSBストレージデバイスを受け取るためのUSB接続(図示せず)を提供してもよい。さらなる実施形態では、I/Oデバイス130は、システムバス150と外部通信バス(例えば、USBバス、SCSIバス、FireWireバス、イーサネットバス、ギガビットイーサネットバス、ファイバチャネルバス、又はThunderboltバス)との間のブリッジであってもよい。
いくつかの実施形態では、ディスプレイデバイス124a~124nがI/Oコントローラ123に接続されてもよい。ディスプレイデバイスは、例えば、液晶ディスプレイ(LCD)、薄膜トランジスタLCD(TFT-LCD)、青相LCD、電子ペーパー(e-ink)ディスプレイ、フレキシルディスプレイ、発光ダイオードディスプレイ(LED)、デジタル光処理(DLP)ディスプレイ、液晶オンシリコン(LCOS)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、アクティブマトリクス有機発光ダイオード(AMOLED)ディスプレイ、液晶レーザディスプレイ、時間多重光シャッター(TMOS)ディスプレイ、又は3Dディスプレイを含んでもよい。3Dディスプレイの例では、例えば、ステレオスコピー、偏光フィルタ、アクティブシャッター、又はオートステレオスコピーを使用してもよい。また、ディスプレイデバイス124a~124nは、ヘッドマウントディスプレイ(HMD)であってもよい。いくつかの実施形態では、ディスプレイデバイス124a~124n又は対応するI/Oコントローラ123は、OPENGL若しくはDIRECTX API若しくは他のグラフィックライブラリを介して制御されるか、若しくはハードウェアサポートを有してもよい。
いくつかの実施形態では、コンピューティングデバイス100は、複数のディスプレイデバイス124a~124nを含むか、又はそれらに接続することができ、それらはそれぞれ、同じタイプ又は異なるタイプ若しくはフォームであってもよい。そのようなものとして、I/Oデバイス130a~130n又はI/Oコントローラ123のいずれかは、コンピューティングデバイス100による複数のディスプレイデバイス124a~124nの接続及び使用をサポート、有効化、又は提供するために、任意のタイプ若しくは形態の適切なハードウェア、ソフトウェア、若しくはハードウェアとソフトウェアの組み合わせを含んでもよい。例えば、コンピューティングデバイス100は、ディスプレイデバイス124a~124nをインターフェース、通信、接続、又はその他の方法で使用するために、任意のタイプ若しくはフォームのビデオアダプタ、ビデオカード、ドライバ、若しくはライブラリを含むことができる。一実施形態では、ビデオアダプタは、複数のディスプレイデバイス124a~124nにインターフェースするための複数のコネクタを含んでいてもよい。他の実施形態では、コンピューティングデバイス100は、複数のビデオアダプタを含み、各ビデオアダプタが1つ以上のディスプレイデバイス124a~124nに接続されていてもよい。いくつかの実施形態では、コンピューティングデバイス100のオペレーティングシステムの任意の部分は、複数のディスプレイ124a~124nを使用するように構成されてもよい。他の実施形態では、ディスプレイデバイス124a~124nのうちの1つ以上は、ネットワーク104を介して、コンピューティングデバイス100に接続された1つ以上の他のコンピューティングデバイス100a又は100bによって提供されてもよい。いくつかの実施形態では、ソフトウェアは、他のコンピュータの表示装置をコンピューティングデバイス100のための第2のディスプレイデバイス124aとして使用するように設計および構築されてもよい。例えば、一実施形態では、Apple iPadは、コンピューティングデバイス100に接続し、コンピューティングデバイス100のディスプレイを、拡張デスクトップとして使用することができる追加のディスプレイ画面として使用することができる。当業者であれば、コンピューティングデバイス100が複数のディスプレイデバイス124a~124nを有するように構成され得る様々な方法及び実施形態を認識し、理解するであろう。
再び図1Cを参照すると、コンピューティングデバイス100は、オペレーティングシステム又は他の関連ソフトウェアを格納するため、及び配信スケジューラ198のソフトウェアに関連する任意のプログラムなどのアプリケーションソフトウェアプログラムを格納するための記憶装置128(例えば、1つ以上のハードディスクドライブ又は独立したディスクの冗長アレイ)を含んでもよい。記憶装置128の例には、例えば、ハードディスクドライブ(HDD);CDドライブ、DVDドライブ、又はBLU-RAYドライブを含む光学ドライブ;ソリッドステートドライブ(SSD);USBフラッシュドライブ;若しくはデータを記憶するのに適した任意の他のデバイスが含まれる。一部のストレージデバイスは、複数の揮発性および不揮発性メモリを含んでもよく、例えば、ハードディスクとソリッドステートキャッシュを組み合わせたソリッドステートハイブリッドドライブを含む。一部の記憶装置128は、不揮発性、可変型、又は読み取り専用であってもよい。いくつかの記憶装置128は、内部にあり、バス150を介してコンピューティングデバイス100に接続されていてもよい。いくつかの記憶装置128は、外部にあって、外部バスを提供するI/Oデバイス130を介してコンピューティングデバイス100に接続してもよい。いくつかの記憶装置128は、例えば、AppleによるMACBOOK AIR用のリモートディスクを含む、ネットワーク104上のネットワークインターフェース118を介してコンピューティングデバイス100に接続してもよい。一部のクライアントデバイス100は、不揮発性の記憶装置128を必要とせず、シンクライアント又はゼロクライアント102であってもよい。また、一部の記憶装置128は、インストールデバイス116として使用され、ソフトウェアやプログラムのインストールに適していてもよい。 さらに、オペレーティングシステム及びソフトウェアは、起動可能な媒体、例えば、起動可能なCD、例えば、knoppix.netからGNU/Linuxディストリビューションとして入手可能なGNU/Linux用の起動可能なCDであるKNOPPIXから実行することができる。
クライアントデバイス100は、アプリケーション配布プラットフォームからソフトウェアやアプリケーションをインストールすることもできる。アプリケーション配布プラットフォームの例としては、Apple社が提供するiOS用のApp Store、Apple社が提供するMac App Store、Google社が提供するAndroid OS用のGOOGLE PLAY、Google 社が提供するCHROME OS用のChrome Webstore、Amazon社が提供するAndroid OS及びKINDLE FIRE用のAmazon Appstoreなどがある。アプリケーション配布プラットフォームは、クライアントデバイス102へのソフトウェアのインストールを容易にしてもよい。アプリケーション配布プラットフォームは、クライアント102a~102nがネットワーク104を介してアクセスする、サーバ106又はクラウド108上のアプリケーションのリポジトリを含んでもよい。アプリケーション配布プラットフォームは、様々な開発者によって開発及び提供されたアプリケーションを含んでもよい。クライアントデバイス102のユーザーは、アプリケーション配布プラットフォームを介して、アプリケーションを選択、購入又はダウンロードしてもよい。
さらに、コンピューティングデバイス100は、以下に限定されないが、標準的な電話回線LAN又はWANリンク(例えば、802.1、T1、T3、ギガビットイーサネット、Infiniband)、ブロードバンド接続(例えば、ISDN、フレームリレー、ATM、ギガビットイーサネット、Ethernet-over-SONET、ADSL、VDSL、BPON、GPON、FiOSを含む光ファイバ)、ワイヤレス接続、又は上記のいずれか若しくはすべての組み合わせを含むが、これらに限定されない。接続は、様々な通信プロトコル(例えば、TCP/IP、イーサネット、ARCNET、SONET、SDH、Fiber Distributed Data Interface(FDDI)、IEEE 802.1a/b/g/n/ac CDMA、GSM、WiMax、直接非同期接続)を使用して確立することができる。一実施形態では、コンピューティングデバイス100は、任意のタイプ又は形式のゲートウェイ若しくはトンネリングプロトコル、例えば、セキュア・ソケット・レイヤー(SSL)又はトランスポート・レイヤー・セキュリティ(TLS)、若しくはフロリダ州フォートローダーデールのシトリックス・システムズ社によって製造されたシトリックス・ゲートウェイ・プロトコル(Citrix Gateway Protocol)を介して、他のコンピューティングデバイス100’と通信する。ネットワークインターフェース118は、内蔵ネットワークアダプタ、ネットワークインターフェースカード、PCMCIAネットワークカード、EXPRESSCARDネットワークカード、カードバスネットワークアダプタ、ワイヤレスネットワークアダプタ、USBネットワークアダプタ、モデム、又はコンピューティングデバイス100と通信すること及び本明細書に記載されている動作を実行することが可能な任意のタイプのネットワークとのインターフェースに適したその他のデバイスで構成されてもよい。
図1B及び1Cに描かれている種類のコンピューティングデバイス100は、タスクのスケジューリング及びシステムリソースへのアクセスを制御するオペレーティングシステムの制御下で動作することができる。コンピューティングデバイス100は、マイクロソフトWINDOWSオペレーティングシステムの任意のバージョン、Unix及びLinuxオペレーティングシステムの異なるリリース、マッキントッシュコンピュータ用MAC OSの任意のバージョン、任意の組み込みオペレーティングシステム、任意のリアルタイム・オペレーティングシステム、任意のオープンソース・オペレーティングシステム、任意の専用オペレーティングシステム、モバイルコンピューティングデバイス用の任意のオペレーティングシステム、又はコンピューティングデバイス上で動作して本明細書に記載された動作を実行することができる任意の他のオペレーティングシステムなどのような任意のオペレーティングシステムを実行することができる。代表的なオペレーティングシステムには、これらに限定されるものではないが、ワシントン州レドモンドのマイクロソフト社が製造するWINDOWS 2000、WINDOWS Server 2012、WINDOWS CE、WINDOWS Phone、WINDOWS XP、WINDOWS VISTA、及びWINDOWS 7、WINDOWS RT、WINDOWS 8、カリフォルニア州クパチーノのApple社が製造するMAC OS及びiOS、並びに自由に利用できるオペレーティングシステムであるLinux、例えば、イギリス国ロンドンのカノニカル(Canonical)社が配布するLinux Mint ディストリビューション(以下、「ディストロ」)又はUbuntu、若しくはUnixやその他のUnixライクな派生OS、並びにカリフォルニア州マウンテンビューのGoogleが開発したAndroidなどが含まれる。例えばGoogleによるCHROME OSを含むいくつかのオペレーティングシステムは、例えばCHROMEBOOKSを含むゼロクライアント又はシンクライアントで使用することができる。
コンピュータシステム100は、ワークステーション、電話機、デスクトップコンピュータ、ラップトップ又はノートブックコンピュータ、ネットブック、ULTRABOOK、タブレット、サーバ、ハンドヘルドコンピュータ、携帯電話、スマートフォン若しくは他のポータブルテレコミュニケーションデバイス、メディア再生デバイス、ゲームシステム、モバイルコンピューティングデバイス、若しくは通信が可能な他のタイプ若しくはフォームのコンピューティング、テレコミュニケーション若しくはメディアデバイスのいずれかとすることができる。コンピューティングシステム100は、本明細書に記載されている操作を実行するのに十分なプロセッサパワーとメモリ容量を有している。いくつかの実施形態では、コンピューティングデバイス100は、デバイスと一致する異なるプロセッサ、オペレーティングシステム、及び入力デバイスを有していてもよい。サムスン社(Samsung)製GALAXYスマートフォンは、例えば、グーグル(Google)社が開発したAndroidオペレーティングシステムの制御下で動作する。GALAXYスマートフォンは、タッチインターフェースを介して入力を受け取る。
いくつかの実施形態では、コンピューティングデバイス100は、ゲームシステムである。例えば、コンピュータシステム100は、日本の東京にあるソニー株式会社が製造したPLAYSTATION 3、又はPERSONAL PLAYSTATION PORTABLE(PSP)、又はPLAYSTATION VITA装置、日本の京都にある任天堂株式会社が製造した任天堂DS、任天堂3DS、任天堂WII、又は任天堂WII U装置、米国ワシントン州レドモンドにあるマイクロソフト社が製造したXBOX 360装置などで構成されてもよい。
いくつかの実施形態では、コンピューティングデバイス100は、カリフォルニア州クパチーノのアップル・コンピュータ社が製造したApple IPOD、IPOD Touch、及びIPOD NANOラインのデバイスなどのデジタルオーディオプレーヤである。デジタルオーディオプレーヤの中には、例えば、ゲームシステムや、デジタルアプリケーション配信プラットフォームからのアプリケーションによって利用可能な任意の機能を含む、他の機能を有するものもある。例えば、IPOD Touchは、Apple App Storeにアクセスしてもよい。いくつかの実施形態では、コンピューティングデバイス100は、MP3、WAV、M4A/AAC、WMA保護されたAAC、AIFF、Audible audiobook、アップルロスレス(Apple Lossless)オーディオファイルフォーマット、及び.mov、m4v、並びに.mp4 MPEG-4(H.264/MPEG-4 AVC)ビデオファイルフォーマットを含むがこれらに限定されないファイルフォーマットをサポートするポータブルメディアプレーヤ又はデジタルオーディオプレーヤである。
いくつかの実施形態では、コンピューティングデバイス100は、タブレットであり、例えば、アップル社によるデバイスのIPADライン、サムソン社によるデバイスのGALAXY TABファミリー、又はワシントン州シアトルのアマゾン社によるKINDLE FIREなどである。他の実施形態では、コンピューティングデバイス100は、電子ブックリーダーであり、例えば、アマゾン社のKINDLEファミリーのデバイス、又はニューヨーク州ニューヨーク市のバーンズ・アンド・ノーブル(Barnes & Noble)社のNOOKファミリーのデバイスである。
いくつかの実施形態では、通信デバイス102は、デバイスの組み合わせ、例えば、デジタルオーディオプレーヤまたはポータブルメディアプレーヤと組み合わせたスマートフォンを含む。例えば、これらの実施形態の1つは、スマートフォンであり、例えば、アップル社製のスマートフォンのIPHONEファミリー、サムスン社製のスマートフォンのサムスンGALAXYファミリー、又はモトローラ社DROIDファミリーのスマートフォンである。さらに別の実施形態では、通信デバイス102は、ウェブブラウザと、マイク及びスピーカーシステム、例えばテレフォニーヘッドセットとを備えたラップトップ又はデスクトップコンピュータである。これらの実施形態では、通信デバイス102はウェブ対応であり、電話を受信したり開始したりすることができる。いくつかの実施形態では、ラップトップ又はデスクトップコンピュータは、ビデオチャット及びビデオコールを可能にするウェブカム又は他のビデオキャプチャデバイスも備えている。
いくつかの実施形態では、ネットワーク104内の1つ以上のマシン102、106のステータスが、一般にネットワーク管理の一部として監視される。これらの実施形態の1つでは、マシンのステータスは、負荷情報(例えば、マシン上のプロセスの数、CPU及びメモリの使用率)の識別、ポート情報(例えば、利用可能な通信ポートの数及びポートアドレス)の識別、又はセッションステータス(例えば、プロセスの持続時間及びタイプ、並びにプロセスがアクティブであるかアイドルであるか)の識別を含んでもよい。これらの実施形態の別のものでは、この情報は、複数のメトリックによって識別することができ、複数のメトリックは、本明細書に記載されている本ソリューションの動作の任意の側面と同様に、負荷分散、ネットワークトラフィック管理、及びネットワーク障害回復における決定に向けて、少なくとも部分的に適用することができる。上述の動作環境及びコンポーネントの側面は、本明細書に開示されるシステム及び方法の文脈において明らかになるであろう。
B.ネットワーク環境における信頼値とクールダウン係数に基づくメッセージの選択と送信
パーソナライズされたメッセージング・システムのユーザーは、メッセージ疲れに陥る可能性があり、それにより、意図された受信者に対するメッセージの有効性が低下する。メッセージ疲れは、ネットワークを介してユーザーのクライアントデバイスに送信されたメッセージがクライアントデバイスで役割を果たさないため、コンピュータ計算リソース及び帯域幅の浪費につながる。ユーザーとのインタラクションやレスポンスを必要とするアプリケーションでは、パーソナライズされたメッセージングは、ユーザー・エンゲージメントの目標を達成するためのツールとなる。
本開示では、信頼値及びクールダウン係数に基づいてメッセージを選択並びに送信するためのシステム並びに方法について説明する。パーソナライズされたメッセージング・システムは、関連するメッセージを関連する時刻にユーザーに送信することができる。パーソナライズされたメッセージング・システムは、ユーザー・エンゲージメント及びアプリケーションの有効性を高めることができる。各ユーザーに合わせて適切なタイミングで配信される適切なコンテンツは、ユーザーのアプリケーションへのエンゲージメントに好影響を与えることができる。パーソナライズされた関連性の高いメッセージがアプリケーションを通じて各ユーザーに適時に配信されることで、健康、ウェルビーイング、フィットネス、生活の質全体を向上させるためにユーザーが実際に行う行動につなげることができる。
メッセージ疲れに関連する課題の一部、及び他の関連する課題に対処するために、本開示は、複数のメッセージオブジェクトを呼び出すことができるメッセージ選択システムに関する。これらのメッセージオブジェクトは、呼び出されると、複数のメッセージを生成することができる。メッセージ選択システムは、各メッセージについて信頼値を生成し、各メッセージに関連付けられた信頼値を使用して、クライアントデバイスのアプリケーションに送信する1つ以上のメッセージを選択することができる。メッセージ選択システムは、選択された各メッセージに関連付けられた信頼値を、クールダウン係数に基づいて調整することができる。メッセージ選択システムは、クールダウン係数を使用して、クライアントデバイスによって最後のメッセージが受信されてからの時間、クライアントデバイスのユーザーが所定の時間内に受信することを選択したメッセージの総数、及びクライアントデバイスのユーザーがアウェイクか又はアクティブである時間の長さを含むがこれらに限定されない様々な要因に基づいて、選択されたメッセージのそれぞれの信頼値を調整することができる。そして、メッセージ選択システムは、選択されたメッセージのそれぞれの調整された信頼値に基づいて、選択されたメッセージの1つ以上を送信する決定を行うことができる。
メッセージ選択システムは、ユーザーがメッセージ疲れを感じる可能性(尤度)を低減するように、クライアントデバイスに最後のメッセージが配信されてからの時間に基づいてメッセージが所望のエンドポイント又は目標値を達成する可能性をクライアントデバイスに最後のメッセージが配信されてからの時間に基づいて調整しながら、その可能性に基づいてメッセージを選択することができる。メッセージ選択システムは、メッセージが意図された効果をもたらす可能性に基づいて、ユーザーのクライアントデバイスにメッセージを選択的に送信又は送付することで、ユーザーがメッセージ疲れを感じる可能性を低減することができる。個々のユーザーがメッセージ疲れを経験する原因となるメッセージの数や頻度は様々であるため、メッセージ選択システムは、各ユーザーのメッセージの好み、アプリケーションのエンゲージメント、及び類似のメッセージに対する反応に関する情報を組み込んで、適切なタイミングでパーソナライズされたメッセージを配信するためのフレームワーク又はモデルを構築することができる。
メッセージ選択システムによってユーザーのそれぞれのクライアントデバイスに送信されたメッセージは、それぞれのクライアントデバイス上で実行されるアプリケーションを介して開くことができる。クライアントデバイス上で実行されるアプリケーションは、クライアントデバイスのユーザーに対するメッセージ選択システムからのメッセージを表示し、ユーザーにアクションを実行するように促したり、ユーザーのレスポンスを引き出したりすることができる。アプリケーションは、メッセージがクライアントデバイスで受信されたとき、アプリケーションがメッセージを表示したとき、ユーザーがアプリケーション上で実行したアクティビティ、ユーザーがクライアントデバイス上で実行したアクティビティなどに対応するデータを含む情報をメッセージ選択システムにフィードバックするように構成することができる。メッセージ選択システムは、ユーザーのクライアントデバイスから収集又は受信した情報を使用して、ユーザーにアクションを実行させる上でのメッセージの有効性、又はユーザーのレスポンスの内容とタイミングを評価し、個々のユーザーに送信されるメッセージのパーソナライゼーションを改善したり、いくつかの実施形態では、メッセージに対するユーザーとその行動を監視したりすることができる。
特定の実施形態では、メッセージ選択システムは、複数のユーザーのユーザープロファイルを維持することができる。各ユーザープロファイルに対して、メッセージ選択システムは、所定の時間間隔でメッセージオブジェクトを呼び出すことができるインボケータ(invocator)を実行することができる。各メッセージオブジェクトは、ユーザープロファイルに関連付けられたクライアントデバイスへの送信候補であるメッセージテンプレートを使用して、メッセージ候補を生成することができる。メッセージ選択システムのメッセージオブジェクトエバリュエータは、コンテキストデータをメッセージオブジェクトのモデルに組み込み、メッセージオブジェクトが生成したメッセージ候補に関連する信頼値を出力することができる。信頼値は、ユーザーに送信されたメッセージ候補が意図された効果を持つ可能性を示すことができる。メッセージオブジェクトエバリュエータは、特定の制約を満たすメッセージオブジェクトの信頼値を出力することができる。メッセージオブジェクトエバリュエータは、一定の条件に基づいてメッセージ候補のそれぞれに関連する信頼値を評価し、クールダウン係数に基づいて信頼値をアップデートし、アップデートされた信頼値が所定の閾値を越えた場合に、メッセージ候補をクライアントデバイスに送信することを決定することができる。
メッセージ選択システムは、ユーザープロファイルに関連付けられたクライアントデバイス上で実行されるアプリケーションのレポーティングエージェントからレスポンスデータを受け取ることができる。メッセージ選択システムのレスポンスエバリュエータは、クライアントデバイスに送信された前回のメッセージに対応するレスポンスデータに基づいて、モデルの性能を向上させるように、レスポンスデータをメッセージオブジェクトのモデルに組み込むことができる。レスポンスデータは、メッセージオブジェクトのモデルを改善するために、メッセージオブジェクトの目標値(又は所望のエンドポイント)と比較することができる。このようにして、メッセージ選択システムは、ユーザーのメッセージの好みやレスポンスから学習し、将来のメッセージ候補の選択プロセスを改善するとともに、将来のメッセージ候補について計算される信頼値の品質を改善することができる。そうすることで、メッセージ選択システムは、ユーザープロファイルに関連付けられたクライアントデバイスへの送信候補であるメッセージテンプレートを使用して、ユーザーがメッセージに関与又は応答し、メッセージの所望のエンドポイントを達成する可能性を高めると同時に、より少ないメッセージを選択し、ユーザークライアントデバイスに送信することができる。
本開示の少なくとも1つの態様によれば、方法には、1つ以上のプロセッサによって、複数のユーザー及び複数のメッセージオブジェクトを識別することを含むことができる。本方法は、1つ以上のプロセッサによって、1つ以上のメッセージオブジェクトに対する複数のユーザーのそれぞれのコンテキストデータを検索することを含み得る。本方法は、1つ以上のプロセッサによって、1つ以上のメッセージオブジェクト及びコンテキストデータに基づいて、メッセージ候補を生成することを含むことができる。本方法は、1つ以上のプロセッサによって、メッセージ候補のそれぞれに対する信頼値をクールダウン係数に基づいてアップデートし、アップデートされた信頼値を生成することを含むことができる。本方法は、1つ以上のプロセッサによって、アップデートされた信頼値に基づいてメッセージ候補を選択することを含むことができる。本方法は、1つ以上のプロセッサによって、アップデートされた信頼値が所定の閾値を越えることに基づいて、選択されたメッセージ候補を送信することを含むことができる。
図2は、競合メッセージ選択のための環境200のブロック図を示す。環境200は、メッセージ選択システム202と、少なくとも1つのリモートコンピューティングデバイス270とを含む。メッセージ選択システム202は、ネットワーク104を介してリモートコンピューティングデバイス270に送信する1つ以上のメッセージを選択し、リモートコンピューティングデバイス270からリモートコンピューティングデバイス270に送信された1つ以上のメッセージに応じて実行されたアクションに対応するデータを含むデータを受信することができる。
環境200は、複数のリモートコンピューティングデバイス270を含むことができる。複数のリモートコンピューティングデバイス270は、同じユーザーに属することができ、又はメッセージ選択システム202の異なるユーザー若しくはエンティティに属することができる。各リモートコンピューティングデバイスは、メッセージ選択システム202と通信するように構成されたアプリケーション272を含むことができる。アプリケーション272は、メッセージ選択システム202からメッセージを受信することに応答してコンピューティングデバイス上で実行されたアクションに対応するデータを提供するように構成されたレポーティングエージェント274を含むことができる。いくつかの実施形態では、アプリケーション272は、メッセージ選択システム202によって生成及び送信されたメッセージを表示するだけでなく、メッセージ選択システム202にデータを提供するように構成することができる。アプリケーション272及びレポーティングエージェントに関する追加の詳細を以下に提供する。
ここで、メッセージ選択システム202を参照すると、メッセージ選択システム202はメモリ204を含む。メモリ204は、複数のメッセージオブジェクト206を含む。各複数のメッセージオブジェクト206は、メッセージテンプレート208、モデル210、制約212、及び目標値214を含むことができる。また、メモリ204は、少なくとも1つのユーザープロファイル222及び履歴データ224を含むことができるコンテキストデータ220を含む。また、メモリは、メッセージ候補240と、各メッセージ候補240対する各信頼値242とを格納することができる。本明細書で説明されるように、メッセージ選択システム202は、メッセージオブジェクトを使用してメッセージ候補240を生成し、更にメッセージ候補240に対する各信頼値242を計算することができる。
また、メッセージ選択システム202は、各メッセージ候補240を評価するために、インボケータ250、メッセージオブジェクトエバリュエータ252、及び閾値マネージャ254を含む。インボケータ250は、複数のメッセージオブジェクト206を選択し、識別し、呼び出すためのアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、又は他の実行可能なロジックとすることができる。インボケータ250は、定期的な間隔でスケジュールされたcron(クロン)ジョブによって開始される呼び出しプロセスを開始することができる。cronは、Unix系コンピュータオペレーティングシステムにおける時間ベースのジョブスケジューラであり、ジョブ(例えば、コマンド、又はシェルスクリプト)をスケジュールするために使用することができる。呼び出しプロセスは、時間に基づいて実行することができる(例えば、月曜日の午前8時に呼び出しプロセスを実行したり、30分ごとに呼び出しプロセスを実行したり、隔週の木曜日に呼び出しプロセスを実行したりすることができる)。呼び出しプロセスは、イベントに基づいて行うことができる(例えば、呼び出しプロセスは、メッセージ選択システム202が、後述するようにリモートコンピューティングデバイス270からデータを受信したときに実行することができる)。インボケータ250は、特定のユーザーグループのために呼び出しプロセスを開始することができる。例えば、インボケータ250は、アプリケーション272の所定の機能を使用して、ユーザーのサブセットに対して呼び出しプロセスを開始することができる。インボケータ250は、異なるユーザーに対して、異なる呼び出しプロセスを開始することができる。例えば、インボケータ250は、第1のユーザーのために第1のタイミングで第1の呼び出しプロセスを開始し、第2のユーザーのために第2のタイミングで第2の呼び出しプロセスを開始することができる。インボケータ250は、アクティブなユーザーの取得、ユーザーデータの取得、データベースへの呼び出し記録の書き込みなど、多数の非同期要求に分解することができる。
呼び出しプロセスの例は以下の疑似コードで示すことができる。
上記の疑似コードによって示されるような呼び出しプロセスは、一定の時間間隔(例えば、30分ごと)で実行することができる。呼び出しプロセスは、各ユーザーのコンテキストデータ220(本明細書で詳細に説明する)を特定すること(例えば、getData(u))、及び現在時刻を特定すること(例えば、Date.now())を含むことができる。呼び出しプロセスは、コンテキストデータ220のハッシュを含むことができるデータベースへの呼び出しレコードの書き込み(例えば、db.write(u.id,ts,hash(d))を含むことができる。呼び出しレコードは、ユーザー識別、タイムスタンプ、及び各ユーザーのデータ(例えば、アプリケーションデータ及びユーザーテンションデータ)を含むことができる。アプリケーションデータは、アプリケーションで受信したメッセージに応じたユーザークションを含むことができる。ユーザーテンションデータは、ユーザーがアプリケーションで受信したメッセージに応答する頻度など、1日を通してのユーザーの受容性を含むことができる。呼び出し記録は、上記の疑似コードに示されているように、アマゾン・シンプル・ストレージ・サービス(AWS S3:Amazon Simple Storage Service)に保存することができる。
アクティブなユーザー(例えば、アプリケーションのユーザー、メッセージに応答するユーザー)を識別することは、アプリケーション272に問い合わせて、メッセージングを有効にしたアクティブなユーザーを取得することを含むことができる。ユーザーデータを取得することは、各ユーザーのデータを取得することを含むことができ、これは、アプリケーションデータ及びユーザーテンションデータを含むことができる。このデータは、ハード制約を満たさないメッセージオブジェクト206をフィルタリングするために使用することができる。データベースへの呼び出し記録の書き込みは、将来の評価をグループ化するため、及び将来のモデルトレーニング用にメッセージオブジェクト206の意思決定履歴を追跡するために実行することができる。例えば、呼び出しレコードのタイムスタンプ、ユーザーのアプリケーションデータ、及びユーザーの注目データは、メッセージオブジェクトモデル210への入力としてレスポンスエバリュエータ256が使用することができる。コンテキストデータ220のハッシュは、保存用のリモートオブジェクトに格納することができ、これにより、メッセージオブジェクト206のデータベースのスペースを節約することができる。いくつかのデータをリモートで保存することにより、メッセージ選択システム202は、乏しいディスクスペースの結果によるパフォーマンスの低下を回避することができる。メッセージオブジェクトエバリュエータ252は、評価時のメッセージオブジェクト206からリモートデータベース(例えば、AWS S3)への読み取りリクエストトラフィックをアンロードすることができる。メッセージ選択システム202は、ハッシュテーブルの使用によりユーザーデータを格納することができる。ハッシュテーブルは、コンテキストデータ220のユニークな変化を格納することができ、これはスペース効率が良い。例えば、重複するデータの保存を回避することができる。データをリモートデータベースに格納することで、インボケータ250がライブデータベースからデータをコピーしなければならない頻度を減らすことができる。代わりに、インボケータ250は、モデル210のオフライントレーニング中に、リモートデータベースから直接読み取ることができる。インボークアーキテクチャは、並列ユーザー処理を含むことができ、これは、ユーザーデータを取得するための複数のプロセスを含むことができる。
上述したように、環境200は、1つ以上のリモートコンピューティングデバイス270を含むことができる。さらに詳細には、リモートコンピューティングデバイス270は、メッセージ選択システム202からメッセージを受信することができる。リモートコンピューティングデバイス270は、インターネット対応のリモートデバイスであり得る。例えば、リモートコンピューティングデバイス270は、インターネット・オブ・シングス(「IoT」)デバイスとすることができる。IoTデバイスは、リモートモーションセンサ、温度センサ、土壌状態センサ、又はビデオカメラを含むリモートモニタリングデバイスを含むことができる。いくつかの実装では、リモートコンピューティングデバイス270は、携帯電話、スマートフォン、ラップトップ、又はタブレットコンピュータなどのモバイルコンピューティングデバイス(若しくはそのコンポーネント)とすることができる。リモートコンピューティングデバイス270は、限られた計算リソースを有することができる。リモートコンピューティングデバイス270は、測定、アクティビティの実行、又は情報のリクエストに対するレスポンスを提供するために、所定の間隔で、ウェイク付け、ping打ち、メッセージ伝達、又はその他の方法によるコンタクト取りを行わせることができる。いくつかの実装では、リモートコンピューティングデバイス270は、定期的な所定の間隔でリクエストを受け取ることができる。
リモートコンピューティングデバイス270は、リモートコンピューティングデバイス270がメッセージ選択システム202と通信することを可能にするために、アプリケーション272を含むことができる。例えば、アプリケーション272は、メッセージ選択システム202からメッセージを受信し、メッセージに対するレスポンスをレスポンスエバリュエータ256に返すことができる。アプリケーション272は、リモートコンピューティングデバイス270がネットワーク104を介してメッセージ選択システム202からデータパケットを受信すると、メッセージを受信することができる。メッセージ選択システム202がアプリケーション272にメッセージを送信すると、アプリケーション272は、リモートコンピューティングデバイス270上で起動することができる。アプリケーション272は、リモートコンピューティングデバイス270にping打ち、ウェイク付け、メッセージ伝達、又はその他のリモートコンピューティングデバイス270のユーザーとコンタクト取りを行うために通知を送信することができる。アプリケーション272は、メッセージ選択システム202からメッセージを起動して表示することができる。アプリケーション272は、レポーティングエージェント274を含むことができる。アプリケーション272は、リモートコンピューティングデバイス270のユーザーを関与させるためのグラフィカル・ユーザーインタフェースを含むことができる。いくつかの実施形態では、アプリケーション272は、デジタル治療アプリケーションを使用する対象者にメッセージを送信することができる禁煙アプリケーション又は任意の他のデジタル治療アプリケーションを含むことができる。
アプリケーション272のレポーティングエージェント274は、アプリケーション272内のアクティビティを監視するように構成された、アプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、又は他の実行可能なロジックであり得る。アクティビティは、1つ以上のユーザーが実行したアクションを含むことができる。例えば、ユーザーが実行したアクションは、呼吸法、瞑想セッション、ヨガセッション、ウォーキングセッション、ジョギングセッション、ランニングセッション、同僚とのコミュニケーション、電話セッション、医療アドバイザーとのコミュニケーション、又はレポーティングエージェント274によって検出、決定、又は推論され得る任意な他のアクションを含むことができる。いくつかの実装では、レポーティングエージェント274は、アクティビティが開始された時刻、アクティビティが完了した時刻、コンピューティングデバイスの別のプロセスで発生した別のコンピュータ機能によってアクティビティが中断された時刻、又はアプリケーション272の環境との相互作用によってアクティビティが一時停止若しくは停止された時刻を監視することができる。例えば、アプリケーション272は、リモートコンピューティングデバイス270からの加速度データを使用して、ウォーキングセッションの開始およびウォーキングセッションの完了を検出することができる。アプリケーション272は、リモートコンピューティングデバイス270のユーザーがウォーキングセッションを開始し、ウォーキングセッションを完了したというデータを、レポーティングエージェント274に中継又はその他の方法で提供することができる。アプリケーション272は、リモートコンピューティングデバイス270上のデータを、ユーザーが生成したレスポンスに相関させることができる。例えば、アプリケーション272は、ユーザーからのレスポンスを要求する情報を表示することができる。アプリケーション272は、ユーザーがアクティビティを完了したことを確認するために、アプリケーション272上で選択を行うようにユーザーに求めるメッセージを表示することができる。アプリケーション272は、ユーザーがアクティビティを完了しなかったことを確認するために、アプリケーション272上で選択を行うことをユーザーに求めるメッセージを表示することができる。アプリケーション272は、メッセージの適切さに関連するユーザーのフィードバックを要求するメッセージを表示することができる。例えば、ユーザーは、ユーザーのカレンダーでスケジュールされたイベント中に送信されたメッセージが適切でないことをレポーティングエージェント274に通知する選択をアプリケーション272上で行うことができる。ユーザーは、ユーザーのカレンダー上でスケジュールされた会議の後に送信されたメッセージが適切であることをレポーティングエージェント274に通知する選択を、アプリケーション272上で行うことができる。
リモートコンピューティングデバイス270は、タイムスタンプをアクティビティに割り当てることができる。レポーティングエージェント274は、アクティビティに関連するデータ及びアクティビティに関連するタイムスタンプにアクセスすることができる。レポーティングエージェント274は、ユーザーがリモートコンピューティングデバイス270上のデータにアクセスしてアクティビティを実行していることを検出することができる。レポーティングエージェント274は、アプリケーション272から、ユーザーが実行したアクティビティの詳細を示すレポートを受け取ることができる。いくつかの実装では、レポーティングエージェント274は、レポーティングデータをメッセージ選択システム202に送信するために、1つ以上のメッセージを生成することができる。
再びメッセージオブジェクト206を参照すると、メッセージオブジェクト206は、メッセージを中心とした最適化のためのフレームワークとなり得るデータ構造であり得る。メッセージオブジェクトのデータ構造は、メッセージテンプレート208、モデル210、制約212、及び目標値214を含むことができる。インボケータ250は、複数のメッセージオブジェクト206を呼び出すことができる。メッセージオブジェクト206は、メッセージオブジェクトエバリュエータ252によって評価されるメッセージテンプレート208に基づいて、メッセージ候補240を生成することができる。
メッセージオブジェクト206は、1つ以上のメッセージテンプレート208を含むことができる。メッセージテンプレート208は、テキスト文字列を含むことができる。メッセージオブジェクト206は、コンテキストデータ220を使用して、メッセージテンプレート208のフィールドを挿入することができる。メッセージオブジェクトエバリュエータ252は、メッセージテンプレート208を使用してメッセージ候補240を生成することができる。メッセージテンプレート208は、静的なテキスト、テンプレート、又はメッセージ文字列を生成するための命令とすることができる。テンプレートは、メモリ204に格納されたデータライブラリからデータを取得する命令を含むことができる。データライブラリからのデータは、ユーザーに送信される前に、テンプレートに置換することができる。例えば、テンプレートは、メッセージテンプレート208がリモートコンピューティングデバイス270に設定される前に、テンプレートに記入または置換されるプレースホルダー又は変数を含むことができる。例えば、メッセージは、画像、ビデオ、リモートコンピューティングデバイス270に送信されて実行されるプロセッサ実行可能命令、又はメタデータを含むことができる。第1のメッセージオブジェクト206のメッセージテンプレート208は、第2のメッセージオブジェクト206のメッセージテンプレート208と同一又は異なっていてもよい。
メッセージオブジェクト206のモデル210は、コンテキストデータ220を入力として受け取り、目標値214を達成するためのメッセージの予測される有効性を示す信頼値242を出力することができる。例えば、コンテキストデータ220は、それぞれのモデルオブジェクト206のモデル210への入力とすることができる。コンテキストデータは、ユーザー固有のデータ、日付、時刻、曜日、天候関連データなどを含むことができる。モデル210は、入力を受け取り、様々な出力を出力することができる。例えば、入力は、履歴データ224またはユーザーデータを含むことができ、出力は、入力データに基づいて計算された成功率または信頼値242を含むことができる。例えば、モデルは、ユーザーのレスポンスのタイムスタンプを指定する履歴データ224をメッセージの有効性に相関させることができる。レスポンスエバリュエータ256は、履歴データに基づいてモデル210をアップデートすることができる。例えば、レスポンスエバリュエータが、アプリケーション272を実行するリモートコンピューティングデバイス270のユーザーが週末にメッセージに応答しないことを示すデータをレポーティングエージェント274から受信した場合、レスポンスエバリュエータ256は、週末にメッセージを送信する確率を低減するようにモデル210をアップデートすることができる。モデル210は、過去のデータから学習するためのアップデートを受けることができる。レスポンスエバリュエータ256は、ユーザープリケーションデータに基づくある種の人口統計の時間的パターンに基づいて生成されたレスポンスのためのメッセージを生成するために使用されるモデル210をアップデートすることができる。例えば、レスポンスエバリュエータ256は、ある年齢以上のユーザーは暑い日に脱水症状になりやすいと判断することができる。レスポンスエバリュエータ256は、ユーザーに水分補給を促すメッセージを送信するようにモデル210をアップデートすることができる。
モデル210は、機械学習モデル(例えば、強化学習モデル、k近傍法、バックプロパゲーションモデル、q学習モデル、遺伝的アルゴリズムモデル、ニューラルネットワーク、教師付き学習モデル、又は教師なし学習モデル)であり得る。モデル210は、機械学習モデルに利用可能な特徴である機能セットを含むことができる。機能セットは、ユーザープリケーションデータ、時間的コンテキスト、類似メッセージの有効性、及び後述するユーザーの注目度指標を含むことができる。新しいデータ又は時系列でモデル210を再トレーニングすることで、メッセージオブジェクト206に関連するモデル210を改善することができる。レスポンスエバリュエータ256は、より多くのユーザーコンテキスト情報を返すためにデータサービスをアップデートすることを含むことができるモデル210に新しい機能を追加することができる。レスポンスエバリュエータ256は、各履歴タイムスタンプにおいて新しい特徴値でデータポイントを埋めることができ、これは、履歴ユーザーコンテキストを再計算することを含むことができ、レスポンスエバリュエータ256が、新たに追加された機能を有するすべての履歴データ上でモデルを再学習することを可能にする。
メッセージ選択システム202は、メッセージが送信されたリモートコンピューティングデバイス270から受け取ったフィードバックを使用して、メッセージ選択システム202のメッセージ生成及び選択能力を向上させることができることを理解されたい。例えば、メッセージ選択システム202は、メッセージオブジェクト206によって生成されたメッセージ候補240に関連する履歴データに基づいて、メッセージ候補240を生成するために使用されるメッセージオブジェクト206のモデル210をアップデートするように構成することができる。過去におけるメッセージオブジェクト206の成功又は失敗は、将来のモデル210の予測能力を向上させることができる。モデル210は、モデル210の学習段階で、送信されたメッセージと、それに対応する結果及び機能セットを使用することができる。多数の異なる教師付き機械学習モデルをオンライン又はオフラインでトレーニングすることができる。モデル210のトレーニングは、最適なモデルパラメータを見つけるために相互検証アプローチを使用することができる。メッセージオブジェクトモデル210の再トレーニングは、各反復(例えば、トレーニングサイクル)で起こり得る。いくつかのモデル210(例えば、ツリーベースのモデル、ニューラルネットワーク)は新しいデータが受信されるローリングベースでトレーニングすることができ、既存のモデルは、データセット全体を使用して再トレーニングすることなく新しいデータを組み込むことができる。メッセージオブジェクト206は、メッセージ候補240の信頼値242を予測するモデル210を含むことができる。
メッセージオブジェクト206は、一連の制約212を含むことができる。制約212は、メッセージ候補240がメッセージオブジェクト206から生成されるべきかどうか、又は生成されたメッセージ候補240を送信できるかどうかを規定する制限又は制約を含むことができる。制約212は、メッセージ候補240を送信するための所定時刻又は時間窓(time window)を含むことができる。制約212は、メッセージテンプレート208を送信することができる時間窓を定義する決定された時刻及び曜日を含むことができる。制約212は、ユーザータイプ(例えば、性別、職業、会社、又は所属)を含むことができる。制約212は、メッセージを送信するための定期的な曜日を含むことができる。例えば、メッセージオブジェクト206の制約212は、メッセージオブジェクトエバリュエータ252がメッセージを送信することができる午前10時から午後4時までの時間ベースの窓とすることができる。メッセージオブジェクトエバリュエータ252が、上記の制約を有するメッセージオブジェクト206を処理するとき、メッセージオブジェクトエバリュエータ252は、現在時刻に基づいて、メッセージ候補240を生成すべきかどうか(又は、メッセージオブジェクト206から生成されたメッセージ候補240を送信できるかどうか)を決定することができる。メッセージオブジェクト206は、特定の曜日にのみ(例えば、月曜日又は金曜日にのみ)メッセージを送信することができる。制約は、週末など、メッセージオブジェクトエバリュエータ252がメッセージオブジェクト206の送信を禁止する日にち又は時刻を含むことができる。メッセージオブジェクト206は、月曜日が休日でない限り、月曜日にメッセージを送信することができるという制約212を有することができ、その場合、メッセージオブジェクト206はメッセージの送信を制限される。制約212は、休日、うるう年、日の時刻、週の時刻、月の時刻、年の時刻、又はその他のカレンダー関連の主題に関する情報を含むことができる。制約212は、メッセージオブジェクトエバリュエータ252がメッセージを送信することができる特定時刻又は時間窓を指定することができる。制約212は、最小信頼値242を含むことができる。
メッセージオブジェクト206は、目標値214を含むことができる。目標値214は、アクションに対応することができる(例えば、アプリケーション272においてユーザーに特定のアクションを実行させるため)。目標値214は、リプライ又はレスポンスに対応することができる。目標値214は、リモートコンピューティングデバイス270が受信したメッセージの有効性に対応する数値を含むことができる。目標値214は、アプリケーション272内のアクションと、そのアクションの所望の達成率とに対応することができる。例えば、アプリケーション272における第1のアクションは、呼吸法であってもよく、アプリケーション272における第2の行動は、ジョギング運動であってもよい。また、第1の行動に対応する目標値214は80%であり、第2の行動に対応する目標値214は15%であってもよい。例えば、アプリケーション272内のあるタスクを実行するようにユーザーに呼びかけるメッセージには、ある期間内にタスクを実行するようにユーザーに送られたメッセージの数の割合として、ユーザーがタスクを実行した回数に対応する数値を割り当てることができる。また、アプリケーションで特定のタスクを実行するようにユーザーを誘う主題を含むメッセージには、メッセージがユーザーに送信されてから、ユーザーがそのタスクを実行した時刻に対応する数値を割り当てることができる。別の例では、ユーザーに返信を呼びかけるメッセージは、ユーザーがメッセージに返信したかどうか、又はユーザーがメッセージに返信しなかったかどうかを判定することによって測定することができる。修辞的なメッセージの目標値214は、修辞的なメッセージが測定可能なユーザーの応答を引き出すことがないため、容易に定義できない場合がある。
メッセージの失敗又は意図された行動を引き出す能力は、メッセージオブジェクトモデル210への入力として使用することができる。第1のメッセージオブジェクト206は、ユーザーに水分補給をしてもらうという目標値214を持つことができる。第1のメッセージオブジェクト206は、「こんにちは[名前]、お茶を一杯飲む」というメッセージテンプレート208を持つことができる。第2のメッセージオブジェクト206は、ユーザーに水分補給をしてもらうという目標値214を持つことができる。第2のメッセージオブジェクト206は、「こんにちは[名前]、氷水を一杯飲む」のメッセージテンプレート208を持つことができる。メッセージオブジェクトエバリュエータ252は、外気温及びユーザーが水分補給を忘れる傾向に関連するコンテキストデータ220を使用して、第1のメッセージオブジェクト206及び第2のメッセージオブジェクト206がメッセージ候補240を生成すべきであることを決定することができる。外気温が20°F以下である場合、第1のメッセージオブジェクト206は、信頼値242の高い第1のメッセージ候補240を生成してもよいが、信頼値242の低い第2のメッセージ候補240を生成してもよい第2のメッセージオブジェクト206と比較して、第1のメッセージオブジェクト206は、信頼値242の高い第2のメッセージ候補240を生成してもよい。メッセージオブジェクトエバリュエータ252が最近、水分補給に関連するメッセージを送信した場合、メッセージオブジェクトエバリュエータ252は、第1のメッセージ候補240の信頼度スコア242および第2のメッセージ候補240の信頼度スコア242を下げてもよい。第1のメッセージ候補240が、閾値を通過するアップデートされた信頼度スコア242を有する場合、メッセージオブジェクトエバリュエータ252は、メッセージテンプレート208にユーザープロファイル222からのデータを入力し、メッセージ候補240を、アプリケーション272を実行するリモートコンピューティングデバイス270のユーザーに送信することができる。
再びメッセージオブジェクトエバリュエータ252を参照すると、メッセージオブジェクトエバリュエータ252は、メッセージ候補240を生成することができる。メッセージオブジェクトエバリュエータ252は、メッセージオブジェクト206から生成された各メッセージ候補240について、信頼値242を生成又は割り当てることができる。メッセージオブジェクトエバリュエータ252は、メッセージ候補240に関連する信頼値242を使用して、リモートコンピューティングデバイス270のユーザーへのメッセージの送信を控えるか、又はリモートコンピューティングデバイス270のユーザーに1つ以上のメッセージを送信するかを決定することができる。メッセージ候補240は、閾値よりも高い信頼値242を有することができる。メッセージ候補240は、メッセージオブジェクトエバリュエータ252によるメッセージオブジェクト206の実行から生成されたメッセージであり得る。メッセージ候補240は、閾値より低い信頼値242を有するメッセージを含むことができる。メッセージオブジェクトエバリュエータ252は、コンテキストデータ220(及び他のデータ)メッセージオブジェクト206を渡すことにより、メッセージ候補240を生成することができる。メッセージオブジェクト206は、それぞれのメッセージオブジェクト206に提供されたデータがメッセージオブジェクト206の制約212を満たす場合に、メッセージ候補240を出力又はその他の方法で生成することができる。メッセージオブジェクトエバリュエータ252は、コンテキストデータ220をメッセージオブジェクトモデル210に入力して、メッセージ候補240の信頼値242を生成することができる。メッセージオブジェクトエバリュエータ252は、アップデートされた信頼値242を生成するためにクールダウン係数に基づいて信頼値242をアップデートできる。メッセージ候補240は、アップデートされた信頼値242に基づいて、リモートコンピューティングデバイス270に送信するために選択することができる。メッセージ候補240は、メッセージオブジェクトエバリュエータ252によって生成することができる。
メッセージ候補240は、信頼値242を含むことができる。信頼値242は、正規化され、メッセージがリモートコンピューティングデバイス270のユーザーに意図された効果をもたらす可能性を示す0から1(両端を含む)の間の242を含むことができる。信頼値242は、0から100(両端を含む)の間など、他の範囲を含むことができる。メッセージの関連性は、メッセージコンテンツ、ユーザーデータ、ユーザーの注意、及び時間的コンテキストの組み合わせを含むことができる。特定の時点での特定のユーザーの特定のメッセージの有効性を推定することは、教師付き機械学習アプローチを含むことができる。現在時刻的コンテキスト(例えば、一日のうちの時刻、一週間のうちの曜日、又は一年のうちの週)、ユーザープリケーションデータ、及びユーザーの注意は、教師付き機械学習モデルの機能として使用することができる。決定モデルの種類(例えば、多項式回帰、決定木、又は対比較分析)は、メッセージオブジェクト206ごとに異なり得る。各メッセージオブジェクト206のモデル210は、目標値214の信頼度を示す信頼値242を出力することができる。メッセージオブジェクトエバリュエータ252は、インボケータ250が呼び出しプロセスを開始すると、信頼値242をアップデートすることができる。
メッセージ選択システム202は、信頼値を生成するためのモデル210への入力としてコンテキストデータ220を使用できることを理解されたい。コンテキストデータは、ユーザープロファイル222及び履歴データ224を含むことができる。コンテキストデータ220は、類似のメッセージの有効性を含むことができる。例えば、メッセージオブジェクト206は、信頼値242を生成するための入力としてコンテキストデータ220を使用することができる。メッセージオブジェクト206は、コンテキストデータ220を使用して制約212を評価することができる。類似のメッセージは、精査中の現在のメッセージの成功又は失敗の予測指標とすることができる。類似のメッセージは、目的又は件名によってグループ化することができる。メッセージの目的は、コール・トゥ・アクション(ユーザーにアプリケーション272の機能に関与させるため)又はコール・トゥ・リプライ(ユーザーにメッセージに応答させるため)を含むことができる。メッセージの主題は、高いレベルでは、機能(例えば、ミッション)に関するもの、情報的なもの、健康に関するもの、又はお金に関するものであってもよい。コンテキストデータ220は、手動で生成されてもよいし、教師なしの機械学習アプローチによって生成されてもよい。
コンテキストデータ220は、ユーザープロファイル222を含むことができる。ユーザープロファイル222は、特定のユーザーに関連するデータを含むことができる。ユーザープロファイル222は、ユーザーの名前、場所、履歴データ、習慣、アプリケーションの使用状況、アプリケーションのインタラクション、及びレスポンス率など、ユーザーのアイデンティティのデジタル表現を含むことができる。ユーザープロファイル222は、アプリケーション272の使用から得られるデータを含むことができる。データは、ユーザーがタバコを吸った回数や、ユーザーがタバコを吸ったタイムスタンプなど、アプリケーション272に特有のユーザーイベントデータを含むことができる。このデータは、禁煙を含むアプリケーションにとって重要であってもよい。データは、アプリケーション272がいつ開いたかなどの、より細かい粒度のユーザー・エンゲージメント・データを含んでもよい。いくつかの実装では、メッセージ選択システム202は、実装されたモデル210の種類に応じて、生データから派生機能を生成することができる。例えば、派生機能は、1日あたりの喫煙イベント数の生データではなく、ユーザーのタバコの喫煙のタイムスタンプのリストを含むことができる。
コンテキストデータ220は、履歴データ224を含むことができる。履歴データ224は、現在時刻を含むことができる。履歴データ224は、時間的コンテキストを含むことができる。時間的コンテキストは、タイムゾーンから調整された時刻、曜日、及び季節など、現在時刻に関する使用可能な情報を含むことができる。履歴データ224は、レポーティングエージェント274によって生成することができる。レポーティングエージェント274は、ユーザーアクション又はレスポンスにタイムスタンプを割り当てることができる。レポーティングエージェント274は、ネットワーク104を介して履歴データ224をレスポンスエバリュエータ256に送信することができる。レポーティングエージェント274は、メッセージがリモートコンピューティングデバイス270によって受信されたときに、タイムスタンプを割り当てることができる。レポーティングエージェント274は、メッセージがリモートコンピューティングデバイス270のユーザーによって受信されたときのタイムスタンプを割り当てることができる。
コンテキストデータ220は、ユーザーテンション指標を含むことができる。ユーザーテンションは、1日を通してのユーザーの受容性を含むことができ、これは、メッセージが意図した効果を持つかどうかの要因となり得る。ユーザーの注目は、高度に特定され得る。メッセージオブジェクトエバリュエータ252は、メッセージオブジェクト206をトレーニングするためのモデル210に入力するために、ユーザーテンションの様々な機能を識別することができる。メッセージオブジェクトエバリュエータ252は、メッセージオブジェクト206をトレーニングするためのモデル210への入力として、初期推測、履歴的なユーザーの時刻の好み、及びアプリケーション・エンゲージメント・データを使用することができる。初期推測は、ユーザーテンションに関する初期仮説を含むことができる。ユーザーがアプリケーション272に最初にサインアップしたときに、作業するための履歴データがない場合があるため、メッセージオブジェクトエバリュエータ252は、ランダムに、又は人間の推測に基づいて、初期仮説を立てることができる。人間の推測は、他のユーザーからのデータに基づいて行うことができる。例えば、ユーザーは、主に平日の朝または夜にアプリケーション272と対話することがある。最良の人間の推測は、人口統計学的データに基づいてもよい。例えば、明確なパターンがある場合、レスポンスエバリュエータ256は、人口統計学的データに基づいてユーザーのクラスタを作成することができる。レスポンスエバリュエータ256は、ユーザーテンションの初期仮説として、時刻モデルを使用することができる。レスポンスエバリュエータ256は、1日のスパンまたは1週間のスパンでユーザーのアテンションを図示することができる。レスポンスエバリュエータ256は、時間の経過とともに、より多くのメッセージ208がユーザーに送信されると、ユーザーの時刻の好みを履歴的に表示することができる。より多くのメッセージが送信され、結果が受信されると、ユーザーがメッセージを受容する可能性が高い時刻のより正確な全体像を構築することができる。モデル210は、データベースに存在する履歴入力の量と、成功率の効果に基づいて、履歴入力を重み付けすることができ、モデル210の予測性を高めることができる。レスポンスエバリュエータ256は、学習率を使用して、メッセージ選択システム202がユーザーの時刻の好みを学習する速度を制御することができる。レスポンスエバリュエータ256は、エンゲージメント・パターンのオーバーフィッティングを回避し、ユーザーの嗜好を可能な限り迅速に学習するために、学習レートを選択することができる。高い学習率を使用すると、エンゲージメント・パターンをオーバーフィットさせてしまい、ランダムなノイズを捕捉してしまう可能性がある。低い学習率を使用すると、ユーザーの時刻の好みを学習するのに必要以上に時間がかかる可能性がある。アプリケーション・エンゲージメント・データは、アプリケーション272によって生成された一般的な時刻のエンゲージメント・データを含むことができる。レスポンスエバリュエータ256は、アプリケーション272のエンゲージメント・データを使用して、メッセージの有効性を予測することができ、これにより、アプリケーションのエンゲージメント・データをユーザーテンションの代理とすることができる。コンテキストデータ220は、レポーティングエージェント274によって生成することができる。レポーティングエージェント274は、ユーザーからのフィードバックを受け取ることができる。
メッセージオブジェクトエバリュエータ252を再び参照すると、更に詳細には、メッセージ候補を生成するタイミングを決定し、メッセージ候補240の1つ以上を送信するためのアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、又は他の実行可能なロジックとすることができる。メッセージオブジェクトエバリュエータ252は、コンテキストデータ220をメッセージオブジェクト206に渡してメッセージ候補240を生成することができる。メッセージオブジェクトエバリュエータ252は、メッセージ候補240に対する信頼値242を生成することができる。例えば、メッセージオブジェクトエバリュエータ252は、信頼値242のセットを取り、その信頼値242を、以下でさらに説明する1つ以上の閾値と比較して、メッセージ候補240を送信すべきかどうかを決定することができる。メッセージオブジェクトエバリュエータ252は、メッセージ候補240の信頼値に基づいて、メッセージ候補240のうち、もしあれば、どのメッセージをリモートコンピューティングデバイス270のユーザーに送信すべきかを決定することができる。
メッセージオブジェクトエバリュエータ252は、所定の閾値を満たすメッセージ候補240の信頼値242に基づいたメッセージオブジェクト206のセットの特定の呼び出しによって生成されたメッセージ候補240のプールからメッセージ候補240を選択することができる。メッセージ候補240は、信頼値242によって重み付けすることができる。メッセージオブジェクトエバリュエータ252は、信頼値242にクールダウン係数を乗じることによって、選択されたメッセージ候補240の信頼値242を調整することができる。メッセージオブジェクトエバリュエータ252は、信頼値242をクールダウン係数で調整することにより、選択されたメッセージ候補240の信頼値242を調整することができる。いくつかの実施形態では、メッセージオブジェクトエバリュエータ252は、信頼値242をクールダウン係数でスケーリングすることによって、選択されたメッセージ候補240の信頼値242を調整することができる。メッセージオブジェクトエバリュエータ252は、信頼値242が閾値を越えることに基づいて、選択されたメッセージ候補240を送信すべきかどうかを決定することができる。例えば、0.8の信頼値242は、0.7の閾値を超える。メッセージオブジェクトエバリュエータ252は、メッセージオブジェクト206が制約212を満たす場合に、メッセージを送信することができる。制約212は、次のようにすることができる。
ここでLMIはラストメッセージ間隔、CDIはクールダウン間隔、CDFはクールダウン率である。
各メッセージオブジェクト206(又はそれによって生成されたメッセージ候補240)は、一定の時間間隔で、特定のユーザーのために互いに直接競合することができる。メッセージ候補240間の競合は、例えば、メッセージがリモートコンピューティングデバイス270のユーザーに意図された効果をもたらす可能性を示す信頼値242に基づいて、メッセージ候補240をランク付けすることを含むことができる。メッセージオブジェクトエバリュエータ252は、信頼値242に基づいてメッセージ候補240をランク付けすることができる。メッセージオブジェクトエバリュエータ252は、信頼度値242が最も高いものから最も低いものまでメッセージ候補240をランク付けすることができる。メッセージオブジェクトエバリュエータ252は、メッセージ候補240のランクに基づいて、送信のためにメッセージ候補240を選択することができる。いくつかの実装では、メッセージオブジェクト206は信頼値242を含むことができ、メッセージオブジェクト206は、例えば信頼値242によってソート又はランク付けすることができる。メッセージオブジェクトエバリュエータ252は、メッセージオブジェクト206の1つ以上を選択してメッセージ候補240を生成することができる。いくつかの実装では、メッセージオブジェクトエバリュエータ252は、メッセージオブジェクト206をランク付けし、ソートする。メッセージオブジェクトエバリュエータ252は、メッセージオブジェクトエバリュエータ252がメッセージオブジェクト206の評価を完了したときに、メッセージ候補240を送信することができる。いくつかの実装では、生成されたメッセージ候補240は、ランク付けされ、ソートされ、メッセージ候補240の選択された部分は、クライアントデバイス又はリモートコンピューティングデバイス270に送信され得る。
メッセージオブジェクト206間の競合は、信頼値242に基づいてメッセージオブジェクト206をソートすることや、メッセージオブジェクト206のカテゴリに基づいてメッセージオブジェクト206のサブセットを選択することなど、メッセージオブジェクト206をソートすることを含むことができる。例えば、メッセージオブジェクト206のカテゴリは、フィットネスワークアウト、呼吸法、脱ストレス活動、水分補給リマインダ、禁煙のヒントなどを含むことができる。メッセージオブジェクトエバリュエータ252は、フィットネスワークアウトに関連するメッセージオブジェクト206のサブセットを選択して、リモートコンピューティングデバイス270のユーザーにワークアウトの実行を促すメッセージ候補240を選択することができる。メッセージオブジェクトエバリュエータ252は、メッセージオブジェクト206によって生成された最高の信頼値242を有するメッセージ候補240を選択することができる。最高の信頼値242を有するメッセージ候補240は、関連する信頼値242が所定の閾値を越えるか、又は満たす場合、リモートコンピューティングデバイス270への送信のためにメッセージオブジェクトエバリュエータ252によって選択され得る。
メッセージオブジェクトエバリュエータ252は、メッセージ候補240の評価プロセスを実行することができる。評価プロセスは、メッセージオブジェクトエバリュエータ252がメッセージ候補240を送信するかしないかの決定を下すことができるプロセスを含むことができる。メッセージオブジェクトエバリュエータ252は、コンテキストデータ220をメッセージオブジェクト206に渡して制約212を評価することにより、メッセージ候補240を生成することができる。例えば、メッセージオブジェクト252は、ユーザーの喫煙習慣に関連するコンテキストデータ220と、1日の時刻に関連する履歴データ224とを取ることができる。メッセージオブジェクト206は、メッセージ候補240を生成して、「ハイ ジム! タバコを吸う代わりに、散歩してみてください。」というメッセージ候補240を生成することができる。メッセージオブジェクト206の制約212は、メッセージがユーザーの一般的な睡眠時間中には適切でないこととすることができる。ユーザープロファイル222は、ユーザーが一般的に午前7時から午後11時の間に起きていることを示すことができ、履歴データは、現在時刻が午後1時であることを示すことができる。制約212が満たされる場合、メッセージオブジェクトエバリュエータ252は、メッセージ候補240を生成し、メッセージ候補240のデータベースに信頼値242を記録することができる。一定の間隔で、メッセージオブジェクトエバリュエータ252は、まだメッセージ候補240を生成していないメッセージオブジェクト206を識別し、メッセージオブジェクト206のためにメッセージ候補240を生成することができる。メッセージオブジェクトエバリュエータ240は、メッセージ候補240の信頼値242を決定することができる。メッセージオブジェクトエバリュエータ252は、メッセージ候補240を識別し、メッセージ候補240を信頼値242で重み付け又はソートし、メッセージ候補240をクールダウン係数でスケーリングし、次にメッセージ候補240を選択することができる。メッセージオブジェクトエバリュエータ252は、信頼値242及び閾値ポリシー234を使用して、メッセージ候補240を送信すべきか否かを決定することができる。例えば、信頼値242が閾値ポリシー234に従って閾値を上回っている場合、メッセージオブジェクトエバリュエータ252は、メッセージ候補240をリモートコンピューティングデバイス270に送信するように決定することができる。信頼値242が、閾値ポリシー234に従って閾値以下である場合、メッセージオブジェクトエバリュエータ252は、メッセージ候補240をリモートコンピューティングデバイス270に送信しないと決定することができる。メッセージオブジェクトエバリュエータ252がメッセージ候補240を送信する決定を行う場合、いくつかの実施形態では、メッセージオブジェクトエバリュエータ252は、メッセージ候補240をメッセージ選択システム202のメッセンジャーサービス又はメッセージ選択システム202に通信可能に結合され、これにより、ユーザーのデバイス又はリモートコンピューティングデバイス270へのメッセージ候補240の送信が容易になる。レポーティングエージェント274は、メッセージ候補240を受信するリモートコンピューティングデバイス270のアクションを記録することができる。メッセージオブジェクトエバリュエータ252がメッセージを送信しないと決定した場合、メッセージオブジェクトエバリュエータ252はメッセージを送信しない。
再びレスポンスエバリュエータ256を参照すると、レスポンスエバリュエータ256は、リモートコンピューティングデバイス270のユーザーからの応答を分析することができる。レスポンスエバリュエータ256は、メッセージオブジェクト目標値214を達成するためのメッセージオブジェクト206の成功又は失敗など、ユーザーに送信されるメッセージの結果を記録することができる。レスポンスエバリュエータ256は、学習アルゴリズムが最適化するための目標値214を得るために、メッセージの結果を記録することができる。各メッセージオブジェクト206は、目標値214を達成するためのメッセージオブジェクト206の成功を定義することができる。結果の計算は、バッチプロセス又はリアルタイムのストリーミングプロセスとして実装され得る。
レスポンスエバリュエータ256は、モデル210に新しい機能を追加することができ、これは、より多くのユーザーコンテキスト情報を返すようにデータサービスをアップデートすることを含むことができる。レスポンスエバリュエータ256は、過去のユーザーコンテキストを再計算することを含むことができる各履歴タイムスタンプにおいて、新しい特徴値でデータポイントを埋めることができ、レスポンスエバリュエータ256が、新たに追加された機能を有するすべての履歴データ上でモデルを再学習することができる。レスポンスエバリュエータ256は、人口統計学的データに基づいて、ユーザーのクラスタを作成することができる。レスポンスエバリュエータ256は、ユーザー注目度の初期仮説として、時刻モデルを使用することができる。レスポンスエバリュエータ256は、1日のスパン又は1週間のスパンでユーザーの注目度をグラフ化することができる。レスポンスエバリュエータ256は、時間の経過とともにより多くのメッセージ208がユーザーに送信されると、ユーザーの時刻の好みを履歴的に把握することができる。レスポンスエバリュエータ256は、学習率を使用して、メッセージ選択システム202がユーザーの時刻の好みを学習する速度を制御することができる。レスポンスエバリュエータ256は、エンゲージメント・パターンのオーバーフィッティングを回避し、ユーザーの好みを可能な限り迅速に学習するために、学習速度を選択することができる。レスポンスエバリュエータ256は、メッセージの有効性を予測するためにアプリケーション・エンゲージメント・データを使用することができ、これにより、アプリケーション・エンゲージメント・データをユーザーテンションの代理とすることができる。
レスポンスエバリュエータ256は、レポーティングエージェント274によって記録されたアクションを使用して、将来の評価のためのクールダウン係数を決定することができる。クールダウン係数は、アプリケーション270の個々のユーザーに固有のものであり得る。クールダウン係数は、リモートコンピューティングデバイス270によって最後のメッセージが受信されてからの時間、リモートコンピューティングデバイス270のユーザーが所定の時間内に受信することを選択したメッセージの総数、及びリモートコンピューティングデバイス270のユーザーがアウェイクか、又はアクティブである時間の長さを含むが、これらに限定されない様々な要因を反映することができる。クールダウン係数は、メッセージがリモートコンピューティングデバイス270のユーザーに最後に送信されたのがどれだけ最近かに基づいて、メッセージ候補240の信頼値242を減少させることができる。例えば、時刻t=t1において、メッセージオブジェクトエバリュエータ252は、リモートコンピューティングデバイス270のユーザーにフィットネスワークアウトに取り組むことを促すメッセージを送信することができる。時刻t=t1+1時間に、メッセージオブジェクトエバリュエータ252は、t=t1+1時間に生成されたメッセージ2候補40の信頼値242に、クールダウン係数1/2を乗じ、アップデートされた信頼値242は、アップデート前の信頼値242の1/2となるようにしている。時刻t=t1+4時間に、メッセージオブジェクトエバリュエータ252は、t=t1+4時間に生成されたメッセージ候補240の信頼値242に、5/8のクールダウン係数を掛けるので、アップデートされた信頼値242は、アップデート前の信頼値242の5/8となり、メッセージオブジェクトエバリュエータ252が時刻t=t1+4時間にメッセージを送信する可能性が高くなる。レスポンスエバリュエータ256は、メッセージに応じて実行されたユーザークションに基づいて、クールダウン係数をアップデートすることができる。例えば、レスポンスエバリュエータ256は、現在のクールダウン係数に基づいて、ユーザーがメッセージ疲れを経験する可能性が高いと判断することができ、したがって、レスポンスエバリュエータ256は、クールダウン係数を減少させることができるクールダウン間隔を増加させることができる。クールダウン係数は、本明細書に記載された1つ以上のポリシー230によって決定することができる。
メッセージ選択システム202は、信頼値242の計算に基づいてメッセージを送信するかどうか及びいつ送信するかを管理するためのポリシー230を格納することができる。ポリシー230は、クールダウンポリシー232及び閾値ポリシー234を含むことができる。クールダウンポリシー232は、クールダウン係数を含むことができる。クールダウン係数は、各メッセージ候補240の信頼値242を、最後のメッセージがリモートコンピューティングデバイス270によって受信された最近の状況に相対的に下げることによって、メッセージ疲れを考慮することができる。例えば、アプリケーション272を介してユーザーが報告又は監視することができるユーザーの起床時刻期間wに等しいクールダウン間隔を有する線形クールダウン率を、ユーザーが1日に受信することを選択したメッセージの最大数rで割ったものである。ユーザーは、ある数のメッセージを受信することを選択することができ、又はメッセージ選択システム202は、メッセージ疲れを引き起こすことなくユーザーに送信するメッセージの数を決定することができる。ユーザーがr=4、w=14時間を選択した場合、クールダウンの間隔は14/4=3.5時間となる。クールダウン間隔が1時間で、クールダウン率が線形で、最後のメッセージが10分前に受信された場合、クールダウン係数は1/6であり、全体の信頼値242を低下させることができる。クールダウン率及びクールダウン間隔は、モデル210における調整可能なパラメータであってもよい。例えば、モデル210は、線形モデル、指数モデル、又は減衰モデルであり得る。モデルのタイプは、メッセージオブジェクトエバリュエータ252が、ユーザーのレスポンスを引き出す際のメッセージの有効性を予測するためのモデル210を構築するために重要であり得る。
目標値214は、モデル210をトレーニングするためにレスポンスエバリュエータ256によって使用され得ることを理解されたい。目標値214は、メッセージが意図された効果を有していたか否かを表すことができ、これは、アクションへの呼びかけ(ユーザーにアプリケーション272内の機能を使用させる)又はレスポンスへの呼びかけ(ユーザーにメッセージに返信させる)を含むことができる。アプリケーションデータは、効果を監視するために使用することができ、意図された効果の結果を記録することができる。目標値214として2進数の値を用いることができる。メッセージ選択システム202の1つの目標は、メッセージオブジェクト206が目標値214を達成する効能を促進することである。アクションへの呼びかけとレスポンスへの呼びかけは、互いに直接競合することができる。意図された効果は、等しく評価されるカテゴリにおける成功を含むことができる。意図された効果は、異なる重み付けをされたカテゴリにおける成功を含むことができる。
メッセージ選択システム202は、1つ以上の閾値マネージャ254を含むことができる。閾値マネージャ254は、閾値ポリシー234を管理するためのアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、又は他の実行可能なロジックであり得る。閾値マネージャ254は、所定のユーザー、所定のコンテキスト(例えば、一日の時刻)、又はメッセージオブジェクト206に適用する閾値ポリシー234を決定することができる。閾値マネージャ254は、一定の閾値、動的な閾値、重み付けされたランダムな閾値、及びファジーな一定の閾値など、様々な閾値ポリシー234から選択することができる。閾値マネージャ254は、クールダウン率、クールダウン間隔、最後のメッセージ間隔、クールダウン係数、及び分配制御係数を選択又は決定することができる。
ポリシー230は、閾値ポリシー234を含むことができる。閾値マネージャ254は、例えば、閾値よりも大きい値を持つメッセージ候補240を選択することによって、送信されたメッセージの品質を制御することができる。メッセージの品質は、ユーザーに対する有用性の定量的な表示、又はユーザーがメッセージに基づいて行動する可能性の定量的な表示であり得る。閾値マネージャ254は、1日に受信するリモートコンピューティングデバイス270に送信されるメッセージのおおよその数を制御することができる。例えば、1日あたりの所望のメッセージ数が与えられると、閾値マネージャ254は、予測された信頼値242の履歴に基づいて計算を行うことができる。閾値マネージャ254は、閾値を超える予測の数が、1日に配信されることが望まれるメッセージの数と等しくなるように、閾値を設定することができる。閾値マネージャ254は、メッセージオブジェクトエバリュエータ252に閾値を中継することで、閾値を設定することができる。メッセージオブジェクトエバリュエータ252は、格納されたメモリ204から本閾値、又は複数の閾値を取得することができる。閾値が確率に基づいているので、1日に配信されるメッセージ数は概算であることができる。配信されたメッセージの正確な数は、所望の配信されたメッセージの数とは限らない。例えば、メッセージ選択システム202は、価値の高いメッセージを送信することで、送信されたメッセージが所望の配信されたメッセージの数よりも大きくなる場合でも、価値の高いメッセージを送信してもよい。また、メッセージ選択システム202は、価値の低いメッセージを送信すれば、送信されるメッセージの数が望ましい配信メッセージの数になる場合でも、価値の低いメッセージを送信しなくてもよい。メッセージオブジェクトエバリュエータ252は、閾値ポリシー234に基づいて、メッセージを送信するか、又は送信を控えることが、メッセージ疲れ若しくはアプリケーション272に対する肯定的なユーザー・エンゲージメントにつながるかどうかを判断することができる。信頼値242の分布は、インボケータ250による呼び出しプロセス中に実行される数学的シミュレーションまたはモックから得ることができる。特定のユーザーの1日あたりのメッセージ数は、メッセージオブジェクトエバリュエータ252に入力されるパラメータである。特定のユーザーに送信される1日あたりのメッセージ数は、3などのデフォルト数か、ユーザーによる好みとして明示的に提供するか、又はユーザーのコンテキストを考慮して1日あたりの最適なメッセージ数を学習した他のモデル210によって提供することができる。
閾値ポリシー234は、一定の閾値を含むことができる。一定の閾値は、メッセージを送信する最適な時刻を示す閾値を超える任意の値となる所定の日における閾値を見つけることができる。閾値は、所定の日について計算され、変化しない。変化しない閾値の効果は、送信されるメッセージ候補240が効果的に最適化されることである。メッセージオブジェクトエバリュエータ252は、閾値ポリシー234が一定の閾値である場合、頻繁にメッセージを送信しなくてもよい。図4は、急峻なピークを有する信頼値対時間のグラフ400を示す。グラフ400には、急峻なピーク402が存在する。急峻なピーク402は、メッセージ候補のセットに対して高い信頼値242を有するメッセージ候補240が、ある特定の時刻に向かって分布していることを示すことができる。メッセージオブジェクトエバリュエータ252は、高い信頼値242を有するメッセージが時刻404に集まっている場合、ユーザーが指定した数のメッセージ又はメッセージ選択システム202によって決定された数のメッセージを送信しないことができる。メッセージオブジェクトエバリュエータ252は、クールダウン係数に基づいて信頼値242を調整することができ、これにより、時刻406のメッセージが時刻408のメッセージと比較して高い信頼値を有していても、時刻406でメッセージが送信される可能性が低くなる可能性がある。閾値が、線410によって描かれた0.8の信頼値242に設定されている場合、メッセージオブジェクトエバリュエータ252は、0.7の信頼値242を有する時刻406のメッセージを送信しない。時刻406のメッセージが時刻408のメッセージに比べて高い信頼値242を持っていても、メッセージオブジェクトエバリュエータ252が時刻406のメッセージを送信することを一定の閾値が妨げる場合がある。単一のピーク402は、ユーザーが1日に数個(例えば、2又は3)のメッセージに対しては、十分な注意力を持っており、それ以上のメッセージはメッセージ疲れの原因となることを示しているかもしれない。しかし、メッセージオブジェクトエバリュエータ252は、閾値ライン410を下回る高い信頼値を持つメッセージを時刻406で送信する機会を逃してもよい。
閾値ポリシー234は、動的閾値を含むことができる。閾値マネージャ254は、リモートコンピューティングデバイスに1日あたりの最小数のメッセージを送信することが望まれる場合、動的閾値を使用することができる。閾値マネージャ254は、一日の現在時刻に基づいて閾値を再計算することができる。動的閾値は、次の将来のピーク又はピークのセットを見つけることを含むことができ、信頼値が一日の初めに偏っている場合に発信する窓(firing window)を見逃す問題を解決する。動的閾値を用いると、メッセージオブジェクトエバリュエータ252がメッセージを送信できることが将来に少なくとも1回あることが保証され、これは、ユーザーが1日あたり所望の数のメッセージを受信できることを意味する。動的閾値は、閾値マネージャ254がメッセージを送信するために一日の終わりまで待ち、クールダウン率に基づいてメッセージを送信することによる時間切れを引き起こし得る。動的閾値は、メッセージ選択システム202が1日に送信するメッセージの数に対する制御を達成してもよいが、閾値マネージャ254は、送信するのに次善の時刻を選択することができ、また1日に送信するメッセージの数に関する決定を行わなくてもよい。例えば、閾値マネージャ254は、1日の異なる時刻について閾値ライン410を再計算することができる。閾値ライン410は、0800時間から1000時間の間は0.8、1001時間から1800時間の間は0.9、1801時間から2100時間の間は0.7にすることができる。閾値は、ユーザーの1日のうちの勤務時間中に最も高く、朝と夕方には低くすることができる。動的な閾値ポリシーは、ユーザーが就業時間中にメッセージをあまり受け取らず、一日の初めと終わりにメッセージをより多く受け取るような状況において有用である。
閾値ポリシー234は、加重ランダム閾値を含むことができる。加重ランダム閾値は、メッセージ候補信頼値242に対するメッセージ送信の確率を含むことができる。メッセージオブジェクトエバリュエータ252は、信頼値242に対する確率の重みをスケーリングすることができ、そのアルゴリズムへのパラメータは、加重ランダム閾値が1日あたりおよそ所望の数のメッセージを送信するようなデータから導出される(経験的な分布による)。確率ベースの閾値とは、信頼度のピーク402では高い確率で、信頼度の谷412では低い確率で、メッセージの送信が許可されることを意味する。加重ランダム閾値の利点は、メッセージオブジェクトエバリュエータ252が1日の非ピーク時にもメッセージを送信する可能性が残っており、メッセージオブジェクトエバリュエータ252による決定に、より多くのランダム性を導入できることである。より多くのランダム性を伴うことは、1日に送信されるメッセージの数を制御することが難しくなることを意味する。インボケータ250がメッセージオブジェクト206を起動し、メッセージオブジェクトエバリュエータ252がメッセージオブジェクト206を評価する速度を変更すると、確率重みが一定に保たれている場合、1日にユーザーに送信されるメッセージの数が変化する。メッセージ選択システム202は、確率重みパラメータを再計算し、メッセージ選択システム202が呼び出し時間間隔を変更するたびに、再計算された確率重みパラメータを適用して、1日に送信されるメッセージの数を同じにすることができる。
閾値ポリシー234は、ファジー定数閾値を含むことができる。図5は、上側閾値および下側閾値を有する信頼値対時間のグラフを示す。ファジー一定の閾値は、問題の値に対してある確率で選択された上限閾値502以下の値を含むことができる。下限閾値504は、信頼値242が低すぎる場合に、メッセージを送信する確率をゼロに設定するように選択することができる。例えば、0.5の閾値は、1の確率でメッセージを送信するように設定することができ、0.15の閾値は、1より小さく0より大きい確率でメッセージを送信するように設定することができ、0.1の閾値は、0の確率でメッセージを送信するように設定することができる。ファジー定数閾値は、ハード閾値を持たない定数閾値と類似することができ、信頼値242を超えるとメッセージオブジェクトエバリュエータ252はメッセージを送信し、それを下回るとメッセージオブジェクトエバリュエータ252はメッセージの送信を控える。
分配制御係数を用いて、閾値以下の距離と相対的に低下するメッセージを送信する確率の速さを制御することができる。分配制御係数は、1日あたりのメッセージ数の分配を制御するメカニズムである。分配制御係数が大きければ大きいほど、メッセージオブジェクトエバリュエータ252が1日に所望の数のメッセージを送信する確率が高くなる。ファジー定数閾値は、以下のアルゴリズムを含むことができる。
T=(CVDCF)×CV、CV∈[0,1](式3)
ここで、CVは信頼値であり、DCFは分配制御係数であり、Tは閾値である。
ファジー定数閾値は、メッセージオブジェクトエバリュエータ252が、上限閾値502以下の低い信頼値242を持つメッセージ候補240を送信するが、下限閾値504以下の信頼値242を持つメッセージの送信を控えるという効果を持つことができる。一日のうちの非ピーク時にメッセージを送信するチャンスがあり、メッセージ送信の決定にいくらかのランダム性を導入することができる。メッセージオブジェクトエバリュエータ252は、閾値を超えない信頼値242を持つメッセージ候補240を、リモートコンピューティングデバイス270に送信してもよい。閾値を下回るメッセージを送信することは、モデル210によって予測されていない状況において、ユーザーテンションを引くのに有利であり得る。メッセージオブジェクト206が呼び出され、評価されるレートを変更することで、分配制御係数が一定に保たれている場合、1日あたりのユーザーに送信されるメッセージの数を変更することができる。メッセージ選択システム202は、1日に送信されるメッセージの数が同じになるように、インボケータ250が起動時間間隔を変更するたびに、分配制御係数パラメータを再計算して適用してもよい。
図6A~6Bは、1日に送信されたメッセージの数の分布を示す図である。図6Aは、特定の日の3時前後に送信された多数のメッセージに対応する、平均3で低分散の、特定の日に送信されたメッセージの分布を描いている。図6Bは、図6Aの分布よりも高い分散を有する、特定の日に送信されたメッセージの分布を描いている。閾値マネージャ254は、図6Bの分布に分布制御係数を適用して、2の分布制御係数を有する図6Cの分布を生成することができる。分布制御係数を分布に適用することで、閾値マネージャ254は、送信されたメッセージ数の分布の分散を減少させることができる。
閾値周辺の値が非常に反復的であるエッジケースが生じ得る。例えば、信頼値242の仮想的なリストは、以下を含むことができる。[0.95,0.95,0.95,0.96,0.96,0.96,0.96,0.96,0.96,0.97]閾値が信頼値242のリストの6番目と7番目の要素の間に引かれていた場合(メッセージ数/日=3に基づいて計算)、1日に所望のメッセージよりも多くのメッセージを送信する可能性が高くなるが、これは閾値の上にも下にも0.96の信頼値242が多数存在するために起こり得ることである。単に閾値以上の値を探す単純な計算では、より多くのメッセージ208を送信してしまう可能性がある。メッセージオブジェクト206の計算は、非常に反復的なことがあり得る。例えば、1日を通して24回の呼び出しが均等に分散されているが、ユーザーがアプリケーション272を1日の最初と最後にしか使用しない場合、非使用期間中のメッセージオブジェクト206の評価は、同じデータに基づいて信頼値242を計算し、同じ信頼値242を生成して終わる。メッセージ選択システム202は、信頼値242を繰り返すことを示すデータを持っているので、メッセージ候補240の信頼値242が閾値よりも大きくても、ユーザーに送信するメッセージの数を制限することができる。
図3は、競合メッセージ選択のための例示的な方法300のフロー図を示す。方法300は、1つ以上のプロセッサによって、複数のユーザー及び複数のメッセージオブジェクトを識別することを含み得る(ブロック302)。方法300は、1つ以上のプロセッサによって、1つ以上のメッセージオブジェクトに対する複数のユーザーの各コンテキストデータを検索することを含むことができる(ブロック304)。方法300は、1つ以上のプロセッサによって、1つ以上のメッセージオブジェクト及びコンテキストデータに基づいて、メッセージ候補を生成することを含むことができる(ブロック306)。方法300は、1つ以上のプロセッサによって、アップデートされた信頼値を生成するために、クールダウン係数に基づいて、各メッセージ候補に対する信頼値をアップデートすることを含むことができる(ブロック308)。方法300は、1つ以上のプロセッサによって、アップデートされた信頼値に基づいてメッセージ候補を選択することを含むことができる(ブロック310)。方法300は、信頼値が所定の閾値を越えるかどうかを判断することを含むことができる(ブロック312)。方法300は、1つ以上のプロセッサによって、選択されたメッセージ候補を送信することを含むことができる(ブロック314)。
上述したように、方法300は、複数のユーザー及び複数のメッセージオブジェクトを識別すること(ブロック302)を含むことができる。複数のユーザーを識別することは、データベースにアクセスしてアクティブなアカウントを決定することを含み得る。また、図2を参照すると、とりわけ、レポーティングエージェント274は、リモートコンピューティングデバイス270からのレスポンスを分析することができるレスポンスエバリュエータ256にレポートを送信することができる。複数のユーザーを識別することは、複数のユーザーのユーザープロファイル222にアクセスすることを含むことができる。複数のメッセージオブジェクトを識別することは、メッセージ選択システム202に格納された複数のメッセージオブジェクト206を識別することを含むことができる。複数のメッセージオブジェクト206を識別することは、メッセージ選択システム202に格納されている複数のメッセージオブジェクト206にアクセスすることを含むことができる。インボケータ250は、アプリケーション272に問い合わせて、メッセージングが有効になっているアクティブなユーザーを取得することができる。
方法300は、1つ以上のメッセージオブジェクトについて、複数の各ユーザーに対するコンテキストデータを検索することを含むことができる(ブロック304)。コンテキストデータを検索することは、ユーザープロファイル222又は履歴データ224を含むコンテキストデータ220を検索することを含み得る。メッセージオブジェクトエバリュエータ252は、コンテキストデータを検索し、ユーザーにメッセージを送信するかどうか、及びいつ送信するかを決定することができる。コンテキストデータを検索することは、ブロック302で識別された複数の各ユーザーについてコンテキストデータを検索することを含むことができる。コンテキストデータを検索することは、ブロック302で識別された複数の各ユーザーについて、ユーザープロファイル222のコンテキストデータ220にアクセスすることを含むことができる。例えば、識別されたユーザーについて、メッセージオブジェクトエバリュエータ252は、識別されたユーザーのユーザープロファイル222にアクセスすることによって、そのユーザーのコンテキストデータ220を収集することができる。インボケータ250は、アプリケーションデータ及びユーザーテンションの指標を含む、各ユーザーのデータを得ることができる。このデータは、制約212を満たさないメッセージオブジェクト206をフィルタリングするために使用することができる。
方法300は、1つ以上のメッセージオブジェクト及びコンテキストデータに基づいてメッセージ候補を生成することを含み得る(ブロック306)。メッセージオブジェクトエバリュエータ252は、メッセージ候補を生成することができる。メッセージ候補240は、1つ以上のメッセージオブジェクト206及びコンテキストデータ220に基づくことができる。例えば、第1のメッセージ候補240は、識別されたユーザーのための第1のメッセージオブジェクト206によって生成することができる。第2のメッセージ候補240は、識別されたユーザーのための第2のメッセージオブジェクト206によって生成することができる。第3のメッセージ候補240は、識別されたユーザーのための第3メッセージオブジェクト206によって生成することができる。第1のメッセージ候補240は、ユーザーのユーザープロファイル222と、ユーザーの時刻の好みとに基づいて生成することができる。第2のメッセージ候補240は、ユーザーのユーザープロファイル222及び類似メッセージの有効性に基づいて生成することができる。第3のメッセージ候補240は、メッセージの時間的コンテキスト及びユーザープリケーションデータに基づいて生成することができる。メッセージオブジェクト206は、メッセージを生成することができ、リモートコンピューティングデバイスに送信され、メッセージ候補240として格納される。メッセージ候補240は、生成され、信頼値242と関連付けられ得る。メッセージ候補240に関連付けられた信頼値242は、メッセージオブジェクト206がメッセージオブジェクト目標値214の達成にどれだけ自信があるかを示すことができる。メッセージオブジェクト206は、メッセージに関連付けられた第1又は元の信頼値242を生成することができる。メッセージオブジェクト206は、制約212に基づいてメッセージ候補240を生成することができる。メッセージオブジェクト206は、メッセージオブジェクト206が制約212を満たさなかったために、メッセージ候補240の生成に失敗する可能性がある。
方法300は、クールダウン係数に基づいて、各メッセージ候補に対する信頼値をアップデートすることを含むことができる(ブロック308)。閾値マネージャ254は、クールダウン係数に基づいて各メッセージ候補240に対する信頼値242をアップデートすることは、アップデートされた信頼値242を生成することを含むことができる。信頼値242をアップデートすることは、メッセージ選択システム202のクールダウンポリシー232にアクセスし、メッセージ候補240に対するアップデートされた信頼値242を生成するためにクールダウンポリシーを適用することを含むことができる。クールダウン係数に基づいてアップデートされた信頼値242を生成することは、第1の信頼値又は元の信頼値に適用することができる。アップデートされた信頼値242は、メッセージオブジェクト206によって生成された第1の信頼値242とは別に保存することができる。例えば、異なるクールダウンポリシーが異なる時期に適用される可能性があるシナリオでは、元の信頼値又は第1の信頼値は、任意のアップデートされた信頼値と一緒に記憶され得る。クールダウン係数は、各メッセージ候補240について信頼値242をアップデートするスケーリング係数とすることができる。
方法300は、アップデートされた信頼値に基づいてメッセージ候補を選択することを含み得る(ブロック310)。メッセージオブジェクトエバリュエータ252は、メッセージ候補240を選択してもよく、選択されたメッセージ候補240は、リモートコンピューティングデバイスに送信することができる。選択されたメッセージ候補240は、ユーザーに送信することができるメッセージ候補240のセットのうち、最高の信頼値242を有してもよい。メッセージ候補240は、ユーザーに送信することができるメッセージ候補240のセットのうち、最高の信頼値242を有していなくてもよい。例えば、第1のメッセージ候補240は、第2のメッセージ候補240よりも低い信頼値242を有することができるが、第1のメッセージ候補240は、閾値ポリシー234のためにユーザーに送信される。メッセージオブジェクトエバリュエータ252は、メッセージ候補240を生成するためにメッセージオブジェクト206を実行するタイミングと、選択されたメッセージ候補240を送信するタイミングとを決定する。メッセージオブジェクト206は、メッセージ候補240がメッセージ候補240のプールの最大値との信頼値を有していても、メッセージオブジェクト206のメッセージを送信しないことを決定することができる。
方法300は、信頼値が所定の閾値を越えるかどうかを判断することを含むことができる(ブロック312)。信頼値242が所定の閾値を越えるまたは満たす場合、メッセージオブジェクトエバリュエータ252は、選択されたメッセージ候補を送信することができる。信頼値が所定の閾値を越えない、又は満足しない場合、システムは、複数のメッセージオブジェクト206を識別するか、又は新しいメッセージ候補240を選択することができる。
方法300は、選択されたメッセージ候補をリモートコンピューティングデバイス270に送信することを含むことができる(ブロック314)。メッセージオブジェクトエバリュエータ252は、アップデートされた信頼値242を閾値と比較し、選択されたメッセージ候補240を送信するかどうかを決定することができる。閾値は、セクションの前の部分で説明した様々な閾値ポリシー234に基づくことができる。
メッセージが送信された後、リモートコンピューティングデバイス270は、メッセージを受信することができる。リモートコンピューティングデバイス270は、アプリケーション272にメッセージを表示することができる。ユーザーはメッセージを受信することができ、これは、ユーザーからのレスポンス又はリプライを引き起こすことができる。ユーザーは、メッセージを受信することができ、これは、ユーザーからのアクションを引き出すことができる。
C.メッセージング・システムの間接的なアップデート。
メッセージング・システムは、健康、ウェルビーイング、フィットネス、及び全体的な生活の質を向上させるメッセージを配信することができる。しかし、メッセージング・システムは、メッセージ疲れにつながる可能性のあるメッセージの過剰供給をユーザーに配信する危険性があり得る。メッセージング・システムは、メッセージに対するレスポンスを利用して、メッセージを送信するタイミングを選択するためのモデルをアップデートすることで、将来のメッセージの送信時刻やメッセージの内容をカスタマイズすることができる。メッセージング・システムが送信するメッセージには、非修辞的なメッセージ、及び修辞的なメッセージがある。非修辞的なメッセージは、アプリケーションのユーザーにレスポンスや他の入力を促すことができる。修辞的なメッセージは、アプリケーションのユーザーにレスポンスや他の入力を促すものではない。例えば、修辞的なメッセージは、ユーザーに情報又はデータを提供することができる。又は修辞的メッセージの有効性に関するユーザーのレスポンスデータがなければ、メッセージング・システムは、修辞的メッセージを送信するタイミングを選択するためのモデルをアップデートすることができない場合がある。
本開示は、メッセージング・システムのメッセージオブジェクトのモデルを間接的にアップデートするためのシステム及び方法を説明するものである。メッセージング・システムは、修辞的メッセージに対するレスポンスを受信しない可能性があるので、非修辞的メッセージに関連するメッセージオブジェクトのモデルをアップデートするために、非修辞的メッセージに対するレスポンスを使用する。修辞的なメッセージは、暗黙のうちにユーザーからのレスポンスを生成しないため、修辞的なメッセージに対するレスポンスに基づいて、修辞的なメッセージの有効性又は非有効性を判断することはできない。さらに、ユーザーからのレスポンスがないと、メッセージング・システムは、修辞的メッセージがユーザーに与える利益を定量化できない場合がある。
修辞的メッセージからのレスポンスデータの欠如に関連するいくつかの課題に対処するために、本開示は、メッセージ選択システムのメッセージオブジェクトのモデルに対する間接的なアップデートに関する。メッセージ選択システムは、修辞的なメッセージに関連するメッセージオブジェクトのモデルをアップデートするために、非修辞的なメッセージに関連するレスポンスデータを組み込むことができるレスポンスエバリュエータを含むことができる。このようにして、メッセージ選択システムは、修辞的でないメッセージのレスポンスデータを、修辞的なメッセージのレスポンスデータ(又はその欠如)のプロキシとして使用することができる。このようにすることで、メッセージ選択システムは、修辞的メッセージに関する直接的なフィードバックを受けていなくても、カスタマイズされた修辞的メッセージを選択し、ユーザーのクライアントデバイスに送信することができる。また、メッセージ選択システムは、メッセージ疲れを防ぐために、カスタマイズされた時刻に修辞的なメッセージをユーザーのクライアントデバイスに送信することができる。
図7は、ユーザーにメッセージを送信するシステムの環境200のブロック図である。環境200は、メッセージ選択システム202内で実行される複数のモジュール、コンポーネント、又は他のエンティティを含む。メッセージ選択システム202のコンポーネントは、モバイルデバイス、コンピュータ、又はサーバなどのデバイス上で実行されるアプリケーション、プログラム、ライブラリ、スクリプト、サービス、プロセス、タスク、若しくは実行可能な命令の任意のタイプ及び形式を含むことができる。メッセージ選択システム202は、図2に関連して説明したような、本明細書で説明した他のメッセージ選択システム202の構成要素のいずれかを含むことができる。図2に関連して説明したメッセージ選択システム202に関連して説明した構成要素に加えて、メッセージ選択システム202は、類似メッセージオブジェクトセレクタ712およびレスポンス分類器714を含むことができる。
メッセージ選択システム202は、複数のメッセージオブジェクト206を含むことができる。メッセージオブジェクト206は、非修辞的メッセージオブジェクト206又は修辞的メッセージオブジェクト206であり得る。非修辞的メッセージオブジェクト206は、非修辞的メッセージが生成されるメッセージテンプレート208を有することができる。非修辞的なメッセージは、メッセージがリモートコンピューティングデバイス270のユーザーによって受信されたときに、ユーザーのレスポンスを引き出すメッセージである。例えば、非修辞的メッセージは、リモートコンピューティングデバイス270によって実行されると、リモートコンピューティングデバイス270に、例えば、プロンプト又は入力をユーザーに表示させるプロセッサ実行可能命令を含むことができる。プロンプト又は入力のアクティブ化は、リモートコンピューティングデバイス270がメッセージ選択システム202に送信するレスポンスメッセージを生成することができる。非修辞的メッセージオブジェクト206は、非修辞的メッセージモデル210を有する。モデル210は、非修辞的メッセージに応じて生成されたリモートコンピューティングデバイス270からのレスポンスに基づいてアップデートすることができる。非修辞的メッセージオブジェクト206は、リモートコンピューティングデバイス270のユーザーからのレスポンス又はリプライに対応する目標値214を有する。目標値214は、アクションに対応していてもよい。
メッセージオブジェクト206は、修辞的メッセージオブジェクトも含むことができる。修辞的なメッセージオブジェクト206は、修辞的なメッセージが生成されるメッセージテンプレート208を有することができる。修辞的なメッセージは、メッセージがリモートコンピューティングデバイス270のユーザーによって受信されたときに、ユーザーのレスポンスを引き出さないメッセージであり得る。例えば、修辞的メッセージは、ユーザーの水の摂取量を記録するようにユーザーに促すことなく、又はユーザーが水の摂取量を増やしたことを確認するようにユーザーに求めることなく、ユーザーに水を多く飲むように促すことができる。別の例では、修辞的メッセージは、リモートコンピューティングデバイス270でアプリケーション272によってレンダリングされたときに、ユーザーに情報又はデータを表示することができる。修辞的メッセージオブジェクト206は、修辞的メッセージモデル210を有する。修辞的メッセージオブジェクト206は、アクションに対応し得る目標値214を有する。メッセージ選択システム202は、修辞的でないメッセージに対するリモートコンピューティングデバイス270からのレスポンスに基づいて、修辞的メッセージオブジェクト206に関連する目標値214を決定することができる。
メッセージ選択システム202は、レスポンス分類器714を含むことができる。同様のレスポンス分類器714は、非修辞的メッセージからのレスポンスを分類するためのアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、又は他の実行可能なロジックであり得る。レスポンス分類器714は、メッセージ選択システム202内のレスポンスのデータベースを検索して、メッセージオブジェクト206のモデル210をトレーニング又はアップデートするための機能セットを生成することができる。機能セットは、メッセージ選択システム202から送信されたメッセージに対するレスポンスの品質スコアに関連する情報を含むことができる。機能セットは、メッセージがリモートコンピューティングデバイス270に送信されたとき、メッセージに対するレスポンスが受信されたとき(または受信された場合)、及びレスポンスの品質スコアを示す時系列を含むことができる。品質スコアは、受信したメッセージに対するユーザーのエンゲージメントのレベルを示すことができる。レスポンス分類器714は、リモートコンピューティングデバイスへのメッセージの送信から、メッセージ選択システム202がメッセージへのレスポンスを受信するまでの時間に基づいて、レスポンスの品質スコアを決定することができる。例えば、レスポンス分類器714は、メッセージの送信から所定の持続時間内に受信したレスポンスに高品質スコアを割り当て、所定の持続時間後に受信したレスポンスに低品質スコアを割り当てることができる。いくつかの実装では、品質スコアは、時間減衰関数に基づくことができる。いくつかの実装では、レスポンス分類器714は、レスポンスの内容に基づいて品質スコアを生成することができる。例えば、メッセージが、ユーザーがテキストを入力するための入力ボックスを含む場合、レスポンス分類器714は、入力ボックスに入力されたテキストの量に基づいて、品質スコアを割り当てることができる。
レスポンス分類器714は、レスポンスポリシー716に従って、非修辞的メッセージからのレスポンスを分類することができる。レスポンス分類器714は、品質スコアが、応答時間、メッセージとのインタラクション又はエンゲージメントの量(例えば、入力ボックスに入力されたテキストの量)、若しくはそれらの組み合わせに基づいて計算されるかどうかを示すことができる。レスポンスポリシー716は、品質スコアが時間ベースであることを示すことができる。例えば、レスポンスポリシー716は、リモートコンピューティングデバイス270による、修辞的でないメッセージの受信から、レポーティングエージェント274によるユーザーのレスポンスの記録までの経過時間に基づくことができる。例えば、リモートコンピューティングデバイス270は、午前7時にメッセージを受信することができる。修辞的でないメッセージは、リモートコンピューティングデバイス270のユーザーに、ユーザーがオフィスに出かける前に5分間のストレッチを行うことを促すことができる。非修辞的メッセージは、ユーザーが5分間のストレッチングセッションに従事したことを確認するようユーザーに求めるボタンを含むことができる。レポーティングエージェント274は、ユーザーがメッセージを受信した直後に、ユーザーが午前7時から午前7時10分の間にストレッチセッションに従事したことを示している、ユーザーが午前7時10分に5分間のストレッチセッションに従事したという確認を受信することができる。レスポンスポリシー716は、時間ベースで、非修辞的なメッセージに対するレスポンスをランク付けすることができる。例えば、レスポンスポリシー716は、非修辞的なメッセージに対する迅速なレスポンスを、非修辞的なメッセージに対する遅いレスポンスよりも高くランク付けすることができる。レスポンスポリシー716は、ユーザーがメッセージに応答するための時間制限を含むことができる。
レスポンスポリシー716は、品質スコアがエンゲージメントベースであることを示すことができる。例えば、高い品質スコアは、アクティブなユーザーのエンゲージメントが高いレベルにあるレスポンスとすることができる。メッセージは、“活動をどのように評価しますか?”、“水を飲むことについての別のリマインダを希望しますか?”など、メッセージの内容に関するいくつかの質問に答えるようにユーザーを促すことができる。アクティブなユーザー・エンゲージメントを持つレスポンスには、メッセージによって促された質問の大部分にユーザーが答えるレスポンスが含まれることがある。
メッセージ選択システム202は、類似メッセージオブジェクトセレクタ712を含むことができる。類似メッセージオブジェクトセレクタ712は、メッセージオブジェクトの別のメッセージオブジェクト206に対する類似性に基づいてメッセージオブジェクト206を選択するアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、又は他の実行可能なロジックであり得る。類似メッセージオブジェクトセレクタ712は、アップデートする修辞的メッセージオブジェクト206を識別することができる。類似メッセージオブジェクトセレクタ712は、レスポンスエバリュエータ256が所定の時間内にモデル210をアップデートしていない場合に、アップデートする修辞的メッセージオブジェクト206を選択することができる。例えば、類似メッセージオブジェクトセレクタ712は、毎日、毎週、又は毎月、モデル210をアップデートすることができる。類似メッセージオブジェクトセレクタ712は、修辞的メッセージオブジェクト206の分類を決定することができる。類似メッセージオブジェクトセレクタ712は、修辞的メッセージオブジェクトの分類を決定して、修辞的メッセージオブジェクト206のモデル210をアップデートするために使用することができる類似の非修辞的メッセージオブジェクト206を見つけることができる。
類似メッセージオブジェクトセレクタ712は、アップデートされる修辞的メッセージオブジェクト206と類似する非修辞的メッセージオブジェクト206を識別することができる。非修辞的メッセージオブジェクト206の特徴セット(例えば、レスポンスデータ)は、類似の分類の修辞的メッセージオブジェクト206をアップデートすることができる。類似メッセージオブジェクトセレクタ712は、アップデートされる修辞的メッセージオブジェクト206と類似する非修辞的メッセージオブジェクト206を識別することができる。非修辞的メッセージオブジェクト206が修辞的メッセージオブジェクト206と同じ分類、タグ、又はカテゴリを有する場合、非修辞的メッセージオブジェクト206は修辞的メッセージオブジェクト206と類似することができる。例えば、類似メッセージオブジェクトセレクタ712は、アップデートされる修辞的メッセージオブジェクト206のタグ(例えば、呼吸法)を識別し、同じタグを有する1つ以上の非修辞的メッセージオブジェクト206を検索することができる。類似メッセージオブジェクトセレクタ712は、同じタグを有するメッセージオブジェクト206を識別することができる。例えば、メッセージオブジェクトは、「呼吸法」タグ又は「水分補給」タグを有することができる。類似メッセージオブジェクトセレクタ712は、修辞的でないメッセージオブジェクトの修辞的メッセージオブジェクト206に対する類似性に基づいて、修辞的でないメッセージオブジェクト206を選択することができる。類似メッセージオブジェクトセレクタ712は、同じタグ又は分類を有するメッセージオブジェクト206のグループを識別することができる。
レスポンスエバリュエータ256を再び参照すると、レスポンスエバリュエータ256は、ネットワーク104を介してレポーティングエージェント274から情報及びデータを受け取り、メッセージオブジェクト206のモデル210へのアップデートを生成する。本開示の前のセクションで説明したように、メッセージオブジェクト206のモデル210は、入力としてコンテキストデータ220を受け取り、目標値214を達成するためのメッセージの予測される有効性を示す信頼値242を出力することができる。モデル210は、機械学習モデル(例えば、強化学習モデル、k近傍法、バックプロパゲーションモデル、q学習モデル、遺伝的アルゴリズムモデル、ニューラルネットワーク、教師付き学習モデル、又は教師なし学習モデル)であり得る。レスポンスエバリュエータ256は、メッセージに対する過去のレスポンスから生成された機能セットに基づいて、モデル210をトレーニングすることができる。各メッセージオブジェクト206のモデル210は、目標値214の信頼度を示す信頼値242を出力することができる。
レスポンスエバリュエータ256は、メッセージオブジェクト206のモデル210をアップデートすることができる。アップデートするメッセージオブジェクト206は、レスポンス分類器714による分類に基づいて、類似メッセージオブジェクトセレクタ712によって選択することができる。レスポンスエバリュエータ256は、レスポンスポリシー716に従ってレスポンス分類器によって分類されたレスポンスに基づいて、修辞的メッセージオブジェクト206のモデル210をアップデートすることができる。例えば、類似メッセージオブジェクトセレクタ712は、アップデートされる修辞的メッセージオブジェクト206と同じタグ又は分類を有する非修辞的メッセージオブジェクト206を識別することができる。類似メッセージオブジェクトセレクタ712は、識別された非修辞的メッセージオブジェクト206からのメッセージに応じてメッセージ選択システム202が受信したレスポンスメッセージを識別し、レスポンスエバリュエータ256が非修辞的メッセージオブジェクト206及び修辞的メッセージオブジェクト206のモデル210をアップデートするために使用できる機能セットを生成することができる。
レスポンスエバリュエータ256は、モデル210をトレーニング又は再トレーニングすることによって、メッセージオブジェクト206のモデル210をアップデートすることができる。レスポンスエバリュエータは、非修辞的なメッセージオブジェクト206からの機能セットに基づいて、修辞的なメッセージオブジェクト206のモデル210をトレーニングすることができる。上述のように、レスポンスエバリュエータ210は、非修辞的メッセージオブジェクト206によって生成されたメッセージに対して受信されたレスポンスに基づいて、非修辞的メッセージオブジェクト206のモデル210をアップデートすることができる。レスポンスエバリュエータ256は、類似メッセージオブジェクトセレクタ712が識別したメッセージオブジェクト206のモデル210に基づいて、修辞的メッセージオブジェクト206のモデル210をアップデートすることができる。例えば、レスポンスエバリュエータ256は、識別された非修辞的メッセージオブジェクト206の1つから、アップデートされるべき修辞的メッセージオブジェクト206にモデル210をインポート又はコピーすることができる。
レスポンスエバリュエータ256は、非修辞的メッセージオブジェクト206によって生成されたメッセージに対するレスポンスに基づいて、修辞的メッセージオブジェクト206のモデル210をアップデートすることができる。例えば、類似メッセージオブジェクトセレクタ712は、アップデートされる修辞的メッセージオブジェクト206と同じ分類を有する複数の非修辞的メッセージオブジェクト206を識別することができる。レスポンスエバリュエータ256は、識別された非修辞的メッセージオブジェクト206に対する複数の過去のメッセージ及びレスポンスを識別することができる。レスポンスエバリュエータ256は、識別された非修辞的メッセージオブジェクト206に対する複数の過去のメッセージ及びレスポンスに基づいて、機能セットを生成することができる。そして、レスポンスエバリュエータ256は、識別された非修辞的メッセージオブジェクト206に対する複数の過去のメッセージ及びレスポンスから生成された機能セットに基づいて、修辞的メッセージオブジェクト206のモデルをトレーニングすることができる。
メッセージ選択システム202は、修辞的メッセージの有効性を決定することができる。レスポンスエバリュエータ256は、アプリケーション272のユーザーのサブセットが修辞的メッセージを受け取り、アプリケーション272のユーザーのサブセットが修辞的メッセージを受け取らないA/Bテスト(例えば、スプリットテスト又はバケットテスト)を実施することができる。このようにして、メッセージ選択システム202は、修辞的なメッセージの効果を測定することができる。例えば、ユーザーのサブセット(例えば、半分)(グループA)が修辞的メッセージを受信し、ユーザーのサブセット(例えば、半分)(グループB)が修辞的メッセージを受信しないことができる。グループAのユーザーは、グループBのユーザーとは異なっていてもよく、グループAは、修辞的メッセージを同時に受け取る異なる人を含むことができる。メッセージ選択システム202は、修辞的なメッセージがアプリケーション272に対するユーザーのエンゲージメントに与える効果、及び修辞的なメッセージが健康、ウェルビーイング、並びにフィットネスを向上させるユーザーの行動につながるかどうかを判断するために、他の変数(例えば、メッセージの送信数、メッセージが送信される時刻)を一定に保つことができる。メッセージ選択システム202は、修辞的なメッセージを受け取ったユーザーのアクション又はレスポンスを、修辞的なメッセージを受け取らなかったユーザーと比較することによって、修辞的なメッセージの効果を測定することができる。
図8は、学習モデルを間接的にアップデートする例示的な方法800のフロー図を示す。方法800は、サーバの1つ以上のプロセッサによって、複数の非修辞的メッセージ及び複数の修辞的メッセージを識別することを含むことができる(ブロック802)。方法800は、サーバの1つ以上のプロセッサによって、修辞的メッセージモデルを識別することを含むことができる(ブロック804)。方法800は、サーバの1つ以上のプロセッサによって、複数の非修辞的メッセージモデルを識別すること(ブロック806)を含むことができる。方法800は、サーバの1つ以上のプロセッサによって、非修辞的メッセージに対するレスポンスメッセージを受信することを含むことができる(ブロック808)。方法800は、非修辞的メッセージに対する受信したレスポンスメッセージに基づいて、修辞的メッセージモデルをアップデートすることを含むことができる(ブロック810)。
上述したように、方法800は、複数の非修辞的メッセージ及び複数の修辞的メッセージを識別することを含むことができる(ブロック802)。非修辞的メッセージは、ユーザーが応答するためのプロンプトを生成するメッセージを含むことができる。修辞的なメッセージは、ユーザーが応答するためのプロンプトを生成しないメッセージを含むことができる。例えば、修辞的なメッセージには、ユーザーを励ますメッセージや、ユーザーに興味深い事実を表示するメッセージなどが含むことができる。複数の非修辞的なメッセージ及び修辞的なメッセージを識別することは、メッセージのデータベースを検索することを含むことができる。データベース内の非修辞的メッセージは、レスポンス分類器によってタグ付け又は分類することができる。データベース内の修辞的なメッセージは、修辞的であるとタグ付けすることができる。
方法800は、修辞的メッセージモデルを識別することを含むことができる(ブロック804)。修辞的メッセージモデルを識別することは、修辞的メッセージオブジェクトとしてタグ付け、グループ化、又は分類されたメッセージオブジェクトを識別すること、及び修辞的メッセージオブジェクトのモデルを選択又は識別することとを含むことができる。例えば、修辞的メッセージオブジェクトは、修辞的メッセージモデルを有する修辞的メッセージオブジェクトとして分類され得る。メッセージ選択システムは、修辞的メッセージオブジェクトのモデルをアップデートする必要があると識別することができる。例えば、メッセージ選択システムは、修辞的メッセージオブジェクト及び非修辞的メッセージオブジェクトの両方のモデルを定期的にアップデートすることができる。メッセージ選択システムは、毎日、毎週、毎月など、メッセージオブジェクトを処理して、アップデートのためのメッセージオブジェクトを選択することができる。
方法800は、複数の非修辞的メッセージモデルを識別することを含むことができる(ブロック806)。メッセージ選択システムは、アップデートされる修辞的メッセージオブジェクト(及びモデル)と同じ分類又はグループ化を有する複数の非修辞的メッセージオブジェクトを識別することができる。例えば、メッセージ選択システムは、修辞的メッセージオブジェクトが「水分補給(hydration)」タグ、及び「水分補給(hydration)」タグでタグ付けされた複数の非修辞的メッセージオブジェクトを有することを決定することができる。各メッセージオブジェクトの表示は、リレーショナルデータベース又は他のデータベースに格納することができる。データベース内のメッセージオブジェクトの属性又は列は、タグ若しくは分類タグとすることができる。類似メッセージオブジェクトセレクタは、アップデートされる修辞的メッセージオブジェクトのタグを決定し、同じタグを有する非修辞的メッセージオブジェクトをデータベースに照会することができる。
方法800は、非修辞的メッセージに対するレスポンスメッセージを受信することを含むことができる(ブロック808)。レスポンスエバリュエータは、ブロック806で識別された修辞的メッセージオブジェクトの1つによって生成された非修辞的メッセージに対するレスポンスメッセージを受信することができる。いくつかの実装では、レスポンスエバリュエータは、ブロック806で識別された非修辞的メッセージオブジェクトによって生成された過去のメッセージに対する以前のレスポンスを取得することができる。レスポンス分類器は、受信したレスポンス又はブロック806で識別された非修辞的メッセージオブジェクトによって生成されたメッセージに対する過去のレスポンスに基づいて、1つ以上の機能セットを生成することができる。例えば、機能セットは、メッセージがリモートコンピューティングデバイスに送信された時刻、レスポンスが受信された時刻、及びレスポンスの品質スコアを示すことができる。また、レスポンス分類器は、メッセージ選択システムがレスポンスを受信しなかったメッセージの機能セットを生成することができる。機能セットは、メッセージがリモートコンピューティングデバイスに送信された時刻と、レスポンスが受信されなかったことを示す表示とを含むことができる。
方法800は、修辞的メッセージモデルをアップデートすることを含むことができる(ブロック810)。レスポンスエバリュエータは、識別された修辞的メッセージオブジェクトの非修辞的モデルに基づいて、修辞的モデルをアップデートすることができる。例えば、いくつかの実装では、レスポンスエバリュエータは、受信した(又は受信していない)レスポンスに応じて生成された機能セットをトレーニングデータとして使用して、非修辞的メッセージオブジェクトのモデルを再トレーニングすることができる。レスポンスエバリュエータは、アップデートされた機能セットで再学習されたモデルを、アップデートされる修辞的メッセージオブジェクトにコピーすることができる。いくつかの実装では、レスポンスエバリュエータは、非修辞的メッセージに対する受信したレスポンスメッセージに基づいて、修辞的メッセージモデルをアップデートすることができる。例えば、非修辞的メッセージオブジェクトのモデルを、そのメッセージに対するレスポンスに基づいてアップデートし、アップデートされたモデルを修辞的メッセージオブジェクトにコピーするのではなく、レスポンスエバリュエータは、識別された複数の非修辞的メッセージオブジェクトによって生成されたメッセージに対するレスポンスに基づいて生成された1つ以上の機能セットを識別することができる。レスポンスエバリュエータは、識別された複数の非修辞的メッセージオブジェクトによって生成されたメッセージへのレスポンスに基づいて生成された1つ以上の機能セットを使用して、修辞的メッセージオブジェクトのモデルをトレーニングすることができる。
D.信頼値を用いてネットワーク環境上でメッセージを選択及び送信するシステム並びに方法
メッセージは、特定の行動を取ることを指定したり、情報を提供したりするなど、ユーザーに通知するためにコンピューティングデバイスを介して提示されることがある。しかし、メッセージが繰り返し提示されると、ユーザーがメッセージの提示から何の行動も起こさず、ユーザー側にメッセージ疲れを引き起こす可能性がある。メッセージ疲れは、ユーザーに通知するメッセージの効果を低下させ、メッセージを提示する際のコンピューティングデバイスのヒューマンコンピュータインタラクション(HCI)の質を低下させる可能性がある。メッセージがネットワークを介して送信され、コンピューティングデバイスによって処理されるため、効率の低下は、計算リソースとネットワーク帯域幅の浪費につながる可能性がある。
メッセージ疲れに関するこれら及びその他の課題に対処するために、メッセージの選択及び提供は、ユーザーごとに行われてもよい。そのために、メッセージ選択システムは、メッセージオブジェクトのセットを維持してもよい。各メッセージは、対応するメッセージがどのように生成されるかを定義するテンプレートと、対応するメッセージを提供することで達成される1つ以上のエンドポイント(又は目的)を示す選択基準とを含んでもよい。メッセージが特定のユーザーに提供される場合、メッセージ選択システムは、ユーザーのアクティビティログを使用してユーザー状態(又は「意図」)を導出又は識別してもよい。アクティビティログには、ユーザーが以前に提示されたメッセージにどのように反応したかを示すエントリが含まれていてもよい。ユーザー状態は、対応するメッセージを生成するためにメッセージオブジェクトの1つを選択するために使用されてもよい。
メッセージ選択システムは、各メッセージオブジェクトについて、対応するメッセージのユーザーへの提示がその目的を達成する可能性を示す信頼値を生成してもよい。メッセージ選択システムは、ユーザーのコンピューティングデバイスに任意のメッセージが提供されてからの経過時間、コンピューティングデバイスが所定の時間内に受信するように設定されているユーザープロファイルに示されたメッセージの総数、及びユーザーがアウェイク又はアクティブである時間の長さなどの調整要素に基づいて、メッセージオブジェクトの信頼性値を変更してもよい。調整された信頼値を用いて、メッセージ選択システムは、メッセージオブジェクトの1つを選択してもよい。メッセージ選択システムは、選択されたメッセージオブジェクトに従ってメッセージを生成し、ユーザーのコンピューティングデバイスに提供してもよい。ユーザーの回答は、コンピューティングデバイスを使用して記録され、次のラウンドの選択で使用されるようにメッセージ選択システムに提供されてもよい。
このようにして、メッセージ選択システムは、適切なタイミングでユーザーのアクションにつながる可能性の高いメッセージを送信することができ、それによって、ユーザーとコンピューティングデバイスの間のHCI及びコンピューティングデバイス上でのメッセージの提示の有効性を高めることができる。また、ユーザーのアクションにつながる可能性が高いメッセージを選択することで、メッセージの提供や提示に必要なコンピューティングリソースやネットワーク帯域の無駄を省くことができる。また、各ユーザーに合わせた適切なコンテンツを適切なタイミングで配信することで、ユーザーのアプリケーションに対するエンゲージメントを向上させることができます。パーソナライズされた関連性の高いメッセージがアプリケーションを通じて各ユーザーにタイムリーに配信されることで、健康、ウェルビーイング、フィットネス、生活の質の向上を目的としたユーザーの実際のアクションにつなげることができる。
ここで図9Aを参照すると、信頼値を使用してネットワーク環境間でメッセージを選択及び送信するためのシステム900のブロック図が描かれている。概要として、システム900は、少なくとも1つのメッセージ選択システム902と、1つ以上のリモートコンピューティングデバイス904A~N(以下、総括的にリモートコンピューティングデバイス904と呼ぶ)とを含んでもよい。メッセージ選択システム902及びリモートコンピューティングデバイス904は、少なくとも1つのネットワーク906を介して互いに通信可能に結合されてもよい。メッセージ選択システム902は、少なくとも1つの状態トラッカー908、少なくとも1つのオブジェクトエバリュエータ910、少なくとも1つのモデルトレーナー912、少なくとも1つのメッセージ配信器914、少なくとも1つのメッセージジェネレータ916、少なくとも1つのレスポンスハンドラ918、少なくとも1つの評価モデル920、少なくとも1つの配信ポリシー922、少なくとも1つのアクティビティデータベース924、及び少なくとも1つのメッセージデータベース926を含んでもよい。アクティビティデータベース924は、1つ以上のアクティビティログ928A~N(以下、一般的にアクティビティログ928と呼ぶ)を維持又は含んでもよい。メッセージデータベース926は、1つ以上のメッセージオブジェクト930A-N(以下、一般的にメッセージオブジェクト930と呼ぶ)を維持又は含んでもよい。各リモートコンピューティングデバイス904は、少なくとも1つのアプリケーション932を有してもよい。リモートコンピューティングデバイス904上で動作するアプリケーション932は、少なくとも1つのレポーティングエージェント934を有してもよい。リモートコンピューティングデバイス904は、少なくとも1人のユーザー936と関連していてもよい。
システム900の各構成要素(例えば、メッセージ選択システム902とその構成要素、及びリモートコンピューティングデバイス904並びにその構成要素)は、セクションAで本明細書に詳述したシステム100のようなハードウェア又はハードウェアの組み合わせを使用して実行、処理、若しくは実装されてもよい。また、システム900の構成要素は、本明細書のセクションB及びCで詳述されている機能性を実行、処理、又は実装するために使用されてもよい。例えば、メッセージ選択システム902は、メッセージ選択システム202に関連して説明した機能を含んでもよい。データベース924に保持されたメッセージオブジェクト930は、メッセージオブジェクト206に関連して本明細書で詳述された機能を含んでもよい。オブジェクトエバリュエータ912は、特に、メッセージオブジェクトエバリュエータ252の機能を含んでもよい。リモートコンピューティングデバイス904は、リモートコンピューティングデバイス270に関連して本明細書に記載された機能を含むか、又は実行してもよい。
次に図9Bを参照すると、メッセージ選択システム902の、特に状態トラッカー908、モデルトレーナー910、及びオブジェクトエバリュエータ912の動作を伴うシステム900のシーケンス図が描かれている。メッセージ選択システム902上で実行される状態トラッカー908は、アクティビティデータベース924にアクセスして、リモートコンピューティングデバイス904、アプリケーション932、又はユーザー936のいずれかのアクティビティログ928を取得若しくは識別してもよい。アクティビティデータベース924に保持されているアクティビティログ928は、1つ以上のエントリ940A~N(以下、一般的にエントリ940と呼ぶ)を含んでもよい。アクティビティログ928の各エントリ940は、ユーザー936に関連付けられたリモートコンピューティングデバイス904を介して記録された、ユーザー936による少なくとも1つのアクションを識別又は含んでもよい。ユーザー936によるアクションは、リモートコンピューティングデバイス904上のアプリケーション932を介したメッセージの以前の提示に応じたものであってもよい。例えば、リモートコンピューティングデバイス904上で実行されているアプリケーション932は、アプリケーション932上で提示された前回のメッセージの1つ以上のユーザーインタフェース要素を介してユーザー936が入力したインタラクションを検出してもよい。ユーザーインタフェース要素とのインタラクションは、ユーザー936によって実行されたアクションを示してもよい。検出されると、アプリケーション932は、アクティビティデータベース924上のアクティビティログ928に記録するために、メッセージ選択システム902にインタラクションの指示を送信してもよい。指示は、インタラクションが入力された時刻を特定するタイムスタンプを含んでもよい。受信すると、リモートコンピューティングデバイス904からの指示は、アクティビティログ928のエントリ940の1つとしてアクティビティデータベース924に記憶され、維持されてもよい。
アクティビティデータベース924からの識別により、状態トラッカー908は、アクティビティログ928を解析して、エントリ940を識別又は取得してもよい。エントリ940を識別することによって、状態トラッカー908は、アクティビティログ928のエントリ940に示されているように、リモートコンピューティングデバイス904を介して記録されたユーザー936によって実行されたアクションを決定、識別、又は取得してもよい。いくつかの実施形態では、状態トラッカー908は、定義された時間窓内のエントリ940のタイムスタンプに基づいて、アクティビティログ928のエントリ940のサブセットを選択又は識別してもよい。定義された時間窓は、現在時刻に対して相対的であってもよく、1時間から1ヶ月の範囲であってもよい。例えば、状態トラッカー908は、タイムスタンプで示されるように、過去1週間からのアクティビティログ928のエントリ940のサブセットを選択してもよい。アクティビティログ928からの選択フォーム時に、状態トラッカー908は、各エントリ940に示されるように、ユーザー936によって実行されたアクションを識別してもよい。
エントリ940に示されているアクションに基づいて、状態トラッカー908は、リモートコンピューティングデバイス904のユーザー936に対する少なくとも1つのユーザー状態942(本明細書では、「意図」または「ユーザー意図」と呼ばれることがある)を識別又は決定してもよい。ユーザー状態942は、アクティビティデータベース924上のアクティビティログ928のエントリ940に記録されたアクションを推測して、ユーザー936の側で期待される目的(例えば、行動のエンドポイント)を分類又は識別してもよい。ユーザー状態942は、エントリ940に示された使用アクションの様々な側面に関連してもよく、例えば、アプリケーションナビゲーションイベント(例えば、アプリケーション932を開くこと)、アプリケーション932を介して提供されるレジームに準拠した特定のマイルストーンに属するアプリケーション932の完了のような1つ以上の機能とのエンゲージメント・パターン又はインタラクション率、及びアンケート(例えば、ユーザーの健康に関連する)からのユーザー入力データなどを含んでもよい。ユーザー状態942は、ユーザー936に提示するために提供するメッセージに対応するメッセージオブジェクト930の1つを選択する際のパラメータの1つとして使用されてもよい。いくつかの実施形態では、ユーザー状態942は、セクションBおよびCで議論されたようなコンテキストデータ220に対応してもよく、状態トラッカー908は、アクティビティログ928から特定されたアクションに基づいて、ユーザー状態942のセットからユーザー状態942を選択又は決定してもよい。セット内の各ユーザー状態942は、1つ以上のアクションに対応するものとして定義されてもよい。例えば、アクティビティログ928から特定されたアクションが、セット内のユーザー状態942に対して定義されたアクションの1つと一致する場合、状態トラッカー908は、ユーザー936のための対応するユーザー状態942を決定してもよい。
関連して、メッセージ選択システム902上で実行されるオブジェクトエバリュエータ910は、メッセージデータベース926から1つ以上のメッセージオブジェクト930を識別してもよい。識別されたメッセージオブジェクト930は、リモートコンピューティングデバイス904での提示に提供する対応するメッセージを選択して生成するためのメッセージオブジェクト候補として機能してもよい。各メッセージオブジェクト930は、ユーザー936への提示のために対応するメッセージを生成して送信するかどうかを評価するための実行可能な命令(例えば、スクリプト)のセットを含んでもよい。いくつかの実施形態では、メッセージオブジェクト930は、セクションBおよびCで上述したメッセージオブジェクト206及びそのコンポーネントに対応してもよい。
各メッセージオブジェクト930は、とりわけ、少なくとも1つのメッセージテンプレート944、少なくとも1つの制約946、及び少なくとも1つの選択基準948を含んでもよい。メッセージテンプレート944は、1つ以上のユーザーインタフェース要素を含むように対応するメッセージを生成するための命令を含んでもよい。例えば、メッセージテンプレート944は、リモートコンピューティングデバイス904を介して提示されるメッセージのグラフィカル・ユーザーインタフェース要素にテキスト又はビジュアルコンテンツを挿入するためのプレースホルダーを識別してもよい。制約946は、メッセージオブジェクト930に対応するメッセージを生成又は送信するための1つ以上の制約を定義若しくは含んでもよい。制約946の制限は、例えば、対応するメッセージの生成及び送信が許可される1つ以上の時間窓(例えば、時刻又は週末対平日)を含んでもよい。選択基準948は、メッセージオブジェクト930に対応するメッセージを提示する際にユーザー936が達成すべき1つ以上のエンドポイントを定義又は含んでもよい。また、選択基準948は、エンドポイントが達成されるべき時間窓を識別又は定義してもよい。選択基準948のエンドポイントは、アプリケーション932を介して提供されるデジタル療法の最適な提供を可能にするために、摂生パターンに従事するようにユーザー936を動機付けるものなど、ユーザー936に達成されることが期待される行動目標を含んでもよい。選択基準948は、ユーザー936がより大きな治療効果を受けるように動機付けすることを目的として、事前に構成又は事前設定されてもよい。選択基準948によって定義される行動オブジェクトは、例えば、アプリケーションナビゲーションイベント(例えば、アプリケーション932を開くこと)、ユーザー936の側での特定の活動(例えば、呼吸、エクササイズ、又はダイエット)の実行、及びアプリケーション932を介した活動のスケジューリング(例えば、エクササイズを実行する将来の時刻を指定すること)などを含んでもよい。
各メッセージオブジェクト930について、オブジェクトエバリュエータ910は、ユーザー状態942及び選択基準948に基づいて、少なくとも1つの信頼値952を計算、生成、又は決定してもよい。信頼値952は、メッセージオブジェクト930に対する選択基準948によって定義されたエンドポイントの達成に向けて、特定のユーザー936に対するメッセージオブジェクト930に対応するメッセージの予測効果を特定、表現、又は示してもよい。また、信頼値952は、ユーザー936が、選択基準948によって定義されたエンドポイントのうちの少なくとも1つに対応する行動をとるという予測される可能性を示してもよい。メッセージオブジェクト930に対する信頼値952を決定する際、オブジェクトエバリュエータ910は、選択基準948によって定義されたエンドポイントと、ユーザー938のユーザー状態942とを比較してもよい。ユーザー状態942は、ユーザー936の側の目的を識別してもよく、選択基準948によって定義されたエンドポイントの1つに対応してもよい。選択基準948によって定義されたエンドポイントの少なくとも1つが、ユーザー状態942と一致又は対応する場合、オブジェクトエバリュエータ910は、比較的高い信頼値942を決定してもよい。逆に、選択基準948によって定義されたエンドポイントのいずれも、ユーザー状態942に一致又は対応しない場合、オブジェクトエバリュエータ910は、相対的に低い信頼値942を決定してもよい。いくつかの実施形態では、メッセージ配信器914はまた、メッセージオブジェクト930をさらなる処理から削除してもよい。
信頼値952の決定を容易にするために、メッセージ選択システム902上で実行されるモデルトレーナー912は、評価モデル920を維持してもよい。評価モデル920は、メッセージオブジェクト930の信頼値952を決定するために使用されてもよい。評価モデル920は、例えば、回帰モデル(例えば、線形回帰モデル又はロジスティック回帰モデル)、サポートベクターマシン(SVM)、人工ニューラルネットワーク(ANN)、ナイーブベイズ分類器、及び分類モデル(例えば、k近傍法)などを含んでもよい。一般に、評価モデル920は、一組の重みを介して互いに関連する一組の入力と一組の出力とを含んでもよい。いくつかの実施形態では、評価モデル920は、メッセージオブジェクト930の1つ(例えば、モデル210)の一部であるか、又は専用であってもよい。いくつかの実施形態では、評価モデル920は、個々のメッセージオブジェクト930とは別に、メッセージデータベース926に保持されているメッセージオブジェクト930のセットに対して一般的であってもよい。
モデルトレーナー912は、トレーニングデータセットを使用して、評価モデル920を開始又は確立してもよい。評価モデル920のトレーニングは、評価モデル920のアーキテクチャに応じて行われてもよい。例えば、評価モデル920が分類モデルである場合、トレーニングは、収束するまで反復的に実行されてもよい。評価モデル920のためのトレーニングデータセットは、以前に提示されたメッセージに対するユーザー(例えば、ユーザー936)からのレスポンスデータ履歴を含んでもよい。トレーニングデータセット内のメッセージは、メッセージオブジェクト930の1つ以上に対応してもよい。トレーニングデータセットは、ユーザーに以前に提供されたメッセージに対応するメッセージオブジェクト930のメッセージテンプレート944、制約946、及び選択基準948を含んでもよい。レスポンスデータ履歴は、メッセージオブジェクト930によって指定されたエンドポイントの達成における成功又は失敗を示してもよい。モデルをトレーニングする際、モデルトレーナー912は、トレーニングデータセットを評価モデル920に適用して、成功又は失敗を示す出力を生成してもよい。モデルトレーナー912は、出力とレスポンスデータ履歴で示される結果との比較に基づいて、評価モデル920の重みを調整又は修正し、収束するまで適用を繰り返してもよい。評価モデル920の重みの修正は、評価モデル920を実装するために使用されるアーキテクチャに対する学習に従ったものであってもよい。
確立により、オブジェクトエバリュエータ910は、ユーザー状態942及びメッセージオブジェクト930を評価モデル920に適用して、信頼値952を生成又は決定してもよい。いくつかの実施形態では、オブジェクトエバリュエータ910は、評価モデル920に適用する際に、メッセージテンプレート944、制約946、及び選択基準948、又はそれらの任意の組み合わせを(例えば、特徴空間表現において)考慮してもよい。例えば、オブジェクトエバリュエータ910は、評価モデル920に適用する際に、メッセージオブジェクト930のユーザー状態942及び選択基準948によって定義されるエンドポイントを使用してもよい。適用するために、オブジェクトエバリュエータ910は、評価モデル920への入力として、ユーザー状態942及びメッセージオブジェクト930を(例えば、それらの特徴空間表現で)供給してもよい。オブジェクトエバリュエータ910は、評価モデル920の重みの使用により入力を処理し、評価モデル920の出力を生成してもよい。オブジェクトエバリュエータ910は、評価モデル920の出力を、メッセージオブジェクト930の信頼値952として識別してもよい。一般的に、選択基準948によって定義されたエンドポイントの少なくとも1つがユーザー状態942と相関するとき、信頼値942は相対的に高くなってもよい。逆に、選択基準948によって定義されたエンドポイントのいずれもがユーザー状態942と相関しない場合、信頼値942は相対的に低くてもよい。
いくつかの実施形態では、メッセージ配信器914は、メッセージオブジェクト930に対して定義された制約946に基づいて、メッセージオブジェクト930の1つ以上を選択から維持又は削除してもよい。各メッセージオブジェクト930について、メッセージ配信器914は、制約946を識別してもよい。上述したように、制約946は、メッセージオブジェクト930に対応するメッセージを生成又は送信するための1つ以上の制約(例えば、時間窓)を定義若しくは含んでもよい。いくつかの実施形態では、メッセージ配信器914は、メッセージオブジェクト930に対応するメッセージが送信される時刻に対応する現在時刻を特定してもよい。メッセージ配信器914は、現在時刻を、メッセージオブジェクト930の制約946によって定義された制限された時間窓と比較してもよい。現在時刻が制約946によって定義された制限された時間窓内にないとき、メッセージ配信器914は、以下に説明するように、さらなる処理のためにメッセージオブジェクト930を維持してもよい。そうでない場合、現在時刻が制約946によって定義された制限された時間窓内にあるとき、メッセージ配信器914は、メッセージオブジェクト930をさらなる処理から削除してもよい。
次に図9Cを参照すると、メッセージ選択システム902の中でも、メッセージ配信器914及びメッセージジェネレータ916の動作を有するシステム900のシーケンス図が描かれている。メッセージ選択システム902上で実行されるメッセージ配信器914は、少なくとも1つの配信ポリシー922に従って、メッセージオブジェクト930の少なくとも1つを識別又は選択してもよい。配信ポリシー922は、他の要因の中でも、メッセージオブジェクト930に対する信頼値952に基づいて、メッセージオブジェクト930のうちの少なくとも1つの選択を指定してもよい。いくつかの実施形態では、配信ポリシー922は、メッセージオブジェクト930のうちの1つに特定されてもよい。いくつかの実施形態では、配信ポリシー922は、メッセージオブジェクト930のセットに一般的に適用されてもよい。
配信ポリシー922は、特に、少なくとも1つのアップデート係数960、少なくとも1つの閾値962、及び少なくとも1つの配信時刻964を特定、定義、又はその他の方法で含んでもよい。アップデート係数960は、メッセージオブジェクト930に対する信頼値952が修正又は調整されるべき値若しくは量を特定若しくは定義してもよい。いくつかの実施形態では、アップデート係数960は、信頼値952が調整される(例えば、増加又は減少)量が、リモートコンピューティングデバイス904への任意のメッセージの前回の提供からの経過時間に基づいて行われることを指定してもよい。例えば、アップデート係数960は、セクションB及びCで説明したように、クールダウンポリシー232として機能してもよい。閾値962は、メッセージオブジェクト930がさらなる処理のために選択されることが許可される信頼値952の値を指定してもよい。いくつかの実施形態では、閾値962は、メッセージデータベース926上に保持されたメッセージオブジェクト930に対して決定された信頼値952に対して相対的に定義されてもよい。例えば、閾値962は、信頼値952の最高5%を有するメッセージオブジェクト930が更なる処理のために選択されることを許可されると規定してもよい。いくつかの実施形態では、閾値962は、セクションB及びCで議論されるような閾値ポリシー234として機能してもよい。配信時刻964は、メッセージオブジェクト930の1つに対応するメッセージがリモートコンピューティングデバイス904に送信又は提供されてもよい時刻若しくは時間窓を指定してもよい。
どのメッセージオブジェクト930を選択するかを決定する際に、メッセージ配信器914は、配信ポリシー922のアップデート係数960を使用して、各メッセージオブジェクト930の信頼値952を修正又は他の方法でアップデートしてもよい。いくつかの実施形態では、メッセージ配信器914は、メッセージオブジェクト930の1つに対応する任意のメッセージをリモートコンピューティングデバイス904に送信した前回の時刻と現在時刻との間の経過時間量を特定してもよい。経過時間量の特定は、配信ポリシー922のアップデート係数960によって特定されてもよい。経過時間の量に基づいて、メッセージ配信器914は、メッセージオブジェクト930のアップデート係数960を決定してもよい。アップデート係数960を用いて、メッセージ配信器914は、各メッセージオブジェクト930の信頼値952を修正又はアップデートしてもよい。例えば、メッセージ配信器914は、信頼値952を調整するために、アップデート係数960を信頼値952に乗じてもよい。
いくつかの実施形態では、配信ポリシー922の仕様に加えて、メッセージ配信器914は、メッセージオブジェクト930に対して定義された制約946に基づいて、メッセージオブジェクト930の1つ以上を選択から維持又は削除してもよい。各メッセージオブジェクト930のために、メッセージ配信器914は、制約946を識別してもよい。上述したように、制約946は、メッセージオブジェクト930に対応するメッセージを生成又は送信するための1つ以上の制約(例えば、時間窓)を定義若しくは含んでもよい。いくつかの実施形態では、メッセージ配信器914は、メッセージオブジェクト930に対応するメッセージが送信される時刻に対応する現在時刻を特定してもよい。いくつかの実施形態では、メッセージ配信器914は、現在時刻を、メッセージオブジェクト930の制約946によって定義された制限された時間窓と比較してもよい。現在時刻が制約946によって定義された制限された時間窓内にないとき、メッセージ配信器914は、以下に説明するように、さらなる処理のためにメッセージオブジェクト930を維持してもよい。そうでない場合、現在時刻が制約946によって定義された制限された時間窓内にあるとき、メッセージ配信器914は、メッセージオブジェクト930をさらなる処理から削除してもよい。
アップデートされた信頼値952に基づいて、メッセージ配信器914は、メッセージオブジェクト930のセットのうちの少なくとも1つを識別又は選択してもよい。いくつかの実施形態では、メッセージ配信器914は、アップデートされた信頼値952によってメッセージオブジェクト930のセットを順位付けしてもよい。ランク付けを使用して、メッセージ配信器914は、メッセージオブジェクト930のうちの1つ(例えば、ランク付けで最も高い信頼値952を有するメッセージオブジェクト930)を選択してもよい。いくつかの実施形態では、メッセージ配信器914は、メッセージオブジェクト930のアップデートされた信頼値952を、配信ポリシー922に定義された閾値962と比較してもよい。信頼値952が閾値962を満たす(例えば、それよりも大きい)場合、メッセージ配信器914は、対応するメッセージオブジェクト930を選択してもよい。逆に、信頼値952が閾値962を満たさない(例えば、以下である)場合、メッセージ配信器914は、対応するメッセージオブジェクト930の選択を控えてもよい。
メッセージオブジェクト930の選択により、リモートコンピューティングシステム上で実行されるメッセージジェネレータ916は、リモートコンピューティングデバイス904のユーザー936に提示するための少なくとも1つの対応するメッセージ916を作成又は生成してもよい。メッセージジェネレータ916は、選択されたメッセージオブジェクト930のメッセージテンプレート944を識別してもよい。識別により、メッセージジェネレータ916は、メッセージオブジェクト930に対するメッセージテンプレート944の仕様を解析してもよい。構文解析において、メッセージジェネレータ916は、メッセージテンプレート944を実行して、メッセージ966を生成してもよい。生成されると、メッセージ966は、1つ以上のユーザーインタフェース要素968A~N(以下、総括的にユーザーインタフェース要素968と称する)を含んでもよい。ユーザーインタフェース要素968は、リモートコンピューティングデバイス904を介して提示されるメッセージ966のグラフィカル・ユーザーインタフェース要素に対応してもよく、ユーザー936によるインタラクションの検出に応じて起動される機能を含んでもよい。
次に図9Dを参照すると、メッセージ選択システム902及びリモートコンピューティングデバイス914のうち、メッセージジェネレータ916並びにレスポンスハンドラ918の動作を有するシステム900のシーケンス図が描かれている。生成時に、メッセージジェネレータ916は、ネットワーク906を介してリモートコンピューティングデバイス904にメッセージ966を提供、送信、又はその他の方法で送信してもよい。いくつかの実施形態では、メッセージ配信器914は、現在時刻を、配信ポリシー922の配信時刻964によって定義される指定された時間窓と比較してもよい。現在時刻が、配信ポリシー922によって定義された指定された時間窓内にあるとき、メッセージ配信器914は、メッセージオブジェクト930をリモートコンピューティングデバイス904に送信してもよい。そうでない場合、現在時刻が配信ポリシー922によって定義された指定された時間窓の外にあるとき、メッセージ配信器914は、現在時刻が配信時刻964に一致するまで待ってもよい。
受信すると、リモートコンピューティングデバイス904上で実行するアプリケーション932は、ユーザー936のためにメッセージ966を提示してもよい。アプリケーション932は、ネットワーク906を介してメッセージ選択システム902と通信するように、リモートコンピューティングデバイス904を構成してもよい。アプリケーション932は、メッセージ966を解析し、リモートコンピューティングデバイス904を介して、ユーザーインタフェース要素968を含むメッセージ966を提示(例えば、レンダリング又は再生)してもよい。メッセージ966が提示されると、アプリケーション932のレポーティングエージェント934は、リモートコンピューティングデバイス904の入力/出力(I/O)デバイスを介して、メッセージ966のユーザーインタフェース要素968との1つ以上のインタラクションを監視してもよい。インタラクションは、ユーザー936によって実行されてもよく、メッセージ966の提示に応じたユーザー936によって実行された1つ以上のアクティビティを記録するために使用されてもよい。例えば、リモートコンピューティングデバイス904を介して提示されたメッセージ966が、ユーザー936が呼吸法を実行することを示している場合、ユーザー936は、呼吸法が実行されたことを示すコマンドボタンを選択してもよい。メッセージ966で検出されたインタラクションに基づいて、レポーティングエージェント934は、少なくとも1つのレスポンス970を生成及び送信してもよい。レスポンス970は、リモートコンピューティングデバイス904を介したインタラクションを使用して記録されたメッセージ966の提示時にユーザー936によって実行された1つ以上のアクションを識別してもよい。また、レスポンス970は、アクションがリモートコンピューティングデバイス904に記録された時刻に対応するタイムスタンプを特定又は含んでもよい。生成時に、アプリケーション932は、ネットワーク906を介してメッセージ選択システム902にレスポンス970を送信又は伝送してもよい。
メッセージ選択システム902上で実行されるレスポンスハンドラ918は、今度は、ネットワーク906を介してリモートコンピューティングデバイス904からレスポンス970を識別又は受信してもよい。レスポンスハンドラ918は、レスポンス970を解析して、レスポンス970に示されているようにユーザー936によって実行された1つ以上のアクションを識別してもよい。レスポンス970から識別されたアクティビティを使用して、レスポンスハンドラ918は、ユーザー936のアクティビティログ928に含めるための1つ以上のエントリ940’A~N(以下、総括的にエントリ940’と称する)を生成してもよい。エントリ940は、メッセージ966の提示に応じたユーザー936が実行したアクションを識別してもよい。エントリ940は、ユーザー936がアプリケーション932上でアクションを記録した時刻に対応するタイムスタンプを含んでもよい。レスポンスハンドラ918は、メッセージデータベース924に保持されているユーザー936のアクティビティログ928に、新しいエントリ940’を追加又は挿入してもよい。エントリ940’を追加することにより、レスポンスハンドラ918は、リモートコンピューティングデバイス904を介したメッセージ966の提示に応じたユーザー936が実行したアクションを記録してもよい。アクティビティログ928に新たに追加されたエントリ940’は、ユーザー936のためのユーザー状態942をアップデートするために使用されてもよい。
このようにして、メッセージ選択システム902は、適切なタイミングにリモートコンピューティングデバイス906に関連付けられたユーザー936によって対話される可能性がより高いメッセージ966を選択及び生成してもよい。メッセージ966の選択及び生成は、ユーザー936並びにシステム900全体(リモートコンピューティングデバイス904を含む)との間のヒューマン・コンピュータ・インタラクション(HCI)の質を高めてもよい。また、選択及び生成は、ユーザー936の行動上のエンドポイント又は目的の可能性を高める結果となり得る。さらに、メッセージ966が読まれ、対話される可能性が高いので、メッセージ選択システム902は、無駄なコンピューティングリソース及びネットワーク帯域幅をよりよく利用及び削減することができる。
ここで図10を参照すると、信頼値を使用してネットワーク環境でメッセージを選択及び送信する方法1000のフロー図が描かれている。方法1000は、図1~9Dに関連して本明細書で詳述したようなコンポーネントのいずれかを使用して実装されてもよい。1-9D.簡単に概要を説明すると、サーバは、アクティビティログからアクションを取得してもよい(1005)。サーバは、ユーザー状態を決定してもよい(1010)。サーバは、メッセージオブジェクト候補を識別してもよい(1015)。サーバは、信頼値を決定してもよい(1020)。サーバは、経過時間によって信頼性の値をアップデートしてもよい(1025)。サーバは、メッセージオブジェクトを選択してもよい(1030)。サーバは、メッセージを生成してもよい(1035)。サーバは、メッセージを送信してもよい(1040)。
さらに詳細には、サーバ(例えば、メッセージ選択システム902)は、アクティビティログ(例えば、アクティビティログ928)からアクションを取得してもよい(1005)。アクティビティログは、1つ以上のエントリ(例えば、エントリ940)を含んでもよい。アクティビティログの各エントリは、前回のメッセージの提示に応じたユーザー(例えば、ユーザー936)によって実行された1つ以上のアクションを識別してもよい。サーバは、アクティビティログのエントリを解析して、1つ以上のアクションを識別してもよい。サーバは、ユーザー状態(例えば、ユーザー状態942)を決定してもよい(1010)。特定されたアクションを用いて、サーバは、ユーザーのユーザー状態を決定してもよい。ユーザーは、アクティビティログに記録されたアクションを実行する際のユーザーの目的を示してもよい。また、サーバは、定義されたユーザー状態のセットからユーザー状態を選択してもよい。各ユーザー状態は、ユーザーが実行した1つ以上の行動に対応してもよい。
サーバは、メッセージオブジェクト候補(例えば、メッセージオブジェクト930)を識別してもよい(1015)。各メッセージオブジェクトは、特に、メッセージテンプレート(例えば、メッセージテンプレート944)、制約(例えば、制約946)、及び選択基準(例えば、選択基準948)を含んでもよい。メッセージテンプレートは、対応するメッセージおよびメッセージ上のユーザーインタフェース要素の生成を指定してもよい。制約は、メッセージオブジェクトの選択を制限する条件を指定してもよい。選択基準は、メッセージオブジェクトに対応するメッセージを提示する際に達成すべき1つ以上のエンドポイントを定義してもよい。
サーバは、信頼値(例えば、信頼値952)を決定してもよい(1020)。各メッセージオブジェクトの信頼値を決定するために、サーバは、ユーザー状態をメッセージオブジェクトの選択基準によって定義されたエンドポイントと比較してもよい。信頼値は、メッセージオブジェクトの選択基準によって特定されたエンドポイントの達成に向けた対応するメッセージのユーザーに対する予測効果を示してもよい。また、サーバは、信頼値を生成するためにメッセージオブジェクトとユーザー状態を評価モデル(例えば、評価モデル920)に適用してもよい。サーバは、経過時間によって信頼値をアップデートしてもよい(1025)。サーバは、ユーザーにメッセージを提示した前回からの経過時間に基づいて、信頼度の値を修正してもよい。サーバは、経過時間に基づいて、信頼度の値を増加又は減少させてもよい。
サーバは、メッセージオブジェクトを選択してもよい(1030)。サーバは、信頼値に基づいて、メッセージオブジェクトの1つを選択してもよい。サーバは、メッセージオブジェクトの信頼値を、閾値(例えば、閾値962)と比較してもよい。信頼値が閾値を満たす場合、サーバはメッセージオブジェクトを選択してもよい。そうでない場合、信頼値が閾値を満たさないとき、サーバは、メッセージオブジェクトの選択を控えてもよい。サーバは、メッセージ(例えば、メッセージ966)を生成してもよい(1035)。選択されたメッセージオブジェクトのテンプレートを使用して、サーバはメッセージを生成してもよい。メッセージは、1つ以上のユーザーインタフェース要素(例えば、ユーザーインタフェース要素968)を含んでもよい。サーバは、メッセージを送信してもよい(1040)。メッセージは、リモートコンピューティングデバイス(例えば、リモートコンピューティングデバイス904)に送信されてもよい。受信すると、リモートコンピューティングデバイスは、メッセージを提示してもよい。
E.ネットワーク環境全体で異なるタイプのメッセージを選択及び送信するシステム並びに方法
しかしながら、メッセージの繰り返しの提示は、ユーザーの側にメッセージ疲れを引き起こし、ユーザーはメッセージの提示から何の行動も取らず、ユーザーに通知するメッセージの有効性の低下につながる可能性がある。これは、メッセージを提示する際のコンピューティングデバイスのヒューマン・コンピュータ・インタラクション(HCI)の質の低下につながる可能性がある。また、メッセージがネットワーク上で送信され、コンピューティングデバイスによって処理される際に、有効性の低下は、計算リソースやネットワーク帯域の浪費につながる可能性がある。これは、ユーザーのための情報を含んでいても、ユーザーインタフェース要素を介して入力を受け取るように構成されていないメッセージ(本明細書では時々、修辞的メッセージと称する)の性能を評価する際に、特に問題となる可能性がある。ユーザーインタフェース要素を介して入力を受け取るように構成されたメッセージ(本明細書では時々、非修辞的メッセージと称する)では、そのようなメッセージのパフォーマンススコアは、記録されたレスポンスに基づいて決定してもよい。対照的に、入力を受け取るように構成されていないメッセージでは、メッセージに対するレスポンスの記録がなくてもよい。
メッセージの有効性を評価する上でのこれら及びその他の技術的課題に対処するために、記録されたレスポンスを有するメッセージのパフォーマンススコアを使用して、メッセージを欠くユーザーインタフェース要素の予測されるパフォーマンススコアを推定してもよい。メッセージ選択システムは、対応するメッセージに対するレスポンスが記録されたメッセージオブジェクトのセットを特定することができる。各メッセージオブジェクトは、対応するメッセージを提示する際にユーザーの側で達成すべきエンドポイントを定義してもよい。メッセージ選択システムは、ユーザーからのレスポンスをメッセージオブジェクトのエンドポイントと比較してもよい。比較から、メッセージ選択システムは、ユーザーに提示されたメッセージに対応するメッセージオブジェクトのエンドポイントを満たしたユーザーの数を決定してもよい。
ユーザーの数に基づいて、メッセージ選択システムは、各メッセージオブジェクトのパフォーマンススコアを決定してもよい。パフォーマンススコアは、ユーザーにメッセージを提示することの有効性の度合いを示してもよい。この決定により、メッセージ選択システムは、パフォーマンススコアによってメッセージオブジェクトをランク付けしてもよい。ランク付けを使用して、メッセージ選択システムは、送信用のメッセージを生成する際の使用を許可するメッセージオブジェクトのセットを選択してもよい。また、メッセージ選択システムは、メッセージを生成する際の使用を制限するメッセージオブジェクトの別のセットを選択してもよい。許可されたメッセージオブジェクトのセットから、メッセージ選択システムは、入力要素のない構成のためにレスポンスを記録する能力に欠ける他のメッセージオブジェクトを識別してもよい。他のメッセージオブジェクトの識別は、対応するエンドポイントに基づいてもよい。メッセージ選択システムは、識別されたメッセージオブジェクトを、許可されたメッセージオブジェクトのセットに追加してもよい。
このようにして、メッセージ選択システムは、生成及びリモートコンピューティングデバイスへの提供が可能なメッセージのセットを拡張し、それによって、メッセージの機能を増強してもよい。メッセージの拡張は、ユーザーとリモートコンピューティングデバイスとの間のヒューマン・コンピュータ・インタラクション(HCI)の品質を向上させることができる。また、メッセージは(記録されていなくても)ユーザーのアクションにつながる可能性が高いため、メッセージ選択システムは、メッセージの提供及び提示に消費される無駄なコンピューティングリソース並びにネットワーク帯域をより有効に活用し、削減することができる。
次に図11Aを参照すると、信頼値を使用してネットワーク環境全体で異なるタイプのメッセージを選択及び送信するためのシステム1100のブロック図が描かれている。概要として、システム1100は、少なくとも1つのメッセージ選択システム1102と、1つ以上のリモートコンピューティングデバイス1104A~N(以下、総括的にリモートコンピューティングデバイス1104と称する)とを含むことができる。メッセージ選択システム1102及びリモートコンピューティングデバイス1104は、少なくとも1つのネットワーク1106を介して互いに通信可能に結合されてもよい。メッセージ選択システム1102は、少なくとも1つのレスポンストラッカー1108、少なくとも1つのオブジェクトエバリュエータ1110、少なくとも1つのモデルトレーナー1112、少なくとも1つの配信コントローラ1114、及び少なくとも1つのメッセージ相関器1116、少なくとも1つの性能モデル1118、少なくとも1つのレスポンスデータベース1120、並びに少なくとも1つのメッセージデータベース1122などを含んでもよい。レスポンスデータベース1120は、レスポンスデータ1124A~N(以下、総括的にレスポンスデータ1124と称する)を維持又は含んでもよい。メッセージデータベース1122は、1つのタイプのメッセージオブジェクト1126A~Nのセット(以下、総括的にメッセージオブジェクト1126と称する)、及び別のタイプのメッセージオブジェクト1126’A~Nのセット(以下、総括的にメッセージオブジェクト1126’と称する)とを維持又は含んでもよい。各リモートコンピューティングデバイス1104は、少なくとも1つのアプリケーション1128を含んでもよい。リモートコンピューティングデバイス1104上で動作するアプリケーション1128は、少なくとも1つのレポーティングエージェント1130を含んでもよい。リモートコンピューティングデバイス1104は、少なくとも1人のユーザー1132と関連していてもよい。
システム1100の各構成要素(例えば、メッセージ選択システム1102及びその構成要素、並びにリモートコンピューティングデバイス1104並びにその構成要素)は、セクションAで本明細書に詳述されたシステム100のようなハードウェア又はハードウェアの組み合わせを使用して実行、処理、又は実装されてもよい。また、システム1100の構成要素は、本明細書のセクションB及びCで詳述されている機能性を実行、処理、又は実装するために使用されてもよい。例えば、メッセージ選択システム1102は、メッセージ選択システム202に関連して説明された機能を含んでもよい。データベース1120に保持されたメッセージオブジェクト1126又は1126’は、メッセージオブジェクト206に関連して本明細書で詳述された機能を含んでもよい。オブジェクトエバリュエータ1110は、メッセージオブジェクトエバリュエータ252の機能などを含んでもよい。リモートコンピューティングデバイス1104は、リモートコンピューティングデバイス270と併せて、本明細書に記載された機能を含むか、又は実行してもよい。
次に図11Bを参照すると、メッセージ選択システム1102のうち、レスポンストラッカー1108、オブジェクトエバリュエータ1110、及びモデルトレーナー1112の動作を有するシステム1100のシーケンス図が描かれている。メッセージ選択システム1102上で実行されるレスポンストラッカー1108は、レスポンスデータベース1120にアクセスして、レスポンスデータ1112を取得又は識別してもよい。レスポンスデータ1112は、リモートコンピューティングデバイス1104、アプリケーション1126、又はユーザー1130のうちの1つ以上にわたる1つ以上のエントリ1140A~N(以下、総括的にエントリ1140と呼ぶ)を含んでもよい。いくつかの実施形態では、レスポンストラッカー1108は、時間窓内でレスポンスデータ1124からエントリ1140のサブセットを特定してもよい。時間窓は、現在時刻を基準に定義されてもよく、1時間から1ヶ月の間であってもよい。時間窓から収集されたレスポンスデータ1124は、ユーザー1130に以前に提示されたメッセージオブジェクト1126に対応するメッセージの性能を評価又は査定するために使用されてもよい。
レスポンスデータ1120の各エントリ1140(本明細書では時々、レスポンスと称する)は、ユーザー1132に関連付けられたリモートコンピューティングデバイス1104を介して記録された、ユーザー1132による少なくとも1つのアクションを識別又は含んでもよい。ユーザー1132によるアクションは、リモートコンピューティングデバイス1104上のアプリケーション1128を介したメッセージの以前の提示に応じたものであってもよい。例えば、リモートコンピューティングデバイス1104上で実行されているアプリケーション1128は、アプリケーション1128上で提示された前回のメッセージのユーザーインタフェース要素の1つ以上を介して、ユーザー1132によって入力されたインタラクションを検出してもよい。前のメッセージは、第1のタイプのメッセージオブジェクト1126を用いて生成されたものであってもよい。ユーザーインタフェース要素との相互作用は、ユーザー1132によって実行されるアクションを示してもよい。検出されると、アプリケーション1128は、レスポンスデータベース1120上のレスポンスデータ1124に記録するために、メッセージ選択システム1102にインタラクションの指示を送信してもよい。表示には、インタラクションが入力された時刻を特定するタイムスタンプを含んでもよい。受信すると、リモートコンピューティングデバイス1104からの指示は、レスポンスデータ1124のエントリ1140の1つとしてレスポンスデータベース1120上に記憶及び保持されてもよい。
いくつかの実施形態では、レスポンストラッカー1108は、ユーザー1132のレスポンスデータ1112のエントリ1140を使用して、各ユーザー1132のユーザー状態(本明細書では時々、「意図」又は「ユーザー意図」と称する)を識別又は決定してもよい。レスポンストラッカー1108によるユーザー状態の決定は、上述した状態トラッカー908によるユーザー状態942の決定と同様の方法で行われる。ユーザー状態は、レスポンスデータ1124のエントリ1140に記録されたアクションを推測して、ユーザー1132の側で期待される目的(例えば、行動上のエンドポイント)を分類又は特定してもよい。ユーザー状態は、エントリ1140に示された使用アクティビティの様々な側面に関連する可能性がある。エントリ1140は、例えば、アプリケーションナビゲーションイベント(例えば、アプリケーション1128を開くこと)、アプリケーション932を介して提供されるレジームに準拠した特定のマイルストーンに属するアプリケーション932の完了のような1つ以上の機能とのエンゲージメント・パターン又はインタラクション率、及びアンケートからのユーザー入力データ(例えば、ユーザーの健康に関連する)などである。いくつかの実施形態では、レスポンストラッカー1108は、メッセージの提示前のユーザー1132に対するユーザー状態を、提示前のエントリ1140のサブセットを用いて決定してもよい。レスポンスデータ1124からのエントリ1140のサブセットは、例えば、メッセージを選択する際に使用されたものや、メッセージの提示に先立って設定された数のエントリ1140を含んでもよい。レスポンストラッカー1108は、エントリ1140のタイムスタンプに基づいて、提示前のエントリ1140を識別してもよい。いくつかの実施形態では、レスポンストラッカー1108は、レスポンスデータ1124から識別されたアクションに基づいて、ユーザー状態のセットからユーザー状態を選択または決定してもよい。セット内の各ユーザー状態は、1つ以上のアクションに対応するものとして定義されてもよい。
メッセージ選択システム1102上で実行されるオブジェクトエバリュエータ1110は、メッセージデータベース1122から第1のタイプ(本明細書では時々、非修辞的タイプと称する)の1つ以上のメッセージオブジェクト1126を識別してもよい。各メッセージオブジェクト1126は、ユーザー1132に提示するために対応するメッセージ1146を生成して送信するかどうかを評価するための実行可能な命令(例えば、スクリプト)のセットを含んでもよい。いくつかの実施形態では、メッセージオブジェクト1126は、セクションB及びCで上述したメッセージオブジェクト206並びにそのコンポーネントに対応してもよい。いくつかの実施形態では、オブジェクトエバリュエータ1110は、第1のタイプのメッセージオブジェクト1126を識別してもよい。
各メッセージオブジェクト1126は、少なくとも1つのメッセージテンプレート1142及び少なくとも1つの選択基準1144などを含んでもよい。メッセージテンプレート1142は、1つ以上のユーザーインタフェース要素を含むように、第1のタイプの少なくとも1つの対応するメッセージ1146を生成するための命令を含んでもよい。例えば、メッセージテンプレート1142は、リモートコンピューティングデバイス1104を介して提示されるメッセージのグラフィカル・ユーザーインタフェース要素にテキスト又はビジュアルコンテンツを挿入するためのプレースホルダーを識別してもよい。選択基準1144は、メッセージオブジェクト1126に対応するメッセージ1146を提示する際にユーザー1132が達成すべき1つ以上のエンドポイントを定義又は含んでもよい。また、選択基準1144は、エンドポイントが達成されるべき時間窓を特定又は定義してもよい。選択基準1144のエンドポイントは、例えば、選択基準948によって定義された行動目標に関して上述したような、ユーザー1132の一部で達成されることが期待される行動目標を含んでもよい。また、選択基準1144は、エンドポイントの1つ以上を満足させるために、ユーザー1132によってどの行動が実行されるべきかを示してもよい。
第1のタイプの各メッセージオブジェクト1126のメッセージテンプレート1142は、少なくとも1つのメッセージ1146に対応していてもよいし、少なくとも1つのメッセージ1146を生成するために使用されてもよい。第1のタイプのメッセージオブジェクト1126について、各メッセージ1146は、1つ以上の非インタラクティブ要素1148A~N(以下、総括的に非インタラクティブ要素1148と称する)及び1つ以上のインタラクティブ要素1150A~N(以下、総括的にインタラクティブ要素1150と称する)を含んでもよい。各非インタラクティブ要素1148は、リモートコンピューティングデバイス1104を介して提示されたときに、ユーザー1132による検出されたインタラクションに応答する構成を欠いていてもよい。また、非インタラクティブ要素1148は、ユーザー1132によるインタラクションを記録する構成を欠いていてもよい。これに対して、各インタラクティブ要素1150は、リモートコンピューティングデバイス1104を介して提示されたときに、ユーザー1132による検出されたインタラクションに応答するための構成を有していてもよい。また、インタラクティブ要素1150は、ユーザー1132によるインタラクションを記録し、検出されたインタラクションをメッセージ選択システム1102と通信する構成を有していてもよい。
各メッセージオブジェクト1126について、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126に対応するメッセージ1146が提示されたときにユーザー1130が行ったアクションを記録したレスポンスデータ1124を特定してもよい。レスポンスデータを特定する際に、オブジェクトエバリュエータ1110は、レスポンスデータベース1120にアクセスして、対応するメッセージ1146の提示に対するレスポンスに対応するレスポンスデータ1124のエントリ1140のうち1つ以上を特定してもよい。特定された各エントリ1140において、オブジェクトエバリュエータ1110は、メッセージ1146のインタラクティブ要素1152の1つ以上に対するユーザー1132による入力を特定してもよい。入力は、メッセージ1146のインタラクティブ要素1152の1つとのインタラクションを介して記録されてもよい。また、入力は、対応するメッセージ1146が提示されたときに、リモートコンピューティングデバイス1104を介して記録されたユーザー1132が実行したアクションを示してもよい。いくつかの実施形態では、オブジェクトエバリュエータ1110は、レスポンストラッカー1108と連携して、エントリ1140を解析して、ユーザー1132によって実行された記録したアクションを特定してもよい。
メッセージオブジェクト1126の各エントリ1140からの入力に基づいて、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126の選択基準1144によって定義されたエンドポイントの少なくとも1つが満たされているかどうかを判定してもよい。判定するために、オブジェクトエバリュエータ1110は、エントリ1140に示されたアクションを、メッセージオブジェクト1126の選択基準1144によって定義されたエンドポイントと比較してもよい。上述したように、メッセージオブジェクト1126の選択基準1144は、定義されたエンドポイントを満たすためにユーザー1132が実行する1つ以上のアクションを指定してもよい。いくつかの実施形態では、オブジェクトエバリュエータ1110は、行動をエンドポイントと比較する際に、メッセージオブジェクト1126のエントリ1140をトラバースしてもよい。
エントリ1140から特定された行動が、選択基準1144のエンドポイントによって指定された行動の1つと一致するとき、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126のエンドポイントの少なくとも1つが満たされると判定してもよい。その判断から、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126の選択基準1144で指定されたエンドポイントの少なくとも1つを満足した各メッセージオブジェクト1126のユーザー1130の数をカウント又は決定してもよい。逆に、エントリ1140から特定されたアクションが、選択基準1144のエンドポイントによって指定されたアクションのいずれとも一致しない場合、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126のエンドポイントのいずれも満足していないと判定してもよい。この決定から、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126の選択基準1144によって指定されたエンドポイントのいずれも満たされなかった各メッセージオブジェクト1126について、ユーザー1130の数をカウント又は決定してもよい。
メッセージオブジェクト1126の選択基準1144によって規定されたエンドポイントの少なくとも1つを満足したユーザーの数1130を使用して、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126に対する少なくとも1つのパフォーマンススコア1154を計算、生成、又は決定してもよい。いくつかの実施形態では、パフォーマンススコア1154を決定する際に、メッセージオブジェクトの選択基準1144によって定義された任意のエンドポイントを満たさなかったユーザー1130の数を算出する。パフォーマンススコア1152は、選択基準1144によって定義されたエンドポイントを達成する際の対応するメッセージ1146の有効性を特定、表現、又は示してもよい。また、パフォーマンススコア1152は、メッセージオブジェクト1126の選択基準1144によって定義された1つ以上のエンドポイントを満足させたユーザー1130の割合を示してもよい。いくつかの実施形態では、オブジェクトエバリュエータ1110は、関数(例えば、加重平均)を使用してパフォーマンススコア1152を決定してもよい。関数は、エンドポイントの少なくとも1つを満足したユーザー1130の数と、エンドポイントのいずれも満足しなかったユーザー1130の数とを、他の要因の中で考慮してもよい。一般に、メッセージオブジェクト1142の選択基準1144によって定義されたエンドポイントの少なくとも1つを満足したと判断されたユーザーの数が多い場合、パフォーマンススコア1152は相対的に高くなってもよい。逆に、メッセージオブジェクト1142の選択基準1144によって定義されたエンドポイントの少なくとも1つを満足したと判断されるユーザーの数が少ない場合、パフォーマンススコア1152は相対的に低くてもよい。
いくつかの実施形態では、パフォーマンススコア1152を決定する際に、オブジェクトエバリュエータ1110は、対応するメッセージ1146の提示の前にエントリ1140に関連付けられたユーザー1132のユーザー状態を、対応するメッセージオブジェクト1126について定義されたエンドポイントと比較してもよい。ユーザー状態が、メッセージオブジェクト1126のための選択基準1144で定義されたエンドポイントの少なくとも1つに一致又は対応するとき、オブジェクトエバリュエータ1110は、比較的高いパフォーマンススコア1152を決定してもよい。逆に、ユーザー状態が、メッセージオブジェクト1126のための選択基準1144で定義されたエンドポイントのいずれとも一致しない、又は対応しない場合、オブジェクトエバリュエータ1110は、相対的に低いパフォーマンススコア1152を決定してもよい。
パフォーマンススコア1152の決定を容易にするために、メッセージ選択システム1102上で実行されるモデルトレーナー1112は、性能モデル1118を維持してもよい。性能モデル1118は、メッセージオブジェクト1126のパフォーマンススコア1152を決定するために使用されてもよい。性能モデル1118は、例えば、回帰モデル(例えば、線形回帰モデルまたはロジスティック回帰モデル)、サポートベクターマシン(SVM)、人工ニューラルネットワーク(ANN)、ナイーブベイズ分類器、及び分類モデル(例えば、k近傍法)などを含んでもよい。一般に、性能モデル1118は、一連の重みを介して互いに関連する一連の入力及び一連の出力を含んでもよい。いくつかの実施形態では、性能モデル1118は、メッセージオブジェクト1126の1つ(例えば、モデル210)における一部又はその1つに対する専用であってもよい。いくつかの実施形態では、性能モデル1118は、個々のメッセージオブジェクト1126から分離していてもよく、メッセージオブジェクト1126(及びメッセージオブジェクト1126’)のセットに対して汎用的であってもよい。
モデルトレーナー1112は、トレーニングデータセットを使用して性能モデル1118を開始又は確立してもよい。性能モデル1118のトレーニングは、性能モデル1118のアーキテクチャに応じて行われてもよい。例えば、性能モデル1118が分類モデルである場合には、収束するまで反復して学習を行ってもよい。性能モデル1118のためのトレーニングデータセットは、以前に提示されたメッセージに対するユーザー(例えば、ユーザー1132)からのレスポンスデータ履歴を含んでもよい。トレーニングデータセット内のメッセージは、メッセージオブジェクト1130の1つ以上に対応してもよい。トレーニングデータセットは、ユーザーに以前に提供されたメッセージに対応するメッセージオブジェクト1130のメッセージテンプレート1142及び選択基準1144を含んでもよい。レスポンスデータ履歴は、メッセージオブジェクト1130によって指定されたエンドポイントの達成における成功又は失敗を示してもよい。モデルのトレーニングにおいて、モデルトレーナー1112は、トレーニングデータセットを性能モデル1118に適用して、成功又は失敗を示す出力を生成してもよい。モデルトレーナー1112は、出力とレスポンスデータ履歴で示される結果との比較に基づいて、性能モデル1118の重みを調整又は修正し、収束するまで適用を繰り返してもよい。性能モデル1118の重みの修正は、性能モデル1118を実装するために使用されるアーキテクチャに対する学習に従ったものであってもよい。
いくつかの実施形態では、モデルトレーナー1112は、レスポンスデータ1124の少なくとも一部を使用して、性能モデル1118を修正又はアップデートしてもよい。レスポンスデータ1124の適用は、パフォーマンススコア1152の決定に先立って、それと連動して、又はそれに続いて行われてもよい。レスポンスデータ1124を用いた性能モデル1118のトレーニング。いくつかの実施形態では、レスポンスデータ1124の少なくとも一部は、トレーニングデータセットの一部として含まれてもよい。いくつかの実施形態では、モデルトレーナー1112は、レスポンスデータ1124のエントリ1140を使用して、メッセージオブジェクト1126によって定義されるエンドポイントが満たされるかどうかの決定に基づいて、性能モデル1118をアップデートしてもよい。例えば、学習において、モデルトレーナー1112は、エントリ1140を性能モデル1118に適用して、成功又は失敗を示す出力を生成してもよい。モデルトレーナー1112は、出力と、エンドポイントが満たされているかどうかの判定との比較に基づいて、性能モデル1118の重みを調整又は修正し、収束するまで適用を繰り返してもよい。性能モデル1118の重みの修正は、性能モデル1118を実装するために使用されるアーキテクチャに対する学習に従ったものであってもよい。
性能モデル1118の確立により、オブジェクトエバリュエータ1110は、パフォーマンススコア1152を決定するために、メッセージオブジェクト1126について特定されたレスポンスデータ1124を適用してもよい。いくつかの実施形態では、オブジェクトエバリュエータ1110は、パフォーマンススコア1152を決定する際に、メッセージテンプレート1142及びメッセージオブジェクト1126の選択基準1144も考慮してもよい。いくつかの実施形態では、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126のエントリ1140から決定されるユーザー状態も考慮してもよい。適用するために、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126のために特定されたレスポンスデータ1124のエントリ1140およびメッセージオブジェクト1126自体を性能モデル1118の入力として供給してもよい。オブジェクトエバリュエータ1110は、性能モデル1118の重みの使用により入力を処理し、性能モデル1118の出力を生成してもよい。オブジェクトエバリュエータ1110は、性能モデル1118の出力を、メッセージオブジェクト1126のパフォーマンススコア1152として特定してもよい。一般に、メッセージオブジェクト1142の選択基準1144によって定義されたエンドポイントの少なくとも1つを満足したと判断されるユーザーの数が多い場合、パフォーマンススコア1152は相対的に高くなってもよい。逆に、メッセージオブジェクト1142の選択基準1144によって定義されたエンドポイントの少なくとも1つを満足したと判定されるユーザーの数が少ない場合、パフォーマンススコア1152は相対的に低くてもよい。
いくつかの実施形態では、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126に対するレスポンスデータ1124に基づいて、メッセージオブジェクト1126のうちの少なくとも1つの選択基準1144に1つ以上の追加のエンドポイントを割り当て又は属性付けしてもよい。オブジェクトエバリュエータ1110は、メッセージオブジェクト1126に対応するメッセージ1146の提示の前に、エントリ1140からユーザー状態を識別してもよい。ユーザー状態の識別に基づいて、オブジェクトエバリュエータ1110は、ユーザー状態に対応するエンドポイントを識別してもよい。いくつかの実施形態では、オブジェクトエバリュエータ1110は、ユーザー状態を用いて定義されたエンドポイントのセットからエンドポイントを選択してもよい。セットは、選択基準1144に含めるために、ユーザー状態と1つ以上のエンドポイントとの間のマッピングを定義してもよい。マッピングは、メッセージオブジェクト1126又はメッセージデータベース1122で定義されてもよい。ユーザー状態と1つ以上のエンドポイントとの間の一致を見つけると、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126の選択基準1144の定義にエンドポイントを追加又は挿入してもよい。いくつかの実施形態では、オブジェクトエバリュエータ1110は、メッセージオブジェクト1126のパフォーマンススコア1152が閾値スコアを満たす(例えば、以上である)場合に、識別されたエンドポイントを追加してもよい。閾値スコアは、メッセージオブジェクト1126の選択基準1144にエンドポイントを追加する際のパフォーマンススコア1152の値を画定してもよい。
次に図11Cを参照すると、メッセージ選択システム1102の中でも配信コントローラ1114の動作を伴うシステム1100のシーケンス図などが描かれている。メッセージ選択システム1102上で実行される配信コントローラ1114は、対応するパフォーマンススコア1152に基づいて、各メッセージオブジェクト1126を許可されたセット1160又は制限されたセット1162に割り当てるか若しくは含めるかを決定することができる。許可されたセット1160及び制限されたセット1162の両方は、メッセージ選択システム1102上で(例えば、メッセージデータベース1122で)維持されてもよい。許可されたセット1160に割り当てられたメッセージオブジェクト1126は、生成及びリモートコンピューティングデバイス1104への提供のために選択されることが許可されてもよい。いくつかの実施形態では、許可されたリスト1160に割り当てられたメッセージオブジェクト1126は、リモートコンピューティングデバイス1104を介したプレゼンテーションのための生成及び提供のために選択される可能性が高くされて(例えば、より高い重み付けがされている)もよい。一方で、制限付きセット1162に割り当てられたメッセージオブジェクト1126は、生成及びリモートコンピューティングデバイス1104への送信のための選択を制限又は防止されてもよい。いくつかの実施形態では、制限されたセット1162に割り当てられたメッセージオブジェクト1126は、リモートコンピューティングデバイス1104の提示のために生成及び提供される選択の可能性が低くされて(例えば、より低い重み付けがされている)もよい。
割り当てを決定するために、配信コントローラ1114は、パフォーマンススコア1152に基づいて、メッセージオブジェクト1126をランク付けしてもよい。メッセージオブジェクト1126の順位付けは、特に、挿入ソート、マージソート、ヒープソート、クイックソート、バブルソート、基数ソート、又はバケットソートなどのソートアルゴリズムに従ったものであってもよい。ランク付けに基づいて、配信コントローラ1114は、メッセージオブジェクト1126を、許可されたセット1160又は制限されたセット1162に割り当ててもよい。いくつかの実施形態では、配信コントローラ1114は、最高のn個のパフォーマンススコア1152を有するメッセージオブジェクト1126のサブセットを選択して許可されたセット1160に割り当ててもよく、残りのメッセージオブジェクト1126を制限されたセット1162に割り当ててもよい。いくつかの実施形態では、逆に、配信コントローラ11144は、最も低いn個のパフォーマンススコア1152を有するメッセージオブジェクト1126のサブセットを選択して制限されたセット1162に割り当ててもよく、残りのメッセージオブジェクト1126を許可されたセット1160に割り当ててもよい。
いくつかの実施形態では、配信コントローラ1114は、パフォーマンススコア1152と閾値スコアとの間の比較に基づいて、メッセージオブジェクト1126の割り当てを決定してもよい。閾値スコアは、メッセージオブジェクト1126に対応するものを許可されたセット1160又は制限されたセット1162に割り当てる際のパフォーマンススコア1152の値を画定してもよい。メッセージオブジェクト1126のパフォーマンススコア1152が閾値スコアを満たす(例えば、以上である)と判定された場合、配信コントローラ1114は、メッセージオブジェクト1126を許可されたセット1160に割り当ててもよい。逆に、メッセージオブジェクト1126のパフォーマンススコア1152が閾値スコアを満たさない(例えば、未満である)と判定された場合、配信コントローラ1114は、メッセージオブジェクト1126を制限されたセット1162に割り当ててもよい。許可されたセット1160又は制限されたセット1162への割り当てに基づいて、メッセージ選択システム1102は、メッセージ1148を生成及び送信するかどうかを決定してもよい(例えば、セクションDで記載された方法で)。
ここで図11Dを参照すると、メッセージ選択システム1102の中でもメッセージ相関器1116の動作を有するシステム1100のシーケンス図が描かれている。メッセージ選択システム1102上で実行されるメッセージ相関器1116は、第2のタイプ(本明細書では時々、修辞的タイプと称する)の1つ以上のメッセージオブジェクト1126’を識別してもよい。各メッセージオブジェクト1126’は、ユーザー1132に提示するために対応するメッセージ1146’を生成して送信するかどうかを評価するための実行可能な命令(例えば、スクリプト)のセットを含んでもよい。いくつかの実施形態では、メッセージオブジェクト1126’は、セクションB及びCで上述したメッセージオブジェクト206並びにそのコンポーネントに対応してもよい。
各メッセージオブジェクト1126’は、少なくとも1つのメッセージテンプレート1142’および少なくとも1つの選択基準1144’などを含んでもよい。メッセージテンプレート1142’は、1つ以上のユーザーインタフェース要素を含むように、第1のタイプの少なくとも1つの対応するメッセージ1146’を生成するための命令を含んでもよい。例えば、メッセージテンプレート1142’は、リモートコンピューティングデバイス1104を介して提示されるメッセージのグラフィカル・ユーザーインタフェース要素にテキスト又はビジュアルコンテンツを挿入するためのプレースホルダーを識別してもよい。選択基準1144’は、メッセージオブジェクト1126’に対応するメッセージ1146’を提示する際に、ユーザー1132が達成すべき1つ以上のエンドポイントを定義又は含んでもよい。また、選択基準1144’は、エンドポイントが達成されるべき時間窓を特定又は定義してもよい。選択基準1144’のエンドポイントは、例えば、ユーザー1132に達成されることが期待される行動目標を含んでもよい。また、選択基準1144’は、エンドポイントの1つ以上を満たすために、ユーザー1132がどの行動を行うべきかを示してもよい。
第2のタイプの各メッセージオブジェクト1126’のメッセージテンプレート1142’は、少なくとも1つのメッセージ1146’に対応してもよいし、少なくとも1つのメッセージ1146’を生成するために使用されてもよい。第2のタイプのメッセージオブジェクト1126’について、各メッセージ1146’は、1つ以上の非インタラクティブ要素1148’A~N(以下、総括的に非インタラクティブ要素1148と称する)を有してもよい。第1のタイプのメッセージオブジェクト1126から生成されたメッセージ1146とは異なり、第2のタイプのメッセージオブジェクト1126’から生成されたメッセージ1146’は、1つ以上のインタラクティブ要素1150を欠いていてもよい。各非インタラクティブ要素1148’は、リモートコンピューティングデバイス1104を介して提示されたときに、ユーザー1132による検出されたインタラクションに応答する構成を欠いていてもよい。また、非インタラクティブ要素1148’は、ユーザー1132によるインタラクションを記録する構成を欠いていてもよい。このような構成のため、メッセージ1146’は、記録されたインタラクションをメッセージ選択システム1102に送り返す機能をさらに欠いていてもよい。例えば、メッセージ1146’がリモートコンピューティングデバイス1104に提供されると、アプリケーション1128は、メッセージ1146’をユーザー1132に提示してもよい。アプリケーション1128は、メッセージ1146’を解析して、非インタラクティブ要素1148を含むメッセージ1146’を提示(例えば、レンダリング又は再生)してもよい。メッセージ1146’が提示されている間、アプリケーション1128のレポーティングエージェント1130は、メッセージ1146’とのインタラクションを監視してもよい。メッセージ1146’は、メッセージ選択システム1102にレスポンスをレポートする構成を欠いているので、レポーティングエージェント1130は、レスポンスを返すことを防止してもよい。
メッセージ相関器1116は、許可されたセット1160内の第1のタイプのメッセージオブジェクト1126の1つと、第2のタイプの少なくとも1つのメッセージオブジェクト1126’との間の少なくとも1つの対応関係1170を決定又は特定してもよい。対応関係1170は、メッセージオブジェクト1126及びメッセージオブジェクト1126’が、選択基準1144及び選択基準1144’でそれぞれ定義された類似又は一致するエンドポイントを有することを示してもよい。対応関係1170の特定は、第1のタイプのメッセージオブジェクト1126の選択基準1144と、第2のタイプのメッセージオブジェクト1126’の選択基準1144’とに基づいてもよい。いくつかの実施形態では、メッセージ相関器1116は、各メッセージオブジェクト1126の選択基準1144と、メッセージオブジェクト1126’の選択基準1144’とを比較してもよい。選択基準1144が一致しないと判定された場合、メッセージ相関器1116は、メッセージオブジェクト1126とメッセージオブジェクト1126’との間の対応関係1170の欠如を判定又は特定してもよい。さらに、メッセージ相関器1116は、比較するために許可されたセット1160から別のメッセージオブジェクト1126を特定してもよい。いくつかの実施形態では、メッセージ相関器1116は、メッセージオブジェクト1126’を制限されたリスト1162に含めてもよい。
そうでなければ、選択基準1144が一致すると決定されたとき、メッセージ相関器1116は、メッセージオブジェクト1126とメッセージオブジェクト1126’との間の対応関係1170を決定又は特定してもよい。対応関係1170の特定により、メッセージ相関器1116は、許可されたセット1160に含めるメッセージオブジェクト1126’を選択してもよい。いくつかの実施形態では、メッセージ相関器1116は、許可されたセット1160内のメッセージオブジェクト1126の1つと対応関係1170を有すると判定されたメッセージオブジェクト1126’のサブセットを選択してもよい。選択により、メッセージ相関器1116は、第2のタイプのメッセージオブジェクト1126’のサブセットを、第1のタイプのメッセージオブジェクト1126と共に、許可されたリスト1160に含めてもよい。許可されたセット1160に含めることによって、メッセージオブジェクト1126’は、生成及びリモートコンピューティングデバイス1104への提供のために選択されることを許可されてもよい。いくつかの実施形態では、許可されたリスト1160に割り当てられたメッセージオブジェクト1126’は、リモートコンピューティングデバイス1104を介したプレゼンテーションのための生成及び提供のために選択される可能性がより高くされて(例えば、より高い重み付けがされている)もよい。
次に図12を参照すると、信頼値を使用してネットワーク環境全体で異なるタイプのメッセージを選択及び送信する方法1200のフロー図が描かれている。方法1200は、図1~9Dと併せて本明細書で詳述したようなコンポーネントのいずれかを使用して実装されてもよい。簡単に概要を説明すると、サーバは、第1のタイプのメッセージオブジェクトを識別してもよい(1205)。サーバは、エンドポイントを満足させるユーザーの数を決定してもよい(1210)。サーバは、パフォーマンススコアを決定してもよい(1215)。サーバは、パフォーマンススコアによってメッセージオブジェクトをランク付けしてもよい(1220)。サーバは、メッセージオブジェクトを許可又は制限してもよい(1225)。サーバは、第2のタイプの対応するメッセージオブジェクトを識別する(1230)。
さらに詳細には、サーバ(例えば、メッセージ選択システム1102)は、第1のタイプのメッセージオブジェクト(例えば、メッセージオブジェクト1126)を識別してもよい(1205)。各メッセージオブジェクトは、メッセージテンプレート(例えば、メッセージテンプレート1142)及び選択基準(例えば、選択基準1144)などを含んでもよい。メッセージテンプレートは、対応するメッセージ及びメッセージ上のユーザーインタフェース要素の生成を指定してもよい。選択基準は、メッセージオブジェクトに対応するメッセージを提示する際に達成すべき1つ以上のエンドポイントを定義してもよい。
サーバは、エンドポイント(1210)を満たすユーザー(例えば、ユーザー1132)の数を決定してもよい。決定するために、サーバは、各メッセージオブジェクトに対するエントリ(例えば、エントリ1140)を含むレスポンスデータ(例えば、レスポンスデータ1124)を識別してもよい。各エントリから、サーバは、ユーザーによって実行されたアクションを特定してもよい。特定情報を用いて、サーバは、アクションをメッセージオブジェクトによって指定されたエンドポイントと比較してもよい。アクションがエンドポイントと一致すると、サーバは、エンドポイントを満たすユーザーの数を増加させてもよい。
サーバは、パフォーマンススコア(例えば、パフォーマンススコア1154)を決定してもよい(1215)。エンドポイントを満足させるユーザーの数に基づいて、サーバは、各メッセージオブジェクトのパフォーマンススコアを計算してもよい。いくつかの実施形態では、サーバは、性能モデル(例えば、性能モデル1116)を使用して、パフォーマンススコアを決定してもよい。サーバは、パフォーマンススコアによってメッセージオブジェクトをランク付けしてもよい(1220)。サーバは、メッセージオブジェクトのパフォーマンススコアを閾値と比較してもよい。
サーバは、メッセージオブジェクトを許可又は制限してもよい(1225)。ランク付けに基づいて、サーバはメッセージオブジェクトを許可又は制限してもよい。例えば、サーバは、ランク付け上位のメッセージオブジェクトを許可されたものとして選択し、一方、残りのメッセージオブジェクトを制限してもよい。許可されていると識別されたメッセージオブジェクトは、対応するメッセージ(例えば、メッセージ1146)を生成及び送信するために使用されることが許可されるか、又はその可能性が高くされてもよい。制限されていると識別されたメッセージオブジェクトは、対応するメッセージを生成及び送信するために使用されることが阻止されるか、又はその可能性が低くされてもよい。
サーバは、第2のタイプの対応するメッセージオブジェクト(例えば、メッセージオブジェクト1126’)を識別する(1230)。第2のタイプのメッセージオブジェクトは、インタラクティブ要素(例えば、インタラクティブ要素1150)の欠如を指定するメッセージテンプレート(例えば、メッセージテンプレート1144’)を有してもよい。サーバは、2つのメッセージオブジェクトのエンドポイントが一致する場合、第2のタイプのメッセージオブジェクトを、第1のタイプのメッセージオブジェクトに対応するものとして特定してもよい。
本開示は、特定の実施形態に関して説明してきたが、当業者であれば、多数の変更が可能であることを認識するであろう。例えば、ルール(トリガー条件又は結果としてのアクションを含む)の特定の例及び提案されたルールを生成するためのプロセスが説明されているが、他のルール並びにプロセスを実施することができる。本開示の実施形態は、本明細書に記載された特定の例に限定されない、様々なコンピュータシステム及び通信技術を使用して実現することができる。
本開示の実施形態は、専用コンポーネント又はプログラマブルプロセッサ又は他のプログラマブルデバイスの任意の組み合わせを使用して実現することができる。本明細書に記載されている様々なプロセスは、任意の組み合わせで、同じプロセッサ又は異なるプロセッサ上で実装することができる。コンポーネントが特定の動作を実行するように構成されていると記述されている場合、そのような構成は、例えば、動作を実行するように電子回路を設計することによって、動作を実行するように(マイクロプロセッサなどの)プログラマブル電子回路をプログラムすることによって、又はそれらの任意の組み合わせによって達成することができる。さらに、上述した実施形態では、特定のハードウェア及びソフトウェアコンポーネントを参照しているが、当業者であれば、ハードウェア又はソフトウェアコンポーネントの異なる組み合わせも使用することができ、ハードウェアで実装されると説明された特定の操作がソフトウェアでも実装される可能性があること、又はその逆であることを理解するであろう。
本開示の様々な機能を組み込んだコンピュータプログラムは、様々なコンピュータ可読記憶媒体にエンコードして格納することができる。適切な媒体には、磁気ディスク又はテープ、コンパクトディスク(CD)若しくはDVD(デジタル多用途ディスク)などの光記憶媒体、フラッシュメモリ、及び他の非一時的な媒体が含まれる。プログラムコードをコード化したコンピュータ可読媒体は、互換性のある電子機器と一緒にパッケージされていてもよいし、プログラムコードは電子機器とは別に提供されていてもよい(例えば、インターネットでダウンロードする、又は別個にパッケージされたコンピュータ可読記憶媒体として提供される)。
本明細書には多くの具体的な実施形態の詳細が含まれているが、これらは、いかなる発明の範囲又は請求される可能性のあるものに対する制限として解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に特有の機能の説明として解釈されるべきである。別々の実施形態の文脈で本明細書に記載された特定の機能は、単一の実施形態において組み合わせて実施することもできる。逆に、単一の実施形態の文脈で説明された様々な機能は、複数の実施形態において別々に、又は任意の適切なサブコンビネーションで実施することもできる。さらに、機能は、特定の組み合わせで作用するものとして上記で説明され、最初にそのように主張されることさえあるが、主張された組み合わせからの1つ以上の機能は、場合によっては組み合わせから抜粋することができ、主張された組み合わせは、サブコンビネーション又はサブコンビネーションのバリエーションに向けられることがある。
同様に、図面には操作が特定の順序で描かれているが、望ましい結果を得るために、そのような操作を図示された特定の順序で実行すること、又は順次実行すること、若しくは図示された操作をすべて実行することを要求していると理解すべきではない。特定の状況下では、マルチタスクや並列処理が有利な場合があり得る。さらに、上述の実施形態における様々なシステムコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、上述のプログラムコンポーネント及びシステムは、一般的に、単一のソフトウェア製品に統合されるか、又は複数のソフトウェア製品にパッケージ化されることができると理解されるべきである。
「又は」への言及は、「又は」を使用して記述された用語が、単一の、複数の、及びすべての記述された用語のいずれかを示すことができるように、包括的に解釈されてもよい。
このように、主題の特定の実施形態を説明してきた。他の実施形態は、以下の請求項の範囲内である。場合によっては、特許請求の範囲に記載された動作を異なる順序で実行しても、望ましい結果を得ることができる。さらに、添付の図に描かれているプロセスは、望ましい結果を達成するために、示されている特定の順序、又は連続した順序を必ずしも必要としない。特定の実施形態では、マルチタスク及び並列処理が有利な場合がある。
方法及びシステムの特定の実施形態を説明してきたが、本発明の概念を組み込んだ他の実施形態を使用してもよいことが、当業者には明らかになるであろう。上述したシステムは、それらの構成要素のいずれか又はそれぞれの複数のものを提供してもよく、これらの構成要素は、スタンドアロンマシン又は、いくつかの実施形態では、分散システムの複数のマシンのいずれかに提供されてもよいことを理解すべきである。上述のシステム及び方法は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせを生成するために、プログラミング又はエンジニアリング技術を使用して、方法、装置、又は製造物品として実装することができる。さらに、上述のシステム及び方法は、1つ以上の製造物品上又は製造物品内に具現化された1つ以上のコンピュータ読み取り可能なプログラムとして提供されてもよい。本明細書で使用される「製造物品(article of manufacture)」という用語は、1つ以上のコンピュータ可読デバイス、ファームウェア、プログラマブルロジック、メモリデバイス(EEPROM、ROM、PROM、RAM、SRAMなど)、ハードウェア(例えば、集積回路チップ、フィールドプログラマブルゲートアレイ(FPGA)、アプリケーション固有の集積回路(ASIC)など)、電子デバイス、コンピュータ読み取り可能な不揮発性記憶装置(CD-ROM、フロッピーディスク、ハードディスクドライブなど)に組み込まれ、それらからアクセス可能なコード又はロジックを包含することを意図したものである。製造物品は、ネットワーク伝送路、無線伝送媒体、空間を伝搬する信号、電波、赤外線信号などを介して、コンピュータ読み取り可能なプログラムへのアクセスを提供するファイルサーバからアクセス可能であってもよい。また、製造物品は、フラッシュメモリカードや磁気テープであってもよい。製造物品には、ハードウェアロジックのほか、プロセッサによって実行されるコンピュータ可読媒体に組み込まれたソフトウェア又はプログラム可能なコードが含まれます。一般的に、コンピュータ可読プログラムは、LISP、PERL、C、C++、C#、PROLOGなどの任意のプログラミング言語、またはJAVAなどの任意のバイトコード言語で実装されてもよい。ソフトウェアプログラムは、オブジェクトコードとして、1つ以上の製造物品上又は製造物品内に格納されてもよい。
このように、本開示は特定の実施形態に関して説明してきたが、本開示は、以下の請求項の範囲内のすべての変更及び同等物をカバーすることを意図していることが理解されるであろう。