(57)【要約】  本開示の一態様は、自然言語クエリをネイティブデータベースクエリに変換することに関する。例えば、データベースアプリケーションは、ユーザから自然言語クエリを受信し、クエリを節に分割し、節からキーワードを判断し、クエリ内のキーワードを、データベースに照会することができるネイティブクエリにマッピングする。自然言語クエリが、マッピングされないキーワードを含む場合、アプリケーションは、ユーザデバイスと通信することによってあいまいさを解決する。キーワードをマッピングすることができない場合、アプリケーションは、ペア単位一般化または他の技法を用いて導出された同義語を含むカスタムインデックスにキーワードをマッピングすることができる。すべてのキーワードがマッピングされると、データベースアプリケーションは、ネイティブデータベースクエリを生成し、データベースから結果を得る。
2021530818.tif 000002
【特許請求の範囲】
【請求項１】
データベースを介して自然言語クエリを処理するための方法であって、
テーブルを有するデータベースにアクセスすることを含み、各テーブルは、前記各テーブルを識別するラベルと、フィールドとを含み、各フィールドは属性を含み、前記方法はさらに、
エンティティを含むカスタムデータベースインデックスにアクセスすることを含み、前記エンティティは、前記フィールドと、前記属性と、前記フィールドまたは前記属性の１つ以上の同義語とを含み、前記方法はさらに、
自然言語検索クエリにアクセスすることと、
前記自然言語検索クエリからパースツリーを構築することとを含み、前記パースツリーは、単語タイプを含む少なくとも１つの終端ノードと、前記自然言語検索クエリの単語またはフレーズを表す少なくとも１つの終端ノードとを含み、前記パースツリーは、前記自然言語クエリの構文情報を識別し、前記方法はさらに、
前記パースツリーから１つ以上の節を識別することを含み、節はキーワードを含み、各キーワードは名詞または動詞であり、前記方法はさらに、
以下の１つ以上、すなわち、
各キーワードを、（ｉ）前記テーブルのうちの１つのテーブルのラベルまたは（ｉｉ）前記テーブルのうちの１つのテーブルのフィールドまたは（ｉｉｉ）フィールドの属性のいずれかにマッチングさせること、および
前記キーワードと前記カスタムデータベースインデックスとの間のマッチの閾値レベルを判断すること、の１つ以上を実行することと、
前記マッピングされたキーワードからデータベースクエリを生成することと、
前記データベースクエリを前記データベースに提供することによって前記データベースから結果を得ることと、
前記結果をユーザデバイスに表示することとを含む、方法。
【請求項２】
前記方法はさらに、
前記キーワードのうちのあるキーワードが前記データベース内でマッチしないと判断することに応答して、暗黙ノードを前記パースツリーに挿入することを含み、前記暗黙ノードは前記キーワードを識別し、前記方法はさらに、
前記キーワードを前記ユーザデバイスに提示することを含む、請求項１に記載の方法。
【請求項３】
さらに、
前記ユーザデバイスから明確化を受信することと、
前記明確化に基づいて前記パースツリーを更新することと、
前記パースツリーからの更新された節を前記データベースにマッチングすることとを含む、請求項２に記載の方法。
【請求項４】
各キーワードをマッピングすることは、前記キーワードのうちの１つを前記テーブルのうちの１つテーブルのラベルにマッチングすることを含む、請求項１に記載の方法。
【請求項５】
各キーワードをマッピングすることは、前記キーワードのうちの１つを前記テーブルのうちの１つのテーブルのフィールドの単語の閾値数にマッチングすることを含む、請求項１に記載の方法。
【請求項６】
各キーワードをマッピングすることは、
キーワードの１つ以上の同義語を判断することと、
前記１つ以上の同義語を前記テーブルのうちの１つのテーブルのフィールドにマッピングすることとを含む、請求項１に記載の方法。
【請求項７】
マッチの閾値レベルを判断することは、
前記カスタムデータベースインデックスを検索することによって複数の候補を得ることと、
各候補について、前記エンティティと対応する結果との間のマッチのレベルを判断することと、
すべての前記エンティティのうちで最も高いマッチのレベルを有するエンティティを判断することとを含む、請求項１に記載の方法。
【請求項８】
前記キーワードと前記カスタムデータベースインデックスの前記エンティティとの間のマッチのレベルは、単語の出現頻度‐逆文書頻度を用いて判断される、請求項７に記載の方法。
【請求項９】
カスタムデータベースインデックスにアクセスすることは、
接続されたノードのセットを含むシソーラスにアクセスすることを含み、前記接続されたノードは、ルートノードおよび終端ノードを含み、前記終端ノードは、前記ルートノードの同義語であり、カスタムデータベースインデックスにアクセスすることはさらに、
反復的に、前記終端ノードの各々について、
前記ルートノードから対応の終端ノードへの経路を含む検索クエリを形成することと、
前記検索クエリを検索エンジンに提供することによって結果のセットを得ることと、
前記結果のセットの各ペアの結果のペア単位一般化を計算することとを含み、ペア単位一般化は、対応のペアの各結果に共通の１つ以上のキーワードを抽出し、カスタムデータベースインデックスにアクセスすることはさらに、反復的に、前記終端ノードの各々について、
前記ペア単位一般化から単語またはフレーズを抽出することと、
前記ペア単位一般化内で閾値頻度を超えて生ずるソートされた要素のサブセットを抽出することと、
前記抽出された要素のサブセットから新たなノードを作成することと、
前記新たなノードを対応の終端ノードに接続することとを含む、請求項１に記載の方法。
【請求項１０】
システムであって、
非一時的コンピュータ実行可能プログラム命令を記憶するコンピュータ可読媒体と、
前記コンピュータ可読媒体に通信可能に結合され、前記非一時的コンピュータ実行可能プログラム命令を実行するための処理装置とを備え、前記非一時的コンピュータ実行可能プログラム命令を実行することは、動作を実行するように前記処理装置を構成し、前記動作は、
テーブルを有するデータベースにアクセスすることを含み、各テーブルは、前記各テーブルを識別するラベルと、フィールドとを含み、各フィールドは属性を含み、前記動作はさらに、
エンティティを含むカスタムデータベースインデックスにアクセスすることを含み、前記エンティティは、前記フィールドと、前記属性と、前記フィールドまたは前記属性の１つ以上の同義語とを含み、前記動作はさらに、
自然言語検索クエリにアクセスすることと、
前記自然言語検索クエリからパースツリーを構築することとを含み、前記パースツリーは、単語タイプを含む少なくとも１つの終端ノードと、前記自然言語検索クエリの単語またはフレーズを表す少なくとも１つの終端ノードとを含み、前記パースツリーは、前記自然言語クエリの構文情報を識別し、前記動作はさらに、
前記パースツリーから１つ以上の節を識別することを含み、節はキーワードを含み、各キーワードは名詞または動詞であり、前記動作はさらに、
以下の１つ以上、すなわち、
各キーワードを、（ｉ）前記テーブルのうちの１つのテーブルのラベルまたは（ｉｉ）前記テーブルのうちの１つのテーブルのフィールドまたは（ｉｉｉ）フィールドの属性のいずれかにマッチングさせること、および
前記キーワードと前記カスタムデータベースインデックスとの間のマッチの閾値レベルを判断すること、の１つ以上を実行することと、
前記マッピングされたキーワードからデータベースクエリを生成することと、
前記データベースクエリを前記データベースに提供することによって前記データベースから結果を得ることと、
前記結果をユーザデバイスに表示することとを含む、システム。
【請求項１１】
前記動作はさらに、
前記キーワードのうちのあるキーワードが前記データベース内でマッチしないと判断することに応答して、暗黙ノードを前記パースツリーに挿入することを含み、前記暗黙ノードは前記キーワードを識別し、前記動作はさらに、
前記キーワードを前記ユーザデバイスに提示することを含む、請求項１０に記載のシステム。
【請求項１２】
前記動作はさらに、
前記ユーザデバイスから明確化を受信することと、
前記明確化に基づいて前記パースツリーを更新することと、
前記パースツリーからの更新された節を前記データベースにマッチングすることとを含む、請求項１１に記載のシステム。
【請求項１３】
各キーワードをマッピングすることは、
キーワードの１つ以上の同義語を判断することと、
前記１つ以上の同義語を前記テーブルのうちの１つのテーブルのフィールドにマッピングすることとを含む、請求項１０に記載のシステム。
【請求項１４】
マッチの閾値レベルを判断することは、
前記カスタムデータベースインデックスを検索することによって複数の候補を得ることと、
各候補について、前記エンティティと対応する結果との間のマッチのレベルを判断することと、
すべての前記エンティティのうちで最も高いマッチのレベルを有するエンティティを判断することとを含む、請求項１０に記載のシステム。
【請求項１５】
前記キーワードと前記カスタムデータベースインデックスの前記エンティティとの間のマッチのレベルは、単語の出現頻度‐逆文書頻度を用いて判断される、請求項１０に記載のシステム。
【請求項１６】
カスタムデータベースインデックスにアクセスすることは、
接続されたノードのセットを含むシソーラスにアクセスすることを含み、前記接続されたノードは、ルートノードおよび終端ノードを含み、前記終端ノードは、前記ルートノードの同義語であり、カスタムデータベースインデックスにアクセスすることはさらに、
反復的に、前記終端ノードの各々について、
前記ルートノードから対応の終端ノードへの経路を含む検索クエリを形成することと、
前記検索クエリを検索エンジンに提供することによって結果のセットを得ることと、
前記結果のセットの各ペアの結果のペア単位一般化を計算することとを含み、ペア単位一般化は、対応のペアの各結果に共通の１つ以上のキーワードを抽出し、カスタムデータベースインデックスにアクセスすることはさらに、 反復的に、前記終端ノードの各々について、
前記ペア単位一般化から単語またはフレーズを抽出することと、
前記ペア単位一般化内で閾値頻度を超えて生ずるソートされた要素のサブセットを抽出することと、
前記抽出された要素のサブセットから新たなノードを作成することと、
前記新たなノードを対応の終端ノードに接続することとを含む、請求項１０に記載のシステム。
【請求項１７】
コンピュータ実行可能プログラム命令を記憶する非一時的なコンピュータ可読記憶媒体であって、処理装置によって実行されると、前記プログラム命令は前記処理装置に動作を実行させ、前記動作は、
テーブルを有するデータベースにアクセスすることを含み、各テーブルは、前記各テーブルを識別するラベルと、フィールドとを含み、各フィールドは属性を含み、前記動作はさらに、
エンティティを含むカスタムデータベースインデックスにアクセスすることを含み、前記エンティティは、前記フィールドと、前記属性と、前記フィールドまたは前記属性の１つ以上の同義語とを含み、前記動作はさらに、
自然言語検索クエリにアクセスすることと、
前記自然言語検索クエリからパースツリーを構築することとを含み、前記パースツリーは、単語タイプを含む少なくとも１つの終端ノードと、前記自然言語検索クエリの単語またはフレーズを表す少なくとも１つの終端ノードとを含み、前記パースツリーは、前記自然言語クエリの構文情報を識別し、前記動作はさらに、
前記パースツリーから１つ以上の節を識別することを含み、節はキーワードを含み、各キーワードは名詞または動詞であり、前記動作はさらに、
以下の１つ以上、すなわち、
各キーワードを、（ｉ）前記テーブルのうちの１つのテーブルのラベルまたは（ｉｉ）前記テーブルのうちの１つのテーブルのフィールドまたは（ｉｉｉ）フィールドの属性のいずれかにマッチングさせること、および
前記キーワードと前記カスタムデータベースインデックスとの間のマッチの閾値レベルを判断すること、の１つ以上を実行することと、
前記マッピングされたキーワードからデータベースクエリを生成することと、
前記データベースクエリを前記データベースに提供することによって前記データベースから結果を得ることと、
前記結果をユーザデバイスに表示することとを含む、非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記動作はさらに、
前記キーワードのうちのあるキーワードが前記データベース内でマッチしないと判断することに応答して、暗黙ノードを前記パースツリーに挿入することを含み、前記暗黙ノードは前記キーワードを識別し、前記動作はさらに、
前記キーワードを前記ユーザデバイスに提示することを含む、請求項１７に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
マッチの閾値レベルを判断することは、
前記カスタムデータベースインデックスを検索することによって複数の候補を得ることと、
各候補について、前記エンティティと対応する結果との間のマッチのレベルを判断することと、
すべての前記エンティティのうちで最も高いマッチのレベルを有するエンティティを判断することとを含む、請求項１７に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
カスタムデータベースインデックスにアクセスすることは、
接続されたノードのセットを含むシソーラスにアクセスすることを含み、前記接続されたノードは、ルートノードおよび終端ノードを含み、前記終端ノードは、前記ルートノードの同義語であり、カスタムデータベースインデックスにアクセスすることはさらに、
反復的に、前記終端ノードの各々について、
前記ルートノードから対応の終端ノードへの経路を含む検索クエリを形成することと、
前記検索クエリを検索エンジンに提供することによって結果のセットを得ることと、
前記結果のセットの各ペアの結果のペア単位一般化を計算することとを含み、ペア単位一般化は、対応のペアの各結果に共通の１つ以上のキーワードを抽出し、カスタムデータベースインデックスにアクセスすることはさらに、 反復的に、前記終端ノードの各々について、
前記ペア単位一般化から単語またはフレーズを抽出することと、
前記ペア単位一般化内で閾値頻度を超えて生ずるソートされた要素のサブセットを抽出することと、
前記抽出された要素のサブセットから新たなノードを作成することと、
前記新たなノードを対応の終端ノードに接続することとを含む、請求項１７に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
詳細な説明
本開示は一般にデータベースに関する。より具体的には、本開示は、自然言語クエリをネイティブデータベースクエリに変換することに関する。
【０００２】
関連出願の相互参照
本出願は２０１８年７月２５日に提出された米国仮出願６２／７０３，３８９に対する優先権を主張し、その全体がすべての目的のために本明細書に組み込まれる。
【背景技術】
【０００３】
発明の背景
リレーショナルデータベースは、広範囲の照会メカニズムをサポートする構造化クエリ言語（ＳＱＬ）などの現代の照会言語によってアクセスすることができる。しかし、ＳＱＬインターフェイスは、非ソフトウェア開発者がこれらの言語で検索クエリを設計することは困難であり得る。したがって、これらの低品質クエリは、低品質の結果を引き起こす。
【０００４】
自然言語（ＮＬ）クエリをデータベースクエリに変換するためのいくつかの解決策が存在する。しかし、これらの解決策は不充分である。例えば、いくつかの解決策は、変換を実行するために、トレーニングされたニューラルネットワークを用い得る。しかし、これらの解決策には問題がある。例えば、大きなトレーニングデータセットが必要とされる場合があり、解決策はドメイン固有である。
【０００５】
したがって、自然言語クエリを現代の照会言語に変換することができる新規な解決策が必要である。
【発明の概要】
【課題を解決するための手段】
【０００６】
概要
本開示は、自然言語クエリをネイティブデータベースクエリに変換することに関する。例えば、データベースアプリケーションは、ユーザから自然言語クエリを受信し、クエリを節に分割し、節からキーワードを判断し、クエリ内のキーワードを、データベースに照会することができるネイティブクエリにマッピングする。自然言語クエリがマッピングされないキーワードを含む場合、アプリケーションは、このあいまいさをユーザデバイスと解決する。キーワードが従来の方法で、例えば、テーブルまたはフィールドへのマッピングを介して、データベースにマッピングできない場合、アプリケーションは、ペア単位一般化（pair-wise generalization）または他の技法を用いて導出された同義語を含むカスタムインデックスに、キーワードをマッピングすることができる。
【０００７】
本開示の一態様は、データベースを介して自然言語クエリを処理するための方法に関する。本方法は、テーブルを有するデータベースにアクセスする。各テーブルは、テーブルを識別するラベルと、フィールドとを含み、各フィールドは属性を含む。本方法はさらに、エンティティを含むカスタムデータベースインデックスにアクセスし、エンティティは、フィールド、属性、およびフィールドまたは属性の１つ以上の同義語を含む。本方法はさらに、自然言語検索クエリにアクセスする。本方法はさらに、自然言語検索クエリからパースツリーを構築する。パースツリーは、単語タイプを含む少なくとも１つの終端ノードと、自然言語検索クエリの単語またはフレーズを表す少なくとも１つの終端ノードとを含む。パースツリーは、自然言語クエリの構文情報を識別する。本方法はさらに、パースツリーから１つ以上の節を識別する。節はキーワードを含み、各キーワードは名詞または動詞である。本方法はさらに、以下の１つ以上、すなわち、各キーワードを、テーブルのうちの１つのテーブルのラベル、テーブルのうちの１つのテーブルのフィールド、および／またはフィールドの属性にマッチングさせること、ならびに、キーワードとカスタムデータベースインデックスとの間のマッチの閾値レベルを判断すること、の１つ以上を実行する。本方法はさらに、マッピングされたキーワードからデータベースクエリを生成する。本方法はさらに、データベースクエリをデータベースに提供することによって、データベースから結果を取得する。本方法は、さらに、結果をユーザデバイスに表示する。
【０００８】
さらなる態様では、本方法は、キーワードのうちのあるキーワードがデータベース内でマッチしないと判定し、暗黙ノードをパースツリーに挿入し、暗黙ノードはそのキーワードを識別する。本方法は、そのキーワードをユーザデバイスに提示する。
【０００９】
さらなる態様では、本方法は、ユーザデバイスから明確化を受信し、明確化に基づいてパースツリーを更新し、パースツリーからの更新された節をデータベースにマッチングする。
【００１０】
さらなる態様では、各キーワードをマッピングすることは、キーワードのうちの１つをテーブルのうちの１つのテーブルのラベルにマッチングすることを含む。
【００１１】
さらなる態様では、各キーワードをマッピングすることは、キーワードのうちの１つをテーブルのうちの１つのテーブルのフィールドの単語の閾値数にマッチングすることを含む。
【００１２】
さらなる態様では、各キーワードをマッピングすることは、キーワードの１つ以上の同義語を判断することと、１つ以上の同義語をテーブルのうちの１つのテーブルのフィールドにマッピングすることとを含む。
【００１３】
さらなる態様では、マッチの閾値レベルを判断することは、カスタムデータベースインデックスを検索することによって複数の候補を得ることと、各候補について、エンティティと対応する結果との間のマッチのレベルを判断することと、すべてのエンティティのうちで最も高いマッチのレベルを有するエンティティを判断することとを含む。
【００１４】
さらなる態様では、キーワードとカスタムデータベースインデックスのエンティティとの間のマッチのレベルは、単語の出現頻度‐逆文書頻度を用いて判断される。
【００１５】
さらなる態様では、カスタムデータベースインデックスにアクセスすることは、接続されたノードのセットを含むシソーラスにアクセスすることを含む。接続されたノードは、ルートノードおよび終端ノードを含む。終端ノードは、ルートノードの同義語である。本方法はさらに、終端ノードの各々について、動作を反復して実行する。動作は、ルートノードから対応の終端ノードへの経路を含む検索クエリを形成することを含む。動作は、さらに、検索クエリを検索エンジンに提供することによって結果のセットを得ることを含む。動作は、さらに、結果のセットの各ペアの結果のペア単位一般化を計算することを含む。ペア単位一般化は、対応のペアの各結果に共通の１つ以上のキーワードを抽出する。動作はさらに、ペア単位一般化から単語またはフレーズを抽出することを含む。動作はさらに、ペア単位一般化内で閾値頻度を超えて生ずるソートされた要素のサブセットを抽出することを含む。動作はさらに、抽出された要素のサブセットから新たなノードを作成することを含む。動作はさらに、新たなノードを対応の終端ノードに接続することを含む。
【００１６】
上記の方法は、コンピュータデバイスまたはコンピュータシステムにおいて実施することができる。プログラム命令は、非一時的コンピュータ可読媒体上に記憶されることもできる。
【図面の簡単な説明】
【００１７】
【図１】本開示の一態様による、自然言語クエリからデータベースクエリを生成するためのシステムの図である。
【図２】本開示の一態様による、自然言語クエリからデータベースクエリを生成するためのプロセスの一例を示すフローチャートである。
【図３】本開示の一態様による、自然言語クエリのためのパースツリーを示す図である。
【図４】本開示の一態様による、パースツリーからの節抽出のためのプロセスの一例を示す図である。
【図５】本開示の一態様による、キーワードをデータベーステーブルにマッチングすることを示す図である。
【図６】本開示の一態様による、データベースインデックスへのキーワードマッチングのためのプロセスを示す図である。
【図７】本開示の一態様によるデータベースの一例を示す図である。
【図８】本開示の一態様による、転移学習の観点から見たソーラス支援検索を示す。
【図９】本開示の一態様による、シソーラスのスナップショットの一例を示す。
【図１０】本開示の一態様による、例示的な検索結果を示す。
【図１１】本開示の一態様によるシソーラス学習を示す。
【図１２】本開示の一態様によるシソーラス学習を示す。
【図１３】本開示の一態様によるシソーラス学習を示す。
【図１４】態様のうちの１つを実現するための分散型システムの簡略図を示す。
【図１５】一態様による、態様システムの構成要素によって提供されるサービスがクラウドサービスとして提供され得る、システム環境の構成要素の簡略ブロック図である。
【図１６】本開示の様々な態様が実現され得る例示的なコンピュータシステムを示す。
【発明を実施するための形態】
【００１８】
本発明の詳細な説明
本開示の態様は、改善されたデータベースシステムに関する。特に、開示されるシステムは、言語学的アプローチおよびキーワードベースのアプローチの両方を用いることによって、自然言語クエリをデータベースクエリに変換する。いくつかの態様はまた、自然言語クエリ内のあいまいな語を識別し、これらのあいまいさを、自律型エージェント（「チャットボット」）を用いることによって解決する。場合によっては、シソーラスを作成および用いて、様々なエンティティ、アクション、または属性を記述するために人々が用いる単語をデータベーステーブルまたはフィールドとマッチングし得る。このようにして、開示される解決策は、既存の解決策と比較して、改善されたデータベースクエリ、したがって、より意味のある結果を提供する。
【００１９】
自然言語データベースインターフェイスは、構造化キーワードベースの検索、フォームベースの要求インターフェイス、および視覚的クエリビルダなどの人気のあるクエリインターフェイスよりも多くの利点を有する。例えば、自然言語インターフェイスは、トレーニングを受けていないユーザが、データベース専門家によってトレーニングされる必要なしに、複雑なクエリを指定することを可能にする。しかし、自然言語クエリをデータベースにマッピングすることは困難であり得る。例えば、ユーザクエリはしばしばあいまいであり得る。
【００２０】
自律型エージェントは、自然言語インターフェイスの自然な拡張であり、ユーザが提供するあいまいな語を明確にするために用いることができる。例えば、ユーザは、「titanic」を検索するかもしれない。自然言語システムは「titanic」という語を既存のデータベースとマッチングすることを試みるが、この語は、同じ名前の映画または船を指し得るため、あいまいである。したがって、データベースおよび自律型エージェントは、エージェントがデータベースの充分なクエリに必要とされる言語理解におけるエラー修正を容易にする際に、互いに連携して動作することができる。
【００２１】
ある定義
本明細書で用いられる場合、「データベース」は、編成または構造化されたデータのセットを指す。データベースは、列および行に編成され得る。
【００２２】
本明細書で用いられる場合、「テーブル」は、データベース内の関係を指す。テーブルは、「ファイル」または「クラス」と呼ばれることもある。
【００２３】
本明細書で用いられる場合、「クエリ」は、サーバからデータを検索させるコマンドのタイプを指す。構造化クエリ言語（ＳＱＬ）クエリの例は、「SELECT column1, column2 FROM table1, table2 WHERE column2='value'」である。
【００２４】
本明細書で用いられる場合、「自然言語クエリ」は、例えば英語など自然言語であるデータベースクエリを指す。自然言語クエリの例は、「how many employees had a raise this year?（今年は何人の従業員が昇給を受けたか？）」である。
【００２５】
本明細書で用いられる場合、データベースまたはデータベーステーブルの「列」または「フィールド」。例えば、列は、「名前」、「アドレス」、または「郵便番号」とすることができる。
【００２６】
本明細書で用いられる場合、「行」または「レコード」は、特定の列に対する値のリストである。例えば、第１のレコードは、郵便番号に対して値「３００２１」を有することができ、第２のレコードは、郵便番号に対して値「２００２１」を有することができる。
【００２７】
ここで図を参照すると、図１は、本開示の一態様による、自然言語クエリからデータベースクエリを生成するためのシステムの図である。図１は、ユーザインターフェイス１１０を介して自然言語クエリを受信し、クエリをネイティブデータベースクエリに変換し、データベース１９０から結果を取得し、結果をユーザインターフェイス１１０に戻すことができるコンピューティングシステム１０１を含むコンピューティング環境１００を示す。自然言語クエリをデータベースクエリにマッピングする様々な方法を用いることができる。追加的または代替的に、コンピューティングシステム１０１は、自然言語クエリにおけるあいまいさを検出し、ユーザインターフェイス１１０を介して明確化（clarification）を取得し、より完全なマッピングおよびより良好な検索結果をもたらすことができる。
【００２８】
コンピューティングシステム１０１は、データベースアプリケーション１０２およびシソーラス１０４を含む。一例では、データベースアプリケーション１０２は、自然言語クエリ（たとえば、ＮＬクエリ１２０）をデータベースのテーブルまたはフィールドにマッピングすることに関連する機能を実行する。データベースアプリケーション１０２はまた、データベースをインデックス付けすることおよびカスタムインデックスに対して検索を実行すること、またはカスタムインデックスそれ自体を作成することに関連する機能を実行することができる。
【００２９】
データベース１９０は、任意のトピックに関する編成された情報を含むことができる。トピックの例は、スポーツ、音楽、文学、ニュース、歴史、および科学を含む。データベース１９０は、任意の態様で編成することができるテーブル１９１ａ〜ｎを含む。例えば、データベース１９０がスポーツに関する情報を含む場合、テーブル１９１ａは野球に関連するトピックを含み、テーブル１９１ｂはサッカーに関連するトピックを含む、などとすることができる。同様に、データベース１９０が楽器に関する情報を含む場合、テーブル１９１ａは金管楽器に関する情報を含み、テーブル１９１ｂは打楽器に関する情報などを含む、などとすることができる。各テーブル１９１ａ〜ｎは、１つ以上のフィールドを含むことができる。前の例を続けると、フィールドの例は、「チーム」または「楽器の種類」である。各テーブル１９１ａ〜ｎは、別のテーブルとリンクされることができる。例えば、サッカーリーグに関する情報を含むテーブルは、各リーグ内の特定のチームを有する別のテーブルにリンクするかもしれない。
【００３０】
場合によっては、データベース１９０は、ＳＱＬクエリおよびデータ編成を最適化するために用いることができるカスタムインデックス１９２を含むことができる。例えば、カスタムインデックス１９２を用いることにより、キーワードをフィールドなどのデータベースパラメータにマッチングすることとは異なる態様で、データベースを検索することができる。カスタムインデックス１９２は、データベースアプリケーション１０２または別のアプリケーションによって作成することができる。他の場合では、データベース１９０およびカスタムインデックス１９２は、組織などの外部実体によって、データベース１９０内の情報に対する主題専門知識を提供される。データベース１９０は、例えば、ネットワークを介して、コンピューティングシステム１０１から外部に位置することができる。
【００３１】
ユーザインターフェイス１１０は、デスクトッププラットフォームまたはモバイルプラットフォーム上のユーザインターフェイスなど、任意の標準ユーザインターフェイスであり得る。ユーザインターフェイス１１０は、ユーザ入力、例えば、ＮＬクエリ１２０を受信し、例えば、要求を明確にすることによって、ユーザとの対話を容易にすることができる。ユーザインターフェイス１１０は、検索結果１６０などのデータを出力することができる。
【００３２】
一例では、データベースアプリケーション１０２は、ＮＬ（自然言語）クエリ１２０を受信し、クエリ内の節を、ネイティブクエリ１５０に対するデータベース１９０内のテーブルまたはフィールドにマッチさせようとする。好適なプロセスの例が、図２に関してさらに説明される。単純な例において、ＮＬクエリ１２０は、例えば、「what are some reviews of slate?（スレートの何らかのレビューはどのようであるか？）」という節を含む。データベースアプリケーション１０２は、ＮＬクエリ１２０のパースツリーを作成し、節および節内のキーワードを識別する。上記の例を続けると、キーワードは「reviews」および「slate」である。
【００３３】
場合によっては、データベースアプリケーション１０２は、ＮＬクエリ１２０からのキーワードをカスタムインデックス１９２内のデータベーステーブル、属性、またはエンティティにマッピングすることができないため、ＮＬクエリ１２０はあいまいである。例えば、「slate」は、雑誌の「Slate」または機器のブランドの「slate」を指し得る。この場合、データベースアプリケーション１０２は、明確化要求１３０をユーザインターフェイス１１０に送信し、明確化を求める。ユーザは、自分が「slate機器」に関心があることを明確にし、それを明確化１４０としてデータベースアプリケーション１０２に送信する。次いで、データベースアプリケーション１０２は、検索プロセスに進み、パースツリーを新たな情報で更新し、パースツリーをネイティブクエリ１５０にマッピングし、データベースに照会する。
【００３４】
クエリを解析することは、ＮＬクエリ１２０からパースツリーを作成することを含み得る。別の例では、データベースアプリケーション１０２は、「Return users who watched more movies than Bob on Documentary after 2007（２００７年以降にドキュメンタリーでボブよりも多くの映画を見たユーザを返す）」というクエリを解析する。データベースアプリケーション１０２は、パースツリーのセットを作成する。データベースアプリケーション１０２は、ユーザインターフェイス１１０にあいまい性を与える。たとえば、１つの候補パースツリーは、「return the users whose movies on Documentary after 2007 is more than Bob's(２００７年以降のドキュメンタリーの映画がボブのよりも多いユーザを返す）」として説明される。データベースアプリケーション１０２は、暗黙ノードをツリーに挿入し、その結果、「return the users, where the number of films in Documentary released after 2007 is more the number of films rented by Bob in Documentary released after 2007（２００７年以降にリリースされたドキュメンタリーの映画の数が２００７年以降にリリースされたドキュメンタリーにおいてボブによってレンタルされた映画の数より多いユーザを返す）」となる。ツリーが最終決定されると、データベースアプリケーション１０２は、ツリーから１つ以上の節をフォーマット属性[=/< / > / like]値にあるように、決定する。
【００３５】
シソーラス１０４は、データベースアプリケーション１０２のマッチング性能を改善するために、データベースアプリケーション１０２によって用いられる。シソーラス１０４は、データベース１９０内のエンティティに関連する共通または非共通同義語を含むことができる。例えば、「フットボール」の同義語は「サッカー」であり得る。映画レンタルの場合の一例において、データベースアプリケーション１０２は、映画およびフィルムを与え、レンタルし、配達し、または提供する、従業員、労働者、ヘルパー、提供者をそれ自体が有するレンタル会社または雇用者から、映画、フィルム、またはテープのような物を、レンタルし、借用し、または取る顧客、ユーザ、人々、子供、大人を知っている必要がある。例えば、ユーザデバイスが「who took the movie（誰がその映画を取ったか）」と尋ねる場合、データベースアプリケーション１０２は、「took（取った）」がrent「（レンタルする）」を意味し得、「movie（映画）」が「film（フィルム）」を意味し得ることなどを知る必要がある。シソーラス１０４内の情報は、インターネットまたはリソースからリアルタイムでマイニングすることができる。別の例では、シソーラス１０４は、上記エンティティ間の関係、それらの属性およびアクションを指定することによって、任意のドメインのための情報を提供することができる。シソーラス１０４は、本明細書で説明される技法、例えば、検索クエリを反復して形成し、検索クエリの結果を一般化し、その一般化された結果をシソーラス内の追加のエントリ（またはノード）として用いることによって、構築または拡張することができる。これにより、シソーラス１０４のカバー範囲を改善することができる。
【００３６】
場合によっては、データベースアプリケーション１０２は、マッチングを改善するためにシソーラスを用いることができる。データベースアプリケーション１０２はまた、ＮＬクエリ１２０をネイティブクエリ１５０にマッチングさせることができ、例えば、１つ以上のキーワードがデータベース１９０のフィールドにマッピングされない場合、データベースアプリケーション１０２は、あいまいな語でシソーラス１０４を検索し、場合によってはデータベースフィールド名の同義語を識別することができる。この場合、データベースアプリケーション１０２は、ユーザに明確化を依頼する必要はない。
【００３７】
図２は、本開示の一態様による、自然言語クエリからデータベースクエリを生成するためのプロセス２００の一例を示すフローチャートである。プロセス２００は、データベースアプリケーション１０２または別のアプリケーションによって実現され得る。
【００３８】
ブロック２０１において、プロセス２００は、ユーザデバイスから自然言語クエリを受信することを伴う。例えば、データベースアプリケーション１０２は、ＮＬクエリ１２０を受信する。ＮＬクエリの例は、「what is staff first name when movie return date is after 2005-06-02 01:02:05（映画返却日が2005-06-02 01:02:05の後の場合のスタッフのファーストネームは何）」である。
【００３９】
ブロック２０２において、プロセス２００は、パースツリーを構築することを含んで、クエリから節を抽出することを伴う。データベースアプリケーション１０２は、パースツリーを構築することによってＮＬクエリ１２０から節を抽出する。図３は、上記の例のパースツリーを示す。
【００４０】
図３は、本開示の一態様による、自然言語クエリのためのパースツリーを示す図である。図３は、ノード３０１〜３１４を含むパースツリー３００を示す。ノード３０１〜３１４の各々は、ＮＬクエリ１２０の単語に対応する。パースツリー３００は、任意の標準的な技法を用いて得ることができる。
【００４１】
データベースアプリケーション１０２は、パースツリーにアクセスし、任意の「wh」単語を識別する。「wh」単語は、what（何）、where（どこで）、 when（いつ）、 およびwhy（なぜ）を含む。データベースアプリケーション１０２は、「wh」単語の直後に続くフレーズを抽出する。このフレーズは、「wh」単語に続く単語の中で最も短いものである。例えば、名詞、動詞、前置語、およびその他の種類のフレーズであってもよい。この抽出されたフレーズから、データベースアプリケーション１０２は節を構築する。この節は、割り当てを有さないが、代わりに、「give me a maximum temperature of water …（最大温度の水を下さい...）」のような、グループ化項を有する可能性があることになる。
【００４２】
場合によっては、データベースアプリケーション１０２は、焦点節を識別する。焦点節は、ＮＬクエリ１２０が返すと予測されるオブジェクトを含む、ＮＬクエリ１２０からの節である。焦点節の１つの略称は、「*」である。
【００４３】
図２に戻って、ブロック２０３において、プロセス２００は、節からキーワードを抽出することを含む。例を続けると、データベースアプリケーション１０２は、節からキーワードを抽出する。図４は、節を抽出する一例を示す。
【００４４】
１つ以上の節が識別されると、データベースアプリケーション１０２は、（節に基づいて）ＮＬクエリ１０２の残りを、「where（どこで）」で始まる第２の節と見なす。節の境界を判断することは困難であり得る。したがって、場合によっては、データベースアプリケーション１０２は、ＳＱＬ節に変換されるべきフレーズの中心を示す、is（である）、equals（に等しい）、more（より多い）、before（より前に）、またはas（のように）などの、割り当ておよび比較単語を識別する。一旦、最も左側のアンカーが識別されると、データベースアプリケーション１０２は、左側、または属性および右側、値を構築することを試みる。例を続けると、属性は「return rental date（レンタル返却日）」であり、値は特定の日付である。
【００４５】
属性の境界を見つけるために、データベースアプリケーション１０２は、開始ＮＬクエリ１２０に向かって現在のフレーズの開始まで反復する。属性は、通常、前置詞withもしくはof、接続詞and、または「Wh」単語によって示される。値ａは、おそらく形容詞を伴う名詞および／または数である。同じ単語は、値部分の終わりを次の属性部分の始まりとして印す。例えば、割り当てまたは比較単語が取り除かれるかまたは無視されると、「return rental date」は実際の日付に隣接する。
【００４６】
図４は、本開示の一態様による、パースツリーからの節抽出を示す図である。図４は、図３に示されたテキストのマッピングを示す。図４は、単語テンプレート４０１〜４０５、節４１０および単語４１１〜４１５、ならびに節４２０および対応する単語４２１〜４２５を含む。より具体的には、単語テンプレート４０１は節の始まりを表し、単語テンプレート４０２は属性を表し、単語テンプレート４０３はアンカーを表し、単語テンプレート４０４は変換すべき値を表し、単語テンプレート４０５は節の終わりを表す。
【００４７】
図２に戻って、ブロック２０４において、プロセス２００は、各キーワードを、データベースのテーブル、フィールド、または操作にマッピングすることを含む。データベースアプリケーション１０２は、各パースツリーノードを、ＳＱＬコマンド、テーブル、フィールドまたは値への参照にマッピングしようとする。そのようなアプローチは、ＳＱＬコンポーネントにマッピングされ得る言語学的パースツリー内のノードを識別し、それらを異なるトークンにトークン化する。マッピングプロセスにおいて、いくつかのノードは、任意のＳＱＬコンポーネントへのマッピングに失敗する場合がある。この場合、我々のシステムは、これらのノードがユーザのクエリの解釈に直接寄与しないことをユーザに知らせる警告を生成する。また、いくつかのノードは、複数のマッピングを有し得、それは、これらのノードを解釈する際にあいまいさを引き起こす。各そのようなノードについて、パースツリーノードマッピング部は、デフォルトでパースツリー構造調整部に最良のマッピングを出力し、すべての候補マッピングを対話型通信部に報告する。
【００４８】
データベースアプリケーション１０２は、クエリ内の各フレーズまたはキーワードを考慮し、テーブルおよび／またはテーブル内のフィールドにマッチングしようとする。異なるレベルのマッチが可能である。例えば、キーワードは、テーブル名、テーブル内のフィールド、複数のテーブル内の複数のフィールドなどにマッチしてもよい。したがって、データベースアプリケーション１０２は、マッチを判断することに対して階層的アプローチを用いることができる。
【００４９】
基本的に、自然言語はあいまいであり、自然言語の解釈は困難である。したがって、どの単語がどのデータベースフィールドを指すかを判断することは、本質的にあいまいである。例えば、人々は、しばしば、スラング単語、技術用語、および方言固有のフレーズを用いるが、それらのいずれもシステムに知られていない可能性がある。人間対人間の対話においてさえ、伝達不良がある。
【００５０】
例えば、姓および名など、同様の意味論タイプの属性に値を代入することは、困難であり得る。例えば、姓および名が何であるかわからない限り、以下のマッピングは困難である。
【００５１】
【数１】
2021530818.tif 000003
【００５２】
英語の姓および名のルックアップ、ならびに姓および名が単一のフィールド内にあり得るか、さまざまなフォーマットおよび順序にあり得るか、またはSakilaデータベース（Oracle 2018）の場合のように別個のフィールドに属する、という知識など、phrase2table.fieldをマッピングすることを越える変換が必要である。
【００５３】
ユーザが‘film name’と言っている場合、film.nameが存在しない場合は、システムは、それを、フィールド＝‘name’を有するテーブルとして解釈し得る。'name'は'title'の同義語であるが、'name'というフレーズは、actor.first_nameの代わりにcategory.nameのような完全に異質のテーブルにマッピングされ得る。フレーズが‘word1 word2’ を含む場合、それは、通常、不明瞭であり、なぜならば、word2はtable1.field であり得、また、table2. word2は、別のテーブルにおけるフィールド（または単一のワードとしてフィールドの一部）であり得るからである。
【００５４】
したがって、最も可能性の高いケースから最も可能性の低いケースに進む仮説管理プロセスが必要である。単一のテーブル名を識別し、言及される他のテーブル名がないことを確認する規則から始める。また、フィールド名が言及されていないことを確認する必要もある。
【００５５】
図５は、本開示の一態様による、キーワードのデータベーステーブルへのマッチングを示す図である。プロセス５００は、データベースアプリケーション１０２によって、または別のアプリケーションによって実現され得る。キーワードのマッチングは、１回に１つのキーワードを発生させることができ、すなわち、処理５００は、キーワードごとに１回実行される。他の場合では、マッチングは、フレーズレベルで、すなわちいくつかのキーワードが一緒になって、起こり得る。議論の目的のため、プロセス５００は、フレーズに関して議論される。
【００５６】
データベースアプリケーション１０２は、フレーズを、マルチステッププロセスにおいて、データベーステーブルまたはフィールドにマッチさせようとする。例えば、データベースアプリケーション１０２は、まず、ブロック５０１において、マッチを試みる。ブロック５０１でマッチが見つからない場合、データベースアプリケーション１０２はブロック５０２でマッチを試みる。ブロック５０２でマッチが見つからない場合、データベースアプリケーション１０２はブロック５０３でマッチを試みる。プロセス５００においてマッチが早く見つかるほど、マッチの信頼性レベルは高い。
【００５７】
ブロック５０１において、プロセス５００は、フレーズを単一のテーブルの名前とマッチングすることを試みることを伴う。ブロック５０１において、データベースアプリケーション１０２が、フレーズは単一のデータベーステーブルの名前のみを含み、他のデータベーステーブルは含まない、と判断する場合、マッチが生じる。いったんテーブルが確認されると、データベースアプリケーション１０２は、テーブルのデフォルトフィールド、たとえば「名前」、またはこのテーブルによって表されるエンティティの名前を有する任意の他のフィールドを選択する。この選択は、後で、たとえばブロック２０９において、ネイティブクエリを生成するために用いられる。フレーズが他のいずれのテーブルともマッチしない場合、プロセス５００は停止し、ブロック５０７に進む。そうでなければ、プロセス５００はブロック５０２に進む。
【００５８】
ブロック５０２において、プロセス５００は、フレーズをフィールドおよびテーブルとマッチングする試みを伴う。ブロック５０２において、データベースアプリケーション１０２は、テーブルおよびテーブルのフィールド共のフレーズマッチを識別する。このマッチは、すべてのテーブルおよびフィールド単語を反復し、フレーズと最も大きい単語数を有するテーブル-フィールドのペアの組み合わせを選択することによって、達成することができる。したがって、この場合、フレーズ内の単語のすべてがデータベースにマッチする必要はない。データベースアプリケーション１０２は、１つ以上の技法、たとえば、フレーズとテーブル-フィールドのペアとの間のマッチするワードの数を用いて、マッチのレベルをスコア化することができる。他の技術を用いることもできる。
【００５９】
データベースアプリケーション１０２は、組み合わされたテーブルおよびフィールド表現を用いてフレーズを同義語とマッチングする。スコアが良好なマッチである場合、プロセス５００は停止し、ブロック５０７に進む。反対に、データベースアプリケーション１０２が、フレーズに対するキーワードのテーブルフィールドセットの良好なマッチを見つけない場合、プロセス５００はブロック５０３に進む。
【００６０】
ブロック５０３において、プロセス５００は、フレーズをフィールドとマッチングする試みを伴う。データベースアプリケーション１０２は、（テーブルラベルではなく）フィールドのみのマッチングを試みる。より具体的には、データベースアプリケーション１０２は、すべてのテーブルのフィールドを通して反復することを伴う。データベースアプリケーション１０２は、フィールド表現を用いてフレーズを同義語とマッチングする。全単語マッチおよび単語形態置換マッチを用いることができる。データベースアプリケーション１０２は、最良のスコアを有するマッチを選択する。
【００６１】
データベースアプリケーション１０２は、オントロジー（例えば、シソーラス１０４）を用いて、フィールドについてのキーワードのリストを同義語で拡張することができる。例えば、シソーラス１０４は、テーブル名、フィールド名、テーブル名におけるトークン、フィールド名におけるトークン、および同義語などのマイニングされたデータベースメタデータを、各々に対して含むことができる。ＮＬクエリ内の語はデータベース内のフィールド名から逸脱する可能性があるため、同義語はマッチングを改善するのに有用である。同義語は、thesaurus.comのようなソースからマイニングすることができ、またはword2vecのようなトレーニングされた同義語モデルを用いることができる（Mikolov et al 2011）。同義語または類似性関数のリストは、その後、マッチングを改善するために用いられる。データベースアプリケーション１０２が高スコアを獲得する場合、プロセス５００はブロック５０７に進む。そうでなければ、プロセス５００はブロック５０４に続く。
【００６２】
ブロック５０４において、プロセス５００は、最良のフィールドに対するすべてのテーブルを取得することを含む。ブロック５０３において、最良のフィールドマッチが得られる。データベースアプリケーション１０２は、最良のフィールドを含むすべてのテーブルを取得する。
【００６３】
ブロック５０５において、プロセス５００は、最良のテーブルに対する最良のフィールドマッチを得ることを伴う。ブロック５０４で最良のテーブルが識別されると、データベースアプリケーション１０２は、最良のテーブルからすべてのフィールドを取得する。次いで、データベースアプリケーション１０２は、同義語置換を含む最良のフィールドマッチを識別する。
【００６４】
ブロック５０６において、プロセス５００は、フレーズがマッチを有さない、と判定することを含む。ブロック５０６において、プロセス５００は終了する。データベースアプリケーション１０２は、ユーザとキーワードのあいまい性を明確にするよう、進む。
【００６５】
ブロック５０７において、プロセス５００は、フレーズがマッチする、と判定することを含む。データベースアプリケーションは、任意の追加のマッピングされていないキーワードが存在するかどうかを判断し続ける。もしそうであれば、プロセス５００は再開する。そうでなければ、データベースアプリケーション１０２は、パースツリーからＳＱＬクエリを作成する。
【００６６】
図２に戻って、ブロック２０５において、プロセス２００は、マッピングされていないキーワードがあるかどうかを判断することを含む。ノードマッピングの後、データベースアプリケーション１０２は、各ノードがデータベースアプリケーション１０２によって理解されることを保証しようとする。そうでなければ、プロセス２００はブロック２０６に進む。各ノードがマッピングされる場合、データベースアプリケーション１０２はブロック２０９に進む。
【００６７】
ブロック２０６において、プロセス２００は、検索インデックス付きデータベースを用いてキーワードをマッピングすることを含む。ＳＱＬクエリ節を構築するこのアプローチは、検索エンジニアリングアプローチと称され得る。このアプローチでは、データベースアプリケーション１０２は、カスタムデータベースインデックスにアクセスし、データベースに対してユーザＮＬクエリの一部の検索を実行する。
【００６８】
図６は、本開示の一態様による、データベースインデックスへのキーワードマッチングのためのプロセス６００を示す図である。データベースアプリケーション１０２は、節を、フレーズに、インデックス付けされた行でマッチさせることができる。
【００６９】
ブロック６０１において、プロセス２００は、キーワードまたはフレーズからクエリを構築することを含む。クエリは、カスタムデータベースインデックスを検索するために用いられる。データベースアプリケーション１０２は、ブロック２０５であいまいであると識別されるフレーズまたはキーワードから構築される検索表現を構築する。この検索表現は、テーブル、フィールド、および値とマッチすることが予想される単語を含む。データベースアプリケーション１０２は、検索結果の内容が取得されない限り、検索結果の内容が分からないので、クエリは、最初に単語の論理積として形成され、次いで、その論理積クエリが結果を与えることができない場合、それらの単語の論理和（論理ＯＲ）として形成される。論理和クエリでは、すべてのキーワードがマッチする必要はない。インデックス検索をより精密にするために、データベースアプリケーション１０２はまた、Bank of Americaなど、変換されるべきフレーズ中で識別されるエンティティからのスパンＡＮＤクエリを形成する。
【００７０】
数字は特別な処理を必要とする。等しい種類のクエリの場合、正確な数を見つけることは、ＳＱＬクエリ形成を精密にし、実際に、結果として得られるクエリの実行を置換する。すべての数字は、検索のためにストリングトークンとしてインデックス付けされるので、実際の数字は、ストリング表現を２つの部分に分割することを避けるために、「.」が置換された状態で記憶され検索される必要がある。
【００７１】
ブロック６０２において、プロセス２００は、カスタムインデックスを取得することを含む。カスタムインデックスは、属性および値を含むことができる。例えば、データベースアプリケーション１０２はカスタムインデックス１９２を作成する。カスタムインデックス１９２は、検索用のためのフィールドおよびフィールドの値を含む。例えば、データベースアプリケーション１０２は、Table field1 value1 field2 value2 … などのフォーマットでデータベース１９０の各テーブルの各行を含むフォーマットを作成する。カスタムインデックス１９２はまた、本明細書に記載するように、同義語および関係名などの、シソーラス１０４からの情報を含むこともできる。場合によっては、カスタムデータベースインデックスは、例えば実行時においてなど、後の使用のために、作成および格納することができる。他の場合では、カスタムデータベースインデックスは、インザフライで作成することができる。
【００７２】
場合によっては、データベースコンテンツのすべてがインデックス付けされるわけではない。例えば、データベースアプリケーション１０２は、場合によっては、顧客または住所などのエンティティのためのデータを含まない連想テーブルおよび他のテーブルをインデックス付けから除外することができる。
【００７３】
ブロック６０３において、プロセス２００は、キーワードまたはフレーズをカスタムインデックスからの属性または値にマッチングすることを含む。データベースアプリケーション１０２は、カスタムインデックスを検索することによって１つ以上の検索結果を取得する。
【００７４】
ブロック６０４において、プロセス２００は、マッチスコアを計算することを伴う。データベースアプリケーション１０２は、単語の出現頻度‐逆文書頻度（ＴＦＩＤＦ）に基づくことができるマッチスコアを計算することができる。
【００７５】
ブロック６０５において、プロセス２００は、さらなる属性または値があるかどうかを判断することを含む。カスタムインデックスで検索すべきさらなる属性または値がある場合、プロセス６００はブロック６０３に戻り、最も可能性の高いレコードを見つけるために追加のマッチを通して反復する。さらなる属性または値がない場合、プロセス６００はブロック６０６に続く。
【００７６】
ブロック６０６において、プロセス２００は、最良のマッチを選択することを伴う。データベースアプリケーション１０２は、デフォルトのＴＦ＊ＩＤＦ関連性は通常正しいが、我々は、クエリおよび候補検索結果の両方で生じる属性−値のペアの数に基づいて、我々自身のスコアを計算する（図１５）。我々自身のスコアは、クエリおよびレコードの両方において属性発生のない個々の値も考慮に入れる。クエリにおける発生とレコードにおける発生との間のストリングレベルの類似性およびマルチワード偏差も考慮される（マルチワード内のいくつかの単語が欠けているか、または異なる形態で発生しているか（名詞については複数、または動詞については時制など）。値に対するストリングの種類（数字またはストリング）に応じて、データベースアプリケーション１０２は、操作「=」または「like」を選択することができる。
【００７７】
図２に戻って、ブロック２０７において、プロセス２００は、マッピングされていないキーワードがあるかどうかを判断することを含む。まだマッピングされていないキーワードが存在する場合、プロセス２００はブロック２０８に続く。そうでなければ、プロセス２００はブロック２０９に続く。
【００７８】
ブロック２０８において、プロセス２００は、ユーザデバイスとあいまい性を明確にすることを伴う。当然ながら、多くの処理コンポーネントにおいて、テーブル名、フィールド名、または関係などのあいまい性が生じる。大半のＮＬ２ＳＱＬシステムのように、ＮＬクエリの最も妥当と思われる表現を見つけようとする代わりに、データベースアプリケーション１０２は、ユーザに頼って、明確化要求を介してあいまい性を解決する。我々のＮＬ２ＳＱＬシステムは、テーブル名にマッピングされるクエリフレーズをユーザに与え、可能性のあるテーブルを列挙し、明確化要求を提供する。
【００７９】
ブロック２０９において、プロセス２００は、データベースクエリを生成することを伴う。識別されたマッピングに基づいて、データベースアプリケーション１０２は、すべてのマッピングされたフィールドまたは属性を含むデータベースクエリを生成する。
【００８０】
ブロック２１０において、プロセス２００は、データベースクエリをデータベースに提供し、データベースから結果を取得し、結果をユーザデバイスに提供することを含む。データベースアプリケーション１０２は、ネイティブクエリ１５０をデータベース１９０に提供する。
【００８１】
データベースの例
図７は、本開示の一態様によるデータベースの一例を示す図である。図７は、ＮＬ２ＳＱＬで有効化されたサンプルデータベースを示す。より具体的には、図７は、データベースを、図３に示すパースツリー３００のマッチングに関連するデータベーステーブルのための関係とともに示す。図７は、（外部キーを指す「fk_」によってプレフィックス付けされる）異なるリンクによってリンクされるデータベーステーブル（例えば、「customer（顧客）」、「country（国）」、「address（住所）」）を示す。そのようなリンクの例は、fk_customer_addressおよびfk_city_countryである。ＮＬクエリ、中間ステップについてのログ、ならびに結果として得られるＳＱＬ表現およびクエリ結果の例を以下に示す。
クエリ: 'what is staff first name when her movie return date is after 2005-06-02 01:02:05(彼女の映画返却日が2005-06-02 01:02:05以降の場合のスタッフのファーストネームは何ですか)'
'[staff, first, name]'について table.field を探す
table.field = staff.first_name が見つかる
'[movie, return, date]'について table.field を探す
table.field = rental.return_date が見つかる
結果: Mike 
SQL: select staff.first_name from staff, rental where rental.return_date > '2005-06-02 01:02:05' and rental.staff_id = staff.staff_id
クエリ: 'what film title has actor's first name as Christian and category Documentary（俳優のファーストネームがChristianでカテゴリーがドキュメンタリーである映画はどのようなタイトルか）'
'[film, title]'について table.field を探す
table.field = film.title が見つかる
'[actor, first, name]'について table.field を探す
table.field = actor.first_name が見つかる
結果:  ACADEMY DINOSAUR | 
CUPBOARD SINNERS | 
MOD SECRETARY | 
PRINCESS GIANT | 
SQL: select film.title from film_category, film_actor, film, actor, category where actor.first_name  like '%Christian%' and category.name = 'documentary' and film_actor.film_id = film.film_id and film_actor.actor_id = actor.actor_id and film_actor.film_id = film.film_id and film_actor.actor_id = actor.actor_id and film_category.film_id = film.film_id and film_category.category_id = category.category_id and film_category.film_id = film.film_id and film_category.category_id = category.category_id.
クエリ: 'What is actor fist name when movie category is Documentary and special features are Behind the Scenes（映画のカテゴリーがドキュメンタリーであり特別な特徴が「舞台裏」である場合の俳優のファーストネームは何ですか）'
'[actor]'についてtable.field を探す
table.field = actor.first_name が見つかる
'[movie, category]'について table.field を探す
table ONLYによって= category.name が見つかる 
結果:  PENELOPE | 
CHRISTIAN | 
LUCILLE | 
SANDRA | 
SQL: select actor.first_name from film_category, film_actor, film, actor, category where category.name  like '%Documentary%' and film.special_features  like '%behind%the%scenes%'  and film_actor.film_id = film.film_id and film_actor.actor_id = actor.actor_id and film_actor.film_id = film.film_id and film_actor.actor_id = actor.actor_id and film_category.film_id = film.film_id and film_category.category_id = category.category_id and film_category.film_id = film.film_id and film_category.category_id = category.category_id.
ユーザデバイスは、名前に対して特定のパラメータ値を強調表示する必要はない。別の例では、クエリは、‘What is a category of film…’ と定式化されたかもしれないが、それは、ＮＬ２ＳＱＬシステムが単語 category および film によって参照されるテーブルのフィールドを判断することをより困難にするであろう。
クエリ: 'What is a film category when film title is Ace Goldfinger（映画のタイトルが Ace Goldfinger の場合、映画のカテゴリは何ですか？ ）'
'[film, category]'について table.field を探す
table.field = category.name が見つかる
'[film, title]'について table.field を探す
table.field = film.title が見つかる
結果:  
Horror | 
SQL: select category.name from film_category, film, category where film.title  like '%ACE GOLDFINGER%' and film_category.film_id = film.film_id and film_category.category_id = category.category_id
多くの場合、ＮＬクエリにおいてテーブル名への参照が言及されていない場合、データベースアプリケーション１０２は、列名に基づいてテーブル名の識別を試みる。複数のテーブルが同じ列名を有する場合、データベースアプリケーション１０２は、ユーザインターフェイスを介して明確化を求める。ユーザは、列名を有するテーブルのリストから１つのテーブルを選択する。
【００８２】
自律型エージェントのために、改善されたシソーラスを構築
データベースアプリケーション１０２は、改善されたシソーラスをカスタムインデックスとの関連で用いて、ＮＬ検索クエリ１２０のデータベースエントリへのマッチングを改善し、それにより、改善されたデータベースまたはＳＱＬクエリをもたらすことができる。自律型エージェントの関連性を改善することを意図したエンティティのシソーラスを構築するスケーラブルなメカニズムが、後に続く。シソーラス構築プロセスは、シードエンティティから始まり、これらのシードエンティティに関連付けられる新たなエンティティのために利用可能なソースドメインをマイニングする。新たなエンティティは、構文パースツリーの機械学習（それらの一般化）を既存のエンティティに対する検索結果に適用してそれらの間に共通性を形成することによって、形成される。次いで、これらの共通性表現は、既存のエンティティのパラメータを形成し、次の学習反復において新たなエンティティに転換される。ソースドメインとターゲットドメインとの間で自然言語表現をマッチさせるために、構文一般化、すなわち、これらの表現の構成性パースツリーの最大共通サブツリーのセットを見つける演算を用いる。
【００８３】
シソーラスおよび構文一般化は、検索およびテキスト類似性評価における関連性改善に適用される。我々は、垂直ドメインおよび水平ドメインにおける検索関連性改善の評価を行い、前者における学習されたシソーラスの顕著な寄与、および後者のドメインにおけるハイブリッドシステムの顕著な寄与を見た。我々はまた、シソーラスおよび構文一般化に基づくテキスト関連性評価の産業的評価を行い、自動化されたシソーラス学習のための提案されたアルゴリズムが産業システムへの統合に適していると結論付けた。
【００８４】
現代の検索エンジンおよびテキスト関連性システムを設計する際、特に垂直ドメインにおいて精度を改善するためにシソーラスの役割を過剰評価することは困難である。シソーラス、シソーラスおよび概念階層は、情報検索（ＩＲ）、自然言語処理（ＮＬＰ）および知識管理の多くのアプリケーションにとって重要な構成要素である（Cimiano et al 2004）。しかしながら、シソーラスおよびオントロジーを構築し、調整し、管理することは、多くの手動操作が必要であるため、かなり費用がかかる。多数の研究が、マルチエージェント設定を含む、言語資源および／または統計的機械学習に基づくシソーラスの自動化された構築を提案した（Kerschberg et al 2003, Roth 2006, Kozareva et al, 2009, Sanchez and Moreno 2008, Sanchez 2010）。
【００８５】
自動化されたシソーラスマイニングに対する現在のアプローチの大半は、結果として生じる検索の不十分な精度、現実のユーザのクエリの表現の限られた表現性、または言語資源の手動構築もしくは編集に関連付けられる高いコスト、ならびにそれらの限られた調整可能性のために、産業的用途を見出していない。この研究では、フルスケールの構文解析、その結果の機械学習、および検索エンジンに基づくウェブマイニングを利用して、産業品質のシソーラスを構築および評価する。提案されるシソーラス学習アルゴリズムは、垂直検索関連性を改善することを目的とし、多くの検索関連タスクにおいて評価されるであろう。シソーラスツリーを構築する際の主な課題は、シソーラスツリーを、より長い関係の連鎖を組み込むためにできるだけ深くすることであり、したがって、より具体的でより複雑な質問に解答することができる。
【００８６】
開示された解決策は：関連性ありおよび関連性なしの解答の確定的分類のためにシソーラスツリーを用いるためのメカニズムを実現し；キーエンティティのシードを仮定して、垂直ドメインに対するそのようなシソーラスの構築を自動化するアルゴリズムを実現し；パースツリーに基づいてテキスト間の共通性／類似性を見つけるために、ドメインから独立した言語エンジンを設計する。
【００８７】
Galitsky et al 2012は、センテンスのペアに対する構文一般化の操作を導入してそれらの類似性を測定し、我々は、検索におけるこの操作の適用を記載する。（Galitsky 2012）では、我々は、情報検索およびテキスト分類におけるアプリケーションを提示し、（Galitsky et al 2012）では、我々は、パラグラフのペアについて一般化操作を導入した。この研究において、我々は、構文一般化に依拠して、シソーラスを構築し、それらを検索時に適用する。我々はセクション４において構文一般化操作を簡単に紹介する。
【００８８】
我々のシソーラス構築アルゴリズムは、抽出された関係の精度および再現度を最適化するオントロジーマイニング方法の大半とは異なり、検索関連性改善に焦点を当てている。したがって、本研究における評価は、検索精度の改善に関するアルゴリズムの性能を評価し、構築されたシソーラスの品質は評価しない。従って、我々は、検索性能によって駆動されたシソーラス学習アルゴリズムは、関係の大部分または最も正確な関係に焦点を当てたアルゴリズムを凌駕することを期待する。我々の評価は、垂直検索および水平検索ならびに産業環境においてテキスト類似性評価で行われる。
【００８９】
シソーラス構築は、転移学習パラダイムの観点からアプローチされる（Raina et al. 2006, Pan and Yang 2010）。我々は、シソーラスを垂直ドメインで機能するように構築するが、それを構築するにはウェブマイニング用の水平ドメインが必要である。チャットボット用のシソーラスの構築では、転移学習により、幅広いウェブドメイン（補助的）のための知識を抽出し、ターゲットドメインでのシソーラスベースの検索を強化できる。転移学習が成功するためには、フレーズ間のマッピングが明白でなくても、補助ドメインおよびターゲットドメインにおけるフレーズ間の類似度を計算することが重要となる。この目的のために、我々は、構文一般化を、bag-of-wordsアプローチの拡張として用いる。ここで、構造化された知識レベルで転移学習を可能にするために、センテンス間の構造的類似性を見つけるための新規な方法を紹介する。特に、我々は、２つの異なるドメインの語彙が完全に異なる場合に、２つの異なるドメインにおけるフレーズ間の瑣末でない構造上の（意味論的）類似性マッピングをどのように学習するかの問題に対処する。
【００９０】
図８は、本開示の一態様による、転移学習の観点から見た、シソーラスにより支援される検索を示す。
【００９１】
垂直ドメイン用のシソーラスを構築する場合、通常、この垂直ドメインのみにおいてウェブ文書をマイニングすることは十分ではない。さらに、ターゲットドメインがソーシャルネットワークデータまたはマイクロテキストを含む場合、通常、ドメイン内においてシソーラスを構築するのに十分なそのようなデータを見つけるのは困難であり、結果として、同様の語彙でより広範なドメインのセットをマイニングする転移学習方法論が必要とされる。次いで、転移学習は、別個のドメインからの構文表現をマッチングすることによってサポートされなければならない。この研究では、我々は、構成性パースツリーのレベルで転移学習を実行する。
【００９２】
DBPEdia、Freebase、およびYagoなど、現在利用可能な多くの汎用リソースは、エンティティ関連検索を支援するが、エンティティおよびその複数のパラメータで特定のアクティビティに関連する無関係な解答をフィルタリングにより除去するには不十分である。アーチストのためのlast.fmのような垂直オントロジーのセットも、垂直ドメインにおけるエンティティベースの検索に有用であるが、それらのシソーラスツリーはかなり浅く、無関係な解答を認識するためのそれらの有用性は限られている。
【００９３】
この研究では、所与の垂直知識ドメインに対する主要なエンティティの初期セット（シード）に基づく自動化されたシソーラス構築メカニズムを提案する。次いで、このシードは、現在のシソーラスノードの意味を含むウェブ文書のマイニングによって自動的に拡張される。このノードは、これらの文書間の共通性を誘導的に学習した結果であるエンティティによってさらに拡張される。これらの共通性は、現在のシソーラスノードについて得られた文書のセットの構文パースツリーの共通部分を見つける構文一般化の操作を用いて抽出される。構文一般化は、テキスト関連性を改善するために商業的に広範に評価されてきたが（Galitsky et al 2010, Galitsky et al 2011）、この研究において、我々は、それを、シソーラスの自動化された構築のための転移学習設定にも適用する。
【００９４】
解析から意味論的レベルへの進展は、自然言語理解に向けた重要なタスクであり、情報抽出および質問応答のようなタスクにおいて即時的な応用を有する（Allen 1987, Ravichandran and Hovy 2002, Dzikovska 2005, Wang et al 2009）。この１０年で、計算言語学において、文法および知識ベースを手動で構築することから、大きな注釈付きまたは非注釈付き自然言語コーパス上でトレーニングされた統計学的学習方法を用いて、このプロセスを部分的または完全に自動化することへの劇的なシフトがあった。しかしながら、このようなコーパスを用いる代わりに、本明細書では、共通クエリについてのウェブ検索結果を用い、なぜならば、それらは、正確性が高く、税金のような特定のドメイン知識に関して学術的言語資源よりも最新であるためである。
【００９５】
検索関連性を改善するための意味論的有効化検索エンジンの価値は、商業的検索エンジン界によってよく理解されている（Heddon 2008）。垂直ドメインにおいて重要なエンティティのすべてを適切にカバーする「理想的な」シソーラスが利用可能になると、それは無関係な解答のフィルタリングによる除去に直接適用され得る。この分野における技術水準は、現実世界のシソーラスを検索関連性改善に適用する方法であるが、このシソーラスはウェブから自動的にコンパイルされ、したがって理想的であることからは遠い。軽量のキーワードベースのアプローチはこの問題に十分に対処できないことは明らかとなっている。本明細書では、トレーニングセットのソースとしてのウェブマイニングと学習ツールとしての構文一般化とを組み合わせることによって、この問題に対処する。
【００９６】
オントロジーをマイニングすることとシソーラスをマイニングすることとの間の関係に注目することは価値がある。オントロジー学習は、サブステップ、例えば、
・語彙的エンティティ抽出および概念抽出；
・検索に必須であり本研究の対象であるシソーラス抽出；
・発見された非分類学的関係が、知識エンジニアによってラベル付けされ、オントロジーの一部となる、非分類学的表現抽出。
【００９７】
提案されるアプローチは、'Company'（会社）という概念と 'Product'（製品）という概念との間の複数の関係がテキストデータにおいて検出されると、自動的に複数のツリー経路を形成し、複数の解釈が生じ、会社は、製品を生産するだけでなく、製品を販売、消費、広告、および促進するかもしれない。
【００９８】
現在の転移学習ベースのアプローチは、テキストにおいて名前を付けられていない関係を探すタスクの間に位置付けることができ、センテンス構造に対する限られた注意での共起分析が用いられ、結果は頻度測定を介してフィルタリングされる。我々は、全センテンス構造の系統的学習、およびbag-of-wordsモデルを用いる代わりに関係についてパースツリーをマイニングすることによって、このアプローチを改善する。
【００９９】
シソーラスによるエージェント関連性の改善
自然言語またはキーワードベースの質問に解答するためには、この質問が何についてであるかを「理解する」ことが有益である。この章の意味において、この「理解すること」は、キーワードの選好的処理である。我々は、以下の、キーワードのセットとその要素 is-about（についてである）(set-of-keywords, keyword)との間の関係の定義を用いる。
【０１００】
キーワード{a b c}を有するクエリの場合、クエリ{a b}および{b c}が関連性があるかまたはわずかに関連性があり、{a c}が無関係である場合、クエリは b についてであることが理解される。かなり狭い我々のクエリ理解の定義は、クエリ中のどのキーワードが必須であるか（上記の例では b など）を、それらなしでは他のクエリの語が無意味になるような方法で言及する能力であり、b を含まない解答は、b を含むクエリとは無関係である。
【０１０１】
例えば、キーワード {computer, vision, technology} のセットにおいて、{computer, vision}、{vision, technology} は関連性があり、{computer, technology} はそうではなく、結果として、クエリは{vision}に関する。なお、キーワードのセットが名詞句または動詞句を形成する場合、その先頭またはその動詞が、この順序付けられたセットが関するキーワードであることを、必ずしも意味しない。さらに、単語がエンティティを形成するとき、単語をフレーズにグループ化することができることに留意されたい：
is-about({vision, bill, gates}, O); 一方で、
is-about({vision, bill-gates, in- computing}, {bill-gates})。
キーワードのセットは、それが is-about の右側で起こる場合、必須であると言及する。
【０１０２】
後者の観察を適切に形式化するために、我々は、 is-about 関係を、キーワードのセットとそのサブセットとの間の関係に一般化する。クエリ {a b c d} の場合、b が必須である場合には(is-about({a b c d}, {b})、{a b c}, {b c d}, {b c} が関連性があり、さらに {a b}, {b d} が（周辺的に）関連性があるように b がクエリ内にあるときには、 c も必須であり得る。しかしながら、{a d} はそうではない（is-about({a b c d}, {b,c}）。
【０１０３】
シソーラスは、クエリ理解をサポートすることを求められる。シソーラスは、is-about 関係を介したクエリ理解の上記概念に基づいて、クエリと解答との間の特定のマッチが関連性があるか否かの評価を容易にする。したがって、クエリ q = {a b c d } ならびに２つの解答（スニペット）{b c d ... e f g} および {a c d ... e f g} について、前者は関連性があり、後者はない。シソーラスは、この明細書の意味において、相互接続されたis-about関係のセットのツリーコード化と見なすことができる。
【０１０４】
キーワードのセットの論理的プロパティおよびクエリの意味を表す論理形式が（Galitsky 2003）において調査されている。デフォルト推論によってキーワードの相対的重要度を扱う系統的な方法があり（Galitsky 2005）、キーワード組み合わせの複数の意味が、デフォルト論理の操作的意味論によって表される。
【０１０５】
シソーラスを用いて関連性を達成することは、従来のＴＦ＊ＩＤＦベースの検索と比較して全く異なるメカニズムに基づく。後者の場合、語の重要度は発生頻度に基づく。ＮＬクエリ（ブールクエリではない）の場合、任意の語について、残りの語が受容可能な関連性スコアを与える場合、当該任意の語を検索結果において省略することができる。ブールクエリの場合、このステートメントは、その論理積メンバーの各々について真である。シソーラスベースの検索では、我々は、どの語が解答において発生すべきか、およびどの語がそこで発生すべきかを知っており、そうでない場合には、検索結果は無関係となる。
【０１０６】
シソーラスベースの解答選択
無関係な解答をフィルタリングにより除去するためにシソーラスを用いるために、我々は、所与の質問からのエンティティの数に関して、この質問に最も近いシソーラス経路（可能な場合にはリーフノードまで）を探す。次いで、この経路およびリーフノードは、質問の意味を最も正確に特定し、どのエンティティが生じなければならないか、およびどれが解答において生じるべきかを、関連性があると考慮されるよう制約する。質問からのｎ番目のノードエンティティが解答において生じる場合、すべてのｋ＜ｎ個のエンティティも同様に解答において生ずるべきである。
【０１０７】
シソーラス支援検索については、以下の２つの条件を用いる：
・受容性条件。これは、シソーラス経路に存在するクエリからの必須単語のすべてが解答内にもあることを検証する。
・最大関連性条件。これは、シソーラス経路内に存在し解答内にあるクエリからの単語を見つける。次いで、それは、発見された必須キーワードおよび他のキーワードの数に基づいてスコアを計算する。
【０１０８】
検索アプリケーションの大半については、受容性条件は、最大関連性条件よりも適用しやすい：解答 ai∈A は、それが、シソーラス経路 Tp∈T においてみられるように、質問Qからの（is_aboutに従って）必須のキーワードのすべてを含む場合、受容可能である。質問qをカバーする任意のシソーラス経路Tpの場合（それらのキーワードの交差が空ではない）、これらの交差キーワードは受容可能な解答aiに含まれなければならない。
【０１０９】
【数２】
2021530818.tif 000004
【０１１０】
最良の解答（最も正確である）については、我々は以下のように書く：
【０１１１】
【数３】
2021530818.tif 000005
【０１１２】
シソーラスに基づく関連性スコアは、濃度(ai∩( Tp ∩ q)の値として定義することができ、それは q をカバーするすべてのTpについて計算される。そして、最良の解答
スコア(abest) = max{ai}Tp(濃度(ai∩( Tp ∩ q))が、解答Aのすべてに対するスコアの中から見出される。シソーラスに基づくスコアは、検索エンジンアーキテクチャに応じて、他のスコア、例えば、ＴＦ＊ＩＤＦ、時間的／崩壊パラメータ、位置距離、価格設定、言語学的類似性、および結果として得られるランク付けのための他のスコアと組み合わせることができる。我々の評価では、このスコアを言語学的類似性スコアと組み合わせる。
【０１１３】
センテンス（キーワードのセット）s およびシソーラスパス Tp の場合、s ∩ Tp は、シソーラス T における経路 Tp のラベルであるキーワードのセットを見出す操作である。一般に、所与の質問 q をカバーする多数のシソーラス経路があり、s ∩ Tp の各結果は質問と交差しなければならない。所与のクエリ q をカバーする複数の経路を有することは、このクエリがこのドメインにおいて複数の意味を有することを意味し、各そのような意味について、受容可能な解答の別のセットが予想される。
【０１１４】
したがって、読み手は、シソーラスが is about 関係の計算をサポートするように設計されていることがわかる。クエリ q およびシソーラス G が与えられると、経路 Tpは、is_about(q, Tp ∩ q)であるような態様で見出される。
【０１１５】
以下のクエリのシソーラスの例を考える：‘How can tax deduction be decreased by ignoring office expenses（事務費を無視して税金控除を減らすにはどうすればよいか ）’, q = {how, can, tax, deduct(ion), decreas(ed)-by, ignor(ing), office, expense} および A = {
a1= {deduct, tax, business, expense, while, decreas(ing), holiday, travel, away, from, office}, 
a2= {pay, decreas(ed), sales-tax, return, trip, from, office, to, holiday, no, deduct(ion)},
a3= {when, file, tax, return, deduct, decrease-by, not, calculate, office, expense, and, employee, expense}}. 
我々の例においてはトークン化および単語形態正規化問題を考慮せず、便宜的に括弧内で終わりを示す。なお、キーワードの重複に関して、a1, a2 および a3 は、いずれも良好な解答のように見える。
【０１１６】
q については、我々はこのクエリを Tp = {<tax> - <deduct> - < decrease-by>-<office-expense>} でカバーする。各解答についてシソーラススコアを計算する：
スコア(a1) = 濃度(a1 ∩( Tp ∩ q)) = 濃度({tax, deduct}) = 2;
スコア(a2) = 濃度({tax, deduct, sales_tax}) = 3;
スコア(a3) = 濃度({tax, deduct, decrease-by, office-expense}) = 3;この解答は、受容性基準に合格する唯一の解答であることに留意されたい。
【０１１７】
我々の次の例は、あいまい性除去問題に関する。質問 q ＝"When can I file an extension for the time for my tax return?（確定申告の期限の延長はいつ提出できますか？）" について、以下の２つの解答を想定する：
a1 = "You must file form 1234 to request a 4 month extension of time to file your tax return（確定申告書を提出するための４か月の期間延長を要求するには、フォーム1234を提出する必要があります。）"
a2= "You must download a file with the extension 'pdf', complete it, and print it to do your taxes（税金を支払うには、拡張子が「pdf」のファイルをダウンロードして完成させ、印刷する必要があります。 ）"。
【０１１８】
図９は、本開示の一態様による、シソーラスのスナップショットの一例を示す。例えば、図９は、「tax（税金）」と「deduct（控除）」との間の関係のような様々な関係を示す。最も近いシソーラス経路は以下のように予想される：
Tp= {<tax> -< file>-<return> -< extension-of-time>}
ここで、tax は主要なエンティティであり、file および return はシード内にあると予想され、extension-of-time は学習されたエンティティであろう；その結果として、a1 はシソーラスとマッチし、受容可能な解答であり、a2 はそうではない。シソーラスを表す別の方法は、それがツリー（最も一般的でない）となるように実施するのではなく、代わりに各ラベルに対して単一のノードだけを許可することである。
【０１１９】
シソーラスベースの関連性検証プロセス
ある例示的なプロセスは、クエリ q を受信し、（このアルゴリズムの外で）検索を実行し、候補解答のセットａを取得し、先のセクションで我々が導入した定義に従って最良の受容可能な解答を見つける。
入力：クエリ q
出力：最良の解答 abest
１）クエリ q について、利用可能な手段（キーワードを用いるか、内部インデックスを用いるか、または検索エンジンＡＰＩの外部インデックスを用いる）によって候補解答Ａのセットを得る；
２）シソーラス Tp において 、q において最大の語をカバーする経路を、q をカバーする他の経路と共に見つけて、セット P = {Tp}を形成する。
受容可能な解答が見出されなければ、
３）セット Tp ∩ q を計算する。
各解答 ai∈A について
４）ai∩( Tp ∩ q))を計算し、受容性基準を適用する。
５）各 aiについてスコアを計算する。
６）最良の解答 abest および受容可能な解答 Aa のセットを計算する。
【０１２０】
受容可能な解答が見つからない場合には、P からの次の経路のために２に戻る。
７）入手可能な場合には、abest および受容可能な解答 Aa のセットを返す。
【０１２１】
学習およびウェブマイニングのプロセスとしてのシソーラス構築
ウェブ上の自動化された学習シソーラスの我々の主な仮説は、所与のエンティティのセットに対する検索結果間の共通の表現がこれらのエンティティのパラメータを与えることである。シソーラスの形成は、シードシソーラスエンティティのセットが与えられると、教師なし学習スタイルに従う。このアプローチは、乳児が新たな環境を探索し、新たな規則を形成する、人間発達プロセスと見なすことができる。規則の初期セットは遺伝的に設定され、学習プロセスは、これらの規則を特定の習慣性環境に調整することにより、それらの規則をより感度のよいものにする（したがって、より有益な判断を可能にする）。新たな規則がそれらの適用プロセスの間に受け入れられているか、または拒絶されているので、新たな環境への曝露は、新たな特定の規則の形成を容易にする。新たな、より複雑な規則が評価され、これらの新しく形成された規則のある部分が受け入れられた後、環境の追加の固有性に適合するために、規則の複雑さがより大きくなる。
【０１２２】
我々は、同様の学習設定において我々のシソーラスを拡張するために新たなエンティティを学習する。シソーラス学習プロセスは、反復的であり：各新たな学習ステップにおいて、現在終端しているノードに新たなエッジを追加する。所与のドメインの主要なエンティティのうちのいくつか、およびこれらのエンティティといくつかのドメイン判断エンティティとの関係を列挙するシードシソーラスから始まる。例えば、tax ドメインのシードは、以下の関係：
tax-deduct（税金控除）  tax-on-income（所得税）  tax-on-property（固定資産税）,
を含むことになり、tax はドメイン判断エンティティであり、{deduct, income, property} はこのドメインにおける主要なエンティティである。シソーラス学習の目的は、tax - deduct のような既存のエンティティのさらなるパラメータを取得することである。次の学習の反復において、これらのパラメータは、sales-tax, 401kn のような新たなパラメータのセットが学習されることを可能にするために、エンティティに変換される。
【０１２３】
各学習反復は、ウェブマイニングに基づく。所与のツリーリーフ（現在のエンティティ）のセットに対するパラメータを見つけるために、ウェブに進んで、現在のツリー経路に対して形成されるクエリに対する検索結果（スニペット）間の共通の表現を検索する。上記の例では、tax-deduct, tax-on-income, およびtax-on-property を検索し、検索結果間で共通の単語および表現を抽出する。共通の単語は、複数の検索結果において生ずる、単一の動詞、名詞、形容詞、さらには、前置詞句または複数単語、加えて前置詞句、名詞句、および動詞句である。セクション４では、検索結果の間の共通表現を抽出し、現在のエンティティ（シソーラスリーフ）の新たなセットを形成する方法を説明する。
【０１２４】
そのような共通単語および複数単語が識別された後、それらは新たなエンティティとして既存のエンティティのリストに追加される。例えば、経路tax - deduct の場合、新たに学習されたエンティティは、以下のようになり得る：
tax - deduct → decrease-by  tax - deduct → of-income
tax - deduct → property-of  tax - deduct → business
tax - deduct → medical-expense
ここでのフォーマットは、existing_entity → its parameter (to become a new_entity)であり;
ここで、「→」 は、現在の学習ステップでのシソーラス拡張の、ラベルのないエッジ である。
【０１２５】
次に、シソーラスツリーにおける経路 tax - deduct から、５つの新たな経路を得る。次のステップは、シソーラスツリーの新たなリーフのセットにおける各経路のパラメータを収集することである。我々の例では、５つのクエリを実行し、それらの各々についてパラメータを抽出する。結果は以下と類似することになる：
tax-deduct-decrease-by → sales
tax-deduct-decrease-by →401-K
tax-deduct-decrease-by → medical
tax-deduct - of-income  →rental
tax-deduct - of-income → itemized
tax-deduct - of-income → mutual-funds
例えば、tax-deduct-decrease についてウェブを検索することにより、税金控除に関連付けられ、通常は「売上税」の意味を伴う、エンティティsales-tax の発見が可能になる。スニペット間の共通性は、税金控除を計算する一方で売上税を斟酌するべきであること、およびそれを減らすであろう何かをしないことを示す。
【０１２６】
したがって、シソーラスは、反復モードでウェブ検索結果から誘導学習を介して構築される。シソーラスシードノードから始まり、次いで、現在利用可能なグラフ経路のすべてに対するウェブ検索結果を見つける。次に、これらの検索結果において見出される各共通性について、シソーラス経路の各々を、それぞれのリーフノードを加えることによって、拡張する。換言すれば、反復ごとに、現在利用可能なエンティティの各セットに対するパラメータのリストを発見し、次いで、これらのパラメータを次の反復のためにエンティティに変換する。
【０１２７】
シソーラスシードは、手動で作られるか、または利用可能なドメイン固有リソースからコンパイルされ得る。シードシソーラスは、シソーラス成長プロセスが意味のある開始を有することを可能にするために、少なくとも２〜３個のノードを含むべきである。シソーラスシードは、例えば、税金エンティティのインベストペディアのような、所与の垂直ドメインについて容易に利用可能な、特定の知識ドメインのグロッサリーを含むことができる。
【０１２８】
図１０は、本開示の一態様による、例示的な検索結果を示す。
シソーラス構築アルゴリズム
シソーラスをその終端ノードとともに取り、それら終端ノードをウェブマイニングを介して拡張して新たな終端ノードのセットを取得することを試みる反復アルゴリズムを概説する。反復k で、現在の終端ノード ti を tik1 , tik2 …で拡張することにより、ノードのセットを取得する。このアルゴリズムは、２つのテキストをシーケンス<lemma(word), part-of-speech> として取り、この形式で最も一般的でないテキストのセットを提供する、一般化の操作に基づいている。反復ステップを概説する。
入力：終端ノード {t1 ,t2 … tn} を有するシソーラスTk
Tkに含めるのに十分な証拠を提供する発生回数の閾値：th(k, T)。
出力：終端ノード {t1k1 , t1k2, …, t2k1, t2k2 , … tnk1, tnk2 } を有する拡張されたシソーラス Tk+1 
各終端ノード ti について、
１）ルートから ti への経路として検索クエリ q = { troot, …, ti} を形成する；
２）q についてウェブ検索を実行し、解答（スニペット）Aq の組を得る。
３）解答 Aq に対するペア単位一般化（セクション４）を計算する：
Λ(Aq)= a1 ^a2 , a1 ^a3, …, a1 ^am, …, …, am-1^am,
４）Λ(Aq)のすべての要素（単語、フレーズ）を、Λ(Aq)における出現数が多い順にソートする。出現数が閾値th(k, T)を超えるΛ(Aq)の要素だけを保持する。このセットを Λhigh(Aq)と呼ぶ。
５）既存のシソーラスノードのすべてからのラベルを Λhigh(Aq)から減算する：
Λnew (Aq) = Λhigh(Aq)/Tk。
６）Λhigh(Aq)の各要素について、シソーラスノード tihk を生成し、ここで、h∈Λhigh(Aq)であり、k は現在の反復数であり、Tk にシソーラスエッジ (ti, , tihk,)を追加する。
【０１２９】
th(k, T)のデフォルト値は２である。しかしながら、各反復において所与の終端ノードにいくつのノードが追加されるかに関しては経験的な制限がある。この制限は、反復あたり５ノードであり；結果として、我々は、別個の検索結果において最も高い５つの、語の出現数をとる。この制約は、学習されているシソーラスのツリートポロジーを維持するのに役立つ。
【０１３０】
反復ステップのアルゴリズムが与えられて、これを第１のステップにおいて主要エンティティのセットに適用して、全体のシソーラスを構築する：
入力：主要ノードである {t1 ,t2 … tn} を有するシソーラス To
出力：終端ノードを有する結果シソーラスT
k を通して反復する
反復ステップを k に適用する
Tk+1が追加すべきノードの空集合を有する場合、停止する。
【０１３１】
シソーラス学習セッションの例
次に、上述のアルゴリズムを説明する。シード表現 tax-deduct を有すると想定する。
【０１３２】
図１１は、本開示の一態様によるシソーラス学習を示す。
図１２は、本開示の一態様によるシソーラス学習を示す。
【０１３３】
以下の４つのステップを実行する：
１）現在利用可能な表現の検索結果を得る。
２）言語学的出現に基づいて属性を選択する。
出現数は、特定の閾値を超える（および２を超える）べきである。
３）共通属性（「overlook（看過する）」のような、濃い灰色で強調された、検索結果間の共通性）を見つける。
４）新たに取得された属性を追加することによってシソーラス経路を拡張する。
ここで、学習ステップは、以下のとおりである：
１）「tax deduct overlook（税金控除看過）」についての検索結果を得る；
２）属性（現在のシソーラス経路からのエンティティの修飾子）を選択する 
３）この場合、「PRP-mortgage（PRP-住宅ローン）」などの共通表現を見つける 
４）新しく取得した属性を追加することにより、シソーラス経路を拡張する
Tax-deduct-overlook - mortgage, 
Tax-deduct- overlook - no_itemize。
【０１３４】
図１３は、本開示の一態様によるシソーラス学習を示す。
十分なシソーラスを構築した後、ここで、それを適用して、シソーラス経路を適切にカバーしない検索結果をフィルタリングにより除去することができる。「can I deduct tax on mortgage escrow account（住宅ローンのエスクロー口座の税金を控除することはできますか ）」というクエリの場合、以下のヒットを得るが、それらのうちの２つは無関係であり（長円形枠内に示される）、なぜならば、それらはシソーラスノード {deduct, tax , mortgage, escrow_account} を含まないからである。クエリに最も近いシソーラス経路は、tax - deduct - overlook-mortgage- escrow_account であることに注目されたい。
【０１３５】
シソーラススナップショット
Sell_hobby=>[[deductions, collection], [making, collection], [sales, business, collection], [collectibles, collection], [loss, hobby, collection],  [item, collection], [selling, business, collection], [pay, collection], [stamp, collection], [deduction, collection],  [car, collection],  [sell, business, collection], [loss, collection]]
benefit=>[[office, child, parent], [credit, child, parent], [credits, child, parent], [support, child, parent], [making, child, parent],  [income, child, parent], [resides, child, parent],  [taxpayer, child, parent], [passed, child, parent], [claiming, child, parent], [exclusion, child, parent], [surviving, benefits, child, parent], [reporting, child, parent], 
hardship=>[[apply, undue], [taxpayer, undue], [irs, undue], [help, undue], [deductions, undue], [credits, undue], [cause, undue],  [means, required, undue], [court, undue]。
税金トピックエンティティ sell hobby, benefit, hardship についての３つの経路のセット
各エンティティについて、キーワードのシーケンスが与えられると、読み手は、税金ドメインの文脈における意味を再構築することができる。このスナップショットは、シソーラスベースの検索関連性改善の概念を示し：いったん特定の意味（内容、我々のモデルにおいてはシソーラス経路）が確立されると、関連する解答を見つけることができる。表現の先頭は、それがもたらすすべての経路において生ずる（例えば、{sell_hobby - deductions - collection}, {sell_hobby - making - collection}）。
【０１３６】
図１４は、上記局面のうちの１つを実現するための分散型システム１４００を示す簡略図である。例示された局面においては、分散型システム１４００は、１つ以上のネットワーク１４１０を介して、ウェブブラウザ、プロプライエタリクライアント（たとえばオラクルフォーム）などのクライアントアプリケーションを実行して動作させるように構成される１つ以上のクライアントコンピューティングデバイス１４０２、１４０４、１４０６および１４０８を含む。サーバ１４１２は、ネットワーク１４１０を介してリモートクライアントコンピューティングデバイス１４０２、１４０４、１４０６および１４０８と通信可能に結合されてもよい。
【０１３７】
さまざまな局面においては、サーバ８１２は、システムの構成要素のうち１つ以上によって提供される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。サービスまたはソフトウェアアプリケーションは非仮想環境および仮想環境を含み得る。仮想環境は、２次元または３次元（three-dimensional：３Ｄ）表現、ページベースの論理的環境などであろうとなかろうと、仮想イベント、トレードショー、シミュレータ、クラスルーム、購買商品取引および企業活動のために用いられるものを含み得る。いくつかの局面においては、これらのサービスは、ウェブベースのサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）モデルのもとで、クライアントコンピューティングデバイス１４０２，１４０４，１４０６および／または１４０８のユーザに供給されてもよい。そして、クライアントコンピューティングデバイス１４０２，１４０４，１４０６および／または１４０８を動作させるユーザは、１つ以上のクライアントアプリケーションを利用して、サーバ１４１２と相互作用して、これらの構成要素によって提供されるサービスを利用し得る。
【０１３８】
図に示されている構成では、システム１４００のソフトウェアコンポーネント１４１８，１４２０および１４２２は、サーバ８１２上に実装されるように示されている。また、他の局面においては、分散システム１４００の構成要素のうちの１つ以上および／またはこれらの構成要素によって提供されるサービスは、クライアントコンピューティングデバイス１４０２，１４０４，１４０６および／または１４０８のうちの１つ以上によって実現されてもよい。その場合、クライアントコンピューティングデバイスを動作させるユーザは、１つ以上のクライアントアプリケーションを利用して、これらの構成要素によって提供されるサービスを使用し得る。これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。分散型システム１４００とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるべきである。したがって、図に示されている局面は、局面のシステムを実現するための分散型システムの一例であり、限定的であるよう意図されたものではない。
【０１３９】
クライアントコンピューティングデバイス１４０２，１４０４，１４０６および／または１４０８は、手持ち式携帯機器（たとえばｉＰｈｏｎｅ（登録商標）、携帯電話、ｉＰａｄ（登録商標）、計算タブレット、パーソナルデジタルアシスタント（personal digital assistant：ＰＤＡ））またはウェアラブル装置（たとえばグーグルグラス（登録商標）ヘッドマウントディスプレイ）であってもよく、当該装置は、マイクロソフト・ウィンドウズ（登録商標）・モバイル（登録商標）などのソフトウェアを実行し、および／または、ｉＯＳ、ウィンドウズ・フォン、アンドロイド（登録商標）、ブラックベリー１０、パームＯＳなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、ｅメール、ショート・メッセージ・サービス（short message service：ＳＭＳ）、ブラックベリー（登録商標）、または使用可能な他の通信プロトコルである。クライアントコンピューティングデバイスは、汎用パーソナルコンピュータであってもよく、当該汎用パーソナルコンピュータは、一例として、マイクロソフトウィンドウズ（登録商標）、アップルマッキントッシュ（登録商標）および／またはリナックス（登録商標）オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび／またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、ワークステーションコンピュータであってもよく、当該ワークステーションコンピュータは、たとえばＧｏｏｇｌｅ  Ｃｈｒｏｍｅ  ＯＳなどのさまざまなＧＮＵ／リナックスオペレーティングシステムを含むがこれらに限定されるものではないさまざまな市販のＵＮＩＸ（登録商標）またはＵＮＩＸライクオペレーティングシステムのうちのいずれかを実行する。代替的には、または付加的には、クライアントコンピューティングデバイス１４０２，１４０４，１４０６および１４０８は、シン・クライアントコンピュータ、インターネットにより可能なゲーミングシステム（たとえばキネクト（登録商標）ジェスチャ入力装置を備えるかまたは備えないマイクロソフトＸボックスゲーム機）、および／または、ネットワーク１４１０を介して通信が可能なパーソナルメッセージング装置などのその他の電子装置であってもよい。
【０１４０】
例示的な分散型システム１４００は、４個のクライアントコンピューティングデバイスを有するように示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを有する装置などの他の装置が、サーバ１４１２と相互作用してもよい。
【０１４１】
分散型システム１４００におけるネットワーク１４１０は、さまざまな市販のプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者になじみのある任意のタイプのネットワークであってもよく、当該プロトコルは、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）、ＳＮＡ（システムネットワークアーキテクチャ）、ＩＰＸ（インターネットパケット交換）、アップルトークなどを含むが、これらに限定されるものではない。単に一例として、ネットワーク１４１０は、イーサネット（登録商標）、トークンリングなどに基づくものなどのローカルエリアネットワーク（ＬＡＮ）であってもよい。ネットワーク１４１０は、広域ネットワークおよびインターネットであってもよい。ネットワーク１４１０は、仮想ネットワークを含んでいてもよく、当該仮想ネットワークは、仮想プライベートネットワーク（virtual private network：ＶＰＮ）、イントラネット、エクストラネット、公衆交換電話網（public switched telephone network：ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば米国電気電子学会（Institute of Electrical and Electronics：ＩＥＥＥ）８０２．１４の一連のプロトコル、ブルートゥース（登録商標）および／またはその他の無線プロトコルのうちのいずれかのもとで動作するネットワーク）、および／またはこれらの任意の組合せ、および／または他のネットワークを含むが、これらに限定されるものではない。
【０１４２】
サーバ１４１２は、１つ以上の汎用コンピュータ、専用サーバコンピュータ（一例として、ＰＣ（パーソナルコンピュータ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式サーバなどを含む）、サーバファーム、サーバクラスタ、またはその他の適切な構成および／または組合せで構成され得る。サーバ１４１２は、仮想オペレーティングシステムを実行する１つ以上の仮想マシン、または仮想化を含む他のコンピューティングアーキテクチャを含み得る。論理記憶装置の１つ以上のフレキシブルプールは、サーバのための仮想記憶デバイスを維持するように仮想化することができる。仮想ネットワークは、ソフトウェア定義型ネットワーキングを用いて、サーバ１４１２によって制御することができる。さまざまな局面においては、サーバ１４１２は、上記の開示に記載されている１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。たとえば、サーバ１４１２は、本開示の局面に係る上記の処理を実行するためのサーバに対応してもよい。
【０１４３】
サーバ１４１２は、上記のもののうちのいずれか、および、任意の市販のサーバオペレーティングシステムを含むオペレーティングシステムを実行し得る。また、サーバ１４１２は、ハイパーテキスト転送プロトコル（hypertext transport protocol：ＨＴＴＰ）サーバ、ファイル転送プロトコル（file transfer protocol：ＦＴＰ）サーバ、共通ゲートウェイインターフェース（common gateway interface：ＣＧＩ）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含むさまざまな付加的サーバアプリケーションおよび／または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、オラクル社（Oracle）、マイクロソフト社（Microsoft）、サイベース社（Sybase）、ＩＢＭ社（International Business Machines）などから市販されているものを含むが、これらに限定されるものではない。
【０１４４】
いくつかの実現例では、サーバ１４１２は、クライアントコンピューティングデバイス８０２，８０４，８０６および８０８のユーザから受取ったデータフィードおよび／またはイベント更新を分析および統合するための１つ以上のアプリケーションを含み得る。一例として、データフィードおよび／またはイベント更新は、１つ以上の第三者情報源および連続的なデータストリームから受信されるTwitter（登録商標）フィード、Facebook（登録商標）更新またはリアルタイム更新を含み得るが、これらに限定されるものではなく、センサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール（たとえばネットワークモニタリングおよびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車交通モニタリングなどに関連するリアルタイムイベントを含み得る。また、サーバ１４１２は、クライアントコンピューティングデバイス１４０２，１４０４，１４０６および１４０８の１つ以上の表示装置を介してデータフィードおよび／またはリアルタイムイベントを表示するための１つ以上のアプリケーションを含み得る。
【０１４５】
また、分散型システム１４００は、１つ以上のデータベース１４１４および１４１６を含み得る。データベース１４１４および１４１６は、さまざまな場所に存在し得る。一例として、データベース１４１４および１４１６の１つ以上は、サーバ１４１２にローカルな（および／または存在する）非一時的な記憶媒体に存在していてもよい。代替的に、データベース１４１４および１４１６は、サーバ１４１２から遠く離れていて、ネットワークベースまたは専用の接続を介してサーバ１４１２と通信してもよい。一組の局面においては、データベース１４１４および１４１６は、記憶領域ネットワーク（storage-area network：ＳＡＮ）に存在していてもよい。同様に、サーバ１４１２に起因する機能を実行するための任意の必要なファイルが、サーバ１４１２上にローカルに、および／または、リモートで適宜格納されていてもよい。一組の局面においては、データベース１４１４および１４１６は、ＳＱＬフォーマットコマンドに応答してデータを格納、更新および検索するように適合された、オラクル社によって提供されるデータベースなどのリレーショナルデータベースを含み得る。
【０１４６】
図１５は、本開示の一局面に係る、一局面のシステムの１つ以上の構成要素によって提供されるサービスをクラウドサービスとして供給することができるシステム環境１５００の１つ以上の構成要素の簡略化されたブロック図である。示されている局面においては、システム環境１５００は、クラウドサービスを提供するクラウドインフラストラクチャシステム１５０２と相互作用するようにユーザによって使用され得る１つ以上のクライアントコンピューティングデバイス１５０４，１５０６および１５０８を含む。クライアントコンピューティングデバイスは、クラウドインフラストラクチャシステム１５０２によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム１５０２と相互作用するようにクライアントコンピューティングデバイスのユーザによって使用され得る、ウェブブラウザ、専有のクライアントアプリケーション（たとえばオラクルフォームズ）または他のアプリケーションなどのクライアントアプリケーションを動作させるように構成され得る。
【０１４７】
図に示されているクラウドインフラストラクチャシステム１５０２が図示されている構成要素とは他の構成要素を有し得ることが理解されるべきである。さらに、図に示されている局面は、本開示の局面を組込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の局面においては、クラウドインフラストラクチャシステム１５０２は、図に示されているものよりも多いまたは少ない数の構成要素を有していてもよく、２つ以上の構成要素を組合せてもよく、または構成要素の異なる構成または配置を有していてもよい。
【０１４８】
クライアントコンピューティングデバイス１５０４，１５０６および１５０８は、１４０２，１４０４，１４０６および１４０８について上記したものと類似のデバイスであってもよい。
【０１４９】
例示的なシステム環境１５００は３個のクライアントコンピューティングデバイスを有するように示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサなどを有する装置などの他の装置が、クラウドインフラストラクチャシステム１５０２と相互作用してもよい。
【０１５０】
ネットワーク１５１０は、クライアント１５０４，１５０６および１５０８とクラウドインフラストラクチャシステム１５０２との間のデータの通信およびやりとりを容易にし得る。各々のネットワークは、ネットワーク２８１０について上記したものを含むさまざまな市販のプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者になじみのある任意のタイプのネットワークであってもよい。
【０１５１】
クラウドインフラストラクチャシステム１５０２は、サーバ１４１５について上記したものを含み得る１つ以上のコンピュータおよび／またはサーバを備え得る。
【０１５２】
特定の局面においては、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータ記憶およびバックアップソリューション、ウェブベースのｅメールサービス、ホスト型オフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理技術サポートサービスなどの、クラウドインフラストラクチャシステムのユーザがオンデマンドで利用可能な多数のサービスを含み得る。クラウドインフラストラクチャシステムによって提供されるサービスは、そのユーザのニーズを満たすように動的にスケーリング可能である。クラウドインフラストラクチャシステムによって提供されるサービスの具体的なインスタンス化は、本明細書では「サービスインスタンス」と称される。一般に、インターネットなどの通信ネットワークを介してクラウドサービスプロバイダのシステムからユーザが利用可能な任意のサービスは、「クラウドサービス」と称される。通常、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なっている。たとえば、クラウドサービスプロバイダのシステムがアプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドで当該アプリケーションを注文および使用してもよい。
【０１５３】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーションへの保護されたコンピュータネットワークアクセス、またはクラウドベンダによってユーザに提供されるかもしくはそうでなければ当該技術分野において公知の他のサービスを含み得る。たとえば、サービスは、インターネットを介したクラウド上のリモートストレージへのパスワードによって保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク化された開発者による私的使用のためのウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされるｅメールソフトウェアアプリケーションへのアクセスを含み得る。
【０１５４】
特定の局面においては、クラウドインフラストラクチャシステム１５０２は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルな、信頼性のある、高可用性の、安全な態様で顧客に配信される一連のアプリケーション、ミドルウェアおよびデータベースサービス提供品を含み得る。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクルパブリッククラウドである。
【０１５５】
時としてビッグデータとも称される大量のデータは、インフラストラクチャシステムによって、多数のレベルにおいて、および異なるスケールでホストおよび／または操作され得る。このようなデータが含み得るデータセットは、非常に大型で複雑であるので、典型的なデータベース管理ツールまたは従来のデータ処理アプリケーションを用いて処理するのが困難になる可能性がある。たとえば、テラバイトのデータはパーソナルコンピュータまたはそれらのラックベースの対応物を用いて格納、検索取得および処理することが難しいかもしれない。このようなサイズのデータは、最新のリレーショナルデータベース管理システムおよびデスクトップ統計ならびに視覚化パッケージを用いて機能させるのが困難である可能性がある。それらは、データを許容可能な経過時間内に捕捉しキュレーションし管理し処理するよう、一般的に用いられるソフトウェアツールの構造を超えて、何千ものサーバコンピュータを動作させる大規模並列処理ソフトウェアを必要とし得る。
【０１５６】
大量のデータを視覚化し、トレンドを検出し、および／または、データと相互作用させるために、分析者および研究者は極めて大きいデータセットを格納し処理することができる。平行にリンクされた何十、何百または何千ものプロセッサがこのようなデータに対して作用可能であり、これにより、このようなデータを表示し得るか、または、データに対する外力をシミュレートし得るかもしくはそれが表しているものをシミュレートし得る。これらのデータセットは、データベースにおいて編制されたデータ、もしくは構造化モデルに従ったデータ、および／または、非体系的なデータ（たとえば電子メール、画像、データブロブ（バイナリ大型オブジェクト）、ウェブページ、複雑なイベント処理）などの構造化されたデータを必要とする可能性がある。目標物に対してより多くの（またはより少数の）コンピューティングリソースを比較的迅速に集中させるために局面の能力を強化することにより、ビジネス、政府関係機関、研究組織、私人、同じ目的をもった個々人もしくは組織のグループ、または他のエンティティからの要求に基づいて大量のデータセット上でタスクを実行するために、クラウドインフラストラクチャシステムがより良好に利用可能となる。
【０１５７】
さまざまな局面においては、クラウドインフラストラクチャシステム１５０２は、クラウドインフラストラクチャシステム１５０２によって供給されるサービスへの顧客のサブスクリプションを自動的にプロビジョニング、管理および追跡するように適合され得る。クラウドインフラストラクチャシステム１５０２は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。たとえば、クラウドインフラストラクチャシステム１５０２が、（たとえばオラクル社によって所有される）クラウドサービスを販売する組織によって所有され、一般大衆またはさまざまな産業企業がサービスを利用できるパブリッククラウドモデルのもとでサービスが提供されてもよい。別の例として、クラウドインフラストラクチャシステム１５０２が単一の組織のためだけに運営され、当該組織内の１つ以上のエンティティにサービスを提供し得るプライベートクラウドモデルのもとでサービスが提供されてもよい。また、クラウドインフラストラクチャシステム１５０２およびクラウドインフラストラクチャシステム１５０２によって提供されるサービスが、関連のコミュニティ内のいくつかの組織によって共有されるコミュニティクラウドモデルのもとでクラウドサービスが提供されてもよい。また、２つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルのもとでクラウドサービスが提供されてもよい。
【０１５８】
いくつかの局面においては、クラウドインフラストラクチャシステム１５０２によって提供されるサービスは、ソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）カテゴリ、プラットフォーム・アズ・ア・サービス（Platform as a Service：ＰａａＳ）カテゴリ、インフラストラクチャ・アズ・ア・サービス（Infrastructure as a Service：ＩａａＳ）カテゴリ、またはハイブリッドサービスを含むサービスの他のカテゴリのもとで提供される１つ以上のサービスを含み得る。顧客は、サブスクリプションオーダーによって、クラウドインフラストラクチャシステム１５０２によって提供される１つ以上のサービスをオーダーし得る。次いで、クラウドインフラストラクチャシステム１５０２は、顧客のサブスクリプションオーダーでサービスを提供するために処理を実行する。
【０１５９】
いくつかの局面においては、クラウドインフラストラクチャシステム１５０２によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るが、これらに限定されるものではない。いくつかの例では、アプリケーションサービスは、ＳａａＳプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。ＳａａＳプラットフォームは、ＳａａＳカテゴリに分類されるクラウドサービスを提供するように構成され得る。たとえば、ＳａａＳプラットフォームは、一体化された開発およびデプロイメントプラットフォーム上で一連のオンデマンドアプリケーションを構築および配信するための機能を提供し得る。ＳａａＳプラットフォームは、ＳａａＳサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。ＳａａＳプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムで実行されるアプリケーションを利用することができる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得することができる。さまざまな異なるＳａａＳサービスが提供されてもよい。例としては、大規模組織のための販売実績管理、企業統合およびビジネスの柔軟性のためのソリューションを提供するサービスが挙げられるが、これらに限定されるものではない。
【０１６０】
いくつかの局面においては、プラットフォームサービスは、ＰａａＳプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。ＰａａＳプラットフォームは、ＰａａＳカテゴリに分類されるクラウドサービスを提供するように構成され得る。プラットフォームサービスの例としては、組織（オラクル社など）が既存のアプリケーションを共有の共通アーキテクチャ上で統合することを可能にするサービス、および、プラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する機能を挙げることができるが、これらに限定されるものではない。ＰａａＳプラットフォームは、ＰａａＳサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステムによって提供されるＰａａＳサービスを取得することができる。プラットフォームサービスの例としては、オラクルＪａｖａクラウドサービス（Java Cloud Service：ＪＣＳ）、オラクルデータベースクラウドサービス（Database Cloud Service：ＤＢＣＳ）などが挙げられるが、これらに限定されるものではない。
【０１６１】
ＰａａＳプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを利用することができ、デプロイされたサービスを制御することもできる。いくつかの局面においては、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービル（たとえばオラクルフージョンミドルウェアサービス）およびＪａｖａクラウドサービスを含み得る。一局面においては、データベースクラウドサービスは、組織がデータベースリソースをプールしてデータベースクラウドの形態でデータベース・アズ・ア・サービスを顧客に供給することを可能にする共有のサービスデプロイメントモデルをサポートし得る。ミドルウェアクラウドサービスは、クラウドインフラストラクチャシステムにおいてさまざまなビジネスアプリケーションを開発およびデプロイするために顧客にプラットフォームを提供し得るともに、Ｊａｖａクラウドサービスは、クラウドインフラストラクチャシステムにおいてＪａｖａアプリケーションをデプロイするために顧客にプラットフォームを提供し得る。
【０１６２】
さまざまな異なるインフラストラクチャサービスは、クラウドインフラストラクチャシステムにおけるＩａａＳプラットフォームによって提供されてもよい。インフラストラクチャサービスは、ストレージ、ネットワークなどの基本的な計算リソース、ならびに、ＳａａＳプラットフォームおよびＰａａＳプラットフォームによって提供されるサービスを利用する顧客のための他の基礎的な計算リソースの管理および制御を容易にする。
【０１６３】
また、特定の局面においては、クラウドインフラストラクチャシステム１５０２は、クラウドインフラストラクチャシステムの顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース１５３０を含み得る。一局面においては、インフラストラクチャリソース１５３０は、ＰａａＳプラットフォームおよびＳａａＳプラットフォームによって提供されるサービスを実行するための、サーバ、ストレージおよびネットワーキングリソースなどのハードウェアの予め一体化された最適な組合せを含み得る。
【０１６４】
いくつかの局面においては、クラウドインフラストラクチャシステム１５０２におけるリソースは、複数のユーザによって共有され、デマンドごとに動的に再割り振りされてもよい。また、リソースは、異なる時間帯にユーザに割り振られてもよい。たとえば、クラウドインフラストラクチャシステム１５３０は、第１の時間帯におけるユーザの第１の組が規定の時間にわたってクラウドインフラストラクチャシステムのリソースを利用することを可能にし得るとともに、異なる時間帯に位置するユーザの別の組への同一のリソースの再割り振りを可能にし得ることによって、リソースの利用を最大化することができる。
【０１６５】
特定の局面においては、クラウドインフラストラクチャシステム１５０２のさまざまな構成要素またはモジュール、および、クラウドインフラストラクチャシステム１５０２によって提供されるサービス、によって共有されるいくつかの内部共有サービス１５３２が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、インテグレーションサービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性・バックアップおよび回復サービス、クラウドサポートを可能にするためのサービス、ｅメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されるものではない。
【０１６６】
特定の局面においては、クラウドインフラストラクチャシステム１５０２は、クラウドインフラストラクチャシステムにおけるクラウドサービス（たとえばＳａａＳサービス、ＰａａＳサービスおよびＩａａＳサービス）の包括的管理を提供し得る。一局面においては、クラウド管理機能は、クラウドインフラストラクチャシステム１５０２によって受信された顧客のサブスクリプションをプロビジョニング、管理および追跡などするための機能を含み得る。
【０１６７】
一局面においては、図に示されるように、クラウド管理機能は、オーダー管理モジュール１５２０、オーダーオーケストレーションモジュール１５２２、オーダープロビジョニングモジュール１５２４、オーダー管理および監視モジュール１５２６、ならびにアイデンティティ管理モジュール１５２８などの１つ以上のモジュールによって提供され得る。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他の適切な構成および／もしくは組み合わせであり得る１つ以上のコンピュータおよび／またはサーバを含み得るか、またはそれらを用いて提供され得る。
【０１６８】
例示的な動作１５３４において、クライアントデバイス１５０４，１５０６または１５０８などのクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム１５０２によって提供される１つ以上のサービスを要求し、クラウドインフラストラクチャシステム１５０２によって供給される１つ以上のサービスのサブスクリプションについてオーダーを行うことによって、クラウドインフラストラクチャシステム１５０２と対話し得る。特定の局面においては、顧客は、クラウドユーザインターフェース（User Interface：ＵＩ）、すなわちクラウドＵＩ１５１５、クラウドＵＩ１５１４および／またはクラウドＵＩ１５１６にアクセスして、これらのＵＩを介してサブスクリプションオーダーを行い得る。顧客がオーダーを行ったことに応答してクラウドインフラストラクチャシステム１５０２によって受信されたオーダー情報は、顧客と、顧客がサブスクライブする予定のクラウドインフラストラクチャシステム１５０２によって提供される１つ以上のサービスとを特定する情報を含み得る。
【０１６９】
オーダーが顧客によって行われた後、オーダー情報は、クラウドＵＩ１５１５，１５１４および／または１５１６を介して受信される。
【０１７０】
動作１５３６において、オーダーは、オーダーデータベース１５１８に格納される。オーダーデータベース１５１８は、クラウドインフラストラクチャシステム１５０２によって動作させられるとともに他のシステム要素と連携して動作させられるいくつかのデータベースのうちの１つであってもよい。
【０１７１】
動作１５３８において、オーダー情報は、オーダー管理モジュール１５２０に転送される。いくつかの例では、オーダー管理モジュール１５２０は、オーダーの確認および確認時のオーダーの予約などのオーダーに関連する請求書発行機能および会計経理機能を実行するように構成され得る。
【０１７２】
動作１５４０において、オーダーに関する情報は、オーダーオーケストレーションモジュール１５２２に通信される。オーダーオーケストレーションモジュール１５２２は、顧客によって行われたオーダーについてのサービスおよびリソースのプロビジョニングをオーケストレートするためにオーダー情報を利用し得る。いくつかの例では、オーダーオーケストレーションモジュール１５２２は、オーダープロビジョニングモジュール１５２４のサービスを用いてサブスクライブされたサービスをサポートするためにリソースのプロビジョニングをオーケストレートし得る。
【０１７３】
特定の局面においては、オーダーオーケストレーションモジュール１５２２は、各々のオーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネス論理を適用してオーダーがプロビジョニングに進むべきか否かを判断する。動作１５４２において、新たなサブスクリプションについてのオーダーを受信すると、オーダーオーケストレーションモジュール１５２２は、リソースを割り振って当該サブスクリプションオーダーを満たすのに必要とされるそれらのリソースを構成するための要求をオーダープロビジョニングモジュール１５２４に送る。オーダープロビジョニングモジュール１５２４は、顧客によってオーダーされたサービスについてのリソースの割り振りを可能にする。オーダープロビジョニングモジュール１５２４は、クラウドインフラストラクチャシステム１５００によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間にあるレベルの抽象化を提供する。したがって、オーダーオーケストレーションモジュール１５２２は、サービスおよびリソースが実際に実行中にプロビジョニングされるか、事前にプロビジョニングされて要求があったときに割振られる／割当てられるのみであるかなどの実装の詳細から切り離すことができる。
【０１７４】
動作１５４４において、サービスおよびリソースがプロビジョニングされると、提供されたサービスの通知が、クラウドインフラストラクチャシステム１５０２のオーダープロビジョニングモジュール１５２４によってクライアントコンピューティングデバイス１５０４，１５０６および／または１５０８上の顧客に送られ得る。
【０１７５】
動作１５４６において、顧客のサブスクリプションオーダーが、オーダー管理および監視モジュール１５２６によって管理および追跡され得る。いくつかの例では、オーダー管理および監視モジュール１５２６は、使用される記憶量、転送されるデータ量、ユーザの数、ならびにシステムアップ時間およびシステムダウン時間の量などのサブスクリプションオーダーにおけるサービスについての使用統計を収集するように構成され得る。
【０１７６】
特定の局面においては、クラウドインフラストラクチャシステム１５００は、アイデンティティ管理モジュール１５２８を含み得る。アイデンティティ管理モジュール１５２８は、クラウドインフラストラクチャシステム１５００におけるアクセス管理および認可サービスなどのアイデンティティサービスを提供するように構成され得る。いくつかの局面においては、アイデンティティ管理モジュール１５２８は、クラウドインフラストラクチャシステム１５０２によって提供されるサービスを利用したい顧客についての情報を制御し得る。このような情報は、このような顧客のアイデンティティを認証する情報と、それらの顧客がさまざまなシステムリソース（たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してどのアクションを実行することを認可されるかを記載する情報とを含み得る。また、アイデンティティ管理モジュール１５２８は、各々の顧客についての説明的情報、ならびに、どのようにしておよび誰によってこの説明的情報がアクセスおよび変更され得るかについての説明的情報の管理を含み得る。
【０１７７】
図１６は、本開示のさまざまな局面を実現することができる例示的なコンピュータシステム１６００を示す。システム１６００は、上記のコンピュータシステムのうちのいずれかを実現するために使用され得る。図に示されているように、コンピュータシステム１６００は、バスサブシステム１６０２を介していくつかの周辺サブシステムと通信する処理ユニット１６０４を含む。これらの周辺サブシステムは、処理加速ユニット１６０６と、Ｉ／Ｏサブシステム１６０８と、記憶サブシステム１６１８と、通信サブシステム１６２４とを含み得る。記憶サブシステム１６１８は、有形のコンピュータ読取可能な記憶媒体１６２２と、システムメモリ１６１０とを含む。
【０１７８】
バスサブシステム１６０２は、コンピュータシステム１６００のさまざまな構成要素およびサブシステムに、意図されたように互いに通信させるための機構を提供する。バスサブシステム１６０２は、単一のバスとして概略的に示されているが、バスサブシステムの代替的な局面は、複数のバスを利用してもよい。バスサブシステム１６０２は、メモリバスまたはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのうちのいずれかを使用するローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、ＩＥＥＥ  Ｐ１６８６．１標準に合わせて製造されたメザニンバスとして実現可能な、業界標準アーキテクチャ（Industry Standard Architecture：ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Micro Channel Architecture：ＭＣＡ）バス、拡張ＩＳＡ（Enhanced ISA：ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（Video Electronics Standards Association：ＶＥＳＡ）ローカルバスおよび周辺機器相互接続（Peripheral Component Interconnect：ＰＣＩ）バスを含み得る。
【０１７９】
１つ以上の集積回路（たとえば従来のマイクロプロセッサまたはマイクロコントローラ）として実現可能な処理ユニット１６０４は、コンピュータシステム１６００の動作を制御する。処理ユニット１６０４には、１つ以上のプロセッサが含まれ得る。これらのプロセッサは、単一コアまたはマルチコアのプロセッサを含み得る。特定の局面においては、処理ユニット１６０４は、各々の処理ユニットに含まれる単一コアまたはマルチコアのプロセッサを有する１つ以上の独立した処理ユニット１６３２および／または１６３４として実現されてもよい。また、他の局面においては、処理ユニット１６０４は、２つのデュアルコアプロセッサを単一のチップに組み入れることによって形成されるクアッドコア処理ユニットとして実現されてもよい。
【０１８０】
さまざまな局面においては、処理ユニット１６０４は、プログラムコードに応答してさまざまなプログラムを実行し得るとともに、同時に実行される複数のプログラムまたはプロセスを維持し得る。任意の所与の時点において、実行されるべきプログラムコードのうちのいくつかまたは全ては、プロセッサ１６０４および／または記憶サブシステム１６１８に存在し得る。好適なプログラミングを通じて、プロセッサ１６０４は、上記のさまざまな機能を提供し得る。また、コンピュータシステム１６００は、加えて、デジタル信号プロセッサ（digital signal processor：ＤＳＰ）、特殊用途プロセッサなどを含み得る処理加速ユニット１６０６を含み得る。
【０１８１】
Ｉ／Ｏサブシステム１６０８は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含み得る。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、タッチパッドまたはタッチスクリーンを含んでいてもよく、これらは、音声コマンド認識システム、マイクロホンおよび他のタイプの入力装置とともに、ディスプレイ、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、オーディオ入力装置に組込まれている。ユーザインターフェイス入力装置は、たとえば、ジェスチャおよび話されたコマンドを用いてナチュラルユーザインターフェースを介してユーザがマイクロソフトＸｂｏｘ（登録商標）３６０ゲームコントローラなどの入力装置を制御して入力装置と対話することを可能にするマイクロソフトキネクト（登録商標）モーションセンサなどのモーション検知および／またはジェスチャ認識装置を含み得る。また、ユーザインターフェイス入力装置は、ユーザから眼球運動（たとえば撮影および／またはメニュー選択を行っている間の「まばたき」）を検出して、当該眼球ジェスチャを入力装置への入力として変換するグーグルグラス（登録商標）まばたき検出器などの眼球ジェスチャ認識装置を含み得る。また、ユーザインターフェイス入力装置は、ユーザが音声コマンドを介して音声認識システム（たとえばＳｉｒｉ（登録商標）ナビゲータ）と対話することを可能にする音声認識検知装置を含み得る。
【０１８２】
また、ユーザインターフェイス入力装置は、三次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびスピーカなどのオーディオ／ビジュアル装置、デジタルカメラ、デジタルカムコーダ、携帯型メディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザレンジファインダ、および視線検出装置を含み得るが、これらに限定されるものではない。また、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴画像化、位置発光断層撮影、医療用超音波検査装置などの医療用画像化入力装置を含み得る。また、ユーザインターフェイス入力装置は、たとえばＭＩＤＩキーボード、デジタル楽器などのオーディオ入力装置を含み得る。
【０１８３】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、表示灯、またはオーディオ出力装置などの非視覚的ディスプレイなどを含み得る。ディスプレイサブシステムは、陰極線管（cathode ray tube：ＣＲＴ）、液晶ディスプレイ（liquid crystal display：ＬＣＤ）またはプラズマディスプレイを使用するものなどのフラットパネルディスプレイ、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム１６００からの情報をユーザまたは他のコンピュータに出力するための全ての実現可能なタイプの装置および機構を含むよう意図されている。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車のナビゲーションシステム、プロッタ、音声出力装置およびモデムなどの、テキスト、グラフィックスおよびオーディオ／ビデオ情報を視覚的に伝えるさまざまな表示装置を含み得るが、これらに限定されるものではない。
【０１８４】
コンピュータシステム１６００は、現在のところシステムメモリ１６１０内に位置しているように示されているソフトウェア要素を備える記憶サブシステム１６１８を備え得る。システムメモリ１６１０は、処理ユニット１６０４上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されるデータとを格納し得る。
【０１８５】
コンピュータシステム１６００の構成およびタイプに応じて、システムメモリ１６１０は、揮発性（ランダムアクセスメモリ（random access memory：ＲＡＭ）など）であってもよく、および／または、不揮発性（リードオンリメモリ（read-only memory：ＲＯＭ）、フラッシュメモリなど）であってもよい。ＲＡＭは、典型的には、処理ユニット１６０４が直ちにアクセス可能なデータおよび／またはプログラムモジュール、および／または、処理ユニット１６０４によって現在動作および実行されているデータおよび／またはプログラムモジュールを収容する。いくつかの実現例では、システムメモリ１６１０は、スタティックランダムアクセスメモリ（static random access memory：ＳＲＡＭ）またはダイナミックランダムアクセスメモリ（dynamic random access memory：ＤＲＡＭ）などの複数の異なるタイプのメモリを含み得る。いくつかの実現例では、始動中などにコンピュータシステム１６００内の要素間で情報を転送することを助ける基本ルーチンを含む基本入力／出力システム（basic input/output system：ＢＩＯＳ）が、典型的にはＲＯＭに格納され得る。一例としておよび非限定的に、システムメモリ１６１０は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム（relational database management system：ＲＤＢＭＳ）などを含み得るアプリケーションプログラム１６１２、プログラムデータ１６１４およびオペレーティングシステム１６１６も示す。一例として、オペレーティングシステム１６１６は、マイクロソフトウィンドウズ（登録商標）、アップルマッキントッシュ（登録商標）および／もしくはリナックスオペレーティングシステムのさまざまなバージョン、さまざまな市販のＵＮＩＸ（登録商標）もしくはＵＮＩＸライクオペレーティングシステム（さまざまなＧＮＵ／リナックスオペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含むが、これらに限定されるものではない）、ならびに／または、ｉＯＳ、ウィンドウズ（登録商標）フォン、アンドロイド（登録商標）ＯＳ、ブラックベリー（登録商標）１０ＯＳおよびパーム（登録商標）ＯＳオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
【０１８６】
また、記憶サブシステム１６１８は、いくつかの局面の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能な記憶媒体を提供し得る。プロセッサによって実行されたときに上記の機能を提供するソフトウェア（プログラム、コードモジュール、命令）が記憶サブシステム１６１８に格納され得る。これらのソフトウェアモジュールまたは命令は、処理ユニット１６０４によって実行され得る。また、記憶サブシステム１６１８は、本開示に従って使用されるデータを格納するためのリポジトリを提供し得る。
【０１８７】
また、記憶サブシステム１６１８は、コンピュータ読取可能な記憶媒体１６２２にさらに接続可能なコンピュータ読取可能な記憶媒体リーダ１６２０を含み得る。ともにおよび任意には、システムメモリ１６１０と組合せて、コンピュータ読取可能な記憶媒体１６２２は、コンピュータ読取可能な情報を一時的および／または永久に収容、格納、送信および検索するための記憶媒体に加えて、リモートの、ローカルの、固定されたおよび／または取外し可能な記憶装置を包括的に表わし得る。
【０１８８】
コードまたはコードの一部を含むコンピュータ読取可能な記憶媒体１６２２は、当該技術分野において公知のまたは使用される任意の適切な媒体を含み得る。当該媒体は、情報の格納および／または送信のための任意の方法または技術において実現される揮発性および不揮発性の、取外し可能および取外し不可能な媒体などであるが、これらに限定されるものではない記憶媒体および通信媒体を含む。これは、ＲＡＭ、ＲＯＭ、電子的消去・プログラム可能ＲＯＭ（electronically erasable programmable ROM：ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（digital versatile disk：ＤＶＤ）、または他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ読取可能な媒体などの有形の一時的なコンピュータ読取可能な記憶媒体を含み得る。また、これは、データ信号、データ送信などの無形の一時的なコンピュータ読取可能な媒体、または、所望の情報を送信するために使用可能であるとともにコンピューティングシステム１６１８によってアクセス可能である他の任意の媒体を含み得る。
【０１８９】
一例として、コンピュータ読取可能な記憶媒体１６２２は、取外し不可能な不揮発性磁気媒体から読取るまたは当該媒体に書込むハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読取るまたは当該ディスクに書込む磁気ディスクドライブ、ならびに、ＣＤ  ＲＯＭ、ＤＶＤおよびブルーレイ（登録商標）ディスクまたは他の光学式媒体などの取外し可能な不揮発性光学ディスクから読取るまたは当該ディスクに書込む光学式ディスクドライブを含み得る。コンピュータ読取可能な記憶媒体１６２２は、ジップ（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（universal serial bus：ＵＳＢ）フラッシュドライブ、セキュアデジタル（secure digital：ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含み得るが、これらに限定されるものではない。また、コンピュータ読取可能な記憶媒体１６２２は、フラッシュメモリベースのＳＳＤ、企業向けフラッシュドライブ、ソリッドステートＲＯＭなどの不揮発性メモリに基づくソリッドステートドライブ（solid-state drive：ＳＳＤ）、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭなどの揮発性メモリに基づくＳＳＤ、ＤＲＡＭベースのＳＳＤ、磁気抵抗ＲＡＭ（magnetoresistive RAM：ＭＲＡＭ）ＳＳＤ、およびＤＲＡＭとフラッシュメモリベースのＳＳＤとの組合せを使用するハイブリッドＳＳＤを含み得る。ディスクドライブおよびそれらの関連のコンピュータ読取可能な媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールおよび他のデータをコンピュータシステム１６００に提供し得る。
【０１９０】
通信サブシステム１６２４は、他のコンピュータシステムおよびネットワークとのインターフェイスを提供する。通信サブシステム１６２４は、他のシステムからデータを受信したり、コンピュータシステム１６００から他のシステムにデータを送信するためのインターフェイスの役割を果たす。たとえば、通信サブシステム１６２４は、コンピュータシステム１６００がインターネットを介して１つ以上の装置に接続することを可能にし得る。いくつかの局面においては、通信サブシステム１６２４は、（たとえば３Ｇ、４ＧまたはＥＤＧＥ（enhanced data rates for global evolution）などの携帯電話技術、高度データネットワーク技術を用いて）無線音声および／またはデータネットワークにアクセスするための無線周波数（radio frequency：ＲＦ）トランシーバコンポーネント、ＷｉＦｉ（ＩＥＥＥ８０２．２８ファミリ標準または他のモバイル通信技術またはそれらの任意の組合せ）、全地球測位システム（global positioning system：ＧＰＳ）レシーバコンポーネント、および／または、他のコンポーネントを含み得る。いくつかの局面においては、通信サブシステム１６２４は、無線インターフェイスに加えて、または無線インターフェイスの代わりに、有線ネットワーク接続（たとえばイーサネット）を提供し得る。
【０１９１】
また、いくつかの局面においては、通信サブシステム１６２４は、コンピュータシステム１６００を使用し得る１人以上のユーザを代表して、構造化されたおよび／または構造化されていないデータフィード１６２６、イベントストリーム１６２８、イベント更新１６１６などの形態で入力通信を受信し得る。
【０１９２】
一例として、通信サブシステム１６２４は、ツイッター（登録商標）フィード、フェースブック（登録商標）更新、リッチ・サイト・サマリ（Rich Site Summary：ＲＳＳ）フィードなどのウェブフィードなどのデータフィード１６２６をリアルタイムでソーシャルメディアネットワークおよび／または他の通信サービスのユーザから受信し、および／または、１つ以上の第三者情報源からリアルタイム更新を受信するように構成され得る。
【０１９３】
加えて、通信サブシステム１６２４は、連続的なデータストリームの形態でデータを受信するように構成され得る。当該データは、連続的である場合もあれば本質的に明確な端部をもたない状態で境界がない場合もあるリアルタイムイベントのイベントストリーム１６２８および／またはイベント更新１６１６を含み得る。連続的なデータを生成するアプリケーションの例としては、たとえばセンサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール（たとえばネットワークモニタリングおよびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車交通モニタリングなどを含み得る。
【０１９４】
また、通信サブシステム１６２４は、構造化されたおよび／または構造化されていないデータフィード１６２６、イベントストリーム１６２８、イベント更新１６１６などを、コンピュータシステム１６００に結合された１つ以上のストリーミングデータソースコンピュータと通信し得る１つ以上のデータベースに出力するように構成され得る。
【０１９５】
コンピュータシステム１６００は、手持ち式携帯機器（たとえばｉＰｈｏｎｅ（登録商標）携帯電話、ｉＰａｄ（登録商標）計算タブレット、ＰＤＡ）、ウェアラブル装置（たとえばグーグルグラス（登録商標）ヘッドマウントディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバラックまたはその他のデータ処理システムを含むさまざまなタイプのうちの１つであってもよい。
【０１９６】
コンピュータおよびネットワークの絶え間なく変化し続ける性質のために、図に示されているコンピュータシステム１６００の説明は、特定の例として意図されているに過ぎない。図に示されているシステムよりも多くのまたは少ない数の構成要素を有する多くの他の構成が可能である。たとえば、ハードウェア、ファームウェア、（アプレットを含む）ソフトウェア、または組合せにおいて、カスタマイズされたハードウェアが使用されてもよく、および／または、特定の要素が実装されてもよい。さらに、ネットワーク入力／出力装置などの他のコンピューティングデバイスへの接続が利用されてもよい。本明細書中に提供される開示および教示に基づいて、当業者は、さまざまな局面を実現するための他の手段および／または方法を理解するであろう。
【０１９７】
上述の明細書では、本開示の局面は、その具体的な局面を参照して記載されているが、本開示はこれに限定されるものではないことを当業者は認識するであろう。上述の開示のさまざまな特徴および局面は、個々にまたは一緒に使用されてもよい。さらに、局面は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されているものを越えたいくつもの環境およびアプリケーションでも利用可能である。したがって、明細書および図面は、限定的ではなく例示的なものとみなされるべきである。
【図１】
2021530818.tif 000006
【図２】
2021530818.tif 000007
【図３】
2021530818.tif 000008
【図４】
2021530818.tif 000009
【図５】
2021530818.tif 000010
【図６】
2021530818.tif 000011
【図７】
2021530818.tif 000012
【図８】
2021530818.tif 000013
【図９】
2021530818.tif 000014
【図１０】
2021530818.tif 000015
【図１１】
2021530818.tif 000016
【図１２】
2021530818.tif 000017
【図１３】
2021530818.tif 000018
【図１４】
2021530818.tif 000019
【図１５】
2021530818.tif 000020
【図１６】
2021530818.tif 000021
【国際調査報告】
2021530818.tif 000022
2021530818.tif 000023