IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許7449919自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス
<>
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図1
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図2
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図3
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図4
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図5
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図6
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図7
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図8
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図9
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図10
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図11
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図12
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図13
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図14
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図15
  • 特許-自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-06
(45)【発行日】2024-03-14
(54)【発明の名称】自律型エージェントおよびシソーラスを用いるデータベースのための自然言語インターフェイス
(51)【国際特許分類】
   G06F 16/332 20190101AFI20240307BHJP
   G06F 16/36 20190101ALI20240307BHJP
【FI】
G06F16/332
G06F16/36
【請求項の数】 10
(21)【出願番号】P 2021503796
(86)(22)【出願日】2019-07-25
(65)【公表番号】
(43)【公表日】2021-11-11
(86)【国際出願番号】 US2019043505
(87)【国際公開番号】W WO2020023787
(87)【国際公開日】2020-01-30
【審査請求日】2022-04-06
(31)【優先権主張番号】62/703,389
(32)【優先日】2018-07-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ガリツキー,ボリス
【審査官】木村 大吾
(56)【参考文献】
【文献】米国特許出願公開第2017/0083569(US,A1)
【文献】特開2002-342361(JP,A)
【文献】特開2002-288201(JP,A)
【文献】特開2005-208825(JP,A)
【文献】特開平09-044508(JP,A)
【文献】特開2002-207761(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 40/00-40/58
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
データベースを介して自然言語クエリを処理するための方法であって、
1以上のプロセッサを含む処理装置が、テーブルを有するデータベースにアクセスすることを含み、各テーブルは、前記各テーブルを識別するラベルと、フィールドとを含み、各フィールドは属性を含み、前記方法はさらに、
前記処理装置が、エンティティを含むカスタムデータベースインデックスにアクセスすることを含み、前記エンティティは、前記フィールドと、前記属性と、前記フィールドまたは前記属性の1つ以上の同義語とを含み、前記方法はさらに、
前記処理装置が、自然言語検索クエリにアクセスすることと、
前記処理装置が、前記自然言語検索クエリからパースツリーを構築することとを含み、前記パースツリーは、単語タイプを含む少なくとも1つの終端ノードと、前記自然言語検索クエリの単語またはフレーズを表す少なくとも1つの終端ノードとを含み、前記パースツリーは、前記自然言語クエリの構文情報を識別し、前記方法はさらに、
前記処理装置が、前記パースツリーから1つ以上の節を識別することを含み、節はキーワードを含み、各キーワードは名詞または動詞であり、前記方法はさらに、
以下の1つ以上、すなわち、
前記処理装置が、各キーワードを、(i)前記テーブルのうちの1つのテーブルのラベルまたは(ii)前記テーブルのうちの1つのテーブルのフィールドまたは(iii)フィールドの属性のいずれかにマッチングさせること、および
前記処理装置が、前記キーワードと前記カスタムデータベースインデックスとの間のマッチのレベルを判断すること、の1つ以上を実行することと、
前記処理装置が、前記マッチングされたキーワードからデータベースクエリを生成することと、
前記処理装置が、前記データベースクエリを前記データベースに提供することによって前記データベースから結果を得ることと、
前記処理装置が、前記結果をユーザデバイスに表示することと
前記処理装置が、前記キーワードのうちのあるキーワードが前記データベース内でマッチしないと判断することに応答して、暗黙ノードを前記パースツリーに挿入することとを含み、前記暗黙ノードは前記キーワードを識別し、前記方法はさらに、
前記処理装置が、前記キーワードを前記ユーザデバイスに提示することを含む、方法。
【請求項2】
前記方法はさらに、
前記処理装置が、前記ユーザデバイスから明確化を受信することと、
前記処理装置が、前記明確化に基づいて前記パースツリーを更新することと、
前記処理装置が、前記パースツリーからの更新された節を前記データベースにマッチングすることとを含む、請求項に記載の方法。
【請求項3】
各キーワードをマッチングすることは、前記キーワードのうちの1つを前記テーブルのうちの1つテーブルのラベルにマッチングすることを含む、請求項1または2に記載の方法。
【請求項4】
各キーワードをマッチングすることは、前記キーワードのうちの1つと前記テーブルのうちの1つのテーブルのフィールドとの間のマッチする単語の数を用いて、当該マッチのレベルをスコア化することを含む、請求項1または2に記載の方法。
【請求項5】
各キーワードをマッチングすることは、
キーワードの1つ以上の同義語を判断することと、
前記1つ以上の同義語を前記テーブルのうちの1つのテーブルのフィールドにマッチングすることとを含む、請求項1または2に記載の方法。
【請求項6】
データベースを介して自然言語クエリを処理するための方法であって、
1以上のプロセッサを含む処理装置が、テーブルを有するデータベースにアクセスすることを含み、各テーブルは、前記各テーブルを識別するラベルと、フィールドとを含み、各フィールドは属性を含み、前記方法はさらに、
前記処理装置が、エンティティを含むカスタムデータベースインデックスにアクセスすることを含み、前記エンティティは、前記フィールドと、前記属性と、前記フィールドまたは前記属性の1つ以上の同義語とを含み、前記方法はさらに、
前記処理装置が、自然言語検索クエリにアクセスすることと、
前記処理装置が、前記自然言語検索クエリからパースツリーを構築することとを含み、前記パースツリーは、単語タイプを含む少なくとも1つの終端ノードと、前記自然言語検索クエリの単語またはフレーズを表す少なくとも1つの終端ノードとを含み、前記パースツリーは、前記自然言語クエリの構文情報を識別し、前記方法はさらに、
前記処理装置が、前記パースツリーから1つ以上の節を識別することを含み、節はキーワードを含み、各キーワードは名詞または動詞であり、前記方法はさらに、
以下の1つ以上、すなわち、
前記処理装置が、各キーワードを、(i)前記テーブルのうちの1つのテーブルのラベルまたは(ii)前記テーブルのうちの1つのテーブルのフィールドまたは(iii)フィールドの属性のいずれかにマッチングさせること、および
前記処理装置が、前記キーワードと前記カスタムデータベースインデックスとの間のマッチのレベルを判断すること、の1つ以上を実行することと、
前記処理装置が、前記マッチングされたキーワードからデータベースクエリを生成することと、
前記処理装置が、前記データベースクエリを前記データベースに提供することによって前記データベースから結果を得ることと、
前記処理装置が、前記結果をユーザデバイスに表示することとを含み、
前記マッチのレベルを判断することは、
前記カスタムデータベースインデックスを検索することによって複数の候補を得ることと、
各候補について、前記エンティティと対応する結果との間のマッチのレベルを判断することと、
すべての前記エンティティのうちで最も高いマッチのレベルを有するエンティティを判断することとを含み、
前記キーワードと前記カスタムデータベースインデックスの前記エンティティとの間のマッチのレベルは、単語の出現頻度‐逆文書頻度を用いて判断される、方法。
【請求項7】
カスタムデータベースインデックスにアクセスすることは、
接続されたノードのセットを含むシソーラスにアクセスすることを含み、前記接続されたノードは、ルートノードおよび終端ノードを含み、前記終端ノードは、前記ルートノードの同義語であり、カスタムデータベースインデックスにアクセスすることはさらに、
反復的に、前記終端ノードの各々について、
前記ルートノードから対応の終端ノードへの経路を含む検索クエリを形成することと、
前記検索クエリを検索エンジンに提供することによって結果のセットを得ることと、
前記結果のセットの各ペアの結果のペア単位一般化を計算することとを含み、ペア単位一般化は、対応のペアの各結果に共通の1つ以上のキーワードを抽出し、カスタムデータベースインデックスにアクセスすることはさらに、反復的に、前記終端ノードの各々について、
前記ペア単位一般化から単語またはフレーズを抽出することと、
前記ペア単位一般化内で閾値頻度を超えて生ずるソートされた要素のサブセットを抽出することと、
前記抽出された要素のサブセットから新たなノードを作成することと、
前記新たなノードを対応の終端ノードに接続することとを含む、請求項1~のいずれか1項に記載の方法。
【請求項8】
システムであって、
コンピュータ実行可能プログラム命令を記憶するコンピュータ可読媒体と、
前記コンピュータ可読媒体に通信可能に結合され、前記コンピュータ実行可能プログラム命令を実行するための処理装置とを備え、前記コンピュータ実行可能プログラム命令を実行することは、動作を実行するように前記処理装置を構成し、前記動作は、
テーブルを有するデータベースにアクセスすることを含み、各テーブルは、前記各テーブルを識別するラベルと、フィールドとを含み、各フィールドは属性を含み、前記動作はさらに、
エンティティを含むカスタムデータベースインデックスにアクセスすることを含み、前記エンティティは、前記フィールドと、前記属性と、前記フィールドまたは前記属性の1つ以上の同義語とを含み、前記動作はさらに、
自然言語検索クエリにアクセスすることと、
前記自然言語検索クエリからパースツリーを構築することとを含み、前記パースツリーは、単語タイプを含む少なくとも1つの終端ノードと、前記自然言語検索クエリの単語またはフレーズを表す少なくとも1つの終端ノードとを含み、前記パースツリーは、前記自然言語検索クエリの構文情報を識別し、前記動作はさらに、
前記パースツリーから1つ以上の節を識別することを含み、節はキーワードを含み、各キーワードは名詞または動詞であり、前記動作はさらに、
以下の1つ以上、すなわち、
各キーワードを、(i)前記テーブルのうちの1つのテーブルのラベルまたは(ii)前記テーブルのうちの1つのテーブルのフィールドまたは(iii)フィールドの属性のいずれかにマッチングさせること、および
前記キーワードと前記カスタムデータベースインデックスとの間のマッチのレベルを判断すること、の1つ以上を実行することと、
前記マッチングされたキーワードからデータベースクエリを生成することと、
前記データベースクエリを前記データベースに提供することによって前記データベースから結果を得ることと、
前記結果をユーザデバイスに表示することと
前記キーワードのうちのあるキーワードが前記データベース内でマッチしないと判断することに応答して、暗黙ノードを前記パースツリーに挿入することとを含み、前記暗黙ノードは前記キーワードを識別し、前記動作はさらに、
前記キーワードを前記ユーザデバイスに提示することを含む、システム。
【請求項9】
システムであって、
コンピュータ実行可能プログラム命令を記憶するコンピュータ可読媒体と、
前記コンピュータ可読媒体に通信可能に結合され、前記コンピュータ実行可能プログラム命令を実行するための処理装置とを備え、前記コンピュータ実行可能プログラム命令を実行することは、動作を実行するように前記処理装置を構成し、前記動作は、
テーブルを有するデータベースにアクセスすることを含み、各テーブルは、前記各テーブルを識別するラベルと、フィールドとを含み、各フィールドは属性を含み、前記動作はさらに、
エンティティを含むカスタムデータベースインデックスにアクセスすることを含み、前記エンティティは、前記フィールドと、前記属性と、前記フィールドまたは前記属性の1つ以上の同義語とを含み、前記動作はさらに、
自然言語検索クエリにアクセスすることと、
前記自然言語検索クエリからパースツリーを構築することとを含み、前記パースツリーは、単語タイプを含む少なくとも1つの終端ノードと、前記自然言語検索クエリの単語またはフレーズを表す少なくとも1つの終端ノードとを含み、前記パースツリーは、前記自然言語検索クエリの構文情報を識別し、前記動作はさらに、
前記パースツリーから1つ以上の節を識別することを含み、節はキーワードを含み、各キーワードは名詞または動詞であり、前記動作はさらに、
以下の1つ以上、すなわち、
各キーワードを、(i)前記テーブルのうちの1つのテーブルのラベルまたは(ii)前記テーブルのうちの1つのテーブルのフィールドまたは(iii)フィールドの属性のいずれかにマッチングさせること、および
前記キーワードと前記カスタムデータベースインデックスとの間のマッチのレベルを判断すること、の1つ以上を実行することと、
前記マッチングされたキーワードからデータベースクエリを生成することと、
前記データベースクエリを前記データベースに提供することによって前記データベースから結果を得ることと、
前記結果をユーザデバイスに表示することとを含み、
前記マッチのレベルを判断することは、
前記カスタムデータベースインデックスを検索することによって複数の候補を得ることと、
各候補について、前記エンティティと対応する結果との間のマッチのレベルを判断することと、
すべての前記エンティティのうちで最も高いマッチのレベルを有するエンティティを判断することとを含み、
前記キーワードと前記カスタムデータベースインデックスの前記エンティティとの間のマッチのレベルは、単語の出現頻度‐逆文書頻度を用いて判断される、システム。
【請求項10】
請求項1~のいずれか1項に記載の方法を処理装置によって実行させるためのコンピュータ可読プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
詳細な説明
本開示は一般にデータベースに関する。より具体的には、本開示は、自然言語クエリをネイティブデータベースクエリに変換することに関する。
【0002】
関連出願の相互参照
本出願は2018年7月25日に提出された米国仮出願62/703,389に対する優先権を主張し、その全体がすべての目的のために本明細書に組み込まれる。
【背景技術】
【0003】
発明の背景
リレーショナルデータベースは、広範囲の照会メカニズムをサポートする構造化クエリ言語(SQL)などの現代の照会言語によってアクセスすることができる。しかし、SQLインターフェイスは、非ソフトウェア開発者がこれらの言語で検索クエリを設計することは困難であり得る。したがって、これらの低品質クエリは、低品質の結果を引き起こす。
【0004】
自然言語(NL)クエリをデータベースクエリに変換するためのいくつかの解決策が存在する。しかし、これらの解決策は不充分である。例えば、いくつかの解決策は、変換を実行するために、トレーニングされたニューラルネットワークを用い得る。しかし、これらの解決策には問題がある。例えば、大きなトレーニングデータセットが必要とされる場合があり、解決策はドメイン固有である。
【0005】
したがって、自然言語クエリを現代の照会言語に変換することができる新規な解決策が必要である。
【発明の概要】
【課題を解決するための手段】
【0006】
概要
本開示は、自然言語クエリをネイティブデータベースクエリに変換することに関する。例えば、データベースアプリケーションは、ユーザから自然言語クエリを受信し、クエリを節に分割し、節からキーワードを判断し、クエリ内のキーワードを、データベースに照会することができるネイティブクエリにマッピングする。自然言語クエリがマッピングされないキーワードを含む場合、アプリケーションは、このあいまいさをユーザデバイスと解決する。キーワードが従来の方法で、例えば、テーブルまたはフィールドへのマッピングを介して、データベースにマッピングできない場合、アプリケーションは、ペア単位一般化(pair-wise generalization)または他の技法を用いて導出された同義語を含むカスタムインデックスに、キーワードをマッピングすることができる。
【0007】
本開示の一態様は、データベースを介して自然言語クエリを処理するための方法に関する。本方法は、テーブルを有するデータベースにアクセスする。各テーブルは、テーブルを識別するラベルと、フィールドとを含み、各フィールドは属性を含む。本方法はさらに、エンティティを含むカスタムデータベースインデックスにアクセスし、エンティティは、フィールド、属性、およびフィールドまたは属性の1つ以上の同義語を含む。本方法はさらに、自然言語検索クエリにアクセスする。本方法はさらに、自然言語検索クエリからパースツリーを構築する。パースツリーは、単語タイプを含む少なくとも1つの終端ノードと、自然言語検索クエリの単語またはフレーズを表す少なくとも1つの終端ノードとを含む。パースツリーは、自然言語クエリの構文情報を識別する。本方法はさらに、パースツリーから1つ以上の節を識別する。節はキーワードを含み、各キーワードは名詞または動詞である。本方法はさらに、以下の1つ以上、すなわち、各キーワードを、テーブルのうちの1つのテーブルのラベル、テーブルのうちの1つのテーブルのフィールド、および/またはフィールドの属性にマッチングさせること、ならびに、キーワードとカスタムデータベースインデックスとの間のマッチの閾値レベルを判断すること、の1つ以上を実行する。本方法はさらに、マッピングされたキーワードからデータベースクエリを生成する。本方法はさらに、データベースクエリをデータベースに提供することによって、データベースから結果を取得する。本方法は、さらに、結果をユーザデバイスに表示する。
【0008】
さらなる態様では、本方法は、キーワードのうちのあるキーワードがデータベース内でマッチしないと判定し、暗黙ノードをパースツリーに挿入し、暗黙ノードはそのキーワードを識別する。本方法は、そのキーワードをユーザデバイスに提示する。
【0009】
さらなる態様では、本方法は、ユーザデバイスから明確化を受信し、明確化に基づいてパースツリーを更新し、パースツリーからの更新された節をデータベースにマッチングする。
【0010】
さらなる態様では、各キーワードをマッピングすることは、キーワードのうちの1つをテーブルのうちの1つのテーブルのラベルにマッチングすることを含む。
【0011】
さらなる態様では、各キーワードをマッピングすることは、キーワードのうちの1つをテーブルのうちの1つのテーブルのフィールドの単語の閾値数にマッチングすることを含む。
【0012】
さらなる態様では、各キーワードをマッピングすることは、キーワードの1つ以上の同義語を判断することと、1つ以上の同義語をテーブルのうちの1つのテーブルのフィールドにマッピングすることとを含む。
【0013】
さらなる態様では、マッチの閾値レベルを判断することは、カスタムデータベースインデックスを検索することによって複数の候補を得ることと、各候補について、エンティティと対応する結果との間のマッチのレベルを判断することと、すべてのエンティティのうちで最も高いマッチのレベルを有するエンティティを判断することとを含む。
【0014】
さらなる態様では、キーワードとカスタムデータベースインデックスのエンティティとの間のマッチのレベルは、単語の出現頻度‐逆文書頻度を用いて判断される。
【0015】
さらなる態様では、カスタムデータベースインデックスにアクセスすることは、接続されたノードのセットを含むシソーラスにアクセスすることを含む。接続されたノードは、ルートノードおよび終端ノードを含む。終端ノードは、ルートノードの同義語である。本方法はさらに、終端ノードの各々について、動作を反復して実行する。動作は、ルートノードから対応の終端ノードへの経路を含む検索クエリを形成することを含む。動作は、さらに、検索クエリを検索エンジンに提供することによって結果のセットを得ることを含む。動作は、さらに、結果のセットの各ペアの結果のペア単位一般化を計算することを含む。ペア単位一般化は、対応のペアの各結果に共通の1つ以上のキーワードを抽出する。動作はさらに、ペア単位一般化から単語またはフレーズを抽出することを含む。動作はさらに、ペア単位一般化内で閾値頻度を超えて生ずるソートされた要素のサブセットを抽出することを含む。動作はさらに、抽出された要素のサブセットから新たなノードを作成することを含む。動作はさらに、新たなノードを対応の終端ノードに接続することを含む。
【0016】
上記の方法は、コンピュータデバイスまたはコンピュータシステムにおいて実施することができる。プログラム命令は、非一時的コンピュータ可読媒体上に記憶されることもできる。
【図面の簡単な説明】
【0017】
図1】本開示の一態様による、自然言語クエリからデータベースクエリを生成するためのシステムの図である。
図2】本開示の一態様による、自然言語クエリからデータベースクエリを生成するためのプロセスの一例を示すフローチャートである。
図3】本開示の一態様による、自然言語クエリのためのパースツリーを示す図である。
図4】本開示の一態様による、パースツリーからの節抽出のためのプロセスの一例を示す図である。
図5】本開示の一態様による、キーワードをデータベーステーブルにマッチングすることを示す図である。
図6】本開示の一態様による、データベースインデックスへのキーワードマッチングのためのプロセスを示す図である。
図7】本開示の一態様によるデータベースの一例を示す図である。
図8】本開示の一態様による、転移学習の観点から見たソーラス支援検索を示す。
図9】本開示の一態様による、シソーラスのスナップショットの一例を示す。
図10】本開示の一態様による、例示的な検索結果を示す。
図11】本開示の一態様によるシソーラス学習を示す。
図12】本開示の一態様によるシソーラス学習を示す。
図13】本開示の一態様によるシソーラス学習を示す。
図14】態様のうちの1つを実現するための分散型システムの簡略図を示す。
図15】一態様による、態様システムの構成要素によって提供されるサービスがクラウドサービスとして提供され得る、システム環境の構成要素の簡略ブロック図である。
図16】本開示の様々な態様が実現され得る例示的なコンピュータシステムを示す。
【発明を実施するための形態】
【0018】
本発明の詳細な説明
本開示の態様は、改善されたデータベースシステムに関する。特に、開示されるシステムは、言語学的アプローチおよびキーワードベースのアプローチの両方を用いることによって、自然言語クエリをデータベースクエリに変換する。いくつかの態様はまた、自然言語クエリ内のあいまいな語を識別し、これらのあいまいさを、自律型エージェント(「チャットボット」)を用いることによって解決する。場合によっては、シソーラスを作成および用いて、様々なエンティティ、アクション、または属性を記述するために人々が用いる単語をデータベーステーブルまたはフィールドとマッチングし得る。このようにして、開示される解決策は、既存の解決策と比較して、改善されたデータベースクエリ、したがって、より意味のある結果を提供する。
【0019】
自然言語データベースインターフェイスは、構造化キーワードベースの検索、フォームベースの要求インターフェイス、および視覚的クエリビルダなどの人気のあるクエリインターフェイスよりも多くの利点を有する。例えば、自然言語インターフェイスは、トレーニングを受けていないユーザが、データベース専門家によってトレーニングされる必要なしに、複雑なクエリを指定することを可能にする。しかし、自然言語クエリをデータベースにマッピングすることは困難であり得る。例えば、ユーザクエリはしばしばあいまいであり得る。
【0020】
自律型エージェントは、自然言語インターフェイスの自然な拡張であり、ユーザが提供するあいまいな語を明確にするために用いることができる。例えば、ユーザは、「titanic」を検索するかもしれない。自然言語システムは「titanic」という語を既存のデータベースとマッチングすることを試みるが、この語は、同じ名前の映画または船を指し得るため、あいまいである。したがって、データベースおよび自律型エージェントは、エージェントがデータベースの充分なクエリに必要とされる言語理解におけるエラー修正を容易にする際に、互いに連携して動作することができる。
【0021】
ある定義
本明細書で用いられる場合、「データベース」は、編成または構造化されたデータのセットを指す。データベースは、列および行に編成され得る。
【0022】
本明細書で用いられる場合、「テーブル」は、データベース内の関係を指す。テーブルは、「ファイル」または「クラス」と呼ばれることもある。
【0023】
本明細書で用いられる場合、「クエリ」は、サーバからデータを検索させるコマンドのタイプを指す。構造化クエリ言語(SQL)クエリの例は、「SELECT column1, column2 FROM table1, table2 WHERE column2='value'」である。
【0024】
本明細書で用いられる場合、「自然言語クエリ」は、例えば英語など自然言語であるデータベースクエリを指す。自然言語クエリの例は、「how many employees had a raise this year?(今年は何人の従業員が昇給を受けたか?)」である。
【0025】
本明細書で用いられる場合、データベースまたはデータベーステーブルの「列」または「フィールド」。例えば、列は、「名前」、「アドレス」、または「郵便番号」とすることができる。
【0026】
本明細書で用いられる場合、「行」または「レコード」は、特定の列に対する値のリストである。例えば、第1のレコードは、郵便番号に対して値「30021」を有することができ、第2のレコードは、郵便番号に対して値「20021」を有することができる。
【0027】
ここで図を参照すると、図1は、本開示の一態様による、自然言語クエリからデータベースクエリを生成するためのシステムの図である。図1は、ユーザインターフェイス110を介して自然言語クエリを受信し、クエリをネイティブデータベースクエリに変換し、データベース190から結果を取得し、結果をユーザインターフェイス110に戻すことができるコンピューティングシステム101を含むコンピューティング環境100を示す。自然言語クエリをデータベースクエリにマッピングする様々な方法を用いることができる。追加的または代替的に、コンピューティングシステム101は、自然言語クエリにおけるあいまいさを検出し、ユーザインターフェイス110を介して明確化(clarification)を取得し、より完全なマッピングおよびより良好な検索結果をもたらすことができる。
【0028】
コンピューティングシステム101は、データベースアプリケーション102およびシソーラス104を含む。一例では、データベースアプリケーション102は、自然言語クエリ(たとえば、NLクエリ120)をデータベースのテーブルまたはフィールドにマッピングすることに関連する機能を実行する。データベースアプリケーション102はまた、データベースをインデックス付けすることおよびカスタムインデックスに対して検索を実行すること、またはカスタムインデックスそれ自体を作成することに関連する機能を実行することができる。
【0029】
データベース190は、任意のトピックに関する編成された情報を含むことができる。トピックの例は、スポーツ、音楽、文学、ニュース、歴史、および科学を含む。データベース190は、任意の態様で編成することができるテーブル191a~nを含む。例えば、データベース190がスポーツに関する情報を含む場合、テーブル191aは野球に関連するトピックを含み、テーブル191bはサッカーに関連するトピックを含む、などとすることができる。同様に、データベース190が楽器に関する情報を含む場合、テーブル191aは金管楽器に関する情報を含み、テーブル191bは打楽器に関する情報などを含む、などとすることができる。各テーブル191a~nは、1つ以上のフィールドを含むことができる。前の例を続けると、フィールドの例は、「チーム」または「楽器の種類」である。各テーブル191a~nは、別のテーブルとリンクされることができる。例えば、サッカーリーグに関する情報を含むテーブルは、各リーグ内の特定のチームを有する別のテーブルにリンクするかもしれない。
【0030】
場合によっては、データベース190は、SQLクエリおよびデータ編成を最適化するために用いることができるカスタムインデックス192を含むことができる。例えば、カスタムインデックス192を用いることにより、キーワードをフィールドなどのデータベースパラメータにマッチングすることとは異なる態様で、データベースを検索することができる。カスタムインデックス192は、データベースアプリケーション102または別のアプリケーションによって作成することができる。他の場合では、データベース190およびカスタムインデックス192は、組織などの外部実体によって、データベース190内の情報に対する主題専門知識を提供される。データベース190は、例えば、ネットワークを介して、コンピューティングシステム101から外部に位置することができる。
【0031】
ユーザインターフェイス110は、デスクトッププラットフォームまたはモバイルプラットフォーム上のユーザインターフェイスなど、任意の標準ユーザインターフェイスであり得る。ユーザインターフェイス110は、ユーザ入力、例えば、NLクエリ120を受信し、例えば、要求を明確にすることによって、ユーザとの対話を容易にすることができる。ユーザインターフェイス110は、検索結果160などのデータを出力することができる。
【0032】
一例では、データベースアプリケーション102は、NL(自然言語)クエリ120を受信し、クエリ内の節を、ネイティブクエリ150に対するデータベース190内のテーブルまたはフィールドにマッチさせようとする。好適なプロセスの例が、図2に関してさらに説明される。単純な例において、NLクエリ120は、例えば、「what are some reviews of slate?(スレートの何らかのレビューはどのようであるか?)」という節を含む。データベースアプリケーション102は、NLクエリ120のパースツリーを作成し、節および節内のキーワードを識別する。上記の例を続けると、キーワードは「reviews」および「slate」である。
【0033】
場合によっては、データベースアプリケーション102は、NLクエリ120からのキーワードをカスタムインデックス192内のデータベーステーブル、属性、またはエンティティにマッピングすることができないため、NLクエリ120はあいまいである。例えば、「slate」は、雑誌の「Slate」または機器のブランドの「slate」を指し得る。この場合、データベースアプリケーション102は、明確化要求130をユーザインターフェイス110に送信し、明確化を求める。ユーザは、自分が「slate機器」に関心があることを明確にし、それを明確化140としてデータベースアプリケーション102に送信する。次いで、データベースアプリケーション102は、検索プロセスに進み、パースツリーを新たな情報で更新し、パースツリーをネイティブクエリ150にマッピングし、データベースに照会する。
【0034】
クエリを解析することは、NLクエリ120からパースツリーを作成することを含み得る。別の例では、データベースアプリケーション102は、「Return users who watched more movies than Bob on Documentary after 2007(2007年以降にドキュメンタリーでボブよりも多くの映画を見たユーザを返す)」というクエリを解析する。データベースアプリケーション102は、パースツリーのセットを作成する。データベースアプリケーション102は、ユーザインターフェイス110にあいまい性を与える。たとえば、1つの候補パースツリーは、「return the users whose movies on Documentary after 2007 is more than Bob's(2007年以降のドキュメンタリーの映画がボブのよりも多いユーザを返す)」として説明される。データベースアプリケーション102は、暗黙ノードをツリーに挿入し、その結果、「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(2007年以降にリリースされたドキュメンタリーの映画の数が2007年以降にリリースされたドキュメンタリーにおいてボブによってレンタルされた映画の数より多いユーザを返す)」となる。ツリーが最終決定されると、データベースアプリケーション102は、ツリーから1つ以上の節をフォーマット属性[=/< / > / like]値にあるように、決定する。
【0035】
シソーラス104は、データベースアプリケーション102のマッチング性能を改善するために、データベースアプリケーション102によって用いられる。シソーラス104は、データベース190内のエンティティに関連する共通または非共通同義語を含むことができる。例えば、「フットボール」の同義語は「サッカー」であり得る。映画レンタルの場合の一例において、データベースアプリケーション102は、映画およびフィルムを与え、レンタルし、配達し、または提供する、従業員、労働者、ヘルパー、提供者をそれ自体が有するレンタル会社または雇用者から、映画、フィルム、またはテープのような物を、レンタルし、借用し、または取る顧客、ユーザ、人々、子供、大人を知っている必要がある。例えば、ユーザデバイスが「who took the movie(誰がその映画を取ったか)」と尋ねる場合、データベースアプリケーション102は、「took(取った)」がrent「(レンタルする)」を意味し得、「movie(映画)」が「film(フィルム)」を意味し得ることなどを知る必要がある。シソーラス104内の情報は、インターネットまたはリソースからリアルタイムでマイニングすることができる。別の例では、シソーラス104は、上記エンティティ間の関係、それらの属性およびアクションを指定することによって、任意のドメインのための情報を提供することができる。シソーラス104は、本明細書で説明される技法、例えば、検索クエリを反復して形成し、検索クエリの結果を一般化し、その一般化された結果をシソーラス内の追加のエントリ(またはノード)として用いることによって、構築または拡張することができる。これにより、シソーラス104のカバー範囲を改善することができる。
【0036】
場合によっては、データベースアプリケーション102は、マッチングを改善するためにシソーラスを用いることができる。データベースアプリケーション102はまた、NLクエリ120をネイティブクエリ150にマッチングさせることができ、例えば、1つ以上のキーワードがデータベース190のフィールドにマッピングされない場合、データベースアプリケーション102は、あいまいな語でシソーラス104を検索し、場合によってはデータベースフィールド名の同義語を識別することができる。この場合、データベースアプリケーション102は、ユーザに明確化を依頼する必要はない。
【0037】
図2は、本開示の一態様による、自然言語クエリからデータベースクエリを生成するためのプロセス200の一例を示すフローチャートである。プロセス200は、データベースアプリケーション102または別のアプリケーションによって実現され得る。
【0038】
ブロック201において、プロセス200は、ユーザデバイスから自然言語クエリを受信することを伴う。例えば、データベースアプリケーション102は、NLクエリ120を受信する。NLクエリの例は、「what is staff first name when movie return date is after 2005-06-02 01:02:05(映画返却日が2005-06-02 01:02:05の後の場合のスタッフのファーストネームは何)」である。
【0039】
ブロック202において、プロセス200は、パースツリーを構築することを含んで、クエリから節を抽出することを伴う。データベースアプリケーション102は、パースツリーを構築することによってNLクエリ120から節を抽出する。図3は、上記の例のパースツリーを示す。
【0040】
図3は、本開示の一態様による、自然言語クエリのためのパースツリーを示す図である。図3は、ノード301~314を含むパースツリー300を示す。ノード301~314の各々は、NLクエリ120の単語に対応する。パースツリー300は、任意の標準的な技法を用いて得ることができる。
【0041】
データベースアプリケーション102は、パースツリーにアクセスし、任意の「wh」単語を識別する。「wh」単語は、what(何)、where(どこで)、 when(いつ)、 およびwhy(なぜ)を含む。データベースアプリケーション102は、「wh」単語の直後に続くフレーズを抽出する。このフレーズは、「wh」単語に続く単語の中で最も短いものである。例えば、名詞、動詞、前置語、およびその他の種類のフレーズであってもよい。この抽出されたフレーズから、データベースアプリケーション102は節を構築する。この節は、割り当てを有さないが、代わりに、「give me a maximum temperature of water …(最大温度の水を下さい...)」のような、グループ化項を有する可能性があることになる。
【0042】
場合によっては、データベースアプリケーション102は、焦点節を識別する。焦点節は、NLクエリ120が返すと予測されるオブジェクトを含む、NLクエリ120からの節である。焦点節の1つの略称は、「*」である。
【0043】
図2に戻って、ブロック203において、プロセス200は、節からキーワードを抽出することを含む。例を続けると、データベースアプリケーション102は、節からキーワードを抽出する。図4は、節を抽出する一例を示す。
【0044】
1つ以上の節が識別されると、データベースアプリケーション102は、(節に基づいて)NLクエリ102の残りを、「where(どこで)」で始まる第2の節と見なす。節の境界を判断することは困難であり得る。したがって、場合によっては、データベースアプリケーション102は、SQL節に変換されるべきフレーズの中心を示す、is(である)、equals(に等しい)、more(より多い)、before(より前に)、またはas(のように)などの、割り当ておよび比較単語を識別する。一旦、最も左側のアンカーが識別されると、データベースアプリケーション102は、左側、または属性および右側、値を構築することを試みる。例を続けると、属性は「return rental date(レンタル返却日)」であり、値は特定の日付である。
【0045】
属性の境界を見つけるために、データベースアプリケーション102は、開始NLクエリ120に向かって現在のフレーズの開始まで反復する。属性は、通常、前置詞withもしくはof、接続詞and、または「Wh」単語によって示される。値aは、おそらく形容詞を伴う名詞および/または数である。同じ単語は、値部分の終わりを次の属性部分の始まりとして印す。例えば、割り当てまたは比較単語が取り除かれるかまたは無視されると、「return rental date」は実際の日付に隣接する。
【0046】
図4は、本開示の一態様による、パースツリーからの節抽出を示す図である。図4は、図3に示されたテキストのマッピングを示す。図4は、単語テンプレート401~405、節410および単語411~415、ならびに節420および対応する単語421~425を含む。より具体的には、単語テンプレート401は節の始まりを表し、単語テンプレート402は属性を表し、単語テンプレート403はアンカーを表し、単語テンプレート404は変換すべき値を表し、単語テンプレート405は節の終わりを表す。
【0047】
図2に戻って、ブロック204において、プロセス200は、各キーワードを、データベースのテーブル、フィールド、または操作にマッピングすることを含む。データベースアプリケーション102は、各パースツリーノードを、SQLコマンド、テーブル、フィールドまたは値への参照にマッピングしようとする。そのようなアプローチは、SQLコンポーネントにマッピングされ得る言語学的パースツリー内のノードを識別し、それらを異なるトークンにトークン化する。マッピングプロセスにおいて、いくつかのノードは、任意のSQLコンポーネントへのマッピングに失敗する場合がある。この場合、我々のシステムは、これらのノードがユーザのクエリの解釈に直接寄与しないことをユーザに知らせる警告を生成する。また、いくつかのノードは、複数のマッピングを有し得、それは、これらのノードを解釈する際にあいまいさを引き起こす。各そのようなノードについて、パースツリーノードマッピング部は、デフォルトでパースツリー構造調整部に最良のマッピングを出力し、すべての候補マッピングを対話型通信部に報告する。
【0048】
データベースアプリケーション102は、クエリ内の各フレーズまたはキーワードを考慮し、テーブルおよび/またはテーブル内のフィールドにマッチングしようとする。異なるレベルのマッチが可能である。例えば、キーワードは、テーブル名、テーブル内のフィールド、複数のテーブル内の複数のフィールドなどにマッチしてもよい。したがって、データベースアプリケーション102は、マッチを判断することに対して階層的アプローチを用いることができる。
【0049】
基本的に、自然言語はあいまいであり、自然言語の解釈は困難である。したがって、どの単語がどのデータベースフィールドを指すかを判断することは、本質的にあいまいである。例えば、人々は、しばしば、スラング単語、技術用語、および方言固有のフレーズを用いるが、それらのいずれもシステムに知られていない可能性がある。人間対人間の対話においてさえ、伝達不良がある。
【0050】
例えば、姓および名など、同様の意味論タイプの属性に値を代入することは、困難であり得る。例えば、姓および名が何であるかわからない限り、以下のマッピングは困難である。
【0051】
【数1】
【0052】
英語の姓および名のルックアップ、ならびに姓および名が単一のフィールド内にあり得るか、さまざまなフォーマットおよび順序にあり得るか、またはSakilaデータベース(Oracle 2018)の場合のように別個のフィールドに属する、という知識など、phrase2table.fieldをマッピングすることを越える変換が必要である。
【0053】
ユーザが‘film name’と言っている場合、film.nameが存在しない場合は、システムは、それを、フィールド=‘name’を有するテーブルとして解釈し得る。'name'は'title'の同義語であるが、'name'というフレーズは、actor.first_nameの代わりにcategory.nameのような完全に異質のテーブルにマッピングされ得る。フレーズが‘word1 word2’ を含む場合、それは、通常、不明瞭であり、なぜならば、word2はtable1.field であり得、また、table2. word2は、別のテーブルにおけるフィールド(または単一のワードとしてフィールドの一部)であり得るからである。
【0054】
したがって、最も可能性の高いケースから最も可能性の低いケースに進む仮説管理プロセスが必要である。単一のテーブル名を識別し、言及される他のテーブル名がないことを確認する規則から始める。また、フィールド名が言及されていないことを確認する必要もある。
【0055】
図5は、本開示の一態様による、キーワードのデータベーステーブルへのマッチングを示す図である。プロセス500は、データベースアプリケーション102によって、または別のアプリケーションによって実現され得る。キーワードのマッチングは、1回に1つのキーワードを発生させることができ、すなわち、処理500は、キーワードごとに1回実行される。他の場合では、マッチングは、フレーズレベルで、すなわちいくつかのキーワードが一緒になって、起こり得る。議論の目的のため、プロセス500は、フレーズに関して議論される。
【0056】
データベースアプリケーション102は、フレーズを、マルチステッププロセスにおいて、データベーステーブルまたはフィールドにマッチさせようとする。例えば、データベースアプリケーション102は、まず、ブロック501において、マッチを試みる。ブロック501でマッチが見つからない場合、データベースアプリケーション102はブロック502でマッチを試みる。ブロック502でマッチが見つからない場合、データベースアプリケーション102はブロック503でマッチを試みる。プロセス500においてマッチが早く見つかるほど、マッチの信頼性レベルは高い。
【0057】
ブロック501において、プロセス500は、フレーズを単一のテーブルの名前とマッチングすることを試みることを伴う。ブロック501において、データベースアプリケーション102が、フレーズは単一のデータベーステーブルの名前のみを含み、他のデータベーステーブルは含まない、と判断する場合、マッチが生じる。いったんテーブルが確認されると、データベースアプリケーション102は、テーブルのデフォルトフィールド、たとえば「名前」、またはこのテーブルによって表されるエンティティの名前を有する任意の他のフィールドを選択する。この選択は、後で、たとえばブロック209において、ネイティブクエリを生成するために用いられる。フレーズが他のいずれのテーブルともマッチしない場合、プロセス500は停止し、ブロック507に進む。そうでなければ、プロセス500はブロック502に進む。
【0058】
ブロック502において、プロセス500は、フレーズをフィールドおよびテーブルとマッチングする試みを伴う。ブロック502において、データベースアプリケーション102は、テーブルおよびテーブルのフィールド共のフレーズマッチを識別する。このマッチは、すべてのテーブルおよびフィールド単語を反復し、フレーズと最も大きい単語数を有するテーブル-フィールドのペアの組み合わせを選択することによって、達成することができる。したがって、この場合、フレーズ内の単語のすべてがデータベースにマッチする必要はない。データベースアプリケーション102は、1つ以上の技法、たとえば、フレーズとテーブル-フィールドのペアとの間のマッチするワードの数を用いて、マッチのレベルをスコア化することができる。他の技術を用いることもできる。
【0059】
データベースアプリケーション102は、組み合わされたテーブルおよびフィールド表現を用いてフレーズを同義語とマッチングする。スコアが良好なマッチである場合、プロセス500は停止し、ブロック507に進む。反対に、データベースアプリケーション102が、フレーズに対するキーワードのテーブルフィールドセットの良好なマッチを見つけない場合、プロセス500はブロック503に進む。
【0060】
ブロック503において、プロセス500は、フレーズをフィールドとマッチングする試みを伴う。データベースアプリケーション102は、(テーブルラベルではなく)フィールドのみのマッチングを試みる。より具体的には、データベースアプリケーション102は、すべてのテーブルのフィールドを通して反復することを伴う。データベースアプリケーション102は、フィールド表現を用いてフレーズを同義語とマッチングする。全単語マッチおよび単語形態置換マッチを用いることができる。データベースアプリケーション102は、最良のスコアを有するマッチを選択する。
【0061】
データベースアプリケーション102は、オントロジー(例えば、シソーラス104)を用いて、フィールドについてのキーワードのリストを同義語で拡張することができる。例えば、シソーラス104は、テーブル名、フィールド名、テーブル名におけるトークン、フィールド名におけるトークン、および同義語などのマイニングされたデータベースメタデータを、各々に対して含むことができる。NLクエリ内の語はデータベース内のフィールド名から逸脱する可能性があるため、同義語はマッチングを改善するのに有用である。同義語は、thesaurus.comのようなソースからマイニングすることができ、またはword2vecのようなトレーニングされた同義語モデルを用いることができる(Mikolov et al 2011)。同義語または類似性関数のリストは、その後、マッチングを改善するために用いられる。データベースアプリケーション102が高スコアを獲得する場合、プロセス500はブロック507に進む。そうでなければ、プロセス500はブロック504に続く。
【0062】
ブロック504において、プロセス500は、最良のフィールドに対するすべてのテーブルを取得することを含む。ブロック503において、最良のフィールドマッチが得られる。データベースアプリケーション102は、最良のフィールドを含むすべてのテーブルを取得する。
【0063】
ブロック505において、プロセス500は、最良のテーブルに対する最良のフィールドマッチを得ることを伴う。ブロック504で最良のテーブルが識別されると、データベースアプリケーション102は、最良のテーブルからすべてのフィールドを取得する。次いで、データベースアプリケーション102は、同義語置換を含む最良のフィールドマッチを識別する。
【0064】
ブロック506において、プロセス500は、フレーズがマッチを有さない、と判定することを含む。ブロック506において、プロセス500は終了する。データベースアプリケーション102は、ユーザとキーワードのあいまい性を明確にするよう、進む。
【0065】
ブロック507において、プロセス500は、フレーズがマッチする、と判定することを含む。データベースアプリケーションは、任意の追加のマッピングされていないキーワードが存在するかどうかを判断し続ける。もしそうであれば、プロセス500は再開する。そうでなければ、データベースアプリケーション102は、パースツリーからSQLクエリを作成する。
【0066】
図2に戻って、ブロック205において、プロセス200は、マッピングされていないキーワードがあるかどうかを判断することを含む。ノードマッピングの後、データベースアプリケーション102は、各ノードがデータベースアプリケーション102によって理解されることを保証しようとする。そうでなければ、プロセス200はブロック206に進む。各ノードがマッピングされる場合、データベースアプリケーション102はブロック209に進む。
【0067】
ブロック206において、プロセス200は、検索インデックス付きデータベースを用いてキーワードをマッピングすることを含む。SQLクエリ節を構築するこのアプローチは、検索エンジニアリングアプローチと称され得る。このアプローチでは、データベースアプリケーション102は、カスタムデータベースインデックスにアクセスし、データベースに対してユーザNLクエリの一部の検索を実行する。
【0068】
図6は、本開示の一態様による、データベースインデックスへのキーワードマッチングのためのプロセス600を示す図である。データベースアプリケーション102は、節を、フレーズに、インデックス付けされた行でマッチさせることができる。
【0069】
ブロック601において、プロセス200は、キーワードまたはフレーズからクエリを構築することを含む。クエリは、カスタムデータベースインデックスを検索するために用いられる。データベースアプリケーション102は、ブロック205であいまいであると識別されるフレーズまたはキーワードから構築される検索表現を構築する。この検索表現は、テーブル、フィールド、および値とマッチすることが予想される単語を含む。データベースアプリケーション102は、検索結果の内容が取得されない限り、検索結果の内容が分からないので、クエリは、最初に単語の論理積として形成され、次いで、その論理積クエリが結果を与えることができない場合、それらの単語の論理和(論理OR)として形成される。論理和クエリでは、すべてのキーワードがマッチする必要はない。インデックス検索をより精密にするために、データベースアプリケーション102はまた、Bank of Americaなど、変換されるべきフレーズ中で識別されるエンティティからのスパンANDクエリを形成する。
【0070】
数字は特別な処理を必要とする。等しい種類のクエリの場合、正確な数を見つけることは、SQLクエリ形成を精密にし、実際に、結果として得られるクエリの実行を置換する。すべての数字は、検索のためにストリングトークンとしてインデックス付けされるので、実際の数字は、ストリング表現を2つの部分に分割することを避けるために、「.」が置換された状態で記憶され検索される必要がある。
【0071】
ブロック602において、プロセス200は、カスタムインデックスを取得することを含む。カスタムインデックスは、属性および値を含むことができる。例えば、データベースアプリケーション102はカスタムインデックス192を作成する。カスタムインデックス192は、検索用のためのフィールドおよびフィールドの値を含む。例えば、データベースアプリケーション102は、Table field1 value1 field2 value2 … などのフォーマットでデータベース190の各テーブルの各行を含むフォーマットを作成する。カスタムインデックス192はまた、本明細書に記載するように、同義語および関係名などの、シソーラス104からの情報を含むこともできる。場合によっては、カスタムデータベースインデックスは、例えば実行時においてなど、後の使用のために、作成および格納することができる。他の場合では、カスタムデータベースインデックスは、インザフライで作成することができる。
【0072】
場合によっては、データベースコンテンツのすべてがインデックス付けされるわけではない。例えば、データベースアプリケーション102は、場合によっては、顧客または住所などのエンティティのためのデータを含まない連想テーブルおよび他のテーブルをインデックス付けから除外することができる。
【0073】
ブロック603において、プロセス200は、キーワードまたはフレーズをカスタムインデックスからの属性または値にマッチングすることを含む。データベースアプリケーション102は、カスタムインデックスを検索することによって1つ以上の検索結果を取得する。
【0074】
ブロック604において、プロセス200は、マッチスコアを計算することを伴う。データベースアプリケーション102は、単語の出現頻度‐逆文書頻度(TFIDF)に基づくことができるマッチスコアを計算することができる。
【0075】
ブロック605において、プロセス200は、さらなる属性または値があるかどうかを判断することを含む。カスタムインデックスで検索すべきさらなる属性または値がある場合、プロセス600はブロック603に戻り、最も可能性の高いレコードを見つけるために追加のマッチを通して反復する。さらなる属性または値がない場合、プロセス600はブロック606に続く。
【0076】
ブロック606において、プロセス200は、最良のマッチを選択することを伴う。データベースアプリケーション102は、デフォルトのTF*IDF関連性は通常正しいが、我々は、クエリおよび候補検索結果の両方で生じる属性-値のペアの数に基づいて、我々自身のスコアを計算する(図15)。我々自身のスコアは、クエリおよびレコードの両方において属性発生のない個々の値も考慮に入れる。クエリにおける発生とレコードにおける発生との間のストリングレベルの類似性およびマルチワード偏差も考慮される(マルチワード内のいくつかの単語が欠けているか、または異なる形態で発生しているか(名詞については複数、または動詞については時制など)。値に対するストリングの種類(数字またはストリング)に応じて、データベースアプリケーション102は、操作「=」または「like」を選択することができる。
【0077】
図2に戻って、ブロック207において、プロセス200は、マッピングされていないキーワードがあるかどうかを判断することを含む。まだマッピングされていないキーワードが存在する場合、プロセス200はブロック208に続く。そうでなければ、プロセス200はブロック209に続く。
【0078】
ブロック208において、プロセス200は、ユーザデバイスとあいまい性を明確にすることを伴う。当然ながら、多くの処理コンポーネントにおいて、テーブル名、フィールド名、または関係などのあいまい性が生じる。大半のNL2SQLシステムのように、NLクエリの最も妥当と思われる表現を見つけようとする代わりに、データベースアプリケーション102は、ユーザに頼って、明確化要求を介してあいまい性を解決する。我々のNL2SQLシステムは、テーブル名にマッピングされるクエリフレーズをユーザに与え、可能性のあるテーブルを列挙し、明確化要求を提供する。
【0079】
ブロック209において、プロセス200は、データベースクエリを生成することを伴う。識別されたマッピングに基づいて、データベースアプリケーション102は、すべてのマッピングされたフィールドまたは属性を含むデータベースクエリを生成する。
【0080】
ブロック210において、プロセス200は、データベースクエリをデータベースに提供し、データベースから結果を取得し、結果をユーザデバイスに提供することを含む。データベースアプリケーション102は、ネイティブクエリ150をデータベース190に提供する。
【0081】
データベースの例
図7は、本開示の一態様によるデータベースの一例を示す図である。図7は、NL2SQLで有効化されたサンプルデータベースを示す。より具体的には、図7は、データベースを、図3に示すパースツリー300のマッチングに関連するデータベーステーブルのための関係とともに示す。図7は、(外部キーを指す「fk_」によってプレフィックス付けされる)異なるリンクによってリンクされるデータベーステーブル(例えば、「customer(顧客)」、「country(国)」、「address(住所)」)を示す。そのようなリンクの例は、fk_customer_addressおよびfk_city_countryである。NLクエリ、中間ステップについてのログ、ならびに結果として得られるSQL表現およびクエリ結果の例を以下に示す。
クエリ: '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…’ と定式化されたかもしれないが、それは、NL2SQLシステムが単語 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
多くの場合、NLクエリにおいてテーブル名への参照が言及されていない場合、データベースアプリケーション102は、列名に基づいてテーブル名の識別を試みる。複数のテーブルが同じ列名を有する場合、データベースアプリケーション102は、ユーザインターフェイスを介して明確化を求める。ユーザは、列名を有するテーブルのリストから1つのテーブルを選択する。
【0082】
自律型エージェントのために、改善されたシソーラスを構築
データベースアプリケーション102は、改善されたシソーラスをカスタムインデックスとの関連で用いて、NL検索クエリ120のデータベースエントリへのマッチングを改善し、それにより、改善されたデータベースまたはSQLクエリをもたらすことができる。自律型エージェントの関連性を改善することを意図したエンティティのシソーラスを構築するスケーラブルなメカニズムが、後に続く。シソーラス構築プロセスは、シードエンティティから始まり、これらのシードエンティティに関連付けられる新たなエンティティのために利用可能なソースドメインをマイニングする。新たなエンティティは、構文パースツリーの機械学習(それらの一般化)を既存のエンティティに対する検索結果に適用してそれらの間に共通性を形成することによって、形成される。次いで、これらの共通性表現は、既存のエンティティのパラメータを形成し、次の学習反復において新たなエンティティに転換される。ソースドメインとターゲットドメインとの間で自然言語表現をマッチさせるために、構文一般化、すなわち、これらの表現の構成性パースツリーの最大共通サブツリーのセットを見つける演算を用いる。
【0083】
シソーラスおよび構文一般化は、検索およびテキスト類似性評価における関連性改善に適用される。我々は、垂直ドメインおよび水平ドメインにおける検索関連性改善の評価を行い、前者における学習されたシソーラスの顕著な寄与、および後者のドメインにおけるハイブリッドシステムの顕著な寄与を見た。我々はまた、シソーラスおよび構文一般化に基づくテキスト関連性評価の産業的評価を行い、自動化されたシソーラス学習のための提案されたアルゴリズムが産業システムへの統合に適していると結論付けた。
【0084】
現代の検索エンジンおよびテキスト関連性システムを設計する際、特に垂直ドメインにおいて精度を改善するためにシソーラスの役割を過剰評価することは困難である。シソーラス、シソーラスおよび概念階層は、情報検索(IR)、自然言語処理(NLP)および知識管理の多くのアプリケーションにとって重要な構成要素である(Cimiano et al 2004)。しかしながら、シソーラスおよびオントロジーを構築し、調整し、管理することは、多くの手動操作が必要であるため、かなり費用がかかる。多数の研究が、マルチエージェント設定を含む、言語資源および/または統計的機械学習に基づくシソーラスの自動化された構築を提案した(Kerschberg et al 2003, Roth 2006, Kozareva et al, 2009, Sanchez and Moreno 2008, Sanchez 2010)。
【0085】
自動化されたシソーラスマイニングに対する現在のアプローチの大半は、結果として生じる検索の不十分な精度、現実のユーザのクエリの表現の限られた表現性、または言語資源の手動構築もしくは編集に関連付けられる高いコスト、ならびにそれらの限られた調整可能性のために、産業的用途を見出していない。この研究では、フルスケールの構文解析、その結果の機械学習、および検索エンジンに基づくウェブマイニングを利用して、産業品質のシソーラスを構築および評価する。提案されるシソーラス学習アルゴリズムは、垂直検索関連性を改善することを目的とし、多くの検索関連タスクにおいて評価されるであろう。シソーラスツリーを構築する際の主な課題は、シソーラスツリーを、より長い関係の連鎖を組み込むためにできるだけ深くすることであり、したがって、より具体的でより複雑な質問に解答することができる。
【0086】
開示された解決策は:関連性ありおよび関連性なしの解答の確定的分類のためにシソーラスツリーを用いるためのメカニズムを実現し;キーエンティティのシードを仮定して、垂直ドメインに対するそのようなシソーラスの構築を自動化するアルゴリズムを実現し;パースツリーに基づいてテキスト間の共通性/類似性を見つけるために、ドメインから独立した言語エンジンを設計する。
【0087】
Galitsky et al 2012は、センテンスのペアに対する構文一般化の操作を導入してそれらの類似性を測定し、我々は、検索におけるこの操作の適用を記載する。(Galitsky 2012)では、我々は、情報検索およびテキスト分類におけるアプリケーションを提示し、(Galitsky et al 2012)では、我々は、パラグラフのペアについて一般化操作を導入した。この研究において、我々は、構文一般化に依拠して、シソーラスを構築し、それらを検索時に適用する。我々はセクション4において構文一般化操作を簡単に紹介する。
【0088】
我々のシソーラス構築アルゴリズムは、抽出された関係の精度および再現度を最適化するオントロジーマイニング方法の大半とは異なり、検索関連性改善に焦点を当てている。したがって、本研究における評価は、検索精度の改善に関するアルゴリズムの性能を評価し、構築されたシソーラスの品質は評価しない。従って、我々は、検索性能によって駆動されたシソーラス学習アルゴリズムは、関係の大部分または最も正確な関係に焦点を当てたアルゴリズムを凌駕することを期待する。我々の評価は、垂直検索および水平検索ならびに産業環境においてテキスト類似性評価で行われる。
【0089】
シソーラス構築は、転移学習パラダイムの観点からアプローチされる(Raina et al. 2006, Pan and Yang 2010)。我々は、シソーラスを垂直ドメインで機能するように構築するが、それを構築するにはウェブマイニング用の水平ドメインが必要である。チャットボット用のシソーラスの構築では、転移学習により、幅広いウェブドメイン(補助的)のための知識を抽出し、ターゲットドメインでのシソーラスベースの検索を強化できる。転移学習が成功するためには、フレーズ間のマッピングが明白でなくても、補助ドメインおよびターゲットドメインにおけるフレーズ間の類似度を計算することが重要となる。この目的のために、我々は、構文一般化を、bag-of-wordsアプローチの拡張として用いる。ここで、構造化された知識レベルで転移学習を可能にするために、センテンス間の構造的類似性を見つけるための新規な方法を紹介する。特に、我々は、2つの異なるドメインの語彙が完全に異なる場合に、2つの異なるドメインにおけるフレーズ間の瑣末でない構造上の(意味論的)類似性マッピングをどのように学習するかの問題に対処する。
【0090】
図8は、本開示の一態様による、転移学習の観点から見た、シソーラスにより支援される検索を示す。
【0091】
垂直ドメイン用のシソーラスを構築する場合、通常、この垂直ドメインのみにおいてウェブ文書をマイニングすることは十分ではない。さらに、ターゲットドメインがソーシャルネットワークデータまたはマイクロテキストを含む場合、通常、ドメイン内においてシソーラスを構築するのに十分なそのようなデータを見つけるのは困難であり、結果として、同様の語彙でより広範なドメインのセットをマイニングする転移学習方法論が必要とされる。次いで、転移学習は、別個のドメインからの構文表現をマッチングすることによってサポートされなければならない。この研究では、我々は、構成性パースツリーのレベルで転移学習を実行する。
【0092】
DBPEdia、Freebase、およびYagoなど、現在利用可能な多くの汎用リソースは、エンティティ関連検索を支援するが、エンティティおよびその複数のパラメータで特定のアクティビティに関連する無関係な解答をフィルタリングにより除去するには不十分である。アーチストのためのlast.fmのような垂直オントロジーのセットも、垂直ドメインにおけるエンティティベースの検索に有用であるが、それらのシソーラスツリーはかなり浅く、無関係な解答を認識するためのそれらの有用性は限られている。
【0093】
この研究では、所与の垂直知識ドメインに対する主要なエンティティの初期セット(シード)に基づく自動化されたシソーラス構築メカニズムを提案する。次いで、このシードは、現在のシソーラスノードの意味を含むウェブ文書のマイニングによって自動的に拡張される。このノードは、これらの文書間の共通性を誘導的に学習した結果であるエンティティによってさらに拡張される。これらの共通性は、現在のシソーラスノードについて得られた文書のセットの構文パースツリーの共通部分を見つける構文一般化の操作を用いて抽出される。構文一般化は、テキスト関連性を改善するために商業的に広範に評価されてきたが(Galitsky et al 2010, Galitsky et al 2011)、この研究において、我々は、それを、シソーラスの自動化された構築のための転移学習設定にも適用する。
【0094】
解析から意味論的レベルへの進展は、自然言語理解に向けた重要なタスクであり、情報抽出および質問応答のようなタスクにおいて即時的な応用を有する(Allen 1987, Ravichandran and Hovy 2002, Dzikovska 2005, Wang et al 2009)。この10年で、計算言語学において、文法および知識ベースを手動で構築することから、大きな注釈付きまたは非注釈付き自然言語コーパス上でトレーニングされた統計学的学習方法を用いて、このプロセスを部分的または完全に自動化することへの劇的なシフトがあった。しかしながら、このようなコーパスを用いる代わりに、本明細書では、共通クエリについてのウェブ検索結果を用い、なぜならば、それらは、正確性が高く、税金のような特定のドメイン知識に関して学術的言語資源よりも最新であるためである。
【0095】
検索関連性を改善するための意味論的有効化検索エンジンの価値は、商業的検索エンジン界によってよく理解されている(Heddon 2008)。垂直ドメインにおいて重要なエンティティのすべてを適切にカバーする「理想的な」シソーラスが利用可能になると、それは無関係な解答のフィルタリングによる除去に直接適用され得る。この分野における技術水準は、現実世界のシソーラスを検索関連性改善に適用する方法であるが、このシソーラスはウェブから自動的にコンパイルされ、したがって理想的であることからは遠い。軽量のキーワードベースのアプローチはこの問題に十分に対処できないことは明らかとなっている。本明細書では、トレーニングセットのソースとしてのウェブマイニングと学習ツールとしての構文一般化とを組み合わせることによって、この問題に対処する。
【0096】
オントロジーをマイニングすることとシソーラスをマイニングすることとの間の関係に注目することは価値がある。オントロジー学習は、サブステップ、例えば、
・語彙的エンティティ抽出および概念抽出;
・検索に必須であり本研究の対象であるシソーラス抽出;
・発見された非分類学的関係が、知識エンジニアによってラベル付けされ、オントロジーの一部となる、非分類学的表現抽出。
【0097】
提案されるアプローチは、'Company'(会社)という概念と 'Product'(製品)という概念との間の複数の関係がテキストデータにおいて検出されると、自動的に複数のツリー経路を形成し、複数の解釈が生じ、会社は、製品を生産するだけでなく、製品を販売、消費、広告、および促進するかもしれない。
【0098】
現在の転移学習ベースのアプローチは、テキストにおいて名前を付けられていない関係を探すタスクの間に位置付けることができ、センテンス構造に対する限られた注意での共起分析が用いられ、結果は頻度測定を介してフィルタリングされる。我々は、全センテンス構造の系統的学習、およびbag-of-wordsモデルを用いる代わりに関係についてパースツリーをマイニングすることによって、このアプローチを改善する。
【0099】
シソーラスによるエージェント関連性の改善
自然言語またはキーワードベースの質問に解答するためには、この質問が何についてであるかを「理解する」ことが有益である。この章の意味において、この「理解すること」は、キーワードの選好的処理である。我々は、以下の、キーワードのセットとその要素 is-about(についてである)(set-of-keywords, keyword)との間の関係の定義を用いる。
【0100】
キーワード{a b c}を有するクエリの場合、クエリ{a b}および{b c}が関連性があるかまたはわずかに関連性があり、{a c}が無関係である場合、クエリは b についてであることが理解される。かなり狭い我々のクエリ理解の定義は、クエリ中のどのキーワードが必須であるか(上記の例では b など)を、それらなしでは他のクエリの語が無意味になるような方法で言及する能力であり、b を含まない解答は、b を含むクエリとは無関係である。
【0101】
例えば、キーワード {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 の右側で起こる場合、必須であると言及する。
【0102】
後者の観察を適切に形式化するために、我々は、 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})。
【0103】
シソーラスは、クエリ理解をサポートすることを求められる。シソーラスは、is-about 関係を介したクエリ理解の上記概念に基づいて、クエリと解答との間の特定のマッチが関連性があるか否かの評価を容易にする。したがって、クエリ q = {a b c d } ならびに2つの解答(スニペット){b c d ... e f g} および {a c d ... e f g} について、前者は関連性があり、後者はない。シソーラスは、この明細書の意味において、相互接続されたis-about関係のセットのツリーコード化と見なすことができる。
【0104】
キーワードのセットの論理的プロパティおよびクエリの意味を表す論理形式が(Galitsky 2003)において調査されている。デフォルト推論によってキーワードの相対的重要度を扱う系統的な方法があり(Galitsky 2005)、キーワード組み合わせの複数の意味が、デフォルト論理の操作的意味論によって表される。
【0105】
シソーラスを用いて関連性を達成することは、従来のTF*IDFベースの検索と比較して全く異なるメカニズムに基づく。後者の場合、語の重要度は発生頻度に基づく。NLクエリ(ブールクエリではない)の場合、任意の語について、残りの語が受容可能な関連性スコアを与える場合、当該任意の語を検索結果において省略することができる。ブールクエリの場合、このステートメントは、その論理積メンバーの各々について真である。シソーラスベースの検索では、我々は、どの語が解答において発生すべきか、およびどの語がそこで発生すべきかを知っており、そうでない場合には、検索結果は無関係となる。
【0106】
シソーラスベースの解答選択
無関係な解答をフィルタリングにより除去するためにシソーラスを用いるために、我々は、所与の質問からのエンティティの数に関して、この質問に最も近いシソーラス経路(可能な場合にはリーフノードまで)を探す。次いで、この経路およびリーフノードは、質問の意味を最も正確に特定し、どのエンティティが生じなければならないか、およびどれが解答において生じるべきかを、関連性があると考慮されるよう制約する。質問からのn番目のノードエンティティが解答において生じる場合、すべてのk<n個のエンティティも同様に解答において生ずるべきである。
【0107】
シソーラス支援検索については、以下の2つの条件を用いる:
・受容性条件。これは、シソーラス経路に存在するクエリからの必須単語のすべてが解答内にもあることを検証する。
・最大関連性条件。これは、シソーラス経路内に存在し解答内にあるクエリからの単語を見つける。次いで、それは、発見された必須キーワードおよび他のキーワードの数に基づいてスコアを計算する。
【0108】
検索アプリケーションの大半については、受容性条件は、最大関連性条件よりも適用しやすい:解答 ai∈A は、それが、シソーラス経路 Tp∈T においてみられるように、質問Qからの(is_aboutに従って)必須のキーワードのすべてを含む場合、受容可能である。質問qをカバーする任意のシソーラス経路Tpの場合(それらのキーワードの交差が空ではない)、これらの交差キーワードは受容可能な解答aiに含まれなければならない。
【0109】
【数2】
【0110】
最良の解答(最も正確である)については、我々は以下のように書く:
【0111】
【数3】
【0112】
シソーラスに基づく関連性スコアは、濃度(ai∩( Tp ∩ q)の値として定義することができ、それは q をカバーするすべてのTpについて計算される。そして、最良の解答
スコア(abest) = max{ai}Tp(濃度(ai∩( Tp ∩ q))が、解答Aのすべてに対するスコアの中から見出される。シソーラスに基づくスコアは、検索エンジンアーキテクチャに応じて、他のスコア、例えば、TF*IDF、時間的/崩壊パラメータ、位置距離、価格設定、言語学的類似性、および結果として得られるランク付けのための他のスコアと組み合わせることができる。我々の評価では、このスコアを言語学的類似性スコアと組み合わせる。
【0113】
センテンス(キーワードのセット)s およびシソーラスパス Tp の場合、s ∩ Tp は、シソーラス T における経路 Tp のラベルであるキーワードのセットを見出す操作である。一般に、所与の質問 q をカバーする多数のシソーラス経路があり、s ∩ Tp の各結果は質問と交差しなければならない。所与のクエリ q をカバーする複数の経路を有することは、このクエリがこのドメインにおいて複数の意味を有することを意味し、各そのような意味について、受容可能な解答の別のセットが予想される。
【0114】
したがって、読み手は、シソーラスが is about 関係の計算をサポートするように設計されていることがわかる。クエリ q およびシソーラス G が与えられると、経路 Tpは、is_about(q, Tp ∩ q)であるような態様で見出される。
【0115】
以下のクエリのシソーラスの例を考える:‘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 は、いずれも良好な解答のように見える。
【0116】
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;この解答は、受容性基準に合格する唯一の解答であることに留意されたい。
【0117】
我々の次の例は、あいまい性除去問題に関する。質問 q ="When can I file an extension for the time for my tax return?(確定申告の期限の延長はいつ提出できますか?)" について、以下の2つの解答を想定する:
a1 = "You must file form 1234 to request a 4 month extension of time to file your tax return(確定申告書を提出するための4か月の期間延長を要求するには、フォーム1234を提出する必要があります。)"
a2= "You must download a file with the extension 'pdf', complete it, and print it to do your taxes(税金を支払うには、拡張子が「pdf」のファイルをダウンロードして完成させ、印刷する必要があります。 )"。
【0118】
図9は、本開示の一態様による、シソーラスのスナップショットの一例を示す。例えば、図9は、「tax(税金)」と「deduct(控除)」との間の関係のような様々な関係を示す。最も近いシソーラス経路は以下のように予想される:
Tp= {<tax> -< file>-<return> -< extension-of-time>}
ここで、tax は主要なエンティティであり、file および return はシード内にあると予想され、extension-of-time は学習されたエンティティであろう;その結果として、a1 はシソーラスとマッチし、受容可能な解答であり、a2 はそうではない。シソーラスを表す別の方法は、それがツリー(最も一般的でない)となるように実施するのではなく、代わりに各ラベルに対して単一のノードだけを許可することである。
【0119】
シソーラスベースの関連性検証プロセス
ある例示的なプロセスは、クエリ q を受信し、(このアルゴリズムの外で)検索を実行し、候補解答のセットaを取得し、先のセクションで我々が導入した定義に従って最良の受容可能な解答を見つける。
入力:クエリ q
出力:最良の解答 abest
1)クエリ q について、利用可能な手段(キーワードを用いるか、内部インデックスを用いるか、または検索エンジンAPIの外部インデックスを用いる)によって候補解答Aのセットを得る;
2)シソーラス Tp において 、q において最大の語をカバーする経路を、q をカバーする他の経路と共に見つけて、セット P = {Tp}を形成する。
受容可能な解答が見出されなければ、
3)セット Tp ∩ q を計算する。
各解答 ai∈A について
4)ai∩( Tp ∩ q))を計算し、受容性基準を適用する。
5)各 aiについてスコアを計算する。
6)最良の解答 abest および受容可能な解答 Aa のセットを計算する。
【0120】
受容可能な解答が見つからない場合には、P からの次の経路のために2に戻る。
7)入手可能な場合には、abest および受容可能な解答 Aa のセットを返す。
【0121】
学習およびウェブマイニングのプロセスとしてのシソーラス構築
ウェブ上の自動化された学習シソーラスの我々の主な仮説は、所与のエンティティのセットに対する検索結果間の共通の表現がこれらのエンティティのパラメータを与えることである。シソーラスの形成は、シードシソーラスエンティティのセットが与えられると、教師なし学習スタイルに従う。このアプローチは、乳児が新たな環境を探索し、新たな規則を形成する、人間発達プロセスと見なすことができる。規則の初期セットは遺伝的に設定され、学習プロセスは、これらの規則を特定の習慣性環境に調整することにより、それらの規則をより感度のよいものにする(したがって、より有益な判断を可能にする)。新たな規則がそれらの適用プロセスの間に受け入れられているか、または拒絶されているので、新たな環境への曝露は、新たな特定の規則の形成を容易にする。新たな、より複雑な規則が評価され、これらの新しく形成された規則のある部分が受け入れられた後、環境の追加の固有性に適合するために、規則の複雑さがより大きくなる。
【0122】
我々は、同様の学習設定において我々のシソーラスを拡張するために新たなエンティティを学習する。シソーラス学習プロセスは、反復的であり:各新たな学習ステップにおいて、現在終端しているノードに新たなエッジを追加する。所与のドメインの主要なエンティティのうちのいくつか、およびこれらのエンティティといくつかのドメイン判断エンティティとの関係を列挙するシードシソーラスから始まる。例えば、tax ドメインのシードは、以下の関係:
tax-deduct(税金控除) tax-on-income(所得税) tax-on-property(固定資産税),
を含むことになり、tax はドメイン判断エンティティであり、{deduct, income, property} はこのドメインにおける主要なエンティティである。シソーラス学習の目的は、tax - deduct のような既存のエンティティのさらなるパラメータを取得することである。次の学習の反復において、これらのパラメータは、sales-tax, 401kn のような新たなパラメータのセットが学習されることを可能にするために、エンティティに変換される。
【0123】
各学習反復は、ウェブマイニングに基づく。所与のツリーリーフ(現在のエンティティ)のセットに対するパラメータを見つけるために、ウェブに進んで、現在のツリー経路に対して形成されるクエリに対する検索結果(スニペット)間の共通の表現を検索する。上記の例では、tax-deduct, tax-on-income, およびtax-on-property を検索し、検索結果間で共通の単語および表現を抽出する。共通の単語は、複数の検索結果において生ずる、単一の動詞、名詞、形容詞、さらには、前置詞句または複数単語、加えて前置詞句、名詞句、および動詞句である。セクション4では、検索結果の間の共通表現を抽出し、現在のエンティティ(シソーラスリーフ)の新たなセットを形成する方法を説明する。
【0124】
そのような共通単語および複数単語が識別された後、それらは新たなエンティティとして既存のエンティティのリストに追加される。例えば、経路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)であり;
ここで、「→」 は、現在の学習ステップでのシソーラス拡張の、ラベルのないエッジ である。
【0125】
次に、シソーラスツリーにおける経路 tax - deduct から、5つの新たな経路を得る。次のステップは、シソーラスツリーの新たなリーフのセットにおける各経路のパラメータを収集することである。我々の例では、5つのクエリを実行し、それらの各々についてパラメータを抽出する。結果は以下と類似することになる:
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 の発見が可能になる。スニペット間の共通性は、税金控除を計算する一方で売上税を斟酌するべきであること、およびそれを減らすであろう何かをしないことを示す。
【0126】
したがって、シソーラスは、反復モードでウェブ検索結果から誘導学習を介して構築される。シソーラスシードノードから始まり、次いで、現在利用可能なグラフ経路のすべてに対するウェブ検索結果を見つける。次に、これらの検索結果において見出される各共通性について、シソーラス経路の各々を、それぞれのリーフノードを加えることによって、拡張する。換言すれば、反復ごとに、現在利用可能なエンティティの各セットに対するパラメータのリストを発見し、次いで、これらのパラメータを次の反復のためにエンティティに変換する。
【0127】
シソーラスシードは、手動で作られるか、または利用可能なドメイン固有リソースからコンパイルされ得る。シードシソーラスは、シソーラス成長プロセスが意味のある開始を有することを可能にするために、少なくとも2~3個のノードを含むべきである。シソーラスシードは、例えば、税金エンティティのインベストペディアのような、所与の垂直ドメインについて容易に利用可能な、特定の知識ドメインのグロッサリーを含むことができる。
【0128】
図10は、本開示の一態様による、例示的な検索結果を示す。
シソーラス構築アルゴリズム
シソーラスをその終端ノードとともに取り、それら終端ノードをウェブマイニングを介して拡張して新たな終端ノードのセットを取得することを試みる反復アルゴリズムを概説する。反復k で、現在の終端ノード ti を tik1 , tik2 …で拡張することにより、ノードのセットを取得する。このアルゴリズムは、2つのテキストをシーケンス<lemma(word), part-of-speech> として取り、この形式で最も一般的でないテキストのセットを提供する、一般化の操作に基づいている。反復ステップを概説する。
入力:終端ノード {t1 ,t2 … tn} を有するシソーラスTk
Tkに含めるのに十分な証拠を提供する発生回数の閾値:th(k, T)。
出力:終端ノード {t1k1 , t1k2, …, t2k1, t2k2 , … tnk1, tnk2 } を有する拡張されたシソーラス Tk+1
各終端ノード ti について、
1)ルートから ti への経路として検索クエリ q = { troot, …, ti} を形成する;
2)q についてウェブ検索を実行し、解答(スニペット)Aq の組を得る。
3)解答 Aq に対するペア単位一般化(セクション4)を計算する:
Λ(Aq)= a1 ^a2 , a1 ^a3, …, a1 ^am, …, …, am-1^am,
4)Λ(Aq)のすべての要素(単語、フレーズ)を、Λ(Aq)における出現数が多い順にソートする。出現数が閾値th(k, T)を超えるΛ(Aq)の要素だけを保持する。このセットを Λhigh(Aq)と呼ぶ。
5)既存のシソーラスノードのすべてからのラベルを Λhigh(Aq)から減算する:
Λnew (Aq) = Λhigh(Aq)/Tk
6)Λhigh(Aq)の各要素について、シソーラスノード tihk を生成し、ここで、h∈Λhigh(Aq)であり、k は現在の反復数であり、Tk にシソーラスエッジ (ti, , tihk,)を追加する。
【0129】
th(k, T)のデフォルト値は2である。しかしながら、各反復において所与の終端ノードにいくつのノードが追加されるかに関しては経験的な制限がある。この制限は、反復あたり5ノードであり;結果として、我々は、別個の検索結果において最も高い5つの、語の出現数をとる。この制約は、学習されているシソーラスのツリートポロジーを維持するのに役立つ。
【0130】
反復ステップのアルゴリズムが与えられて、これを第1のステップにおいて主要エンティティのセットに適用して、全体のシソーラスを構築する:
入力:主要ノードである {t1 ,t2 … tn} を有するシソーラス To
出力:終端ノードを有する結果シソーラスT
k を通して反復する
反復ステップを k に適用する
Tk+1が追加すべきノードの空集合を有する場合、停止する。
【0131】
シソーラス学習セッションの例
次に、上述のアルゴリズムを説明する。シード表現 tax-deduct を有すると想定する。
【0132】
図11は、本開示の一態様によるシソーラス学習を示す。
図12は、本開示の一態様によるシソーラス学習を示す。
【0133】
以下の4つのステップを実行する:
1)現在利用可能な表現の検索結果を得る。
2)言語学的出現に基づいて属性を選択する。
出現数は、特定の閾値を超える(および2を超える)べきである。
3)共通属性(「overlook(看過する)」のような、濃い灰色で強調された、検索結果間の共通性)を見つける。
4)新たに取得された属性を追加することによってシソーラス経路を拡張する。
ここで、学習ステップは、以下のとおりである:
1)「tax deduct overlook(税金控除看過)」についての検索結果を得る;
2)属性(現在のシソーラス経路からのエンティティの修飾子)を選択する
3)この場合、「PRP-mortgage(PRP-住宅ローン)」などの共通表現を見つける
4)新しく取得した属性を追加することにより、シソーラス経路を拡張する
Tax-deduct-overlook - mortgage,
Tax-deduct- overlook - no_itemize。
【0134】
図13は、本開示の一態様によるシソーラス学習を示す。
十分なシソーラスを構築した後、ここで、それを適用して、シソーラス経路を適切にカバーしない検索結果をフィルタリングにより除去することができる。「can I deduct tax on mortgage escrow account(住宅ローンのエスクロー口座の税金を控除することはできますか )」というクエリの場合、以下のヒットを得るが、それらのうちの2つは無関係であり(長円形枠内に示される)、なぜならば、それらはシソーラスノード {deduct, tax , mortgage, escrow_account} を含まないからである。クエリに最も近いシソーラス経路は、tax - deduct - overlook-mortgage- escrow_account であることに注目されたい。
【0135】
シソーラススナップショット
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 についての3つの経路のセット
各エンティティについて、キーワードのシーケンスが与えられると、読み手は、税金ドメインの文脈における意味を再構築することができる。このスナップショットは、シソーラスベースの検索関連性改善の概念を示し:いったん特定の意味(内容、我々のモデルにおいてはシソーラス経路)が確立されると、関連する解答を見つけることができる。表現の先頭は、それがもたらすすべての経路において生ずる(例えば、{sell_hobby - deductions - collection}, {sell_hobby - making - collection})。
【0136】
図14は、上記局面のうちの1つを実現するための分散型システム1400を示す簡略図である。例示された局面においては、分散型システム1400は、1つ以上のネットワーク1410を介して、ウェブブラウザ、プロプライエタリクライアント(たとえばオラクルフォーム)などのクライアントアプリケーションを実行して動作させるように構成される1つ以上のクライアントコンピューティングデバイス1402、1404、1406および1408を含む。サーバ1412は、ネットワーク1410を介してリモートクライアントコンピューティングデバイス1402、1404、1406および1408と通信可能に結合されてもよい。
【0137】
さまざまな局面においては、サーバ812は、システムの構成要素のうち1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。サービスまたはソフトウェアアプリケーションは非仮想環境および仮想環境を含み得る。仮想環境は、2次元または3次元(three-dimensional:3D)表現、ページベースの論理的環境などであろうとなかろうと、仮想イベント、トレードショー、シミュレータ、クラスルーム、購買商品取引および企業活動のために用いられるものを含み得る。いくつかの局面においては、これらのサービスは、ウェブベースのサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)モデルのもとで、クライアントコンピューティングデバイス1402,1404,1406および/または1408のユーザに供給されてもよい。そして、クライアントコンピューティングデバイス1402,1404,1406および/または1408を動作させるユーザは、1つ以上のクライアントアプリケーションを利用して、サーバ1412と相互作用して、これらの構成要素によって提供されるサービスを利用し得る。
【0138】
図に示されている構成では、システム1400のソフトウェアコンポーネント1418,1420および1422は、サーバ812上に実装されるように示されている。また、他の局面においては、分散システム1400の構成要素のうちの1つ以上および/またはこれらの構成要素によって提供されるサービスは、クライアントコンピューティングデバイス1402,1404,1406および/または1408のうちの1つ以上によって実現されてもよい。その場合、クライアントコンピューティングデバイスを動作させるユーザは、1つ以上のクライアントアプリケーションを利用して、これらの構成要素によって提供されるサービスを使用し得る。これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。分散型システム1400とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるべきである。したがって、図に示されている局面は、局面のシステムを実現するための分散型システムの一例であり、限定的であるよう意図されたものではない。
【0139】
クライアントコンピューティングデバイス1402,1404,1406および/または1408は、手持ち式携帯機器(たとえばiPhone(登録商標)、携帯電話、iPad(登録商標)、計算タブレット、パーソナルデジタルアシスタント(personal digital assistant:PDA))またはウェアラブル装置(たとえばグーグルグラス(登録商標)ヘッドマウントディスプレイ)であってもよく、当該装置は、マイクロソフト・ウィンドウズ(登録商標)・モバイル(登録商標)などのソフトウェアを実行し、および/または、iOS、ウィンドウズ・フォン、アンドロイド(登録商標)、ブラックベリー10、パームOSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、eメール、ショート・メッセージ・サービス(short message service:SMS)、ブラックベリー(登録商標)、または使用可能な他の通信プロトコルである。クライアントコンピューティングデバイスは、汎用パーソナルコンピュータであってもよく、当該汎用パーソナルコンピュータは、一例として、マイクロソフトウィンドウズ(登録商標)、アップルマッキントッシュ(登録商標)および/またはリナックス(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、ワークステーションコンピュータであってもよく、当該ワークステーションコンピュータは、たとえばGoogle Chrome OSなどのさまざまなGNU/リナックスオペレーティングシステムを含むがこれらに限定されるものではないさまざまな市販のUNIX(登録商標)またはUNIXライクオペレーティングシステムのうちのいずれかを実行する。代替的には、または付加的には、クライアントコンピューティングデバイス1402,1404,1406および1408は、シン・クライアントコンピュータ、インターネットにより可能なゲーミングシステム(たとえばキネクト(登録商標)ジェスチャ入力装置を備えるかまたは備えないマイクロソフトXボックスゲーム機)、および/または、ネットワーク1410を介して通信が可能なパーソナルメッセージング装置などのその他の電子装置であってもよい。
【0140】
例示的な分散型システム1400は、4個のクライアントコンピューティングデバイスを有するように示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを有する装置などの他の装置が、サーバ1412と相互作用してもよい。
【0141】
分散型システム1400におけるネットワーク1410は、さまざまな市販のプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者になじみのある任意のタイプのネットワークであってもよく、当該プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、アップルトークなどを含むが、これらに限定されるものではない。単に一例として、ネットワーク1410は、イーサネット(登録商標)、トークンリングなどに基づくものなどのローカルエリアネットワーク(LAN)であってもよい。ネットワーク1410は、広域ネットワークおよびインターネットであってもよい。ネットワーク1410は、仮想ネットワークを含んでいてもよく、当該仮想ネットワークは、仮想プライベートネットワーク(virtual private network:VPN)、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば米国電気電子学会(Institute of Electrical and Electronics:IEEE)802.14の一連のプロトコル、ブルートゥース(登録商標)および/またはその他の無線プロトコルのうちのいずれかのもとで動作するネットワーク)、および/またはこれらの任意の組合せ、および/または他のネットワークを含むが、これらに限定されるものではない。
【0142】
サーバ1412は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例として、PC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組合せで構成され得る。サーバ1412は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を含む他のコンピューティングアーキテクチャを含み得る。論理記憶装置の1つ以上のフレキシブルプールは、サーバのための仮想記憶デバイスを維持するように仮想化することができる。仮想ネットワークは、ソフトウェア定義型ネットワーキングを用いて、サーバ1412によって制御することができる。さまざまな局面においては、サーバ1412は、上記の開示に記載されている1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合され得る。たとえば、サーバ1412は、本開示の局面に係る上記の処理を実行するためのサーバに対応してもよい。
【0143】
サーバ1412は、上記のもののうちのいずれか、および、任意の市販のサーバオペレーティングシステムを含むオペレーティングシステムを実行し得る。また、サーバ1412は、ハイパーテキスト転送プロトコル(hypertext transport protocol:HTTP)サーバ、ファイル転送プロトコル(file transfer protocol:FTP)サーバ、共通ゲートウェイインターフェース(common gateway interface:CGI)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまな付加的サーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示的なデータベースサーバは、オラクル社(Oracle)、マイクロソフト社(Microsoft)、サイベース社(Sybase)、IBM社(International Business Machines)などから市販されているものを含むが、これらに限定されるものではない。
【0144】
いくつかの実現例では、サーバ1412は、クライアントコンピューティングデバイス802,804,806および808のユーザから受取ったデータフィードおよび/またはイベント更新を分析および統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベント更新は、1つ以上の第三者情報源および連続的なデータストリームから受信されるTwitter(登録商標)フィード、Facebook(登録商標)更新またはリアルタイム更新を含み得るが、これらに限定されるものではなく、センサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通モニタリングなどに関連するリアルタイムイベントを含み得る。また、サーバ1412は、クライアントコンピューティングデバイス1402,1404,1406および1408の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含み得る。
【0145】
また、分散型システム1400は、1つ以上のデータベース1414および1416を含み得る。データベース1414および1416は、さまざまな場所に存在し得る。一例として、データベース1414および1416の1つ以上は、サーバ1412にローカルな(および/または存在する)非一時的な記憶媒体に存在していてもよい。代替的に、データベース1414および1416は、サーバ1412から遠く離れていて、ネットワークベースまたは専用の接続を介してサーバ1412と通信してもよい。一組の局面においては、データベース1414および1416は、記憶領域ネットワーク(storage-area network:SAN)に存在していてもよい。同様に、サーバ1412に起因する機能を実行するための任意の必要なファイルが、サーバ1412上にローカルに、および/または、リモートで適宜格納されていてもよい。一組の局面においては、データベース1414および1416は、SQLフォーマットコマンドに応答してデータを格納、更新および検索するように適合された、オラクル社によって提供されるデータベースなどのリレーショナルデータベースを含み得る。
【0146】
図15は、本開示の一局面に係る、一局面のシステムの1つ以上の構成要素によって提供されるサービスをクラウドサービスとして供給することができるシステム環境1500の1つ以上の構成要素の簡略化されたブロック図である。示されている局面においては、システム環境1500は、クラウドサービスを提供するクラウドインフラストラクチャシステム1502と相互作用するようにユーザによって使用され得る1つ以上のクライアントコンピューティングデバイス1504,1506および1508を含む。クライアントコンピューティングデバイスは、クラウドインフラストラクチャシステム1502によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム1502と相互作用するようにクライアントコンピューティングデバイスのユーザによって使用され得る、ウェブブラウザ、専有のクライアントアプリケーション(たとえばオラクルフォームズ)または他のアプリケーションなどのクライアントアプリケーションを動作させるように構成され得る。
【0147】
図に示されているクラウドインフラストラクチャシステム1502が図示されている構成要素とは他の構成要素を有し得ることが理解されるべきである。さらに、図に示されている局面は、本開示の局面を組込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の局面においては、クラウドインフラストラクチャシステム1502は、図に示されているものよりも多いまたは少ない数の構成要素を有していてもよく、2つ以上の構成要素を組合せてもよく、または構成要素の異なる構成または配置を有していてもよい。
【0148】
クライアントコンピューティングデバイス1504,1506および1508は、1402,1404,1406および1408について上記したものと類似のデバイスであってもよい。
【0149】
例示的なシステム環境1500は3個のクライアントコンピューティングデバイスを有するように示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサなどを有する装置などの他の装置が、クラウドインフラストラクチャシステム1502と相互作用してもよい。
【0150】
ネットワーク1510は、クライアント1504,1506および1508とクラウドインフラストラクチャシステム1502との間のデータの通信およびやりとりを容易にし得る。各々のネットワークは、ネットワーク2810について上記したものを含むさまざまな市販のプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者になじみのある任意のタイプのネットワークであってもよい。
【0151】
クラウドインフラストラクチャシステム1502は、サーバ1415について上記したものを含み得る1つ以上のコンピュータおよび/またはサーバを備え得る。
【0152】
特定の局面においては、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータ記憶およびバックアップソリューション、ウェブベースのeメールサービス、ホスト型オフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理技術サポートサービスなどの、クラウドインフラストラクチャシステムのユーザがオンデマンドで利用可能な多数のサービスを含み得る。クラウドインフラストラクチャシステムによって提供されるサービスは、そのユーザのニーズを満たすように動的にスケーリング可能である。クラウドインフラストラクチャシステムによって提供されるサービスの具体的なインスタンス化は、本明細書では「サービスインスタンス」と称される。一般に、インターネットなどの通信ネットワークを介してクラウドサービスプロバイダのシステムからユーザが利用可能な任意のサービスは、「クラウドサービス」と称される。通常、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なっている。たとえば、クラウドサービスプロバイダのシステムがアプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドで当該アプリケーションを注文および使用してもよい。
【0153】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーションへの保護されたコンピュータネットワークアクセス、またはクラウドベンダによってユーザに提供されるかもしくはそうでなければ当該技術分野において公知の他のサービスを含み得る。たとえば、サービスは、インターネットを介したクラウド上のリモートストレージへのパスワードによって保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク化された開発者による私的使用のためのウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダのウェブサイト上でホストされるeメールソフトウェアアプリケーションへのアクセスを含み得る。
【0154】
特定の局面においては、クラウドインフラストラクチャシステム1502は、セルフサービスの、サブスクリプションベースの、弾性的にスケーラブルな、信頼性のある、高可用性の、安全な態様で顧客に配信される一連のアプリケーション、ミドルウェアおよびデータベースサービス提供品を含み得る。このようなクラウドインフラストラクチャシステムの一例は、本譲受人によって提供されるオラクルパブリッククラウドである。
【0155】
時としてビッグデータとも称される大量のデータは、インフラストラクチャシステムによって、多数のレベルにおいて、および異なるスケールでホストおよび/または操作され得る。このようなデータが含み得るデータセットは、非常に大型で複雑であるので、典型的なデータベース管理ツールまたは従来のデータ処理アプリケーションを用いて処理するのが困難になる可能性がある。たとえば、テラバイトのデータはパーソナルコンピュータまたはそれらのラックベースの対応物を用いて格納、検索取得および処理することが難しいかもしれない。このようなサイズのデータは、最新のリレーショナルデータベース管理システムおよびデスクトップ統計ならびに視覚化パッケージを用いて機能させるのが困難である可能性がある。それらは、データを許容可能な経過時間内に捕捉しキュレーションし管理し処理するよう、一般的に用いられるソフトウェアツールの構造を超えて、何千ものサーバコンピュータを動作させる大規模並列処理ソフトウェアを必要とし得る。
【0156】
大量のデータを視覚化し、トレンドを検出し、および/または、データと相互作用させるために、分析者および研究者は極めて大きいデータセットを格納し処理することができる。平行にリンクされた何十、何百または何千ものプロセッサがこのようなデータに対して作用可能であり、これにより、このようなデータを表示し得るか、または、データに対する外力をシミュレートし得るかもしくはそれが表しているものをシミュレートし得る。これらのデータセットは、データベースにおいて編制されたデータ、もしくは構造化モデルに従ったデータ、および/または、非体系的なデータ(たとえば電子メール、画像、データブロブ(バイナリ大型オブジェクト)、ウェブページ、複雑なイベント処理)などの構造化されたデータを必要とする可能性がある。目標物に対してより多くの(またはより少数の)コンピューティングリソースを比較的迅速に集中させるために局面の能力を強化することにより、ビジネス、政府関係機関、研究組織、私人、同じ目的をもった個々人もしくは組織のグループ、または他のエンティティからの要求に基づいて大量のデータセット上でタスクを実行するために、クラウドインフラストラクチャシステムがより良好に利用可能となる。
【0157】
さまざまな局面においては、クラウドインフラストラクチャシステム1502は、クラウドインフラストラクチャシステム1502によって供給されるサービスへの顧客のサブスクリプションを自動的にプロビジョニング、管理および追跡するように適合され得る。クラウドインフラストラクチャシステム1502は、さまざまなデプロイメントモデルを介してクラウドサービスを提供し得る。たとえば、クラウドインフラストラクチャシステム1502が、(たとえばオラクル社によって所有される)クラウドサービスを販売する組織によって所有され、一般大衆またはさまざまな産業企業がサービスを利用できるパブリッククラウドモデルのもとでサービスが提供されてもよい。別の例として、クラウドインフラストラクチャシステム1502が単一の組織のためだけに運営され、当該組織内の1つ以上のエンティティにサービスを提供し得るプライベートクラウドモデルのもとでサービスが提供されてもよい。また、クラウドインフラストラクチャシステム1502およびクラウドインフラストラクチャシステム1502によって提供されるサービスが、関連のコミュニティ内のいくつかの組織によって共有されるコミュニティクラウドモデルのもとでクラウドサービスが提供されてもよい。また、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルのもとでクラウドサービスが提供されてもよい。
【0158】
いくつかの局面においては、クラウドインフラストラクチャシステム1502によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)カテゴリ、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)カテゴリ、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリ、またはハイブリッドサービスを含むサービスの他のカテゴリのもとで提供される1つ以上のサービスを含み得る。顧客は、サブスクリプションオーダーによって、クラウドインフラストラクチャシステム1502によって提供される1つ以上のサービスをオーダーし得る。次いで、クラウドインフラストラクチャシステム1502は、顧客のサブスクリプションオーダーでサービスを提供するために処理を実行する。
【0159】
いくつかの局面においては、クラウドインフラストラクチャシステム1502によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るが、これらに限定されるものではない。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに分類されるクラウドサービスを提供するように構成され得る。たとえば、SaaSプラットフォームは、一体化された開発およびデプロイメントプラットフォーム上で一連のオンデマンドアプリケーションを構築および配信するための機能を提供し得る。SaaSプラットフォームは、SaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムで実行されるアプリケーションを利用することができる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得することができる。さまざまな異なるSaaSサービスが提供されてもよい。例としては、大規模組織のための販売実績管理、企業統合およびビジネスの柔軟性のためのソリューションを提供するサービスが挙げられるが、これらに限定されるものではない。
【0160】
いくつかの局面においては、プラットフォームサービスは、PaaSプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリに分類されるクラウドサービスを提供するように構成され得る。プラットフォームサービスの例としては、組織(オラクル社など)が既存のアプリケーションを共有の共通アーキテクチャ上で統合することを可能にするサービス、および、プラットフォームによって提供される共有のサービスを活用する新たなアプリケーションを構築する機能を挙げることができるが、これらに限定されるものではない。PaaSプラットフォームは、PaaSサービスを提供するための基本的なソフトウェアおよびインフラストラクチャを管理および制御し得る。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを取得することができる。プラットフォームサービスの例としては、オラクルJavaクラウドサービス(Java Cloud Service:JCS)、オラクルデータベースクラウドサービス(Database Cloud Service:DBCS)などが挙げられるが、これらに限定されるものではない。
【0161】
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを利用することができ、デプロイされたサービスを制御することもできる。いくつかの局面においては、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービル(たとえばオラクルフージョンミドルウェアサービス)およびJavaクラウドサービスを含み得る。一局面においては、データベースクラウドサービスは、組織がデータベースリソースをプールしてデータベースクラウドの形態でデータベース・アズ・ア・サービスを顧客に供給することを可能にする共有のサービスデプロイメントモデルをサポートし得る。ミドルウェアクラウドサービスは、クラウドインフラストラクチャシステムにおいてさまざまなビジネスアプリケーションを開発およびデプロイするために顧客にプラットフォームを提供し得るともに、Javaクラウドサービスは、クラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイするために顧客にプラットフォームを提供し得る。
【0162】
さまざまな異なるインフラストラクチャサービスは、クラウドインフラストラクチャシステムにおけるIaaSプラットフォームによって提供されてもよい。インフラストラクチャサービスは、ストレージ、ネットワークなどの基本的な計算リソース、ならびに、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための他の基礎的な計算リソースの管理および制御を容易にする。
【0163】
また、特定の局面においては、クラウドインフラストラクチャシステム1502は、クラウドインフラストラクチャシステムの顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース1530を含み得る。一局面においては、インフラストラクチャリソース1530は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するための、サーバ、ストレージおよびネットワーキングリソースなどのハードウェアの予め一体化された最適な組合せを含み得る。
【0164】
いくつかの局面においては、クラウドインフラストラクチャシステム1502におけるリソースは、複数のユーザによって共有され、デマンドごとに動的に再割り振りされてもよい。また、リソースは、異なる時間帯にユーザに割り振られてもよい。たとえば、クラウドインフラストラクチャシステム1530は、第1の時間帯におけるユーザの第1の組が規定の時間にわたってクラウドインフラストラクチャシステムのリソースを利用することを可能にし得るとともに、異なる時間帯に位置するユーザの別の組への同一のリソースの再割り振りを可能にし得ることによって、リソースの利用を最大化することができる。
【0165】
特定の局面においては、クラウドインフラストラクチャシステム1502のさまざまな構成要素またはモジュール、および、クラウドインフラストラクチャシステム1502によって提供されるサービス、によって共有されるいくつかの内部共有サービス1532が提供され得る。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、インテグレーションサービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性・バックアップおよび回復サービス、クラウドサポートを可能にするためのサービス、eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されるものではない。
【0166】
特定の局面においては、クラウドインフラストラクチャシステム1502は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえばSaaSサービス、PaaSサービスおよびIaaSサービス)の包括的管理を提供し得る。一局面においては、クラウド管理機能は、クラウドインフラストラクチャシステム1502によって受信された顧客のサブスクリプションをプロビジョニング、管理および追跡などするための機能を含み得る。
【0167】
一局面においては、図に示されるように、クラウド管理機能は、オーダー管理モジュール1520、オーダーオーケストレーションモジュール1522、オーダープロビジョニングモジュール1524、オーダー管理および監視モジュール1526、ならびにアイデンティティ管理モジュール1528などの1つ以上のモジュールによって提供され得る。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他の適切な構成および/もしくは組み合わせであり得る1つ以上のコンピュータおよび/またはサーバを含み得るか、またはそれらを用いて提供され得る。
【0168】
例示的な動作1534において、クライアントデバイス1504,1506または1508などのクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム1502によって提供される1つ以上のサービスを要求し、クラウドインフラストラクチャシステム1502によって供給される1つ以上のサービスのサブスクリプションについてオーダーを行うことによって、クラウドインフラストラクチャシステム1502と対話し得る。特定の局面においては、顧客は、クラウドユーザインターフェース(User Interface:UI)、すなわちクラウドUI1515、クラウドUI1514および/またはクラウドUI1516にアクセスして、これらのUIを介してサブスクリプションオーダーを行い得る。顧客がオーダーを行ったことに応答してクラウドインフラストラクチャシステム1502によって受信されたオーダー情報は、顧客と、顧客がサブスクライブする予定のクラウドインフラストラクチャシステム1502によって提供される1つ以上のサービスとを特定する情報を含み得る。
【0169】
オーダーが顧客によって行われた後、オーダー情報は、クラウドUI1515,1514および/または1516を介して受信される。
【0170】
動作1536において、オーダーは、オーダーデータベース1518に格納される。オーダーデータベース1518は、クラウドインフラストラクチャシステム1502によって動作させられるとともに他のシステム要素と連携して動作させられるいくつかのデータベースのうちの1つであってもよい。
【0171】
動作1538において、オーダー情報は、オーダー管理モジュール1520に転送される。いくつかの例では、オーダー管理モジュール1520は、オーダーの確認および確認時のオーダーの予約などのオーダーに関連する請求書発行機能および会計経理機能を実行するように構成され得る。
【0172】
動作1540において、オーダーに関する情報は、オーダーオーケストレーションモジュール1522に通信される。オーダーオーケストレーションモジュール1522は、顧客によって行われたオーダーについてのサービスおよびリソースのプロビジョニングをオーケストレートするためにオーダー情報を利用し得る。いくつかの例では、オーダーオーケストレーションモジュール1522は、オーダープロビジョニングモジュール1524のサービスを用いてサブスクライブされたサービスをサポートするためにリソースのプロビジョニングをオーケストレートし得る。
【0173】
特定の局面においては、オーダーオーケストレーションモジュール1522は、各々のオーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネス論理を適用してオーダーがプロビジョニングに進むべきか否かを判断する。動作1542において、新たなサブスクリプションについてのオーダーを受信すると、オーダーオーケストレーションモジュール1522は、リソースを割り振って当該サブスクリプションオーダーを満たすのに必要とされるそれらのリソースを構成するための要求をオーダープロビジョニングモジュール1524に送る。オーダープロビジョニングモジュール1524は、顧客によってオーダーされたサービスについてのリソースの割り振りを可能にする。オーダープロビジョニングモジュール1524は、クラウドインフラストラクチャシステム1500によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理的実装層との間にあるレベルの抽象化を提供する。したがって、オーダーオーケストレーションモジュール1522は、サービスおよびリソースが実際に実行中にプロビジョニングされるか、事前にプロビジョニングされて要求があったときに割振られる/割当てられるのみであるかなどの実装の詳細から切り離すことができる。
【0174】
動作1544において、サービスおよびリソースがプロビジョニングされると、提供されたサービスの通知が、クラウドインフラストラクチャシステム1502のオーダープロビジョニングモジュール1524によってクライアントコンピューティングデバイス1504,1506および/または1508上の顧客に送られ得る。
【0175】
動作1546において、顧客のサブスクリプションオーダーが、オーダー管理および監視モジュール1526によって管理および追跡され得る。いくつかの例では、オーダー管理および監視モジュール1526は、使用される記憶量、転送されるデータ量、ユーザの数、ならびにシステムアップ時間およびシステムダウン時間の量などのサブスクリプションオーダーにおけるサービスについての使用統計を収集するように構成され得る。
【0176】
特定の局面においては、クラウドインフラストラクチャシステム1500は、アイデンティティ管理モジュール1528を含み得る。アイデンティティ管理モジュール1528は、クラウドインフラストラクチャシステム1500におけるアクセス管理および認可サービスなどのアイデンティティサービスを提供するように構成され得る。いくつかの局面においては、アイデンティティ管理モジュール1528は、クラウドインフラストラクチャシステム1502によって提供されるサービスを利用したい顧客についての情報を制御し得る。このような情報は、このような顧客のアイデンティティを認証する情報と、それらの顧客がさまざまなシステムリソース(たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してどのアクションを実行することを認可されるかを記載する情報とを含み得る。また、アイデンティティ管理モジュール1528は、各々の顧客についての説明的情報、ならびに、どのようにしておよび誰によってこの説明的情報がアクセスおよび変更され得るかについての説明的情報の管理を含み得る。
【0177】
図16は、本開示のさまざまな局面を実現することができる例示的なコンピュータシステム1600を示す。システム1600は、上記のコンピュータシステムのうちのいずれかを実現するために使用され得る。図に示されているように、コンピュータシステム1600は、バスサブシステム1602を介していくつかの周辺サブシステムと通信する処理ユニット1604を含む。これらの周辺サブシステムは、処理加速ユニット1606と、I/Oサブシステム1608と、記憶サブシステム1618と、通信サブシステム1624とを含み得る。記憶サブシステム1618は、有形のコンピュータ読取可能な記憶媒体1622と、システムメモリ1610とを含む。
【0178】
バスサブシステム1602は、コンピュータシステム1600のさまざまな構成要素およびサブシステムに、意図されたように互いに通信させるための機構を提供する。バスサブシステム1602は、単一のバスとして概略的に示されているが、バスサブシステムの代替的な局面は、複数のバスを利用してもよい。バスサブシステム1602は、メモリバスまたはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのうちのいずれかを使用するローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、IEEE P1686.1標準に合わせて製造されたメザニンバスとして実現可能な、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、拡張ISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバスおよび周辺機器相互接続(Peripheral Component Interconnect:PCI)バスを含み得る。
【0179】
1つ以上の集積回路(たとえば従来のマイクロプロセッサまたはマイクロコントローラ)として実現可能な処理ユニット1604は、コンピュータシステム1600の動作を制御する。処理ユニット1604には、1つ以上のプロセッサが含まれ得る。これらのプロセッサは、単一コアまたはマルチコアのプロセッサを含み得る。特定の局面においては、処理ユニット1604は、各々の処理ユニットに含まれる単一コアまたはマルチコアのプロセッサを有する1つ以上の独立した処理ユニット1632および/または1634として実現されてもよい。また、他の局面においては、処理ユニット1604は、2つのデュアルコアプロセッサを単一のチップに組み入れることによって形成されるクアッドコア処理ユニットとして実現されてもよい。
【0180】
さまざまな局面においては、処理ユニット1604は、プログラムコードに応答してさまざまなプログラムを実行し得るとともに、同時に実行される複数のプログラムまたはプロセスを維持し得る。任意の所与の時点において、実行されるべきプログラムコードのうちのいくつかまたは全ては、プロセッサ1604および/または記憶サブシステム1618に存在し得る。好適なプログラミングを通じて、プロセッサ1604は、上記のさまざまな機能を提供し得る。また、コンピュータシステム1600は、加えて、デジタル信号プロセッサ(digital signal processor:DSP)、特殊用途プロセッサなどを含み得る処理加速ユニット1606を含み得る。
【0181】
I/Oサブシステム1608は、ユーザインターフェイス入力装置と、ユーザインターフェイス出力装置とを含み得る。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティング装置、タッチパッドまたはタッチスクリーンを含んでいてもよく、これらは、音声コマンド認識システム、マイクロホンおよび他のタイプの入力装置とともに、ディスプレイ、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、オーディオ入力装置に組込まれている。ユーザインターフェイス入力装置は、たとえば、ジェスチャおよび話されたコマンドを用いてナチュラルユーザインターフェースを介してユーザがマイクロソフトXbox(登録商標)360ゲームコントローラなどの入力装置を制御して入力装置と対話することを可能にするマイクロソフトキネクト(登録商標)モーションセンサなどのモーション検知および/またはジェスチャ認識装置を含み得る。また、ユーザインターフェイス入力装置は、ユーザから眼球運動(たとえば撮影および/またはメニュー選択を行っている間の「まばたき」)を検出して、当該眼球ジェスチャを入力装置への入力として変換するグーグルグラス(登録商標)まばたき検出器などの眼球ジェスチャ認識装置を含み得る。また、ユーザインターフェイス入力装置は、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識検知装置を含み得る。
【0182】
また、ユーザインターフェイス入力装置は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびスピーカなどのオーディオ/ビジュアル装置、デジタルカメラ、デジタルカムコーダ、携帯型メディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線検出装置を含み得るが、これらに限定されるものではない。また、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴画像化、位置発光断層撮影、医療用超音波検査装置などの医療用画像化入力装置を含み得る。また、ユーザインターフェイス入力装置は、たとえばMIDIキーボード、デジタル楽器などのオーディオ入力装置を含み得る。
【0183】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、表示灯、またはオーディオ出力装置などの非視覚的ディスプレイなどを含み得る。ディスプレイサブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display:LCD)またはプラズマディスプレイを使用するものなどのフラットパネルディスプレイ、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム1600からの情報をユーザまたは他のコンピュータに出力するための全ての実現可能なタイプの装置および機構を含むよう意図されている。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車のナビゲーションシステム、プロッタ、音声出力装置およびモデムなどの、テキスト、グラフィックスおよびオーディオ/ビデオ情報を視覚的に伝えるさまざまな表示装置を含み得るが、これらに限定されるものではない。
【0184】
コンピュータシステム1600は、現在のところシステムメモリ1610内に位置しているように示されているソフトウェア要素を備える記憶サブシステム1618を備え得る。システムメモリ1610は、処理ユニット1604上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されるデータとを格納し得る。
【0185】
コンピュータシステム1600の構成およびタイプに応じて、システムメモリ1610は、揮発性(ランダムアクセスメモリ(random access memory:RAM)など)であってもよく、および/または、不揮発性(リードオンリメモリ(read-only memory:ROM)、フラッシュメモリなど)であってもよい。RAMは、典型的には、処理ユニット1604が直ちにアクセス可能なデータおよび/またはプログラムモジュール、および/または、処理ユニット1604によって現在動作および実行されているデータおよび/またはプログラムモジュールを収容する。いくつかの実現例では、システムメモリ1610は、スタティックランダムアクセスメモリ(static random access memory:SRAM)またはダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)などの複数の異なるタイプのメモリを含み得る。いくつかの実現例では、始動中などにコンピュータシステム1600内の要素間で情報を転送することを助ける基本ルーチンを含む基本入力/出力システム(basic input/output system:BIOS)が、典型的にはROMに格納され得る。一例としておよび非限定的に、システムメモリ1610は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)などを含み得るアプリケーションプログラム1612、プログラムデータ1614およびオペレーティングシステム1616も示す。一例として、オペレーティングシステム1616は、マイクロソフトウィンドウズ(登録商標)、アップルマッキントッシュ(登録商標)および/もしくはリナックスオペレーティングシステムのさまざまなバージョン、さまざまな市販のUNIX(登録商標)もしくはUNIXライクオペレーティングシステム(さまざまなGNU/リナックスオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これらに限定されるものではない)、ならびに/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド(登録商標)OS、ブラックベリー(登録商標)10OSおよびパーム(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムを含み得る。
【0186】
また、記憶サブシステム1618は、いくつかの局面の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能な記憶媒体を提供し得る。プロセッサによって実行されたときに上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)が記憶サブシステム1618に格納され得る。これらのソフトウェアモジュールまたは命令は、処理ユニット1604によって実行され得る。また、記憶サブシステム1618は、本開示に従って使用されるデータを格納するためのリポジトリを提供し得る。
【0187】
また、記憶サブシステム1618は、コンピュータ読取可能な記憶媒体1622にさらに接続可能なコンピュータ読取可能な記憶媒体リーダ1620を含み得る。ともにおよび任意には、システムメモリ1610と組合せて、コンピュータ読取可能な記憶媒体1622は、コンピュータ読取可能な情報を一時的および/または永久に収容、格納、送信および検索するための記憶媒体に加えて、リモートの、ローカルの、固定されたおよび/または取外し可能な記憶装置を包括的に表わし得る。
【0188】
コードまたはコードの一部を含むコンピュータ読取可能な記憶媒体1622は、当該技術分野において公知のまたは使用される任意の適切な媒体を含み得る。当該媒体は、情報の格納および/または送信のための任意の方法または技術において実現される揮発性および不揮発性の、取外し可能および取外し不可能な媒体などであるが、これらに限定されるものではない記憶媒体および通信媒体を含む。これは、RAM、ROM、電子的消去・プログラム可能ROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(digital versatile disk:DVD)、または他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ読取可能な媒体などの有形の一時的なコンピュータ読取可能な記憶媒体を含み得る。また、これは、データ信号、データ送信などの無形の一時的なコンピュータ読取可能な媒体、または、所望の情報を送信するために使用可能であるとともにコンピューティングシステム1618によってアクセス可能である他の任意の媒体を含み得る。
【0189】
一例として、コンピュータ読取可能な記憶媒体1622は、取外し不可能な不揮発性磁気媒体から読取るまたは当該媒体に書込むハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読取るまたは当該ディスクに書込む磁気ディスクドライブ、ならびに、CD ROM、DVDおよびブルーレイ(登録商標)ディスクまたは他の光学式媒体などの取外し可能な不揮発性光学ディスクから読取るまたは当該ディスクに書込む光学式ディスクドライブを含み得る。コンピュータ読取可能な記憶媒体1622は、ジップ(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digital:SD)カード、DVDディスク、デジタルビデオテープなどを含み得るが、これらに限定されるものではない。また、コンピュータ読取可能な記憶媒体1622は、フラッシュメモリベースのSSD、企業向けフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(solid-state drive:SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(magnetoresistive RAM:MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組合せを使用するハイブリッドSSDを含み得る。ディスクドライブおよびそれらの関連のコンピュータ読取可能な媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールおよび他のデータをコンピュータシステム1600に提供し得る。
【0190】
通信サブシステム1624は、他のコンピュータシステムおよびネットワークとのインターフェイスを提供する。通信サブシステム1624は、他のシステムからデータを受信したり、コンピュータシステム1600から他のシステムにデータを送信するためのインターフェイスの役割を果たす。たとえば、通信サブシステム1624は、コンピュータシステム1600がインターネットを介して1つ以上の装置に接続することを可能にし得る。いくつかの局面においては、通信サブシステム1624は、(たとえば3G、4GまたはEDGE(enhanced data rates for global evolution)などの携帯電話技術、高度データネットワーク技術を用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)トランシーバコンポーネント、WiFi(IEEE802.28ファミリ標準または他のモバイル通信技術またはそれらの任意の組合せ)、全地球測位システム(global positioning system:GPS)レシーバコンポーネント、および/または、他のコンポーネントを含み得る。いくつかの局面においては、通信サブシステム1624は、無線インターフェイスに加えて、または無線インターフェイスの代わりに、有線ネットワーク接続(たとえばイーサネット)を提供し得る。
【0191】
また、いくつかの局面においては、通信サブシステム1624は、コンピュータシステム1600を使用し得る1人以上のユーザを代表して、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新1616などの形態で入力通信を受信し得る。
【0192】
一例として、通信サブシステム1624は、ツイッター(登録商標)フィード、フェースブック(登録商標)更新、リッチ・サイト・サマリ(Rich Site Summary:RSS)フィードなどのウェブフィードなどのデータフィード1626をリアルタイムでソーシャルメディアネットワークおよび/または他の通信サービスのユーザから受信し、および/または、1つ以上の第三者情報源からリアルタイム更新を受信するように構成され得る。
【0193】
加えて、通信サブシステム1624は、連続的なデータストリームの形態でデータを受信するように構成され得る。当該データは、連続的である場合もあれば本質的に明確な端部をもたない状態で境界がない場合もあるリアルタイムイベントのイベントストリーム1628および/またはイベント更新1616を含み得る。連続的なデータを生成するアプリケーションの例としては、たとえばセンサデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通モニタリングなどを含み得る。
【0194】
また、通信サブシステム1624は、構造化されたおよび/または構造化されていないデータフィード1626、イベントストリーム1628、イベント更新1616などを、コンピュータシステム1600に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成され得る。
【0195】
コンピュータシステム1600は、手持ち式携帯機器(たとえばiPhone(登録商標)携帯電話、iPad(登録商標)計算タブレット、PDA)、ウェアラブル装置(たとえばグーグルグラス(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラックまたはその他のデータ処理システムを含むさまざまなタイプのうちの1つであってもよい。
【0196】
コンピュータおよびネットワークの絶え間なく変化し続ける性質のために、図に示されているコンピュータシステム1600の説明は、特定の例として意図されているに過ぎない。図に示されているシステムよりも多くのまたは少ない数の構成要素を有する多くの他の構成が可能である。たとえば、ハードウェア、ファームウェア、(アプレットを含む)ソフトウェア、または組合せにおいて、カスタマイズされたハードウェアが使用されてもよく、および/または、特定の要素が実装されてもよい。さらに、ネットワーク入力/出力装置などの他のコンピューティングデバイスへの接続が利用されてもよい。本明細書中に提供される開示および教示に基づいて、当業者は、さまざまな局面を実現するための他の手段および/または方法を理解するであろう。
【0197】
上述の明細書では、本開示の局面は、その具体的な局面を参照して記載されているが、本開示はこれに限定されるものではないことを当業者は認識するであろう。上述の開示のさまざまな特徴および局面は、個々にまたは一緒に使用されてもよい。さらに、局面は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されているものを越えたいくつもの環境およびアプリケーションでも利用可能である。したがって、明細書および図面は、限定的ではなく例示的なものとみなされるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16