以下は、異種のデータソースクエリを統合する方法、装置、およびシステムに関連する様々な概念、ならびに、異種のデータソースクエリを統合する方法、装置、およびシステムの実装形態のより詳細な説明である。上記で紹介し、以下でより詳細に論じる様々な概念は、多数の方法のいずれかにおいて実装され得る。
本技術的解決策は、全体として、異種のデータソースクエリを統合することに向けられている。例えば、アプリケーションは、コンピューティングデバイス上で実行することができる。アプリケーションは、開発者デバイスを介してサードパーティの開発者によって開発、作成、または他の方法で提供され得る。モバイルアプリケーションなどのアプリケーションは、特定のタイプのデータファイル、リソース、または他のコンテンツに対して特定のタイプのアクションを実行するように構成され得る。例えば、モバイルアプリケーションは、音楽ファイルなどのデジタルまたは電子リソースに対して「再生」などのアクションを実行するために、スマートフォンなどのモバイルコンピューティングデバイス上で実行するように構成され得る。モバイルアプリケーションは、音楽アプリケーションと呼ばれる場合がある。開発者は、例えば、ビデオプレーヤアプリケーション、音楽プレーヤアプリケーション、拡張現実アプリケーション、ニュースアプリケーション、電子書籍アプリケーション、ビデオゲームアプリケーション、レシピアプリケーション、チケット購入アプリケーション、衣類アプリケーション、電子商取引アプリケーション、またはライドシェアアプリケーションなどの、様々なタイプのアプリケーションを提供することができる。
アプリケーションまたはモバイルアプリケーションは、コンピューティングデバイスまたはモバイルコンピューティングデバイス上で実行することができる。アプリケーションは、部分的にコンピューティングデバイス上で、および、部分的にデータ処理システム上で実行することができる。アプリケーションは、データ処理システム上で実行することができ、コンピューティングデバイスから入力を受信することができる。例えば、データ処理システムは、コンピューティングデバイスから入力オーディオ信号(例えば、音声入力)を受信することができ、アクション(例えば、音楽を再生する)と、アクションを実行する対象のエンティティ(例えば、特定のアーティストまたは曲)とを識別するために、入力オーディオ信号を解析することができる。アプリケーションは、様々なタイプのモバイルデバイス、コンピューティングデバイス、オペレーティングシステム、会話型アプリケーション、またはチャットボットアプリケーションを含む、様々なプラットフォーム上のアプリケーションを指すことができる。
しかしながら、どのアプリケーションがアクションを実行するか、ならびに、どのアプリケーションがエンティティにアクセスできるかを決定することは、データ処理にとって困難である可能性がある。例えば、各アプリケーションまたはアプリケーションの開発者は、電子データファイルを異なるデータベースまたはデータリポジトリ内に記憶することができる。各アプリケーションまたはアプリケーションの開発者は、アプリケーションが1つまたは複数の技法を使用して実行することができるアクションのタイプを示すことができる。アクションおよびアクションが実行され得る電子データファイルまたはエンティティの指示は、様々なフォーマットまたは場所であり得る。したがって、要求されたエンティティに対してあるタイプのアクションを実行することができるアプリケーションを効率的に、正確に、かつ確実に選択するために、特定のエンティティに対してそのタイプのアクションを実行するための要求を有する入力オーディオ信号を受信することは、音声ベースのコンピューティング環境にとって困難である可能性がある。
例えば、アプリケーション開発者は、開発者のアプリケーションの機能(例えば、映画を再生する、ニュースを入手する、食べ物を注文する、または相乗りを注文する)を意味論的に指定しない場合があり、開発者のアプリケーションが作用するエンティティのためのインベントリ(例えば、映画名)を提供しない場合がある。これは、使用からの入力オーディオ信号が、デジタルアシスタントを介して特定のタスクまたはアクションのパフォーマンスを要求する場合、データ処理システムがこれらのアプリケーションを選択、トリガ、または提案することを困難にする。
したがって、本技術的解決策のシステムおよび方法は、アプリケーションがサービスを提供することができる意図および関連するインベントリに関連する情報を提供することによって、アクションプロバイダをユーザクエリに一致させるという技術的問題を解決することができ、ユーザクエリにサービスを提供するプロバイダを検索する間にこのインベントリを使用することができる。この技術的解決策はまた、ユーザ要求において指定されたエンティティに基づいてアクションをピボットするために、エンティティピボッティングを実行するために使用され得る。例えば、ユーザがミュージシャンの身長について質問した場合、データ処理システムは、音楽を再生する、ミュージシャンの最近のオンライン投稿を示す、ミュージシャンのチケットを購入するなどの、ミュージシャンに関連するアクションベースの提案を提供し得る。
そうするために、本技術的解決策のデータ処理システムは、(1)クエリを対応するプロバイダに一致させ、(2)エンティティベースのアプリケーションアクション推奨を生成するために、構造化データフィードとウェブページとを組み合わせるか、または統合することができる。例えば、所与のエンティティについて、データ処理システムは、エンティティに関連するウェブページに関連付けられたアプリケーションと相互にランク付けされたエンティティのためのアクションを明示的に提供するアプリケーションを(例えば、フィードを介して)推奨することができる。これを行うために、データ処理システムは、例えば、ユーザクエリからエンティティを識別するための解析または自然言語処理、ウェブコンテンツおよびフィードからエンティティを識別するためのウェブ検索技法、アプリケーションへのユニフォームリソースロケータ(URL)もしくはディープリンクを含む構造化データフィード、構造化フィードアイテムもしくはウェブページ内の所与のエンティティがクエリに対して有する関連性のレベルの知識、または、アプリケーションへの対応するディープリンクへのウェブURLのインデックスを含む、様々なプロセス、技法、インフラストラクチャ、またはデータソースからの結果を組み合わせるかまたは統合することができる。
データ処理システムは、ユーザ要求を完全に満たすことができるエージェントまたはアプリケーションのソートされたリストを作成するために、結果が満たしている意図を理解するために、いつどのようにこれらのサイロ化された(siloed)データソースを検索してこれらの別個のデータソースの結果を組み合わせるかを決定し、結果を再ランク付けし、結果をユーザが提供したインベントリ仕様(例えば、GET_RECIPEまたはPLAY_MOVIE)に一致させるために、構成駆動型の方法においてこれらのインフラストラクチャを組み合わせることができる。データ処理システムは、クライアントデバイス上にインストールされているアプリケーションのみに推奨をフィルタリングすることによって、提案をさらに改善することができる。各データソースまたはデータソース内のバーティカル(vertical)は、異なる要求および応答フォーマットを有する場合があるので、データ処理システムは、構成のセットを使用してユーザクエリおよびユーザコンテキストから要求を作成するための仕様をアプリケーション開発者のデバイスから受信することができる。アプリケーション開発者は、応答をさらに処理するための共通フォーマットに変換するために、構成を使用することができる。したがって、データ処理システムは、構造化データフィードと非構造化データフィードとを組み合わせることができ、(2)任意のバーティカル全体にわたってクエリを処理するために任意のナレッジグラフを使用することができ、(3)任意のタイプのデバイスのための任意のタイプの履行(fulfillment)を提供することができる。本明細書で説明する技法は、デバイスが、要求を満たすことができるアプリケーションのみを開くことを可能にすることができる。デバイスにおいてアプリケーションを開くことは、典型的には、かなりのコンピュータリソースを利用し、アプリケーションを開く前に、アプリケーションが要求を満たすかどうかを最初に判定することによって、本明細書で説明する主題は、コンピュータリソース利用を低減することができる。
図1は、異種のデータソースクエリを統合するための例示的なシステム100を示す。システム100は、コンテツ選択インフラストラクチャを含むことができる。システム100は、データ処理システム102を含むことができる。データ処理システム102は、ネットワーク105を介して開発者コンピューティングデバイス106またはクライアントコンピューティングデバイス104のうちの1つまたは複数と通信することができる。ネットワーク105は、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロエリアネットワーク、または他のエリアネットワーク、イントラネット、衛星ネットワークなどのコンピュータネットワークと、音声またはデータ携帯電話ネットワークなどの他の通信ネットワークとを含むことができる。ネットワーク105は、ラップトップ、デスクトップ、タブレット、携帯情報端末、スマートフォン、ポータブルコンピュータ、またはスピーカなどの少なくとも1つのコンピューティングデバイス104上に提示、出力、レンダリング、または表示され得る、ウェブページ、ウェブサイト、ドメイン名、またはユニフォームリソースロケータなどの情報リソースにアクセスするために使用され得る。例えば、ネットワーク105を介して、コンピューティングデバイス104のユーザは、開発者コンピューティングデバイス106によって提供される情報またはデータにアクセスすることができる。コンピューティングデバイス104(またはクライアントデバイス)は、ディスプレイを含む場合も含まない場合もあり、例えば、コンピューティングデバイスは、マイクロフォンまたはスピーカなどの限定されたタイプのユーザインターフェースを含み得る。場合によっては、コンピューティングデバイス104の主要なユーザインターフェースは、マイクロフォンおよびスピーカであり得る。コンピューティングデバイス104は、音声ベースのコンピューティング環境とインターフェースするか、またはその中に含まれ得る。
ネットワーク105は、クライアントコンピューティングデバイス104によって提示、出力、レンダリング、または表示され得る、ウェブページ、ウェブサイト、ドメイン名、またはユニフォームリソースロケータなどの情報リソースにアクセスするために、データ処理システム102によって使用され得る。例えば、ネットワーク105を介して、クライアントコンピューティングデバイス104のユーザは、開発者コンピューティングデバイス106によって提供される情報またはデータにアクセスすることができる。ネットワーク105は、コンテンツ配置または検索エンジン結果システムに関連付けられているか、または、デジタル構成要素配置キャンペーンの一部としてサードパーティデジタル構成要素を含むのに適格な、インターネット上で利用可能な情報リソースのサブネットワークを含むかまたは構成することができる。
ネットワーク105は、以下の、ポイントツーポイントネットワーク、ブロードキャストネットワーク、ワイドエリアネットワーク、ローカルエリアネットワーク、電気通信ネットワーク、データ通信ネットワーク、コンピュータネットワーク、ATM(非同期転送モード)ネットワーク、SONET(同期光ネットワーク)ネットワーク、SDH(同期デジタル階層)ネットワーク、ワイヤレスネットワーク、および有線ネットワークのうちのいずれかを含み得る。ネットワーク105は、赤外線チャネルまたは衛星帯域などのワイヤレスリンクを含み得る。ネットワーク105のトポロジは、バス、スター、またはリングネットワークトポロジを含み得る。ネットワークは、アドバンスドモバイルフォンプロトコル(「AMPS」)、時分割多元接続(「TDMA」)、符号分割多元接続(「CDMA(登録商標)」)、グローバルシステムフォーモバイルコミュニケーション(「GSM(登録商標)」)、汎用パケット無線サービス(「GPRS」)、またはユニバーサルモバイルテレコミュニケーションズシステム(「UMTS」)を含む、モバイルデバイス間で通信するために使用される任意のプロトコルを使用するモバイル電話ネットワークを含み得る。異なるタイプのデータが、異なるプロトコルを介して送信され得、または、同じタイプのデータが、異なるプロトコルを介して送信され得る。
システム100は、少なくとも1つのデータ処理システム102を含むことができる。データ処理システム102は、ネットワーク105を介して、例えば、コンピューティングデバイス104、開発者コンピューティングデバイス106(例えば、コンテンツプロバイダ)と通信するために、プロセッサを有するコンピューティングデバイスなどの少なくとも1つの論理デバイスを含むことができる。データ処理システム102は、少なくとも1つの計算リソース、サーバ、プロセッサ、またはメモリを含むことができる。例えば、データ処理システム102は、少なくとも1つのデータセンタ内に配置された複数の計算リソースまたはサーバを含むことができる。データ処理システム102は、複数の論理的にグループ化されたサーバを含むことができ、分散コンピューティング技法を容易にすることができる。サーバの論理的グループは、データセンタ、サーバファーム、またはマシンファームと呼ばれる場合がある。サーバはまた、地理的に分散され得る。データセンタまたはマシンファームは、単一のエンティティとして管理され得、または、マシンファームは、複数のマシンファームを含むことができる。各マシンファーム内のサーバは、異種であり得、サーバまたはマシンのうちの1つまたは複数は、1つまたは複数のタイプのオペレーティングシステムプラットフォームに従って動作することができる。
マシンファーム内のサーバは、関連する記憶システムとともに高密度ラックシステム内に格納され得、エンタープライズデータセンタ内に配置され得る。例えば、この方法においてサーバを統合することは、ローカライズされた高性能ネットワーク上にサーバと高性能ストレージシステムとを配置することによって、システムの管理性と、データの安全性と、システムの物理的安全性と、システムパフォーマンスとを改善し得る。サーバと記憶システムとを含むデータ処理システム102の構成要素のすべてまたはいくつかの集中化、および、それらを高度なシステム管理ツールと結合することは、サーバリソースのより効率的な使用を可能にし、それは、電力と処理要件とを節約し、帯域幅の使用を低減する。
システム100は、少なくとも1つの開発者コンピューティングデバイス106を含むか、それにアクセスするか、または他の方法で対話する。開発者コンピューティングデバイス106は、ネットワーク105を介して、例えば、コンピューティングデバイス104またはデータ処理システム102と通信するために、プロセッサを有するコンピューティングデバイスなどの少なくとも1つの論理デバイスを含むことができる。開発者コンピューティングデバイス106は、少なくとも1つの計算リソース、サーバ、プロセッサ、またはメモリを含むことができる。例えば、開発者コンピューティングデバイス106は、少なくとも1つのデータセンタ内に配置された複数の計算リソースまたはサーバを含むことができる。開発者コンピューティングデバイス106は、データ処理システム102の1つまたは複数の構成要素または機能を含むことができる。開発者コンピューティングデバイス106は、アプリケーション開発者デバイス、サービスプロバイダデバイス、または商品プロバイダデバイスを含むかまたは参照することができる。開発者コンピューティングデバイス106は、アプリケーションを開発するために使用され得る。開発者コンピューティングデバイス106は、アプリケーションを部分的に開発するために使用され得る。開発者コンピューティングデバイス106は、アプリケーションをデータ処理システム102に提供するために使用され得る。開発者コンピューティングデバイス106は、アプリケーションを提供すること、またはアプリケーションに関連する機能を提供することを他の方法で容易にするために使用され得る。
コンピューティングデバイス104は、少なくとも1つのセンサ134、トランスデューサ136、オーディオドライバ138、またはプリプロセッサ140を含むか、それらとインターフェースするか、または他の方法で通信することができる。センサ134は、例えば、周囲光センサ、近接センサ、温度センサ、加速度計、ジャイロスコープ、動き検出器、GPSセンサ、位置センサ、マイクロフォン、またはタッチセンサを含むことができる。トランスデューサ136は、スピーカまたはマイクロフォンを含むことができる。オーディオドライバ138は、ハードウェアトランスデューサ136へのソフトウェアインターフェースを提供することができる。オーディオドライバは、対応する音響波または音波を生成するためにトランスデューサ136を制御するために、データ処理システム102によって提供されるオーディオファイルまたは他の命令を実行することができる。プリプロセッサ140は、トリガキーワード、所定のホットワード、開始キーワード、または起動キーワードを検出するように構成され得る。場合によっては、トリガキーワードは、アクションを実行するための要求を含むことができる。場合によっては、トリガキーワードは、コンピューティングデバイス104を有効化またはアクティブ化するための所定のアクションキーワードを含むことができ、要求キーワードは、トリガキーワードまたはホットワードの後に続くことができる。プリプロセッサ140は、キーワードを検出し、キーワードに基づいてアクションを実行するように構成され得る。プリプロセッサ140は、さらなる処理のためにデータ処理システム102に用語を送信する前に、1つもしくは複数の用語を除外するか、または用語を変更することができる。プリプロセッサ140は、マイクロフォンによって検出されたアナログオーディオ信号をデジタルオーディオ信号に変換することができ、デジタルオーディオ信号を搬送する1つまたは複数のデータパケットを、ネットワーク105を介してデータ処理システム102に送信することができる。場合によっては、プリプロセッサ140は、そのような送信を実行するための命令を検出したことに応答して、入力オーディオ信号の一部またはすべてを搬送するデータパケットを送信することができる。命令は、例えば、入力オーディオ信号を含むデータパケッ
トをデータ処理システム102に送信するためのトリガキーワードもしくは他のキーワードまたは承認を含むことができる。
クライアントコンピューティングデバイス104は、音声クエリをオーディオ入力として(センサ134を介して)クライアントコンピューティングデバイス104に入力し、データ処理システム102(または開発者コンピューティングデバイス106)からクライアントコンピューティングデバイス104に提供され得、トランスデューサ136(例えば、スピーカ)から出力され得るコンピュータで生成された音声の形態のオーディオ出力を受信するエンドユーザに関連付けられ得る。コンピュータで生成された音声は、実在の人物またはコンピュータで生成された言語からの録音を含むことができる。
データ処理システム102は、少なくとも1つの計算リソースまたはサーバを有するコンテツ配置システムを含むことができる。データ処理システム102は、コンピューティングデバイス104による実行または対話のためにアプリケーションを選択、配信、または供給するように構成されたオンラインアプリケーション配信プラットフォームを含むことができる。アプリケーションは、アプリケーションの入力および出力がコンピューティングデバイス104を介して提供されるように、コンピューティングデバイス104上で少なくとも部分的に、かつデータ処理システム102上で部分的に、または、完全にデータ処理システム102上で実行することができるが、そうでなければ、アプリケーションは、データ処理システム102上で実行する。アプリケーションは、開発者コンピューティングデバイス106上で少なくとも部分的に実行することができる。
データ処理システム102は、少なくとも1つのインターフェース110を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つの自然言語プロセッサ構成要素112を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つのアプリケーション取り入れ構成要素114を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つのアプリケーション配信構成要素116を含むか、それとインターフェースするか、または他の方法で通信することができる。データ処理システム102は、少なくとも1つのデータリポジトリ118を含むか、それとインターフェースするか、または他の方法で通信することができる。少なくとも1つのデータリポジトリ118は、1つまたは複数のデータ構造またはデータベース内に、アプリケーションパッケージ(APK)ファイル120、インデックス122、エンティティ124、パフォーマンスデータ126、またはプロファイル128を含むかまたは記憶することができる。
APKファイル120は、アプリケーションパッケージキットもしくはアプリケーションパッケージファイル、または他のアプリケーション関連ファイルを指すことができる。データ処理システム102は、データリポジトリ118内に、複数のアプリケーションのためのAPKファイルを記憶することができる。データ処理システム102は、データ処理システム102がコンピューティングデバイス104に配信するように構成された各アプリケーションについて、1つまたは複数のAPKファイルを記憶することができる。APKファイル120は、アプリケーションをコンピューティングデバイス上に配布およびインストールすることができる。APKファイル120は、コンピューティングデバイス104上にインストールするための、データ処理システム102からコンピューティングデバイス104へのアプリケーションの配布のために構成されたフォーマットであり得る。アプリケーションは、1つまたは複数のフォーマットにおける1つまたは複数のAPKファイル120を有することができる。例えば、単一のアプリケーションは、第1のタイプのコンピューティングデバイス104上にインストールするための、第1の配信プラットフォームを使用してアプリケーションを配布するように構成された第1のフォーマットにおけるAPKファイル120と、第2の配信プラットフォームを介してアプリケーションを第2のタイプのコンピューティングデバイス104に配信するように構成された第2のフォーマットにおける第2のAPKファイル120とを有することができる。APKファイル120は、命令、ソースコード、実行可能コード、機械可読コード、スクリプト、関数、画像、オーディオファイル、ビデオファイル、または構成ファイルを含むことができる。APKファイルは、アプリケーションの配布およびインストールを容易にするための命令(またはコード)を含むことができる。
APKファイル120は、アクションインベントリファイルに関連付けられ得る。アクションインベントリファイルは、APKファイル120の一部であり得る。アクションインベントリファイルは、APKファイル120の一部として、またはAPKファイル120とともに提供され得る。例えば、アプリケーションの開発者は、アプリケーションのためのAPKファイル120とともにアクションインベントリファイルを提供することができる。アクションインベントリファイルは、APKファイル120とは別のファイルであり得、APKファイル120から分離し得る。アクションインベントリファイルは、(例えば、APKファイル120の一部として含まれるか、APKファイルと一致もしくは対応する識別子を有するか、ポインタを介し、参照またはユニフォームリソースロケータを介してリンクされるか、または、インデックス内で互いにマッピングもしくはリンクされた)APKファイル120に関連付けられ得る。アクションインベントリファイルは、アプリケーションが実行することができるアクションを示すことができる。アクションインベントリファイルは、アプリケーションが識別されたアクションを実行することができるエンティティを示すことができる。アクションインベントリファイルは、アプリケーションが示されたアクションを実行することができるエンティティに関する情報を含む別のデータソースへのポインタ、URI、URL、または参照を含むことができる。アクションインベントリファイルは、アプリケーション内のエンティティへのディープリンクを含むことができる。アクションインベントリファイルまたはAPKファイルは、アプリケーション内のエンティティへのディープリンクを構成するために使用されるパターンを含むことができる。
データリポジトリ118内に記憶されたインデックス122は、アクションへのアプリケーションのマッピングを含むことができる。データリポジトリ118内に記憶されたインデックス122は、エンティティへのアプリケーションのマッピングを含むことができる。データリポジトリ118内に記憶されたインデックス122は、エンティティへのアクションのマッピングを含むことができる。インデックス122は、アプリケーションを起動または開くときに、アプリケーションをエンティティに向けるか、またはエンティティを開くために、アプリケーションのエンティティへのディープリンクを含むことができる。インデックス122は、時間間隔に基づいて周期的に、または、新しいアプリケーションもしくは更新されたアプリケーションもしくは新しいインベントリ(例えば、エンティティ)の取り込みなどの、他のイベントもしくは条件に応答して更新され得る。データ処理システム102は、データ処理システム102上のデータリポジトリ118上にインデックス122を維持することができる。場合によっては、データ処理システム102は、コンピューティングデバイス104上に記憶されたローカルインデックス122内などの、コンピューティングデバイス104のローカルメモリ内に、コンピューティングデバイス104のためのインデックス122を維持することができる。ローカルインデックス122は、例えば、データ処理システム102がアクセスできない可能性があるローカルコンピューティングデバイス104上で利用可能であり得るもしくはそこに記憶され得るエンティティに関する情報、または、データ処理システム102がコンピューティングデバイス104を介してアクセスすることができるエンティティに関する情報を含むことができる。
データ処理システム102は、データリポジトリ118内にエンティティ124またはエンティティ124の指示を記憶することができる。エンティティの指示は、エンティティの一意の識別子を指すか、またはそれを含むことができる。一意の識別子は、例えば、英数字値、文字列、文字、数値、またはドメイン、プロパティ、およびタイプ情報を含むことができる。エンティティは、単一の人物、場所、または物であり得、リポジトリは、類似した名前を有する複数のエンティティ(例えば、車のJaguar対動物のジャガー)を区別するための一意の識別子を各々が有する数百万のエンティティを含むことができる。データ処理システム102は、様々なソースからのエンティティを識別するために、参照エンティティにアクセスし、任意のテキスト(例えば、ウェブページ内のテキスト、キーワードのテキスト、コンテンツのテキスト、広告のテキスト)をスキャンすることができる。1つのそのようなソースは、例えば、エンティティグラフシステム142であり得る。エンティティグラフシステム142は、ユーザのコミュニティによって構築された、人、場所、および物のエンティティグラフなどの、エンティティの手動で作成された分類基準を含むことができる。データ処理システム102は、ネットワーク105を介してエンティティグラフシステム142とインターフェースするか、それにアクセスするか、または他の方法でそれと通信することができる。
データ処理システム102は、複数の方法において、エンティティに対してアクションを実行するためのアプリケーションを選択するためにエンティティを使用し得る。データ処理システム102は、複数のエンティティの分類を取得することができる。エンティティは、単一の人、場所、物、またはトピックであり得る。各エンティティは、類似した名前を有する複数のエンティティ(例えば、車のJaguar対動物のジャガー)を区別し得る一意の識別子を有する。一意の識別子(「ID」)は、文字、テキスト、数字、または記号の組み合わせであり得る。データ処理システムは、ネットワーク105を介して内部またはサードパーティのデータベースから分類を取得し得る。一実装形態において、エンティティは、ユーザデバイス(例えば、コンピューティングデバイス104)のユーザによって手動で分類され得る。例えば、ユーザは、ネットワーク105を介してエンティティのデータベースにアクセスし得る。ユーザは、少なくとも1つのエンティティをアップロードするか、またはバルクアップロードにおいて複数のエンティティをアップロードし得る。ユーザは、アップロードされたエンティティを分類し得、または、アップロードは、少なくとも1つのエンティティの分類を含み得る。いくつかの実装形態において、エンティティを受信すると、データ処理システム102は、ユーザに分類を促し得る。
いくつかの実装形態において、エンティティは、分類され得る。分類は、エンティティがカテゴライズまたは構造化される方法、例えば、オントロジーを示し得る。例えば、オントロジー的分類は、エンティティが有することができる属性、態様、特性、特色、特徴、またはパラメータを含み得る。オントロジー的分類は、クラス、セット、コレクション、概念、またはタイプも含み得る。「車両」のオントロジーは、タイプ-地上車両、船、航空機、機能-人を運ぶ、貨物を運ぶ、属性-出力、サイズ、構成要素-エンジン、ボディなどを含み得る。いくつかの実装形態において、手動分類は、エンティティの手動で作成された分類基準を提供する構造化データを含む。エンティティは、例えば、人、場所、本、または映画などのエンティティタイプに関連付けられ得る。エンティティタイプは、例えば、人の生年月日、または、場所の経度および緯度などの追加の特性を含み得る。エンティティは、一意に名前が付けられたオブジェクトのディレクトリ(例えば、インターネット上のドメイン名、ユニフォームリソースロケータ内のパス、またはコンピュータファイルシステム内のディレクタ)を含む、名前空間を共有するタイプのコレクションなどのドメインにも関連付けられ得る。エンティティは、特性(または、複数の特性の使用によって形成されたパス)を一般的な関係の観点から説明するメタデータも含み得る。
データ処理システム102、またはエンティティグラフシステム142の管理者は、ドメイン、タイプ、およびプロパティに基づいてエンティティを分類し得る。例えば、ドメインは、アメリカのミュージシャンであり得、「/music」というIDを有し得る。このドメインは、「/music/pop_music」というIDを有する音楽タイプに関連付けられ得る。このタイプは、「/music/pop_music/musicians」というポップミュージックのミュージシャンの特性を含み得る。各ドメイン、タイプ、特性、または他のカテゴリは、説明を含み得る。例えば、「/music/pop_music」は、以下の「音楽は、ボーカルまたはインストルメンタルサウンドを指し、ポップミュージックは、現在の商用ポピュラー音楽を指す場合がある」という説明を含み得る。いくつかの実装形態において、データ処理システム102は、文書のテキストまたは他のデータをスキャンし、分類を自動的に決定することができる。例えば、データ処理システム102は、ミュージシャンに関する情報について、ネットワーク105を介して情報リソースをスキャンし、情報を「/music/pop_music/musicians/female_musicians」として分類し得る。データ処理システム102は、エンティティの女性ミュージシャンに、分類を示す一意の識別子をさらに割り当て得る。
エンティティは、少なくとも部分的に、1人または複数人の人間(「エンティティ貢献者」)によって分類され得る。これは、手動分類と呼ばれる場合がある。いくつかの実装形態において、エンティティは、クラウドソーシングプロセスを使用して分類され得る。クラウドソーシングは、オンラインまたはオフラインで発生し得、定義された人々のグループ、分散した人々のグループ、または未定義の人々のグループにタスクをアウトソーシングすることを含むプロセスを指す場合がある。オンラインクラウドソーシングの例は、エンティティグラフシステム142の管理者が、エンティティをアップロードまたは分類するタスクを未定義のユーザのセットに割り当てることを含み得る。ユーザは、分類をオンラインで追加、変更、または削除し得る。オフラインクラウドソーシングの例は、ネットワーク105を使用せずに、エンティティをアップロードまたは分類するタスクを未定義の公衆に割り当てることを含み得る。
パフォーマンスデータ126は、例えば、アプリケーションがアクションをどれだけ良好に実行するかについての情報を含むことができる。パフォーマンス126は、例えば、アプリケーションがエンティティに対してアクションをどれだけ良好に実行するかについての情報を含むことができる。パフォーマンスデータ126は、過去のパフォーマンスまたは使用に基づくことができる。パフォーマンスデータ126は、フィードバックまたは評価に基づくことができる。パフォーマンスデータ126は、品質メトリック、待ち時間メトリック、時間メトリック、メモリ使用メトリック、プロセッサ使用メトリック、ネットワーク帯域幅使用などのメトリックの形式であり得る。パフォーマンスメトリックは、アプリケーションがアクションを実行するのにかかる時間の量、または、アプリケーションが起動するのにかかる時間の量を示すことができる。パフォーマンスデータ126は、アクションを実行するときのアプリケーションの効率のレベルを示すことができる。アクションは、アプリケーションにインデックス付けまたはマッピングされたAPKファイルまたはアクションインベントリファイルを介して識別されるアクションであり得る。パフォーマンスメトリックは、値(例えば、メモリ消費率、プロセッサ利用率、または時間)または英数字インジケータを含むことができる。パフォーマンスメトリックは、低、中、高、もしくは1〜10のスケールなどのスケール、グレード、範囲、もしくはスペクトル、または、A、B、C、D、Fなどの採点システムを含むことができる。データ処理システム102は、配信するためのアプリケーションを選択またはランク付けするためにパフォーマンスメトリックを使用することができる。
追加のパフォーマンス情報126は、アプリケーションに関連するエラーまたは障害を示すことができる。例えば、アプリケーションが、APKファイルまたはアクションインベントリファイルを介して、特定のタイプのエンティティに対して特定のタイプのアクションを実行することができるが、エンティティに対してアクションを実行しようとしたときに、アプリケーションがクラッシュ、失敗、またはエラーを有する場合、データ処理システム102は、データリポジトリ118内のパフォーマンスデータ構造126内にエラーログを記憶することができる。データ処理システム102は、アプリケーションが、アプリケーションインベントリファイル内に示されたものとは反対に、エンティティに対してアクションを実行するように構成されていないか、そうすることができないか、またはそうするために他の方法で使用可能ではない可能性があると判定することができる。したがって、データ処理システム102は、アプリケーションが満足できるレベルまでエンティティに対してアクションを実行することができない(例えば、クラッシュ、エラー、過度の遅延、待ち時間、または、音質もしくはビデオ解像度などの非常に低い品質)と判定したことに応答して、アプリケーションと対応するアクションおよびエンティティとの間のマッピングまたはリンクを除去するようにインデックス122を更新することを決定することができる。データ処理システム102は、エラーを解決または改善するために開発者がアプリケーションまたはアクションインベントリファイルを更新することを可能にするために、アプリケーションを提供した開発者コンピューティングデバイス106に指示、通知、または警報を提供することができる。データ処理システム102は、アプリケーションがエンティティに対してアクションを実行するように構成されていることを示すアクションインベントリファイルとは反対に、エンティティに対してアクションを実行するアプリケーションの選択を阻止することを決定するために、パフォーマンスデータ構造126内に記憶されたエラーログを使用することができる。
データリポジトリ118は、プロファイル情報128を記憶することができる。プロファイル情報は、コンピューティングデバイス104に関連する情報を含むかまたはそれを指すことができる。プロファイル情報は、コンピューティングデバイス104上に構成されたアカウントに関連する情報を含むかまたはそれを指すことができる。プロファイル情報は、コンピューティングデバイス104の構成、またはコンピューティングデバイス104上でアクティブ化されたアカウントの構成を示すことができる。プロファイル情報は、どのアプリケーションがコンピューティングデバイス104上にインストールされているか、または、どのアプリケーションがコンピューティングデバイス104上で利用可能もしくはアクセス可能であるかを示すことができる。プロファイル情報は、コンピューティングデバイス104上に記憶されるか、またはコンピューティングデバイス104にアクセス可能なエンティティを含むかまたは示すことができる。プロファイル情報は、アプリケーション、アクション、またはエンティティに関するユーザ嗜好を含むかまたは示すことができる。
データ処理システム102は、検索エンジンシステム146とインターフェースするか、それにアクセスするか、または他の方法で通信することができる。検索エンジン146は、ウェブページにインデックスを付け、インデックスをデータベース内に記憶するために、インターネット上のウェブページまたはウェブサイトをクロールするシステムを指すかまたは含むことができる。検索エンジンシステム146は、検索エンジンへの入力において指定されたキーワードまたは文字に対応するデータベース内のアイテムを検索および識別する1つまたは複数のプログラムを含むことができる。
データ処理システム102は、ウェブサーバ144とインターフェースするか、それにアクセスするか、または他の方法で使用することができる。ウェブサーバ144は、ウェブサイトまたはウェブページをホストすることができる。ウェブサーバ144は、開発者コンピューティングデバイス106によって開発され、インターネット上で公開されたウェブサイトをホストすることができる。例えば、開発者コンピューティングデバイス106は、開発者コンピューティングデバイス106によって提供されたアプリケーションがアクションを実行することができるエンティティを示すために、構造化データタグ付け方式を使用して、ウェブページをマークアップすることができる。
インターフェース110、自然言語プロセッサ構成要素112、アプリケーション取り入れ構成要素114、またはアプリケーション配信構成要素116は、各々、少なくとも1つの処理ユニット、もしくは、プログラマブル論理アレイエンジンなどの他の論理デバイス、または、データベースリポジトリもしくはデータリポジトリ118と通信するように構成されたモジュールを含むことができる。インターフェース110、自然言語プロセッサ構成要素112、アプリケーション取り入れ構成要素114、アプリケーション配信構成要素116、およびデータリポジトリ118は、別個の構成要素、単一の構成要素、またはデータ処理システム102の一部であり得る。システム100、およびデータ処理システム102などのその構成要素は、1つまたは複数のプロセッサ、論理デバイス、または回路などのハードウェア要素を含むことができる。
データ処理システム102は、複数のコンピューティングデバイス104に関連する匿名のコンピュータネットワーク活動情報を取得することができる。コンピューティングデバイス104のユーザは、ユーザのコンピューティングデバイス104に対応するネットワーク活動情報を取得するために、データ処理システム102を肯定的に許可することができる。例えば、データ処理システム102は、1つまたは複数のタイプのネットワーク活動情報を取得することに対する同意をコンピューティングデバイス104のユーザに促すことができる。コンピューティングデバイス104のユーザの識別情報は、匿名のままであり得、コンピューティングデバイス104は、一意の識別子(例えば、データ処理システムまたはコンピューティングデバイスのユーザによって提供されるユーザまたはコンピューティングデバイスのための一意の識別子)に関連付けられ得る。データ処理システムは、各観測を対応する一意の識別子に関連付けることができる。
データ処理システム102は、例えば、データパケットを使用して情報を受信および送信するように設計されるか、構成されるか、構築されるか、または動作可能なインターフェース構成要素110を含むことができる。インターフェース110は、ネットワークプロトコルなどの1つまたは複数のプログラムを使用して情報を受信および送信することができる。インターフェース110は、ハードウェアインターフェース、ソフトウェアインターフェース、有線インターフェース、またはワイヤレスインターフェースを含むことができる。インターフェース110は、データをあるフォーマットから別のフォーマットに変換またはフォーマットすることを容易にすることができる。例えば、インターフェース110は、ソフトウェア構成要素などの様々な構成要素間で通信するための定義を含むアプリケーションプログラミングインターフェースを含むことができる。
データ処理システム102は、アプリケーションパッケージファイルと関連するアクションインベントリファイルとを受信するように設計されるか、構成されるか、構築されるか、または動作可能なアプリケーション取り入れ構成要素114を含むことができ、モバイルアプリケーションが実行する1つまたは複数の電子アクションと、アプリケーションが電子アクションを実行する対象の対応する1つまたは複数のエンティティとを識別するために、アクションインベントリファイルを処理することができる。アプリケーション取り入れ構成要素114は、開発者コンピューティングデバイス106がアプリケーションパッケージファイルと関連するアクションインベントリファイルとを転送することができる、ユーザインターフェース、グラフィカルユーザインターフェース、または他のメカニズムを提供することができる。例えば、開発者コンピューティングデバイス106は、データ処理システム102のインターフェース110を介してアプリケーションパッケージファイルをアップロードすることができる。データ処理システム102は、開発者コンピューティングデバイス106上の場所からアプリケーションパッケージファイルを所得することができる。
データ処理システム102は、複数の開発者コンピューティングデバイス106から複数のアプリケーションファイルを受信することができる。アプリケーションパッケージファイルは、アプリケーションをコンピューティングデバイス104上に配布およびインストールするための命令を含むことができる。命令は、ソフトウェアコード、実行可能ファイル、プログラム、スクリプト、または関数を含むかまたは指すことができる。アプリケーションパッケージファイルは、アプリケーションがコンピューティングデバイス104上で実行されるために満たされるべき基準またはシステム要件をさらに提供することができる。例えば、アプリケーションパッケージファイルは、オペレーティングシステムのタイプ、コンピューティングデバイスのタイプ、必要なインターフェース(例えば、キーボード、マウス、タッチスクリーン、センサ、ディスプレイ、スピーカ、マイクロフォン)、プロセッサ要件、ストレージ要件、メモリ要件などの互換性情報を指定することができる。アプリケーション配信構成要素116は、コンピューティングデバイス104に配信するアプリケーションを選択するために互換性情報を使用することができる。
各アプリケーションパッケージファイルは、アクションインベントリファイルに関連付けられ得る。アクションインベントリファイルは、アプリケーションが実行するように構成されたアクションのタイプを示すことができる。アクションは、コンピューティングデバイス上で実行されるプログラムによってそれらが実行されるので、電子アクションと呼ばれる場合がある。アクションは、例えば、オーディオを再生する、ビデオを再生する、マルチメディア、ニュースを提供するレシピを提供する、天気情報を提供する、ライドシェアサービスを注文する、電子商取引、チケットを購入するなどを含むことができる。
アクションインベントリファイルは、アプリケーションがアクションを実行するように構成されたエンティティをさらに示すことができる。エンティティのセットは、アプリケーションのインベントリと呼ばれる場合がある。アクションインベントリファイルは、データファイル、テキストファイル、コンマ区切りファイル、テーブル、データ構造、もしくは任意の他のファイルであり得、または、アクションおよびインベントリ情報を示すように構成された任意のフォーマットであり得る。アクションインベントリファイルフォーマットは、ユーザがユーザ自身のカスタマイズされたマークアップ言語を定義することを可能にするメタ言語などの、拡張可能マークアップ言語XMLであり得る。
アクションインベントリファイルは、エンティティのリストへのポインタを含むことができる。アクションインベントリファイルは、開発者コンピューティングデバイスを介して確立されたウェブページへのユニフォームリソースロケータを含むことができ、データ処理システム102は、開発者コンピューティングデバイスのウェブページからエンティティのインベントリを決定することができる。アクションインベントリファイルは、エンティティのリストへの参照、ポインタ、URL、または他の指示を含むことができる。例えば、アクションインベントリファイル自体は、アプリケーションが1つまたは複数のアクションを実行するように構成されたエンティティのリストを記憶しない場合があり、ウェブページもしくはウェブサイトへのリンク、または、アクションインベントリファイルとは別の、アクションインベントリファイルから離れて記憶された他のデータファイルへのリンクを含む場合がある。例えば、アクションインベントリファイルは、アクションのセットを含むことができるが、アプリケーションがアクションを実行することができるエンティティを示すウェブページへのURLを含むことができる。例えば、アクションは、「音楽を再生する」であり得、エンティティのインベントリ(例えば、曲カタログ)は、(例えば、ウェブサーバ144によってホストされる)ウェブページ上に記憶され得る。エンティティのインベントリをウェブページ上に記憶することによって、開発者コンピューティングデバイス106は、新しいアクションインベントリファイルまたはアプリケーションパッケージファイルをデータ処理システム102に提供する必要なしに、インベントリリストを更新することができ、それによって、アプリケーション取り入れプロセスがデータ処理システム102によって実行される回数を低減し、それは、データ処理システム102によるプロセッサ利用を低減することができる。
データ処理システム102は、ウェブページへのリンクまたは参照を識別するためにアクションインベントリファイルを解析または処理することができる。ウェブページは、構造化データを含むことができる。構造化データは、ボット、スパイダ、またはウェブクローラがウェブページ上の情報をよりよく理解することを可能にするためにHTMLページへの追加のマークアップを有するウェブページを指すことができる。データ処理システム102は、開発者がアプリケーションに利用可能であることを示し、アプリケーションがアクションを実行するために使用することができるエンティティのインベントリを識別するために、(例えばアプリケーション取り入れ構成要素114を介して)ウェブページの構造化データを解析または処理することができる。構造化データは、エンティティ(例えば、ドメイン、特性、およびタイプ)の一意の識別子、エンティティの英数字の識別子、エンティティの説明、エンティティに関連付けられたキーワード、または他の情報などの、エンティティに関する情報を示すことができる。
データ処理システム102は、エンティティを識別するためにウェブページ上の構造化データを活用することができ、エンティティに関する追加情報を識別するためにエンティティグラフシステム142をさらに活用することができる。例えば、データ処理システム102は、エンティティを識別するために構造化データを解析することができ、次いで、エンティティに関する追加情報を取得するためにエンティティグラフシステム142にアクセスすることができる。ウェブページ上の構造化データは、データ処理システム102がエンティティグラフシステム142を介して、識別されたエンティティに関連する追加のエンティティを識別するために使用することができるエンティティの一意の識別子を含み得る。例えば、「Artist_A」というエンティティは、ウェブページから識別され得るが、データ処理システム102は、「Artist_A」に関連付けられたアルバム、曲、コンサート、チケット、またはバンドを識別するためにエンティティグラフシステム142に問い合わせることができる。
場合によっては、ウェブページは、エンティティの一意の識別子を提供しない場合があり、その場合、データ処理システム102は、キーワードまたは候補エンティティを識別するためにウェブページを処理し、次いで、エンティティに関連付けられた情報とともに一意のエンティティ識別子を決定するためにエンティティグラフシステム142に問い合わせることができる。例えば、ウェブページは、エンティティの構造化インベントリを含まないか、または欠いている場合がある。データ処理システム102は、構造化識別子パターンがウェブページに存在しないと判定したことに基づいて、ウェブページがエンティティの構造化インベントリを欠いていると判定することができる。データ処理システム102は、次いで、ウェブページが構造化されていない情報を含むことを判定し、次いで、エンティティグラフシステム142内の対応するエンティティを決定するために、ウェブページ上で識別されたキーワードまたは用語をエンティティグラフシステム142に問い合わせることによって、ウェブページ上で利用可能なエンティティを決定するためにエンティティグラフシステム142を活用することができる。データ処理システム102は、エンティティと関連するエンティティとを識別するために、ウェブページ上の非構造化データをエンティティグラフシステム142の構造化データと組み合わせるかまたは統合することができる。したがって、データ処理システム102は、アプリケーションに関するエンティティのインベントリ、ならびに、アプリケーションが実行するように構成されたアクションを識別するために、アクションインベントリファイル、ウェブページからの構造化データ、またはアクションインベントリファイル内で識別されたウェブページからの未構造化データを処理することができる。
データ処理システム102は、インデックス122内に、アプリケーションがエンティティに対して実行することができるアクションとともにアプリケーションのエンティティのインベントリを記憶することができる。インデックス122は、一意のアプリケーション識別子(例えば、英数字識別子)などの、アプリケーションの識別子を含むことができる。インデックス122は、アプリケーション識別子を、アクションおよび対応するエンティティまたはエンティティのインベントリに関連付けることができる。アプリケーションは、1つまたは複数のエンティティに対して1つまたは複数のアクションを実行するように構成され得る。
したがって、データ処理システム102は、アプリケーションについて、エンティティの構造化マークアップを有するウェブページへのユニフォームリソースロケータを含むアクションインベントリファイルを受信することができる。データ処理システム102は、ユニフォームリソースロケータを介してウェブページにアクセスすることができ、次いで、エンティティのインベントリを識別するために、エンティティの構造化マークアップを用いてウェブページを解析することができる。データ処理システム102は、データベース内で、エンティティのインベントリを複数のアプリケーションのうちの少なくとも1つに関連付けることができる。
アプリケーション取り入れ構成要素114は、アプリケーションがエンティティに対してアクションを実行することができるかどうかを検証または判定するために、検証またはエラーチェックプロセスを実行することができる。例えば、データ処理システム102は、アクションとエンティティとを選択し、エンティティに対してアクションを実行するようにアプリケーションに指示することができる。アプリケーションが失敗したか、クラッシュしたか、遅延を有したか、過剰なメモリ、ストレージ、または処理を利用した場合、データ処理システム102は、アプリケーションがエンティティに対してアクションを実行するように構成されていないか、または品質チェックプロセスに失敗したと判定することができる。データ処理システム102は、品質チェックプロセスの失敗に応答して、アプリケーションに関するアクションまたはエンティティを無効にすることができる。データ処理システム102は、その後の配信についてアプリケーション全体を無効にすることができる。データ処理システム102は、インデックス122内のアプリケーションとアクションまたはエンティティとの間の関連付けを削除(または関連付けの追加を阻止)することができる。データ処理システム102は、開発者がエラーを改善または解決することを可能にするために、開発者コンピューティングデバイス106にエラーを通知することができる。
データ処理システム102は、入力オーディオ信号をデータ処理システム102のインターフェース110に通信し、出力オーディオ信号をレンダリングするためにクライアントコンピューティングデバイスの構成要素を駆動するためのアプリなどの、クライアントコンピューティングデバイス104においてインストールされたアプリケーション、スクリプト、またはプログラムを含むことができる。データ処理システム102は、オーディオ入力信号を含むかまたは識別するデータパケットまたは他の信号を受信することができる。例えば、データ処理システム102は、オーディオ信号を受信または取得し、オーディオ信号を解析するために、NLP構成要素112を実行または動作させることができる。例えば、NLP構成要素112は、人間とコンピュータとの間の対話を提供することができる。NLP構成要素112は、自然言語を理解し、データ処理システム102が人間または自然言語入力から意味を導出することを可能にするための技法を用いて構成され得る。NLP構成要素112は、統計的機械学習などの機械学習に基づく技術を含むか、またはそれを用いて構成され得る。NLP構成要素112は、入力オーディオ信号を解析するために、決定木、統計モデル、または確率モデルを利用することができる。NLP構成要素112は、例えば、名前付きエンティティ認識(例えば、テキストのストリームが与えられると、テキスト内のどのアイテムが人または場所などの固有名詞にマッピングされるか、および、各々のそのような名前のタイプが、人、場所、組織など、なんであるかを決定する)、自然言語生成(例えば、コンピュータデータベースまたは意味論的意図からの情報を理解可能な人間の言語に変換する)、自然言語理解(例えば、テキストを、コンピュータモジュールが操作することができる1階論理構造などの、より正式な表現に変換する)、機械翻訳(例えば、テキストをある人間の言語から別の言語に自動的に翻訳する)、形態学的セグメント化(例えば、単語を個々の形態素に分離し、形態素のクラスを識別することであり、これは、考慮されている言語の単語の形態素または構造の複雑さに基づいて困難になる可能性がある)、質問応答(例えば、具体的または自由回答であり得る、人間の言語の質問に対する回答を決定する)、意味論的処理(例えば、単語を識別し、
識別された単語を同様の意味を有する他の単語に関連付けるために、その意味を符号化した後に発生する可能性がある処理)などの機能を実行することができる。
NLP構成要素112は、入力信号を(例えば、データリポジトリ118内の)記憶されたオーディオ波形のそれぞれのセットと比較し、最も近い一致を選択することによって、オーディオ入力信号を認識されたテキストに変換する。オーディオ波形のセットは、データリポジトリ118、またはデータ処理システム102にアクセス可能な他のデータベース内に記憶され得る。典型的な波形は、ユーザの大きいセット全体にわたって生成され、次いで、ユーザからの音声サンプルで補強され得る。オーディオ信号が認識されたテキストに変換された後、NLP構成要素112は、例えば、ユーザ全体にわたって訓練することによって、または、手動指定によって、データ処理システム102がサービスを提供することができるアクションに関連付けられた単語に対して、テキストを照合する。
オーディオ入力信号は、クライントコンピューティングデバイス104のセンサ134またはトランスデューサ136(例えば、マイクロフォン)によって検出され得る。トランスデューサ136を介して、オーディオドライバ138または他の構成要素を介して、クライントコンピューティングデバイス104は、(例えば、ネットワーク105を介して)オーディオ入力信号をデータ処理システム102に提供することができ、そこで、オーディオ入力信号は、(例えば、インターフェース110によって)受信され、NLP構成要素112に提供されるか、またはデータリポジトリ118内に記憶される。
NLP構成要素112は、入力オーディオ信号を取得することができる。入力オーディオ信号から、NLP構成要素112は、少なくとも1つの要求、または要求に対応する少なくとも1つのトリガキーワードを識別することができる。要求は、入力オーディオ信号の意図または主題を示すことができる。トリガキーワードは、とられる可能性が高いアクションのタイプを示すことができる。例えば、NLP構成要素112は、夕食および映画に行くために夕方に家を出るという少なくとも1つの要求を識別するために、入力オーディオ信号を解析することができる。トリガキーワードは、とられるべきアクションを示す少なくとも1つの単語、フレーズ、語根もしくは部分単語、または派生語を含むことができる。例えば、入力オーディオ信号からの「行く(go)」または「〜に行く(to go to)」というトリガキーワードは、輸送の必要性を示す可能性がある。この例では、入力オーディオ信号(または識別された要求)は、輸送の意図を直接表現していないが、トリガキーワードは、輸送が、要求によって示される少なくとも1つの他のアクションに対する付随的なアクションであることを示す。
NLP構成要素112は、要求とトリガキーワードとを識別、決定、回収、または他の方法で取得するために、入力オーディオ信号を解析することができる。例えば、NLP構成要素112は、トリガキーワードまたは要求を識別するために、意味論的処理技法を入力オーディオ信号に適用することができる。NLP構成要素112は、第1のトリガキーワードおよび第2のトリガキーワードなどの1つまたは複数のトリガキーワードを含むトリガフレーズを識別するために、意味論的処理技法を入力オーディオ信号に適用することができる。例えば、入力オーディオ信号は、「私の洗濯とドライクリーニングをする人が必要です(I need someone to do my laundry and my dry cleaning)」という文を含むことができる。NLP構成要素112は、「洗濯する(do my laundry)」および「ドライクリーニングする(do my dry cleaning)」というトリガフレーズを識別するために、文を含むデータパケットに意味論的処理技法または他の自然言語処理技法を適用することができる。NLP構成要素112は、洗濯およびドライクリーニングなどの複数のトリガキーワードをさらに識別することができる。例えば、NLP構成要素112は、トリガフレーズがトリガキーワードと第2のトリガキーワードとを含むと判定することができる。
NLP構成要素112は、情報に対する検索または他の要求を実行することに対応する検索クエリまたはトリガフレーズを識別することができる。NLP構成要素112は、入力オーディオ信号が、トピック、イベント、現在のイベント、ニュースイベント、辞書の定義、歴史的イベント、人、場所、または物に関する情報に対する要求に対応すると判定することができる。例えば、NLP構成要素112は、入力オーディオ信号が、「アメリカ革命はいつ起こりましたか(When did the American Revolution take place?)」などの歴史的イベントに関する情報に対する検索クエリに対応すると判定することができる。
NLP構成要素112は、キーワード、検索クエリ、またはトリガキーワードを識別するために入力オーディオ信号をフィルタリングすることができる。例えば、入力オーディオ信号を搬送するデータパケットは、「It would be great if I could get someone that could help me go to the airport(空港に行くのを手伝ってくれる人がいたらいいと思います)」を含むことができ、その場合、NLP構成要素112は、以下の、「it」、「would」、「be」、「great」、「if」、「I」、「could」、「get」、「someone」、「that」、「could」、または「help」のように1つまたは複数の用語を除外することができる。これらの用語を除外することによって、NLP構成要素112は、「go to the airport(空港に行く)」などのトリガキーワードをより正確にかつ確実に識別し、これが、タクシーまたはライドシェアサービスに対する要求であると判定し得る。
別の例において、入力オーディオ信号を搬送するデータパケットは、「Can you please play song123 by Artist_A(Artist_Aによるsong123を再生してください)」を含むことができ、この場合、NLP構成要素112は、以下の、「can」、「you」、「please」のように1つまたは複数の用語を除外することができる。これらの用語を除外することによって、NLP構成要素112は、トリガキーワード、意図、アクション、およびエンティティをより正確にかつ確実に識別し得る。例えば、意図は、音楽を再生することであり得、アクションは、「play(再生する)」であり得、エンティティは、「song123 by Artist_A(Artist_Aによるsong123)」であり得る。したがって、自然言語処理構成要素112は、アクションとアクションを実行する対象のエンティティとを決定するために、入力オーディオ信号または入力オーディオ信号を搬送するデータパケットを解析および分析することによって、意図を決定することができる。データ処理システム102は、ドメイン、タイプ、およびプロパティから形成された一意の識別子を各々が有するエンティティの階層分類基準を備えるエンティティグラフシステム142によって提供されたグラフデータベースに基づいて、入力オーディオ信号からエンティティを識別することができる。
別の例において、入力オーディオ信号を搬送するデータパケットは、「Can Application_A please play song123 by Artist_A(Application_Aは、Artist_Aによるsong123を再生してください)」を含むことができ、この場合、NLP構成要素112は、「can」、「「please」のように1つまたは複数の用語を除外することができる。これらの用語を除外することによって、NLP構成要素112は、トリガキーワード、意図、アクション、エンティティ、および要求アプリケーションをより正確にかつ確実に識別し得る。例えば、意図は、音楽を再生することであり得、アクションは、「play(再生する)」であり得、エンティティは、「song123 by Artist_A(Artist_Aによるsong123)」であり得、ユーザがエンティティに対してアクションを実行することを要求しているアプリケーションは、「Application_A」であり得る。したがって、自然言語処理構成要素112は、アクションを実行するアプリケーションと、アプリケーションがアクションを実行するエンティティとを決定するために、入力オーディオ信号または入力オーディオ信号を搬送するデータパケットを解析および分析することによって、意図を決定することができる。
したがって、データ処理システム102は(例えば、インターフェース110と自然言語プロセッサ構成要素112とを介して)、クライアントデバイスのセンサによって検出された入力オーディオ信号を含むデータパケットを受信し、次いで、アクションと、アクションを実行する対象のエンティティとを識別するために、入力オーディオ信号を解析することができる。データ処理システム102は、アクションおよびエンティティから形成されるか、またはそれらに基づいて形成され得る意図を識別することができる。入力オーディオ信号は、エンティティに対してアクションを実行するアプリケーションを示すことができ、データ処理システム102は、入力オーディオ信号からアプリケーションを識別することができる。
データ処理システム102は、と入力オーディオ信号から識別されるアクションおよびエンティティを実行することができるアプリケーションを識別するために、アプリケーション配信構成要素116を含むか、実行するか、または他の方法でそれと通信することができ、次いで、クライアントデバイスに指示を提供するか、または他の方法でアプリケーションにアクションをエンティティに対して実行させることができる。例えば、アプリケーション配信構成要素116は、入力オーディオ信号から識別されたアクションを実行するように構成された第1の1つまたは複数のアプリケーションと、入力オーディオ信号から識別されたエンティティへのアクセスにより構成された、複数のアプリケーションのうちの第2の1つまたは複数のアプリケーションとを識別し、第1の1つまたは複数のアプリケーションおよび第2の1つまたは複数のアプリケーションから、アクションを実行し、入力オーディオ信号から識別されたエンティティにアクセスするように構成されたアプリケーションを選択することができる。データ処理システム102は、次いで、入力オーディオ信号において識別されたエンティティを使用してアクションを実行するためにクライアントデバイスにアプリケーションの実行を開始させるために、データ処理システムによって選択されたアプリケーションの指示をクライアントデバイスに提供することができる。
アプリケーション配信構成要素116は、リアルタイムで選択を実行することができる。リアルタイム選択プロセスは、要求を受信する時間間隔(例えば、1秒、2秒、5秒、10秒、20秒、30秒、1分、2分、3分、5分、10分、または20分)内に実行(または、開始または完了)され得る。リアルタイムコンテンツ選択プロセスは、クライントコンピューティングデバイス104との通信セッション中、または、通信セッションが終了した後の時間間隔内に実行され得る。
エンティティに対してアクションを実行するアプリケーションを選択するために、データ処理システム102は、アクションを実行するように構成されたアプリケーションを識別することができる。データ処理システム102は、1つまたは複数のシステムまたは技法を使用して、アクションを実行することができるアプリケーションを識別することができる。例えば、データ処理システム102は、入力オーディオ信号から識別されたアクションに関連付けられたアプリケーションを識別するために、インデックス122内でルックアップを実行することができる。データ処理システム102は、インデックス122内のルックアップに応答して、一意のアプリケーション識別子を決定することができる。
データ処理システム102は、アプリケーションを識別するために、クエリを検索エンジン146に入力することができる。例えば、データ処理システム102は、アクションを検索エンジン146に入力することができる。データ処理システム102は、アプリケーションを識別するために、アクションに基づいてクエリを構築または生成することができる。例えば、クエリは、「what applications can perform <action>?(どのアプリケーションが<アクション>を実行することができますか」または「what applications can perform <action> on <entity>?(どのアプリケーションが<エンティティ>に対して<アクション>を実行することができますか)」または「identify applications that can perform <action> on <computing device type>(<コンピューティングデバイスタイプ>において<アクション>を実行することができるアプリケーションを識別してください)」であり得る。データ処理システム102は、検索の結果を受信することができる。データ処理システム102は、アクションを実行することができる1つまたは複数のアプリケーションを識別するために、結果を処理することができる。
したがって、データ処理システム102は、アクションを実行するように構成された1つまたは複数のアプリケーションを識別するために、インデックス122内に記憶された構造化データ、ならびに、検索エンジン146からの非構造化ウェブ検索結果を使用して、アクションを識別することができる。データ処理システム102は、結果を、アクションを実行するように構成されたアプリケーションの第1のセットに統合することができる。
データ処理システム102は、どのアプリケーションがエンティティに対してアクションを実行するように構成されているかをさらに識別することができる。データ処理システム102は、どのアプリケーションがエンティティに関連付けられているかを決定するために、エンティティ識別子を使用してインデックス122内でルックアップを実行することができる。データ処理システム102は、どのアプリケーションがエンティティにアクセスすることができるかを決定するために、クエリを検索エンジンに入力することができる。例えば、データ処理システム102は、「what applications have <entity>?(どんなアプリケーションが<エンティティ>を有するか)」などのクエリを構築することができる。
場合によっては、データ処理システム102は、エンティティに対してアクションを実行するアプリケーションを識別するために、単一のルックアップまたは検索を実行することができるが、場合によっては、データ処理システム102は、アクションを実行するアプリケーションを最初に識別し、次いで、エンティティにアクセスすることができるアプリケーションを識別し、次いで、どのアプリケーションが結果の両方のセット内にあるかを識別することができる。例えば、データ処理システム102は、「what applications can perform <action> on <entity>?(どんなアプリケーションが<エンティティ>に対して<アクション>を実行することができるか)」などのクエリを構築することができる。
したがって、データ処理システム102は、入力オーディオ信号から識別されたアクションおよびエンティティのうちの少なくとも1つに基づいて、検索エンジン146を介してウェブ検索を実行し、検索エンジンによって出力されたウェブ検索の結果に基づいて、第1の1つもしくは複数のアプリケーションまたは第2の1つもしくは複数のアプリケーションのうちの少なくとも1つを識別することができる。データ処理システムは、ドメイン、タイプ、およびプロパティから形成された一意の識別子を各々が有するエンティティの階層的分類基準を含むエンティティグラフシステム142によって提供されたグラフデータベースに基づいて、入力オーディオ信号からエンティティを識別することができる。データ処理システム102は、エンティティグラフシステム142から識別されたエンティティを使用するウェブ検索に基づいて、第1の1つもしくは複数のアプリケーションまたは第2の1つもしくは複数のアプリケーションを識別することができる。場合によっては、データ処理システム102は、インデックス122を使用して、エンティティに対して構成されたアクションのセットを識別することができる。データ処理システムは、エンティティに対して構成されたアクションのセットに基づいて、第2の1つまたは複数のアプリケーションを識別することができる。
データ処理システム102は、アクションを実行するように構成されたアプリケーションの第1のセットと、エンティティにアクセスするように構成されたアプリケーションの第2のセットとを識別することができる。アプリケーションの第2のセットは、アプリケーションの第1のセットを識別するために使用されるプロセスとは独立して識別され得る。例えば、コンピューティングプロセスによる待ち時間および遅延を低減するために、データ処理システム102は、複数の処理またはクエリを並行して実行することができる。データ処理システム102は、アクションを実行するように構成されたアプリケーションの第1のセットを識別し、並列または重複するプロセスにおいて、エンティティにアクセスするように構成されたアプリケーションの第2のセットを識別することができる。
場合によっては、データ処理システム102は、アプリケーションの第1のセットとアプリケーションの第2のセットとを連続的に識別することができる。例えば、データ処理システム102は、エンティティに対してアクションを実行することができるアプリケーションのセットを生成するために、アクションを実行するように構成されたアプリケーションの第1のセットを識別し、次いで、アプリケーションの第1のセットから、アプリケーションの第1のセットのうちのどれがエンティティにアクセスすることがきるかを識別することができる。データ処理システム102は、すべての利用可能なアプリケーションのサブセットであり得るアプリケーションの第1のセットにおけるエンティティに関連する第2の検索またはプロセスを実行することによって、メモリまたはストレージ使用率を低減することができる。
場合によっては、データ処理システム102は、エンティティに対してアクションを実行するように構成されたアプリケーションを識別するために、単一のプロセスまたはクエリを実行することができる。例えば、データ処理システムは、複数の値(例えば、アクションおよびエンティティ)を用いてルックアップを実行することができ、または、複数の要求を用いて検索クエリを検索エンジンに入力することができる。
データ処理システム102は、検索エンジン146からの結果を用いてインデックス122内のルックアップを実行することから得られた結果を統合することができる。データ処理システム102は、アプリケーションがエンティティに対してアクションを実行することができるかどうかを確認することによって、検索エンジン146からの結果を検証することができる。
データ処理システム102が、エンティティに対してアクションを実行することができる複数のアプリケーションを識別した場合、データ処理システム102は、コンピューティングデバイス104のユーザがアプリケーションのうちの1つを選択することを可能にするために、複数のアプリケーションの指示をコンピューティングデバイス104に提供することができる。データ処理システム102が、エンティティに対してアクションを実行することができる複数のアプリケーションを識別した場合、データ処理システム102は、アプリケーションのうちの1つまたは複数を提案するために、複数のアプリケーションをランク付けすることができる。例えば、データ処理システム102は、第2の複数のアプリケーションを識別するために、入力オーディオ信号から識別されたアクションおよびエンティティのうちの少なくとも1つに基づいて、検索エンジン146を介してウェブ検索を実行することができる。データ処理システム102は、次いで、第2の複数のアプリケーションの各々をランク付けするか、アクションに関連するパフォーマンスフィードバックに基づいて第2の複数のアプリケーションの各々をスコアリングするか、または、履歴選好情報に基づいて第2の複数のアプリケーションの各々をスコアリングすることができる。データ処理システム102は、指示をクライアントデバイスに提供する対象のアプリケーションとして、第2の複数のアプリケーションから最も高いランキングまたはスコアリングのアプリケーションを選択することができる。
データ処理システム102は、様々な基準を使用して複数のアプリケーションをランク付けすることができる。例えば、データ処理システム102は、アプリケーションをランク付けするために、パフォーマンスデータ構造126内に記憶されたパフォーマンス情報を使用することができる。データ処理システム102は、パフォーマンスメトリックに基づいて各アプリケーションをスコアリングすることができる。例えば、データ処理システム102は、最も高いパフォーマンスのアプリケーションに最も高いランクを割り当て、2番目に高いパフォーマンスのアプリケーションに2番目に高いランクを割り当てる、などを行うことができる。
例えば、データ処理システム102は、アプリケーションに関連するフィードバックもしくは評価、または、パフォーマンスメトリック(例えば、最小待ち時間、最速起動時間、最小メモリまたはプロセスまたは帯域幅利用率)に基づいて、アプリケーションが最高のパフォーマンスのアプリケーションであると判定することができる。データ処理システム102が、アプリケーションのパフォーマンスがしきい値(例えば、フィードバック評価または他のパフォーマンスメトリック)未満であると決定した場合、データ処理システム102は、アプリケーションを削除し、アプリケーションを提案しない、またはアプリケーションをランキング内に含めないと決定することができる。場合によって、データ処理システム102は、上位N位のランキングのアプリケーション(例えば、上位3位のランキングのアプリケーション、上位2位のランキングのアプリケーション、または上位5位のランキングのアプリケーション)のみを提供または提案することを決定することができる。
データ処理システム102は、どのアプリケーションがコンピューティングデバイス104上にインストールされているかを判定することができる。データ処理システム102は、どのアプリケーションがコンピューティングデバイス104上にすでにインストールされているかに基づいて、アプリケーションをランク付けすることができ、それによって、コンピューティングデバイス104が新しいアプリケーションをダウンロードおよびインストールする必要性を回避する。したがって、識別されたアプリケーションのセットからの最上位のランキングのアプリケーションは、コンピューティングデバイス104上にすでにインストールされているアプリケーションであり得る。識別されたアプリケーションのセットからのアプリケーションがコンピューティングデバイス104上にインストールされていない場合、データ処理システム102は、パフォーマンスに基づいてアプリケーションをランク付けすることに進み、次いで、エンティティに対してアクションを実行するために、ランク付けされたリストからアプリケーションをインストールするために、コンピューティングデバイス104に指示を提供することができる。
入力オーディオ信号がアプリケーションの指示を含む場合、データ処理システム102は、入力オーディオ信号からアプリケーションを識別し、第1の1つまたは複数のアプリケーション、第2の1つまたは複数のアプリケーション、および入力オーディオ信号に基づいてアプリケーションを選択する。例えば、データ処理システム102は、入力オーディオ信号において識別されたアプリケーションが、エンティティに対してアクションを実行するように構成されたデータ処理システム102によって識別されたアプリケーションのセットの中に含まれるかどうかを判定し、次いで、一致を識別すると、実行するためのアプリケーションを選択することができる。
図2は、異種のデータソースクエリを統合するためのシステム100の動作200の図である。システムは、例えば、コンピューティングデバイス104およびデータ処理システム102を含む、図1に示すシステム100の1つまたは複数の構成要素を含むことができる。205において、データ処理システム102は、コンピューティングデバイス104によって検出された入力オーディオ信号を受信することができる。データ処理システム102は、入力オーディオ信号または入力オーディオ信号の指示を含むデータパケットを受信することができる。データ処理システム102は、入力オーディオ信号から、前処理された用語、キーワード、またはフレーズを受信することができる。データ処理システム102は、入力オーディオ信号のフィルタリングされたバージョンを受信することができる。
210において、データ処理システム102は、受信された入力オーディオ信号(または、受信された入力オーディオ信号の前処理もしくはフィルタリングされたバージョン)を解析することができる。データ処理システム102は、入力オーディオ信号内のアクションおよびエンティティを識別するために、受信されたデータを解析することができる。データ処理システムは、入力オーディオ信号に対応するデータを解析するために、1つまたは複数の処理技法、機械学習、または自然言語処理技法を使用することができる。データ処理システム102は、アクションとエンティティとを識別するために、データを解析することができる。アクションは、エンティティに対して実行され得る。場合によっては、入力オーディオ信号は、エンティティに対してアクションを実行するために使用するためのアプリケーションの指示を含むこともできる。
データ処理システム102は、アクションまたはエンティティを識別するために、複数のデータソースまたはデータベースに問い合わせることができる。複数のデータベースまたはデータソースは、異なってもよく、互いに分離していてもよく、異なるフォーマットであってもよく、異なるタイプのデータ(例えば、構造化データ対非構造化データ)であってもよく、または、他の異種のデータソースであってもよい。215において、データ処理システムは、例えば、エンティティグラフシステム142、ウェブサーバ144、検索エンジンシステム146、またはインデックス122を含む、複数のデータベースまたはデータソースに複数のクエリを送信することができる。
例えば、データ処理システム102は、対応するエンティティを決定するために、210において入力オーディオ信号から解析されたキーワードまたは用語を用いてエンティティグラフシステム142に問い合わせることができる。データ処理システム102は、エンティティに関する追加情報を決定するため、またはエンティティに関連付けられたエンティティを識別するために、エンティティの一意の識別子を用いてエンティティグラフシステム142に問い合わせることができる。
データ処理システム102は、インデックス122において、エンティティのリストまたはエンティティのインベントリを有するウェブページへのポインタを識別することに応答して、ウェブサーバ144に問い合わせることができる。例えば、データ処理システム102は、入力オーディオ信号内のアクションを識別し、アクションを実行するように構成されたアプリケーションを識別するために、インデックス122内でルックアップを実行することができる。データ処理システム102は、次いで、アプリケーションのAPKファイルに関連付けられたアクションインベントリファイルを識別することができる。アクションインベントリファイルは、アプリケーションがアクションを実行することができるエンティティのインベントリを含むかまたは示す、ウェブサーバ144によってホストされるウェブページへのポインタまたは参照を含むことができる。したがって、データ処理システム102は、エンティティのインベントリを識別するために、ウェブページをクロールまたは解析することができる。
データ処理システム102は、アプリケーションを識別するために、検索エンジン146に問い合わせることができる。データ処理システム102は、入力オーディオ信号を解析することによって210において決定されたアクションを実行することができるアプリケーションを識別するために、検索クエリを構築することができる。データ処理システムは、入力オーディオ信号を解析することによって210において決定されたエンティティに対してアクションを実行することができるアプリケーションを識別するために、検索クエリを構築することができる。
215において、データ処理システム102は、複数のデータベース、システム、またはデータソースに送信された複数のクエリに対する応答を受信することができる。220において、データ処理システムは、入力オーディオ信号において要求または示されたエンティティに対してアクションを実行するように構成された1つまたは複数のアプリケーションを生成、識別、または決定するために、応答を統合することができる。応答を統合することは、アクションを実行するように構成されたアプリケーションの第1のセットと、エンティティにアクセスするように構成されたアプリケーションの第2のセットと、エンティティに対してアクションを実行するように構成された、第1のセットと第2のセットの両方に含まれるアプリケーションの最終的なセットとを識別することを指すか、または含むことができる。
応答を統合することは、応答に基づいて追加のクエリを生成することを指すかまたは含むことができる。例えば、データ処理システム102は、アプリケーションのセットを識別するために、アクションを使用してルックアップを実行するために、インデックス122に問い合わせることができる。データ処理システム102は、検索エンジンの結果ページを介してアプリケーションを識別するために、アクションを使用して検索エンジン146に問い合わせることもできる。したがって、データ処理システム102は、アクションを実行することができるアプリケーションを識別するために、2つの異なるデータベース、データソース、またはシステムに問い合わせることができる。データ処理システム102は、検索エンジン146を介して、アクションを実行する最上位のランキングのアプリケーションがApplication_AおよびApplication_Bであると判定することができる。データ処理システム102は、インデックス122におけるルックアップを介して、アクションを実行するように構成されていることをそれぞれのアクションインベントリファイルを介して示す20の異なるアプリケーションが存在すると判定することができる。データ処理システム102は、検索エンジン146からの検索エンジン結果に基づいて、Application_AおよびApplication_Bをより高くランク付け、スコアリング、または重み付けすることを決定することができる。
クエリを統合する別の例において、データ処理システム102は、エンティティに対してアクションを実行することができるアプリケーションを識別するために、アクションおよびエンティティを用いてインデックス122に問い合わせることができる。データ処理システム102は、ルックアップを介して、ウェブサーバ144によってホストされるウェブページへのポインタを識別することもできる。データ処理システム102は、次いで、ウェブページ上にリストされたエンティティを識別し、アプリケーションに関するエンティティのインベントリを生成するために、ウェブページをクロールするために、ウェブサーバ144上のウェブページにアクセスすることができる。データ処理システム102は、ウェブページから決定されたエンティティのリストを、インデックス122内のアプリケーションに関連付けられたエンティティとともに統合することができる。データ処理システム102は、ウェブページを解析することから取得されたエンティティを含むようにインデックス122を更新することができる。
異種のデータソース(例えば、異なるタイプのデータを有する異なるタイプのデータソース)からのクエリへの応答を統合することによって、データ処理システム102は、入力オーディオ信号において要求されたエンティティに対してアクションを実行するように構成された1つまたは複数のアプリケーションを識別することができる。225において、データ処理システム102は、エンティティに対してアクションを実行するためのアプリケーションを選択することができる。データ処理システム102は、エンティティに対してアクションを実行するために提案する1つまたは複数のアプリケーションを選択することができる。データ処理システム102は、識別されたアプリケーションをランキングすること、または識別されたアプリケーションをスコアリングすることに基づいて、アプリケーションを選択することができる。例えば、データ処理システム102は、パフォーマンス情報、選好情報、検索エンジン146の結果、フィードバック、どのアプリケーションがコンピューティングデバイス104上にすでにインストールされているかなどの他の要因に基づいて、アプリケーションをランク付けまたはスコアリングすることができる。
230において、データ処理システムは、選択されたアプリケーションの指示をコンピューティングデバイス104に送信することができる。場合によっては、データ処理システム102は、235において、エンティティに対してアクションを実行するようにコンピューティングデバイスにアプリケーションを実行させる(例えば、「Song_A」というタイトルの曲を再生するためにApplication_Aを起動する)ためのコマンドまたは命令を含む指示を送信することができる。場合によっては、データ処理システム102は、コンピューティングデバイス104が(例えば、ディスプレイまたはオーディオインターフェースを介して)ユーザに提示することができる複数の提案アプリケーションを含む指示を送信することができ、次いで、ユーザは、235において、コンピューティングデバイス104上で起動または実行するためのアプリケーションを選択することができる。
場合によっては、指示は、アプリケーション内のエンティティへのディープリンクを含むことができる。ディープリンクを選択することは、アプリケーションを起動させ、アプリケーション内のエンティティを開くかまたは実行するようにアプリケーションに指示することができる。
図3は、異種のデータソースを統合するための例示的な方法の図である。方法300は、システム100、200、またはシステム400の1つまたは複数の構成要素、システム、または要素によって実行され得る。方法300は、305において、アプリケーションパッケージファイルを受信および処理するステップを含むことができる。データ処理システムは、複数の開発者コンピューティングデバイスからアプリケーションパッケージファイルを受信することができる。アプリケーションパッケージファイルは、複数のコンピューティングデバイス上に複数のアプリケーションを配布およびインストールするための命令を含むことができる。アプリケーションパッケージファイルの各々は、アクションインベントリファイルに関連付けられ得る。データ処理システムは、アプリケーションが実行する1つまたは複数の電子アクションと、アクションが1つまたは複数の電子アクションを実行する対象の対応する1つまたは複数のエンティティとを識別するために、アクションインベントリファイルを処理することができる。
310において、データ処理システムは、入力オーディオ信号を受信および解析することができる。データ処理システムは、データ処理システムのインターフェースを介して、クライアントデバイスのセンサによって検出された入力オーディオ信号に対応するデータパケットを受信することができる。データ処理システムは、アクションと、アクションを実行する対象のエンティティとを識別するために、入力オーディオ信号を(例えば、自然言語処理技法を介して)解析することができる。
315において、データ処理システムは、アクションおよびエンティティに基づいて1つまたは複数のアプリケーションを識別することができる。データ処理システムは、入力オーディオ信号から識別されたアクションを実行するように構成された第1の1つまたは複数のアプリケーションを識別することができる。データ処理システムは、アクションインベントリファイルに基づいて、入力オーディオ信号から識別されたエンティティにアクセスすることができる複数のアプリケーションのうちの第2の1つまたは複数のアプリケーションを識別することができる。320において、データ処理システムは、第1の1つまたは複数のアプリケーションおよび第2の1つまたは複数のアプリケーションから、入力オーディオ信号から識別されたアクションを実行し、入力オーディオ信号から識別されたエンティティにアクセスするように構成されたアプリケーションを(例えば、ランキングまたはスコアリングプロセスに基づいて)選択することができる。
325において、データ処理システムは、選択されたアプリケーションの指示を提供することができる。データ処理システムは、入力オーディオ信号において識別されたエンティティを使用してアクションを実行するためにクライアントデバイスにアプリケーションの実行を開始させるために、データ処理システムによって選択されたアプリケーションの指示をクライアントデバイスに提供することができる。指示は、エンティティを含むアプリケーションのビューまたは一部に対してアプリケーションを直接開くためのディープリンクをクライアントコンピューティングデバイスに実行または起動させるために、アプリケーションのエンティティへのディープリンクを含むことができる。
図4は、例示的なコンピューティングシステム400のブロック図である。コンピュータシステムまたはコンピューティングデバイス400は、システム100、または、データ処理システム102などのその構成要素を含むか、またはそれを実装するために使用され得る。コンピューティングシステム400は、情報を通信するためのバス405または他の通信構成要素と、情報を処理するための、バス405に結合されたプロセッサ410または処理回路とを含む。コンピューティングシステム400は、情報を処理するための、バスに結合された1つまたは複数のプロセッサ410または処理回路を含むこともできる。コンピューティングシステム400は、情報と、プロセッサ410によって実行されるべき命令とを記憶するための、バス405に結合されたランダムアクセスメモリ(RAM)または他のダイナミック記憶デバイスなどのメインメモリ415も含む。メインメモリ415は、データリポジトリ118であるか、またはそれを含むことができる。メインメモリ415は、プロセッサ410による命令の実行中に、位置情報、一時変数、または他の中間情報を記憶するためにも使用され得る。コンピューティングシステム400は、プロセッサ410のための静的情報および命令を記憶するための、バス405に結合された読み出し専用メモリ(ROM)420または他の静的記憶デバイスをさらに含むことができる。情報と命令とを永続的に記憶するために、ソリッドステートデバイス、磁気ディスク、または光ディスクなどの記憶デバイス425が、バス405に結合され得る。記憶デバイス425は、データリポジトリ118を含むか、またはその一部であり得る。
コンピューティングシステム400は、情報をユーザに表示するための、液晶ディスプレイまたはアクティブマトリックスディスプレイなどのディスプレイ435に、バス405を介して結合され得る。情報およびコマンド選択をプロセッサ410に通信するために、英数字と他のキーとを含むキーボードなどの入力デバイス430は、バス405に結合され得る。入力デバイス430は、タッチスクリーンディスプレイ435を含むことができる。入力デバイス430は、方向情報とコマンド選択とをプロセッサ410に伝達するため、および、ディスプレイ435上のカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御を含むこともできる。ディスプレイ435は、例えば、データ処理システム102、クライアントコンピューティングデバイス104、または図1の他の構成要素の一部であり得る。
本明細書で説明するプロセス、システム、および方法は、プロセッサ410がメインメモリ415内に含まれる命令の配置を実行することに応答して、コンピューティングシステム400によって実装され得る。そのような命令は、記憶デバイス425などの別のコンピュータ可読媒体からメインメモリ415に読み込まれ得る。メインメモリ415内に含まれる命令の配置の実行は、コンピューティングシステム400に、本明細書で説明する例示的なプロセスを実行させる。メインメモリ415内に含まれる命令を実行するために、マルチプロセッシング配置における1つまたは複数のプロセッサも用いられ得る。本明細書で説明するシステムおよび方法とともに、ソフトウェア命令の代わりに、またはそれと組み合わせて、ハードワイヤード回路が、使用され得る。本明細書で説明するシステムおよび方法は、ハードウェア回路とソフトウェアのいかなる特定の組み合わせにも限定されない。
例示的なコンピューティングシステムが図4において記載されているが、本明細書で説明する動作を含む主題は、他のタイプのデジタル電子回路において、または、本明細書で開示される構造とそれらの構造的同等物とを含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、または、それらのうちの1つまたは複数の組み合わせにおいて実装され得る。
本明細書で論じるシステムが、ユーザに関する個人情報を収集する、または個人情報を使用する可能性がある状況について、ユーザは、プログラムもしくは機能が、個人情報(例えば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくは活動、ユーザの選好、またはユーザの場所に関する情報)を収集する可能性があるかどうかを制御する機会、または、ユーザにより関連する可能性があるコンテンツサーバもしくは他のデータ処理システムからコンテンツを受信するかどうか、もしくはどのように受信するかを制御する機会を提供され得る。加えて、パラメータを生成するときに個人を特定できる情報が削除されるように、特定のデータが、記憶または使用される前に1つまたは複数の方法において匿名化され得る。例えば、個人を特定できる情報がユーザについて決定され得ないように、ユーザの識別情報が匿名化され得、または、ユーザの特定の位置が決定され得ないように、位置情報が取得されるユーザの地理的位置が(都市、郵便番号、州レベルなどに)一般化され得る。したがって、ユーザは、情報がどのように自分に関して収集され、コンテンツサーバによって使用されるかを制御し得る。
本明細書で説明する主題および動作は、デジタル電子回路において、または、本明細書で開示される構造およびそれらの構造的同等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組み合わせにおいて実装され得る。本明細書で説明する主題は、データ処理装置による実行のため、またはデータ処理装置の動作を制御するために、1つまたは複数のコンピュータ記憶媒体上に符号化された1つまたは複数のコンピュータプログラム、例えば、コンピュータプログラム命令の1つまたは複数の回路として実装され得る。代替的には、または加えて、プログラム命令は、データ処理装置による実行のために適切な受信機装置に送信するのための情報を符号化するために生成された人工的に生成された伝搬信号、例えば、機械生成された電気、光、または電磁信号上に符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つまたは複数の組み合わせであるか、またはそれの中に含まれ得る。コンピュータ記憶媒体は、伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号内に符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の構成要素または媒体(例えば、複数のCD、ディスク、または他の記憶デバイス)であるか、またはそれの中に含まれ得る。本明細書で説明する動作は、1つまたは複数のコンピュータ可読記憶媒体上に記憶されるか、または他のソースから受信されるデータに対してデータ処理装置によって実行される動作として実施され得る。
「データ処理システム」、「コンピューティングデバイス」、「構成要素」、または「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、またはそれらのうちの複数もしくは組み合わせを含む、様々な装置、デバイス、およびデータ処理マシンを包含する。装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組み合わせを構成するコードも含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。アプリケーション取り入れ構成要素114、アプリケーション配信構成要素116、またはNLP構成要素112、および他のデータ処理システム102の構成要素は、1つまたは複数のデータ処理装置、システム、コンピューティングデバイス、またはプロセッサを含むかまたは共有することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、スクリプト、またはコードとしても知られる)は、コンパイラ型またはインタープリタ型言語、宣言型または手続き型言語を含む任意の形式のプログラミング言語において書かれ得、スタンドアロンプログラムとして、または、モジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境における使用に適した他のユニットとして含む、任意の形態において展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応することができる。コンピュータプログラムは、他のプログラムもしくはデータ(例えば、マークアップ言語文書内に記憶された1つまたは複数のスクリプト)を保持するファイルの一部内に、問題のプログラム専用の単一のファイル内に、または、複数の連携ファイル(例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)内に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または、1つのサイトにおいて配置されるか、もしくは複数のサイトにわたって分散されて通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開され得る。
本明細書で説明するプロセスおよび論理フローは、入力データに対して動作して出力を生成することによってアクションを実行するために1つまたは複数のコンピュータプログラム(例えば、データ処理システム102の構成要素)を実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローは、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行され得、装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)としても実装され得る。コンピュータプログラム命令とデータとを記憶するのに適したデバイスは、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびに、CD ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されるか、またはその中に組み込まれ得る。
本明細書で説明される主題は、バックエンド構成要素を、例えば、データサーバとして含むか、または、ミドルウェア構成要素、例えば、アプリケーションサーバを含むか、または、フロントエンド構成要素、例えば、ユーザが、本明細書で説明する主題の実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または、1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の組み合わせを含むコンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、ならびにピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)を含む。
システム100またはシステム400などのコンピューティングシステムは、クライアントとサーバとを含むことができる。クライアントおよびサーバは、一般に、互いに離れており、典型的には、通信ネットワーク(例えば、ネットワーク105)を介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって発生する。いくつかの実装形態において、サーバは、データ(例えば、デジタル構成要素を表すデータパケット)をクライアントデバイスに(例えば、クライアントデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受信する目的のために)送信する。クライアントデバイスにおいて生成されたデータ(例えば、ユーザ対話の結果)が、サーバにおいてクライアントデバイスから受信(例えば、データ処理システム102によって、コンピューティングデバイス104または開発者コンピューティングデバイス106から受信)され得る。
動作が、特定の順序において図面中に描かれているが、そのような動作は、図示された特定の順序において、または連続した順序において実行される必要はなく、すべての図示された動作が、実行される必要はない。本明細書で説明するアクションは、異なる順序において実行され得る。
様々なシステム構成要素の分離は、すべての実装形態における分離を必要とせず、説明したプログラム構成要素は、単一のハードウェアまたはソフトウェア製品内に含まれ得る。例えば、NLP構成要素112またはアプリケーション配信構成要素116は、単一の構成要素、アプリ、もしくはプログラム、または、1つもしくは複数の処理回路を有する論理デバイス、または、データ処理システム102の1つまたは複数のサーバの一部であり得る。
ここで、いくつかの例示的な実装形態について説明してきたが、上記は、例示であり、限定ではなく、例として提示されていることは、明らかである。具体的には、本明細書で提示されている例の多くは、方法の行為またはシステムの要素の特定の組み合わせを含むが、それらの行為およびそれらの要素は、同じ目的を達成するために他の方法において組み合わされ得る。ある実装形態に関連して論じた行為、要素、および特徴は、他の実装形態または実施形態における同様の役割から除外されることを意図していない。
本明細書で使用される表現法および用語法は、説明の目的のためのものであり、限定としてみなされるべきではない。本明細書における「含む」、「備える」、「有する」、「含有する」、「伴う」、「によって特徴付けられる」、「ことを特徴とする」、およびそれらの変形の使用は、その後に列挙されたアイテム、その同等物、および追加のアイテムを、その後に排他的に列挙されたアイテムからなる代替の実装形態と同様に包含することを意味する。一実装形態では、本明細書で説明するシステムおよび方法は、説明されている要素、行為、または構成要素のうちの1つ、2つ以上の各組み合わせ、またはすべてからなる。
単数形において言及した本明細書におけるシステムおよび方法の実装形態または要素または行為への任意の言及は、複数のこれらの要素を含む実装形態も包含し得、本明細書における任意の実装形態または要素または行為への複数形における任意の言及は、単一の要素のみを含む実装形態も包含し得る。単数形または複数形における言及は、現在開示されているシステムまたは方法、それらの構成要素、行為、または要素を単数形または複数形に限定することを意図していない。任意の情報、行為、または要素に基づく任意の行為または要素への言及は、行為または要素が、任意の情報、行為、または要素に少なくとも部分的に基づく実装形態を含み得る。
本明細書で開示する任意の実施形態は、任意の他の実装形態または実施形態と組み合わされ得、「実装形態」、「いくつかの実装形態」、「1つの実装形態」などへの言及は、必ずしも相互に排他的ではなく、実装形態に関連して本明細書で説明する特定の特徴、構造、または特性が少なくとも1つの実装形態または実施形態内に含まれ得ることを示すことを意図している。本明細書で使用されるそのような用語は、必ずしもすべてが同じ実装形態を指すというわけではない。任意の実装形態は、本明細書で開示する態様および実装形態と一致する任意の方法において、包括的または排他的に任意の他の実装形態と組み合わされ得る。
「または」への言及は、「または」を使用して説明される任意の用語が説明される用語のうちの1つ、2つ以上、およびすべてのいずれかを示し得るように、包括的として解釈され得る。例えば、「「A」および「B」のうちの少なくとも1つ」は、「A」と、「B」と、「A」と「B」の両方とを含むことができる。「備える」または他の開いた用語法(open terminology)と組み合わせて使用されるそのような言及は、追加のアイテムを含むことができる。
図面、詳細な説明、または任意の請求項における技術的特徴の後に参照符号が続く場合、参照符号は、図面、詳細な説明、および特許請求の範囲の明瞭さを高めるために含まれている。したがって、参照符号もそれらの欠如も、どのようなクレーム要素の範囲に対するどのような限定的な影響も及ぼさない。
本明細書で説明するシステムおよび方法は、その特性から逸脱することなく、他の特定の形態において具体化され得る。前述の実装形態は、説明したシステムおよび方法を限定するのではなく、例示的である。したがって、本発明で説明するシステムおよび方法の範囲は、前述の説明ではなく、添付の特許請求の範囲によって示され、特許請求の範囲と同等の意味および範囲内に入る変更が、その中に包含される。