特表2018-533126(P2018-533126A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特表2018-533126データベースへの自然言語インタフェースのための方法、システム、およびコンピュータ・プログラム製品
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2018-533126(P2018-533126A)
(43)【公表日】2018年11月8日
(54)【発明の名称】データベースへの自然言語インタフェースのための方法、システム、およびコンピュータ・プログラム製品
(51)【国際特許分類】
   G06F 17/30 20060101AFI20181012BHJP
   G06F 12/00 20060101ALI20181012BHJP
【FI】
   G06F17/30 330C
   G06F17/30 320D
   G06F12/00 512
【審査請求】未請求
【予備審査請求】未請求
【全頁数】34
(21)【出願番号】特願2018-513586(P2018-513586)
(86)(22)【出願日】2016年9月15日
(85)【翻訳文提出日】2018年3月14日
(86)【国際出願番号】IB2016055494
(87)【国際公開番号】WO2017046729
(87)【国際公開日】20170323
(31)【優先権主張番号】14/858,841
(32)【優先日】2015年9月18日
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】シェイニン、バディム
(72)【発明者】
【氏名】パトワーダン、シッダールタ、アジート
(72)【発明者】
【氏名】ボグラエフ、ヴラニミル、コンスタンティノフ
(72)【発明者】
【氏名】ホラーサーニ、エラヘ
(72)【発明者】
【氏名】ゼルフォス、ペトロス
(57)【要約】
【課題】本発明のある実施形態は、自然言語クエリをユーザからインタフェースを用いて受け取る方法を提供する。
【解決手段】概念の名称と、概念の性質の名称とを含む、データベースにおけるデータのオントロジ表現が、入力ポートを用いて受け取られる。言語に依存し、オントロジとは独立である、広く用いられる言語の構造を含むテンプレート規則が、入力ポートを用いて受け取られる。自然言語クエリにおけるエンティティと関係とを識別するために規則生成エンジンによりデータベースにおけるデータのオントロジ表現とテンプレート規則とを用いて規則が自動的に生成される。上記規則を用いてプロセッサにより自然言語クエリにおいてエンティティと関係とが識別される。クエリ生成エンジンを用いて上記エンティティと関係とから構造化されたデータ言語クエリが生成される。
【選択図】図1
【特許請求の範囲】
【請求項1】
構造化されたデータ言語クエリを作成するための方法であって、
自然言語クエリをユーザからインタフェースを用いて受け取るステップと、
データベースにおけるデータのオントロジ表現を入力ポートを用いて受け取るステップであって、前記データベースにおける前記データの前記オントロジ表現が、前記データベースにおけるテーブルの名称と、前記テーブルにおけるカラムの名称と、前記テーブルにおけるローの名称とを含む、前記ステップと、
テンプレート規則を前記入力ポートを用いて受け取るステップであって、前記テンプレート規則が、言語に依存し、オントロジとは独立であり、前記テンプレート規則が、言語の広く用いられる構造を含む、前記ステップと、
前記インタフェースと前記入力ポートとに接続された規則生成エンジンを用いて規則を自動的に生成するステップであって、前記規則が、前記自然言語クエリにおいてエンティティと関係とを識別するために前記データベースにおける前記データの前記オントロジ表現と前記テンプレート規則とを用いて生成される、前記ステップと、
前記規則生成エンジンに接続されたプロセッサを用いてエンティティと関係とを識別するステップであって、前記エンティティと関係とは、前記規則を用いて前記自然言語クエリにおいて識別される、前記ステップと、
前記構造化されたデータ言語クエリを、前記プロセッサに接続されたクエリ生成エンジンを用いて生成するステップであって、前記構造化されたデータ言語クエリが、前記エンティティと関係とから生成される、前記ステップと、
を含む方法。
【請求項2】
前記テンプレート規則のうちのあるテンプレート規則が、少なくとも1つの変数を含む、請求項1に記載の方法。
【請求項3】
前記テンプレート規則のうちのあるテンプレート規則が、第1の変数と、コネクタと、第2の変数とを含む、請求項1に記載の方法。
【請求項4】
前記コネクタが、動詞と前置詞との一方を含む、請求項3に記載の方法。
【請求項5】
前記規則を生成する前記ステップが、
テンプレート規則の前記第1の変数を、前記カラムの名称のうちの1つで置き換えるステップと、
前記テンプレート規則の前記第2の変数を、前記カラムの名称のうちの別の1つで置き換えるステップと、
を含む、請求項3に記載の方法。
【請求項6】
前記データのオントロジ表現を豊富にするために言い換えを自動的に生成するステップをさらに含んでおり、前記自然言語クエリにおいてエンティティと関係とを識別するために前記規則を自動的に生成する前記ステップが、前記言い換えに基づく、請求項1に記載の方法。
【請求項7】
少なくとも1つの前記エンティティの類義語を自動的に生成するステップをさらに含んでおり、前記構造化されたデータ言語クエリを生成する前記ステップが、前記エンティティの前記類義語から前記構造化されたデータ言語クエリを生成するステップをさらに含む、請求項1に記載の方法。
【請求項8】
構造化されたデータ言語クエリを作成するための方法であって、
自然言語クエリをユーザからインタフェースを用いて受け取るステップと、
データベースにおけるデータのオントロジ表現を入力ポートを用いて受け取るステップであって、前記データベースにおける前記データの前記オントロジ表現が、概念の名称と、概念の性質の名称とを含む、前記ステップと、
テンプレート規則を前記入力ポートを用いて受け取るステップであって、前記テンプレート規則が、言語に依存し、オントロジとは独立であり、前記テンプレート規則が、言語の広く用いられる構造を含む、前記ステップと、
前記インタフェースと前記入力ポートとに接続された規則生成エンジンを用いて規則を自動的に生成するステップであって、前記規則が、前記自然言語クエリにおいてエンティティと関係とを識別するために前記データベースにおける前記データの前記オントロジ表現と前記テンプレート規則とを用いて生成される、前記ステップと、
前記規則生成エンジンに接続されたプロセッサを用いてエンティティと関係とを識別するステップであって、前記エンティティと関係とは、前記規則を用いて前記自然言語クエリにおいて識別される、前記ステップと、
前記構造化されたデータ言語クエリを、前記プロセッサに接続されたクエリ生成エンジンを用いて生成するステップであって、前記構造化されたデータ言語クエリが、前記エンティティと関係とから生成される、前記ステップと、
を含む、方法。
【請求項9】
前記テンプレート規則が、少なくとも1つの変数を含む、請求項8に記載の方法。
【請求項10】
前記テンプレート規則が、第1の変数と、コネクタと、第2の変数とを含む、請求項8に記載の方法。
【請求項11】
前記コネクタが、動詞と前置詞との一方を含む、請求項10に記載の方法。
【請求項12】
前記規則を生成する前記ステップが、
テンプレート規則の前記第1の変数を、前記カラムの名称のうちの1つで置き換えるステップと、
前記テンプレート規則の前記第2の変数を、前記カラムの名称のうちの別の1つで置き換えるステップと、
を含む、請求項10に記載の方法。
【請求項13】
前記規則を生成する前記ステップが、
テンプレート規則の前記第1の変数を、前記概念の性質のうちの1つで置き換えるステップと、
前記テンプレート規則の前記第2の変数を、前記概念の性質のうちの別の1つで置き換えるステップと、
を含む、請求項10に記載の方法。
【請求項14】
前記データのオントロジ表現を豊富にするために言い換えを自動的に生成するステップをさらに含んでおり、前記自然言語クエリにおいてエンティティと関係とを識別するために前記規則を自動的に生成する前記ステップが、前記言い換えに基づく、請求項8に記載の方法。
【請求項15】
少なくとも1つの前記エンティティの類義語を自動的に生成するステップをさらに含んでおり、前記構造化されたデータ言語クエリを生成する前記ステップが、前記エンティティの前記類義語から前記構造化されたデータ言語クエリを生成するステップをさらに含む、請求項8に記載の方法。
【請求項16】
前記概念が、前記データベースにおけるテーブルを含む、請求項8に記載の方法。
【請求項17】
前記概念の性質が、前記テーブルにおけるカラムの名称を含む、請求項8に記載の方法。
【請求項18】
コンピュータ・プログラム製品であって、
デバイスによって実行可能であり、前記デバイスに、自然言語クエリをユーザから受け取らせる、第1のプログラム命令と、
前記デバイスによって実行可能であり、前記デバイスに、データベースにおけるデータのオントロジ表現を受け取らせる、第2のプログラム命令であって、前記データベースにおける前記データの前記オントロジ表現が、前記データベースにおけるテーブルの名称と、前記テーブルにおけるカラムの名称と、前記テーブルにおけるローの名称とを含む、前記第2のプログラム命令と、
前記デバイスによって実行可能であり、前記デバイスに、テンプレート規則を受け取らせる、第3のプログラム命令であって、前記テンプレート規則が、言語に依存し、オントロジとは独立であり、前記テンプレート規則が、言語の広く用いられる構造を含む、前記第3のプログラムと、
前記デバイスによって実行可能であり、前記デバイスに、前記自然言語クエリにおいてエンティティと関係とを識別するために規則を自動的に生成させる第4のプログラム命令であって、前記規則が、前記データベースにおける前記データの前記オントロジ表現と前記テンプレート規則とを用いて生成される、前記第4のプログラム命令と、
前記デバイスによって実行可能であり、前記デバイスに、前記自然言語クエリにおけるエンティティと関係とを前記規則を用いて識別させる第5のプログラム命令と、
前記デバイスによって実行可能であり、前記デバイスに、前記構造化されたデータ言語クエリを、前記エンティティと関係とから生成させる第6のプログラム命令と、
が記憶されたコンピュータ可読ストレージ媒体を含む、コンピュータ・プログラム製品。
【請求項19】
前記テンプレート規則が、第1の変数と、コネクタと、第2の変数とを含んでおり、前記第4のプログラム命令が、前記デバイスに、
テンプレート規則の前記第1の変数を、前記カラムの名称のうちの1つで置き換えさせ、
前記テンプレート規則の前記第2の変数を、前記カラムの名称のうちの別の1つで置き換えさせる、
請求項18に記載のコンピュータ・プログラム製品。
【請求項20】
前記デバイスによって実行可能であり、前記デバイスに、少なくとも1つの前記エンティティの類義語を自動的に生成させる第7のプログラム命令をさらに含んでおり、前記第6のプログラム命令が、前記デバイスに、前記エンティティの前記類義語から前記構造化されたデータ言語クエリを生成させる、請求項18に記載のコンピュータ・プログラム製品。
【請求項21】
構造化されたデータ言語クエリを作成するためのシステムであって、
自然言語クエリをユーザから受け取るように動作可能なインタフェースと、
データベースにおけるデータのオントロジ表現とテンプレート規則とを受け取るように動作可能な入力ポートであって、前記データベースにおける前記データの前記オントロジ表現が、前記データベースにおけるテーブルの名称と、前記テーブルにおけるカラムの名称と、前記テーブルにおけるローの名称とを含み、前記テンプレート規則が、言語に依存し、オントロジとは独立であり、言語の広く用いられる構造を含む、前記入力ポートと、
前記インタフェースと前記入力ポートとに接続されており、規則を自動的に生成するように動作可能な規則生成エンジンであって、前記規則が、前記自然言語クエリにおいてエンティティと関係とを識別するために前記データベースにおける前記データの前記オントロジ表現と前記テンプレート規則とを用いて生成される、前記規則生成エンジンと、
前記規則生成エンジンに接続されており、エンティティと関係とを識別するように動作可能なプロセッサであって、前記エンティティと関係とは、前記規則を用いて前記自然言語クエリにおいて識別される、前記プロセッサと、
前記プロセッサに接続されており、前記構造化されたデータ言語クエリを、前記エンティティと関係とから生成するように動作可能なクエリ生成エンジンと、
を備える、システム。
【請求項22】
前記テンプレート規則のうちのあるテンプレート規則が、少なくとも1つの変数を含む、請求項21に記載のシステム。
【請求項23】
前記テンプレート規則のうちのあるテンプレート規則が、第1の変数と、コネクタと、第2の変数とを含む、請求項21に記載のシステム。
【請求項24】
前記コネクタが、動詞と前置詞との一方を含む、請求項23に記載のシステム。
【請求項25】
前記規則生成エンジンが、テンプレート規則の前記第1の変数を、前記カラムの名称のうちの1つで置き換え、前記テンプレート規則の前記第2の変数を、前記カラムの名称のうちの別の1つで置き換える、請求項23に記載のシステム。
【請求項26】
コンピュータ・プログラムであって、前記プログラムがコンピュータ上で動作されると請求項1ないし17のいずれかに記載の方法を実行するように適合されたプログラム・コード手段を備える、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースへの自然言語インタフェースのためのシステム、方法、およびコンピュータ・プログラム製品に関する。
【背景技術】
【0002】
データベースは、コンピュータ化された情報の記憶および検索システムである。リレーショナル・データベース管理システムとは、データを記憶し検索するためにリレーショナル技術を用いる、コンピュータ・データベース管理システム(DBMS)である。最も普及しているタイプのデータベースは、リレーショナル・データベースであって、これは、データが、いくつかの異なる方法で再編成されアクセスされ得るように定義される、表形式のデータベースである。分散型のデータベースとは、ネットワークにおける異なる複数のポイントの間で、分配され複製され得るものである。オブジェクト指向プログラミングデータベースとは、オブジェクト・クラスおよびサブクラスとして定義されたデータと適合するものである。
【0003】
特定のアーキテクチャとは無関係に、DBMSでは、要求側のエンティティ(たとえば、アプリケーションまたはオペレーティング・システム)が、データベース・アクセス・リクエストを発することによって、特定のデータベースへのアクセスを要求する。そのようなリクエストは、たとえば、単純なカタログ参照リクエスト、または、データベースにおいて特定のレコードを読み出す、変更する、および追加するように動作するトランザクションもしくはトランザクションの組合せを含み得る。これらのリクエストは、構造化されたクエリ言語(SQL)など、高レベルのクエリ言語を用いて作成される。たとえば、SQLは、インターナショナル・ビジネス・マシーンズ(IBM)社のDB2(R)、マイクロソフト社のSQLサーバ、ならびに、オラクル社、サイベース社、およびコンピュータ・アソシエーツによるデータベース製品などの、データベースから情報を得るおよびデータベースを更新するための対話的クエリを作成するのに用いられる。「クエリ」という用語は、記憶されたデータベースからデータを検索するための1組のコマンドを意味する。クエリは、プログラマおよびプログラムに、データの選択、挿入、更新、位置の発見などをさせるコマンド言語の形式を有する。(DB2は、インターナショナル・ビジネス・マシーンズ社の商標である。)
【発明の概要】
【発明が解決しようとする課題】
【0004】
データベースへの自然言語インタフェースのためのシステム、方法、およびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【0005】
本発明のある態様によると、自然言語クエリが、ユーザからインタフェースを用いて受け取られる、構造化されたデータ言語クエリを作成するための方法が提供される。概念の名称(names of concepts)と、概念の性質の名称(names ofconcept properties)とを含む、データベースにおけるデータのオントロジ表現が、入力ポートを用いて受け取られる。言語に依存し、オントロジとは独立であり、言語の広く用いられる構造(constructs)を含むテンプレート規則が、入力ポートを用いて受け取られる。
【0006】
規則が、インタフェースと入力ポートとに接続された規則生成エンジンを用いて自動的に生成される。上記規則は、自然言語クエリにおいてエンティティと関係とを識別するためにデータベースにおけるデータのオントロジ表現とテンプレート規則とを用いて生成される。エンティティと関係とは、規則生成エンジンに接続されたプロセッサを用いて、識別される。上記エンティティと関係とは、上記規則を用いて自然言語クエリにおいて識別される。構造化されたデータ言語クエリが、上記プロセッサに接続されたクエリ生成エンジンを用いて生成される。上記構造化されたデータ言語クエリは、上記エンティティと関係とから生成される。
【0007】
別の態様によると、構造化されたデータ言語クエリを作成するための方法が提供される。方法は、自然言語クエリをユーザからインタフェースを用いて受け取るステップと、データベースにおけるデータのオントロジ表現を入力ポートを用いて受け取るステップであって、データベースにおけるデータのオントロジ表現が、データベースにおけるテーブルの名称と、テーブルにおけるカラムの名称と、テーブルにおけるローの名称とを含む、前記ステップと、テンプレート規則を入力ポートを用いて受け取るステップであって、テンプレート規則が、言語に依存し、オントロジとは独立であり、言語の広く用いられる構造を含む、前記ステップと、インタフェースと入力ポートとに接続された規則生成エンジンを用いて規則を自動的に生成するステップであって、上記規則が、上記自然言語クエリにおいてエンティティと関係とを識別するために上記データベースにおけるデータの上記オントロジ表現と上記テンプレート規則とを用いて生成される、前記ステップと、上記規則生成エンジンに接続されたプロセッサを用いてエンティティと関係とを識別するステップであって、該エンティティと関係とは、上記規則を用いて自然言語クエリにおいて識別される、前記ステップと、構造化されたデータ言語クエリを、上記プロセッサに接続されたクエリ生成エンジンを用いて生成するステップであって、上記構造化されたデータ言語クエリが、上記エンティティと関係とから生成される、前記ステップと、を含む。
【0008】
別の態様によると、コンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品には、デバイスによって実行可能であり、上記デバイスに、自然言語クエリをユーザから受け取らせる、第1のプログラム命令と、上記デバイスによって実行可能であり、上記デバイスに、データベースにおけるデータのオントロジ表現を受け取らせる、第2のプログラム命令であって、上記データベースにおけるデータの上記オントロジ表現が、上記データベースにおけるテーブルの名称と、上記テーブルにおけるカラムの名称と、上記テーブルにおけるローの名称とを含む、前記第2のプログラム命令と、上記デバイスによって実行可能であり、上記デバイスに、テンプレート規則を受け取らせる、第3のプログラム命令であって、上記テンプレート規則が、言語に依存し、オントロジとは独立であり、言語の広く用いられる構造を含む、前記第3のプログラムと、上記デバイスによって実行可能であり、上記デバイスに、上記自然言語クエリにおいてエンティティと関係とを識別するために規則を自動的に生成させる第4のプログラム命令であって、上記規則が、上記データベースにおけるデータの上記オントロジ表現と上記テンプレート規則とを用いて生成される、前記第4のプログラム命令と、上記デバイスによって実行可能であり、上記デバイスに、上記自然言語クエリにおけるエンティティと関係とを上記規則を用いて識別させる第5のプログラム命令と、上記デバイスによって実行可能であり、上記デバイスに、構造化されたデータ言語クエリを、上記エンティティと関係とから生成させる第6のプログラム命令とが記憶されたコンピュータ可読ストレージ媒体が含まれる。
【0009】
別の態様によると、構造化されたデータ言語クエリを作成するためのシステムが提供される。システムは、自然言語クエリをユーザから受け取るように動作可能なインタフェースと、データベースにおけるデータのオントロジ表現とテンプレート規則とを受け取るように動作可能な入力ポートであって、上記データベースにおけるデータの上記オントロジ表現が、上記データベースにおけるテーブルの名称と、上記テーブルにおけるカラムの名称と、上記テーブルにおけるローの名称とを含み、前記テンプレート規則が、言語に依存し、オントロジとは独立であり、言語の広く用いられる構造を含む、前記入力ポートと、上記インタフェースと上記入力ポートとに接続されており、規則を自動的に生成するように動作可能な規則生成エンジンであって、上記規則が、上記自然言語クエリにおいてエンティティと関係とを識別するために上記データベースにおけるデータの上記オントロジ表現と上記テンプレート規則とを用いて生成される、前記規則生成エンジンと、上記規則生成エンジンに接続されており、上記エンティティと関係とを識別するように動作可能なプロセッサであって、上記エンティティと関係とは、上記規則を用いて上記自然言語クエリにおいて識別される、前記プロセッサと、上記プロセッサに接続されており、上記構造化されたデータ言語クエリを、上記エンティティと関係とから生成するように動作可能なクエリ生成エンジンと、を備える。
【0010】
次に、本発明の好適な実施形態が、単なる例示ではあるが、以下の図面を参照して、説明される。
【図面の簡単な説明】
【0011】
図1】本発明のある実施形態による、自然言語処理から構造化されたクエリ言語への、クエリ結果を求める検索クエリを示す流れ図である。
図2】本発明のある実施形態による、販売倉庫データベースのためのスキーマを示す図である。
図3】本発明のある実施形態によるシステム・インタフェースを示す図である。
図4】本発明のある実施形態によるスマートフォンのインタフェースを示す図である。
図5】本発明のある実施形態による、キー概念の自然言語クエリからの抽出を示す図である。
図6】本発明のある実施形態によるSQLコマンドへの翻訳を示す図である。
図7】本発明のある実施形態による、スマートフォンのインタフェース上に表示された検索結果を示す図である。
図8】本発明のある実施形態による、エンティティおよび関係の検出のための規則を示す図である。
図9】本発明のある実施形態によるテンプレート規則を示す図である。
図10】本発明のある実施形態によるスキーマ注釈ファイルを示す図である。
図11】本発明のある実施形態による、辞書的制約を備えた規則を生成するための方法を示す流れ図である。
図12】本発明のある実施形態による、自動化されたスキーマ注釈ファイル作成のための方法を示す流れ図である。
図13】本発明のある実施形態による、自然言語クエリの構文解析を示す図である。
図14】本発明のある実施形態による、自然言語クエリの構文解析を示す図である。
図15】本発明のある実施形態による、別の自然言語クエリの構文解析を示す図である。
図16】本発明のある実施形態による、さらに別の自然言語クエリの構文解析を示す図である。
図17】本発明のある実施形態によるスマートフォンのインタフェースを示す図である。
図18】本発明のある実施形態による、自然言語クエリからのキー概念の抽出を示す図である。
図19】本発明のある実施形態による、SQLコマンドへの翻訳を示す図である。
図20】本発明のある実施形態による、スマートフォンのインタフェースに表示された検索結果を示す図である。
図21】本発明のある実施形態によるスマートフォンのインタフェースを示す図である。
図22】本発明のある実施形態による、自然言語クエリからのキー概念の抽出を示す図である。
図23】本発明のある実施形態による、SQLコマンドへの翻訳を示す図である。
図24】本発明のある実施形態による、スマートフォンのインタフェースに表示された検索結果を示す図である。
図25】本発明のある実施形態による、構造化されたデータ言語クエリを作成するための方法を示す流れ図である。
図26】本発明のある実施形態による、構造化されたデータ言語クエリを作成するためのシステムを示す図である。
図27】本発明のある実施形態による、データベースに問合せをするための方法を示す流れ図である。
図28】本発明のある実施形態による、データベースに問合せをするためのシステムを示す図である。
図29】本発明のある実施形態によるコンピュータ・プログラム製品を示す図である。
図30】本発明のある実施形態によるクラウド・コンピューティング・ノードを示す図である。
図31】本発明のある実施形態によるクラウド・コンピューティング環境を示す図である。
図32】本発明のある実施形態による抽象化モデルレイヤを示す図である。
【0012】
図面においては、同様の参照番号は、同一または機能的に類似の要素を示す。
【発明を実施するための形態】
【0013】
以下では、本発明の例示的で非限定的な実施形態が、詳細に論じられる。明瞭な理解を提供するために特定の構成が論じられるが、開示された構成は例証の目的だけのために提供される、ということが理解されるべきである。当業者であれば、本発明の思想および範囲から逸脱することなく他の構成が用いられ得る、ということを理解するであろう。
【0014】
本発明の少なくとも1つの実施形態は、自然言語処理(NLP)を用いて、構造化されたクエリ言語(SQL)クエリを通常の英文から自動的に作成するシステムおよび方法を含む。図1は、本発明のある実施形態に従って、クエリ結果に至るNLPからSQLへの検索クエリを示す流れ図であり、ユーザ110からの入力テキストが、NLPパイプライン120で受け取られている。NLPパイプライン120からの検出されたエンティティおよび関係と、データベース・スキーマ130からのデータとが、SQLクエリ140の作成において用いられ得る。
【0015】
データベース・スキーマ130からのデータは、また、NLPパイプライン120でも用いられ得る。特に、データベース・スキーマ130から規則への変換は、エンティティの検出のために、NLPパイプライン120によって、用いられ得る。SQLクエリは、データベース150に送られ得、クエリ結果は、データベース150からユーザ110に送られ得る。
【0016】
このようにして、ドメインとは独立なシステムが、エンティティおよび関係の検出に用いられる規則の自動生成を通じて、提供され得る。ドメインとは独立であり言語自体から導かれるテンプレート規則が、用いられ得る。システム・カバレージを自動的に豊富にするために、言い換え生成も用いられ得る。複数パースの使用を通じて、堅牢性を向上させることが可能であり、作成されたSQLで用いられるがそれを作ったのではない質問の部分が、自動的に識別され得る。
【0017】
以下に掲げる使用ケース1の例は、小売業におけるCMOに関係する。ジョンはABC社のCMOであり、彼は、「2014年10月11日に、ニューヨークの店舗で販売された商品のタイプは何ですか」を見つけることを望んでいる。図2は、本発明のある実施形態による、販売倉庫(sales warehouse)データベースのための例示的なスキーマを示している。
【0018】
図3は、本発明のある実施形態によるシステム・インタフェース300を示している。ジョンは、彼の質問(たとえば、「2014年10月11日に、ニューヨークにある店舗(shopsthat are located in New York)で販売された商品のタイプは何ですか」)を検索ボックス310の中にタイプすることができ、システムは、彼の質問をSQLに変換する。たとえジョンが彼の質問において間違えた場合(たとえば、「2014年10月11日にニューヨークにある店舗(shopsthat have been located in New York)で販売された商品のタイプは何ですか」)であっても、適切なSQLクエリが作成され得る。クエリの結果は、検索結果320に表示され得る。
【0019】
たとえば、マーケティング・アソシエート、商人、実店舗アソシエート、および現場作業員などの様々な種類の業種が、リレーショナル・データベースに記憶されたデータとの迅速な対話を有することを望む場合があり得る。データに到達するためには、様々な種類の業種からの自然言語クエリが、SQLに変換される。
【0020】
以下に掲げる使用ケース2の例は、電話会社における現場作業員に関係する。ジェーンは、米国のABCテルコ社で働く現場作業員である。彼女は、作業命令を受け取ると、訪問し、評価し、問題を解決するために、現場へ赴く。ABCテルコは、最近、すべての技術者に、スマートフォンを携帯させることになった。ジェーンが現地に到着すると、彼女は、1)「回路が修理された直近の時点はいつだったか」、2)「回路における直近の問題は何だったか」3)「回路が最初に設置されたのはいつだったか」、4)「回路に関する直近の報告は何だったか。直近の修理では、何が変更されたのか」を知ることが必要である。ジェーンは戸外で作業をしなければならず、その日は非常に寒い日である。ジェーンが自らの質問をタイプするのは困難なので、彼女は、自らのスマートフォンに話しかけ、スクリーン上の情報を見ることになる。
【0021】
さらに詳しくは、図4に示されているように、ジェーンは、「この回路が修理された直近の時点はいつですか」という自らの質問を、自分のスマートフォンに話しかける。少なくとも1つの実施形態では、システムが、スマートフォンに常駐しており、話された文を解釈し、話された文の構文解析を行い、キー概念とそれらの値とを抽出して、概念をデータベースのスキーマと関係付ける。図5は、本発明のある実施形態による、自然言語クエリからのキー概念の抽出を示す図であって、システムは、「いつ」という単語から、これがわれわれのデータベースのスキーマにおける「時間」フィールドに関係するということ、「直近の時点」という複数の単語から、データベースにおける回路の修理に関係する直近のエントリを彼女が知りたがっているということ、「回路」という語から、極やケーブルではなく、回路について質問しているということ、そして、「修理された」という単語に対するデータベースにおけるステータス・フィールドがチェックされるべきであるということ、を抽出するのである。
【0022】
システムは、話された文をSQLコマンドに変換して、SQLクエリをABCデータベースに送ることができる。図6は、本発明のある実施形態による、SQLコマンドへの翻訳を示す図である。システムは、検索の結果を、スマートフォンで動作しているアプリケーションに返すことができる。図7は、本発明のある実施形態による、スマートフォンのインタフェースに表示された検索結果を示している。
【0023】
本発明の少なくとも1つの実施形態では、エンティティおよび関係の検出は、規則ベースであり、エンジンが検出の規則を入力として受け取り、依存関係ツリー(dependency tree)におけるこれらの規則との一致を見つける。オントロジ独立であるために、検出のための規則は、テンプレート規則とスキーマ注釈ファイルとを用いて自動的に作成され得る。図8は、本発明のある実施形態によるスキーマ注釈ファイルを示している。スキーマ注釈ファイルは、データベースが、「employee_id」を有するカラムと「salaries」を有するカラムとを含む「被雇用者」のテーブルと、「department_id」を有するカラムを含む「部門」のテーブルとを含む、ということを示す。
【0024】
図9は、本発明のある実施形態によるテンプレート規則を示している。テンプレート規則は、主語(VAR1)が目的語(VAR2)を動詞する(has、有する)ことを要求する。テンプレート規則とスキーマ注釈ファイルとは、自然言語クエリにおいてエンティティおよび関係の検出のための規則を自動的に生成するのに、用いられ得る。テンプレート規則は、自然言語の広く用いられている構造を表すことができる。一例として、所有構造があり、すなわち、部門は部長を有し、被雇用者は給与を有し、顧客は住所を有する。そのような構造は、主語と目的語とを伴う「有する」という動詞として、表され得る。主語は、誰が何かを所有するのか、を記述することができ、目的語は、何が主語によって所有されるのか、を記述することができる。依存関係ツリーの観点からは、この構造は、3つのノードを含むグラフとして表すことができ、すなわち、主たるノードは「有する」という見出し形式(lemma form)を備えた動詞であり、2つの子ノードがそれに接続される。1つの子ノードは、「主語」というラベルが付されたエッジを通じて主たるノードに接続することができ、別の子ノードは、「目的語」というラベルが付されたエッジを通じて主たるノードに接続することができる。さらに、主語ノードは、特定の見出し形式(たとえば、「被雇用者」)を有することができ、目的語ノードも、特定の見出し形式(たとえば、「給与」)を有することができる。別の構造は、主語−動詞−目的語(ここで、動詞は任意の動詞である)または主語−動詞−前置詞−目的語を含むことができる。例としては、顧客が製品を買う、被雇用者がある部門で働く、などが含まれる。別の構造は、形容詞(最上級)−名詞という、最高の給与、最低の給与、などを含むことができる。
【0025】
図10は、本発明のある実施形態によるエンティティおよび関係の検出のための規則を示している。ある規則は、主語(被雇用者)、動詞(有する)、および目的語(給与)を要求することができる。図11は、本発明のある実施形態による、辞書的制約を備えた規則(本明細書では、やはり「規則」と称される)を生成するための方法を示す流れ図である。テンプレート規則が、受け取られる810。辞書的制約を伴わないテンプレート規則820と、スキーマ注釈ファイル830とが、具体的な辞書的制約を伴う規則の作成に、用いられる840。この結果として、辞書的制約を伴う規則が生じる850。
【0026】
規則を自動的に生成するためには、スキーマ注釈ファイル(SAF)が用いられ得る。データベースとそのスキーマだけを用いて自動的にSAFを生成させることで、データベースから何が必要であるかを学習し、データベースにおけるデータに関する質問に回答する準備ができている完全に自動化されたシステムの構築を、容易にすることが可能である。
【0027】
図12は、本発明のある実施形態による、自動化されたスキーマ注釈ファイル作成のための方法を示す流れ図である。スキーマ・モデル(データベース・スキーマとも称される)が、アクセスされ、解析される910。カラムの間のセマンティックな関係が、見つけられ得る920。データベース・スキーマを知っていることにより、システムは、一次的/外部的(primary/foreign)なキー関係に基づいて、相互に関係付けられるカラム名のすべてのペア(また、テンプレートからテーブルへ、およびテーブルからカラムへ)を見つけることが可能である。ある例では、規則が、「顧客が商品を買う」および「製造業者が商品を作成する」ことを提供する。入力された質問が「ジョンが商品を買う」である場合には、ジョンが顧客および製造業者である、と判断され得る。規則がない場合には、ジョンが誰なのか判断され得ない。
【0028】
言い換え生成が、行われ得る930。ある例では、SAFが「被雇用者が給与を有する」を含む。強力なNLPツールとしての言い換えは、「被雇用者は金を稼ぐ」、「被雇用者はドルを稼ぐ」、「被雇用者の給与」、「被雇用者給与」、または「給与を有する被雇用者」、あるいはこれらの組合せを生成することができる。言い換えは、SAFを自動的に豊かにすることにより、様々な方法で同じ概念を伝える質問にシステムが回答することを可能にする。
【0029】
エンティティの検出は、実際には検出プロセスの副産物である結果を生じさせることが可能であり、最終的なSQLクエリに含まれるべきではない。たとえば、ユーザは、「1999年1月25日に顧客が買った商品の最高の価格はいくらですか」という自然言語クエリを入力する。「商品」という用語は、「顧客が商品を買う」という規則を通じて検出され、これが、Products.Product_ID dataItemの作成に至ることを可能にする。しかし、このSQLクエリは、最高の価格ではなく、むしろ、商品当たりの価格を生じる可能性があり、その理由は、SQL生成器が、product_idをGROUP BY節に自動的に挿入することがあり得るからである。そのような状況を回避するためには、焦点検出が、自然言語におけるdataItemsを、焦点項目としてマークすることが可能である。dataItemsが、フィルタも集計機能も焦点も有しない場合には、それは、SQL生成プロセスの間、無視される可能性がある。
【0030】
少なくとも1つの実施形態では、自動SQL生成は、データベースのスキーマを知る必要がある。SQL生成器は、1組のdataItemsを入力として用いることが可能であるが、ここで、各dataItemは、(TableName, ColumnName, Filter, AggregationFunction)の倍数である。データベース・スキーマを知っていて、1組のdataItemsを受け取ることにより、SQL生成器は、結果的なSQLクエリを生じる。
【0031】
パーサ・エラーが生じることが、時にはあり得るが、多くの場合、依存関係ツリーが正しくない。パーサは、複数の結果を生じることがあり得るが、アプリケーションは、典型的には、パーサ自身によって最良と定義された、最良のパースだけを用いる。システムは、複数のパースを用いることが可能であり、その場合に、各パースは、エンティティおよび関係の抽出を訂正することに寄与することが可能である。
【0032】
図13および14は、本発明のある実施形態による、自然言語クエリ(「今日旅行している被雇用者の名前は何ですか」)の構文解析を示す図である。ユーザが「被雇用者の旅行」関係を探している場合には、図13に示されたパースがそれを有しており、他方で、図14に示されたパースはそれを有していない。最良のパースだけが用いられる場合には(たとえば、図14に示されたパース)、「被雇用者の旅行」の関係は検出されないのであるが、その理由は、「旅行している」というノードが、「名前」というノードに依存していて、「被雇用者」というノードには依存しないからである。すべてのパースを用いることにより、そのユーザが関心を有する特定の関係に対する正確な依存関係ツリーの断片を少なくとも1つのパースが有するときには、システムが、関係を検出することを可能にすることができる。あるパースが、関係#1を正しく有するが関係#2を間違って有する場合があり得るし、別のパースが、関係#2を正しく有するが関係#1を間違って有する場合があり得る。各パースが正しい関係#iの検出に寄与する複数のパースを用いることで、複数の関係の正しい検出を達成することが可能になる。
【0033】
図15は、本発明のある実施形態による別の自然言語クエリ(「どの商品が、150ドルを超える価格を有しますか」)の構文解析を示す図である。この自然言語クエリでは、「150ドルを超える」が数値コンパレータ注釈器によって注釈が付され得るが、システムは、「>150」というフィルタを伴う「商品が価格を有する」という関係を検出することができる。フィルタを用いることでこの関係検出の成功が可能になるのであるが、その理由は、パーサが、正しく、「150ドルを超える」を価格に接続し、次に、価格が、「有する」を通じて正しく「商品」に接続されたからである。
【0034】
図16は、本発明のある実施形態によるさらに別の自然言語クエリ(「誰が、150ドルを超える価格を有する商品を買ったのですか」)の構文解析を示す図である。この自然言語クエリでは、「150ドルを超える」が数値コンパレータ注釈器によって注釈が付され得るが、「商品が価格を有する」という関係が検出されることはないのであって、その理由は、「有する(with)」というノードが「買った」に接続されているからである(パーサのロジックは、「彼は、彼自身の金で何かを買った」である)。数値コンパレータが何らかの注釈を付した場合には(たとえば、「150ドルを超える」)、システムは、どの名詞にそれが接続されているかを判断することが可能になる(たとえば、この例では「価格」)。どの名詞が「価格」に接続され得るかを判断するためには、システムは、「価格」と数値コンパレータとの両方を有する名前を見つけるために、辞書的制約を伴う規則におけるすべての名称を検討することがあり得る。この規則は、あたかも、エンティティおよび関係の検出の通常のプロセスの間にそれが「始動した」かのように、用いられ得る。複数の規則の場合には、どちらの構造の方がユーザが意味したことにより近いのかを尋ねる質問が、ユーザに対して提示され得る。
【0035】
以下に掲げる使用ケース3の例は、カールに関するものであるが、カールは、オーストラリアのBCC社で働くケーブル技術者である。BCCは、顧客から、彼らのインターネット速度に関する電話を受けた。カールが現地に到着し、信号強度の試験を行う。カールが状況について十分な評価をするためには、彼は、1)「同じ近傍の顧客から何らかの電話がなかったかどうか、この問題タイプが存在しなかったかどうか」、2)「顧客が電話をしたときに遠隔的に測定されたときの信号強度はどうだったか」、3)「回路は、いつ設置されたか」、および、4)「顧客が有する同じ回路に関して、最近、類似の問題について報告されていないか」を知る必要がある。
【0036】
図17は、本発明のある実施形態による、カールのスマートフォンのインタフェースを示しているが、ここで、カールは、システムに向かって、「直近の3日間にこの場所の隣人から報告された問題はありましたか」という自分の質問を、声に出して尋ねる。カールの音声による入力は、彼のスマートフォンにおける音声処理システムを用いて受け取られ、処理され得る。図18は、本発明のある実施形態による、自然言語クエリからのキー概念の抽出を示す図である。システムは、文を解釈し、キー概念とそれらの値とを抽出して、それらの概念をデータベース・スキーマと関係付けることができる。たとえば、システムは、「あったかどうか」という語句から、カールが、以前の事例を求めており、「隣人」という語句から、カールが、現住所の周囲の住所を探すことを求めており、そして、「直近の3日間」という語句から、カールが、直近の3日についての問合せの実行を求めている、という解釈をすることができる。このように、この例では、識別されたエンティティは、「あったかどうか」、「隣人」、および「直近の3日間」という語句を含む。システムは、また、GPSデバイスまたはカールのスマートフォンにおけるそれ以外の位置特定機能から、カールの位置(たとえば、経度および緯度)を取得することも可能である。
【0037】
図19は、本発明のある実施形態によるSQLコマンドへの翻訳を示す図である。特に、「直近の3日間にこの場所の隣人から報告された問題はありましたか」という自然言語クエリは、「SELECT customer_address, issue, location FROM reported_issues_tableWHERE distance(location, curr_loc) < 100」に翻訳される。システムは、このSQLコマンドを、実行のために、データベースに送ることができる。図20は、本発明のある実施形態による、スマートフォンのインタフェースに表示された検索結果を示している。こうして、カールは、2人の隣人が、過去3日の間に、低速の接続または接続の不存在を経験したことを見ることができる。
【0038】
以下に掲げる使用ケース4の例は、ジョンに関するものであるが、ジョンは、米国のABCユーティリティ社で働く現場作業員である。ジョンが作業命令を受け取ると、彼は、訪問し、評価し、問題を解決するために現場に赴く。ABCユーティリティは、現地訪問の間の資産履歴データへアクセスすることの効率を改善するために、最近、メモリ内データベース管理システムを設置した。ABCユーティリティは、訪問が完了するときに、彼らの資産管理システムのデータ品質を改善することを望んでいる。ジョンが現地に到着すると、彼は、1)「回路が修理された直近の時点はいつだったか」、2)「回路に関する直近の問題は何だったか」、3)「最初に回路が設置されたのは、いつだったか」、4)「回路に関する直近の報告は何だったか」、5)「直近の修理において、何が変更されたか」を知る必要がある。ジョンが問題を修理した後に、彼は、1)「問題は解決したのか、それとも、別の同僚技術者によるフォローアップ訪問を必要とするのか」、2)「問題の根本原因は何だったのか」、そして、3)彼は、近い将来において対処を必要とする何か他の問題(極/ケーブル/樹木の剪定)に気付いたか、という情報を用いて、データベースにおける資産記録を更新することができる。
【0039】
図21は、本発明のある実施形態によるスマートフォンのインタフェースを示しており、ここで、ジョンは、システムに対して、「この回路が修理された直近の時点はいつですか」という質問を音声によって尋ねる。図22は、本発明のある実施形態による、自然言語クエリからのキー概念の抽出を示す図である。システムは、文を解釈し、キー概念とそれらの値とを抽出して、それらの概念をデータベース・スキーマと関係付けることができる。たとえば、「いつ」という語句から、クエリがデータベースのスキーマにおける時間フィールドに関するものであり、「直近の時点」という語句から、ジョンは、データベースにおける回路修理に関する直近のエントリを知りたがっており、「この」という語句から、クエリは、(たとえば、GPS経由で決定される)現在の位置に関するものであり、「回路」という語句から、クエリは、(極やケーブルではなく)回路に関して問い合わせており、「修理された」という語句から、クエリは、データベースにおけるステータス・フィールドをチェックする必要がある、ということをシステムは解釈することが可能である。このように、この例では、識別されたエンティティは、「いつ」、「直近の時点」、「この」、「回路」および「修理された」という語句を含む。システムは、また、ジョンのスマートフォンにおけるGPSデバイスから、ジョンの位置(たとえば、経度および緯度)を取得することもできる。
【0040】
図23は、本発明のある実施形態による、SQLコマンドへの翻訳を示す図である。特に、「この回路が修理された直近の時点はいつですか」という自然言語クエリは、「SELECT circuit_name, max(date) FROM ASSET_CIRCUIT_TABLE WHERE status=“FIXED” AND location=(41.162873,-73.861525)」と翻訳される。システムは、このSQLコマンドを、実行のために、データベースに送ることができる。図24は、本発明のある実施形態による、スマートフォンのインタフェースに表示された検索結果を示している。このようにして、ジョンは、回路CIU3265FXが、2014年1月4日に、ピーター・スミスによって修理されたことを見ることができる。
【0041】
図25は、本発明のある実施形態によって、構造化されたデータ言語(たとえば、SQL)クエリを自然言語クエリから作成するための方法を示す流れ図であり、図26は、本発明のある実施形態によって、構造化されたデータ言語クエリを作成するためのシステム1600を示す図である。図25に示された方法は、システム1600を用いて、行われることが可能である。インタフェース1610は、自然言語クエリ(たとえば、マーケティング部門の被雇用者の名前は何ですか)をユーザから受け取ることができる1510。本明細書で用いられる「インタフェース」という用語は、たとえば、キーボード、タッチ・スクリーン、マウス、またはマイクロフォンなどのコンピュータ・ハードウェア・デバイスを含み得る。
【0042】
入力ポート1620は、問合せを受けるデータベースにおけるデータのオントロジ表現を受け取ることが可能であるが1520、この場合、オントロジ表現は、データベースにおけるテーブルの名称と、テーブルにおけるカラムの名称と、テーブルにおけるローの名称と、を含むことがあり得る。たとえば、オントロジ表現は、データベースに、「部門」という題名が付されたテーブルが存在することを示しており、「部門」は、部門、部長名、電話番号、郵送先住所、および電子メール・アドレスというカラムの名称を有し、マーケティング、法務、会計、広告、および人事というローの名称を有する。別の例では、オントロジ表現は、データベースに、「被雇用者」という題名が付されたテーブルが存在することを示しており、「被雇用者」は、被雇用者、被雇用者番号、開始日、部長名、生年月日、給与、および部門というカラムの名称を有し、ジョン・ドウ、ジェーン・ドウ、ジョン・スミス、およびジェーン・スミスというローの名称を有する。
【0043】
入力ポート1620は、また、テンプレート規則(たとえば、root=VAR1_has_VAR2# template rule)を受け取ることが可能であるが1530、ここで、テンプレート規則とは、言語に依存しオントロジとは独立な言語の広く用いられる構造である。少なくとも1つの実施形態において、テンプレート規則は、第1の変数と、コネクタと、第2の変数とを含んでおり、ここで、第1の変数は目的語(名詞)であり、コネクタは動詞(たとえば、「has、有する」)または前置詞(たとえば、「in、における」)の一方を含み、第2の変数は主語(名詞)である。
【0044】
規則生成エンジン1630は、データベースにおけるデータのオントロジ表現とテンプレート規則とを用いて、自然言語クエリにおけるエンティティと関係とを識別するために規則(たとえば、root=employee_has_department)を自動的に生成することができる1540。本明細書で用いられる「自動的に」という用語は、人間との対話なしで行為を行うこと(たとえば、その行為を行うための人間による直接的で明示的な促しなく、プロセスのステップを行うこと)を含み得る。規則生成エンジン1630は、インタフェース1610または入力ポート1620あるいはその両方に、接続され得る。少なくとも1つの実施形態において、規則の生成は、テンプレート規則の第1の変数を、カラムの名称のうちの1つ(たとえば、被雇用者)で置き換えること、そして、テンプレート規則の第2の変数を、カラムの名称のうちの別の1つ(たとえば、部門)で置き換えること、を含む。よって、たとえば、「root=VAR1_has_VAR2 # template rule」というテンプレート規則に対しては、「root=employee_has_department」という規則を生成するためには、「VAR1」および「VAR2」が、それぞれ、「被雇用者」および「部門」というカラムの名称で置き換えられる。
【0045】
プロセッサ1640は、規則を用いて、自然言語クエリにおけるエンティティおよび関係を識別するために、規則生成エンジン1630に接続され得る1550。たとえば、「マーケティング部門の被雇用者の名前は何ですか」という自然言語クエリが与えられると、規則生成エンジンは、「被雇用者」および「部門」というエンティティと、「テーブルの名称=被雇用者」および「テーブルの名称=部門」という関係とを識別する。
【0046】
クエリ生成エンジン1650は、構造化されたデータ言語クエリを、エンティティおよび関係から生成するために、プロセッサ1640に接続され得る1560。本明細書で用いられている「入力ポート」、「規則生成エンジン」、「プロセッサ」、および「クエリ生成エンジン」という用語は、それぞれ、たとえば、マイクロプロセッサ、中央処理装置(CPU)、サーバ、電子データベースなどのコンピュータ・ハードウェア・デバイスを含むことがあり得る。
【0047】
本発明の少なくとも1つの実施形態において、クエリ生成エンジン1650は、少なくとも1つのエンティティの類義語を、自動的に生成する。たとえば、クエリ生成エンジンは、「被雇用者」というエンティティに対して、「スタッフ」、「労働者」、および「同僚」という類義語を自動的に生成する。クエリ生成エンジンは、構造化されたデータ言語クエリを、エンティティの類義語から、生成することができる。
【0048】
図27は、本発明のある実施形態による、データベースに問合せをするための方法を示す流れ図であり、図28は、本発明のある実施形態による、データベースに問合せをするためのシステム1800を示す図である。図27に示された方法は、システム1800を用いて、行われることが可能である。インタフェース1810は、自然言語クエリをユーザから受け取ることができる1710。たとえば、ユーザは、モバイル・デバイスのタッチ・スクリーンを用いて、質問をタイプすることができる。
【0049】
インタフェース1810に接続されたパーサ・デバイス1820は、自然言語クエリの複数の依存パースを生成することができる1720(たとえば、図13、14)。複数の依存パースの生成は、自然言語クエリを、複数の成分に分割することを含み得る1722。たとえば、「今日旅行中の被雇用者の名前は何ですか」という自然言語クエリは、「何」、「ですか」、「名前」、「の」、「被雇用者」、「旅行中」、および「今日」という7つの成分に分割される。
【0050】
複数の依存パースの生成は、また、それらの成分のうちの各成分をそれらの成分の1つまたは複数の他の成分と接続することによって、単独の依存パースを作成することを含み得る1724。図13および14は、それぞれ、単独の依存パースを示している。図13では、「何」と「ですか」、「ですか」と「名前」、「名前」と「の」、「の」と「被雇用者」、「被雇用者」と「旅行中」、および「旅行中」と「今日」という成分の間に、直接リンクが作成される。図14では、「何」と「ですか」、「ですか」と「名前」、「名前」と「の」、「の」と「被雇用者」、「名前」と「旅行中」、および「旅行中」と「今日」という成分の間に、直接リンクが作成される。複数の依存パースの生成は、各成分(たとえば、名詞、動詞、副詞、形容詞)の発話の部分を識別することを含み得る。少なくとも1つの実施形態において、各成分を1つまたは複数の他の成分と接続することは、名詞、動詞、または副詞あるいはこれらの組合せ(たとえば、「被雇用者」と「旅行中」)の間に直接リンクを作成することを含む。直接リンクは、また、動詞と2つの名詞との間にも作成されることがあり得る。
【0051】
本発明の少なくとも1つの実施形態において、自然言語クエリの複数の依存パースの生成は、自然言語クエリにおけるすべての名詞を識別すること、および、自然言語クエリにおけるすべての名詞を異なる複数の依存パースにおける自然言語クエリのすべての他の名詞と接続すること、を含み得る。名詞は、動詞を経由して、他の名詞と接続され得る。複数の依存パースの個数は、自然言語クエリにおける単語の個数よりも大きい場合があり得る。少なくとも1つの実施形態では、複数の依存パースのどれも、同一ではない。
【0052】
プロセッサ1830は、パーサ・デバイス1820に接続され得るが、ここで、プロセッサ1830は、自然言語クエリにおけるエンティティおよび関係を識別するために、すべての依存パースに規則を適用することができる1730。本明細書で用いられる「プロセッサ」および「パーサ・デバイス」という用語は、それぞれ、たとえば、マイクロプロセッサ、中央処理装置(CPU)などのコンピュータ・ハードウェア・デバイスを含み得る。
【0053】
自然言語クエリにおけるエンティティおよび関係を識別するために、複数の依存パースのすべてに規則を適用することは、1つまたは複数の名詞と1つまたは複数の動詞とを有する規則を取得することを含み得る。規則の名詞が第1の複数の依存パースにおける名詞と一致するときには、第1の複数の依存パースにおける名詞が、エンティティとして識別され得る。規則の動詞が第1の複数の依存パースにおける動詞と一致するときには、第1の複数の依存パースにおける動詞が、関係として識別され得る。たとえば、「今日旅行中の被雇用者の名前は何ですか」という自然言語クエリに対し、図13および14に示されているパースが与えられている場合には、「employee_has_name」および「employee_travels_on_a_date」という規則が、「被雇用者の名前」および「日付」というエンティティと、「旅行」という関係とを識別するために、パースのそれぞれに適用され得る。
【0054】
本発明の少なくとも1つの実施形態では、エンティティに接続されていない複数の依存パースのうちの1つまたは複数における修飾語が識別されるが、ここで、修飾語は、数値の比較(たとえば、価格は100ドルよりも高い)、日付の比較(たとえば、「ウィジェットは2011年1月より後に購入された」)、または時間の比較(たとえば、「市場は5時よりも前に閉まる」)あるいはこれらの組合せを含む。このような場合、プロセッサ1830は、修飾語に添付されているエンティティを自動的に識別することができる、または、ユーザに質問を送りそのユーザに修飾語に添付されているエンティティを識別することを依頼することができる、あるいはこれらの両方をすることができる。
【0055】
当業者によって認識されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の態様は、完全にハードウェア実施形態の形式を有することがあり得るし、または、すべてが、「回路」、「モジュール」、または「システム」と本明細書で一般的に称され得るソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形式を有することもあり得る。さらに、本発明の態様は、コンピュータ可読プログラム・コードがその上で具現化されている1つまたは複数のコンピュータ可読媒体として具現化されたコンピュータ・プログラム製品の形式を有することもあり得る。
【0056】
1つまたは複数のコンピュータ可読媒体の任意の組合せが、用いられることがあり得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体であり得る。コンピュータ可読ストレージ媒体は、たとえば、これらに限定されないが、電子、磁気、光、電磁気、赤外線、もしくは半導体のシステム、装置、またはデバイス、あるいは以上のいずれかの適切な組合せであり得る。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)は、以下、すなわち、1つまたは複数の配線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能でプログラマブルなリード・オンリ・メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、または以上のいずれかの適切な組合せを含む。本明細書のコンテキストでは、コンピュータ可読ストレージ媒体は、命令実行システム、命令実行装置、または命令実行デバイスによって、またはそれらとの関連で用いられるプログラムを包含すること、または記憶することが可能な、いずれかの有形の媒体であり得る。
【0057】
コンピュータ可読信号媒体は、たとえば、ベースバンドにおいてまたは搬送波の一部としてコンピュータ可読プログラム・コードが具現化された、伝搬されるデータ信号を含むことがあり得る。そのような伝搬される信号は、電磁気的な形式、光学的な形式、またはそれらのいずれかの適切な組合せの形式を含むが、それらには限定されない、様々な形式のうちのいずれかを取り得る。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなくても、命令実行システム、命令実行装置、または命令実行デバイスによって、またはそれらとの関連で用いられるプログラムを通信すること、伝搬すること、またはトランスポートすることが可能ないずれかのコンピュータ可読媒体であり得る。
【0058】
コンピュータ可読媒体において具現化されたプログラム・コードは、これらには限定されないが、無線、有線、光ファイバ・ケーブル、RFその他、または以上のいずれかの適切な組合せを含むいずれかの適切な媒体を用いて、伝送され得る。
【0059】
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++、または類似したものなどのオブジェクト指向プログラミング言語、ならびに「C」プログラミング言語もしくは類似したプログラミング言語など、従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語のいずれかの組合せで書かれ得る。プログラム・コードは、全部がユーザのコンピュータ上で実行される場合、スタンドアロンのソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合、一部がユーザのコンピュータ上で、一部が遠隔コンピュータ上で実行される場合、または、全部が遠隔コンピュータもしくは遠隔サーバ上で実行される場合があり得る。後者の、全部が遠隔コンピュータもしくは遠隔サーバ上で実行されるシナリオでは、その遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含むいずれかのタイプのネットワークを介して、ユーザのコンピュータに接続されることがあり得るし、または、接続が外部コンピュータに対してなされることもあり得る(たとえば、インターネット・サービス・プロバイダを用いて、インターネット経由で)。
【0060】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して説明される。流れ図またはブロック図あるいはその両方の各ブロックと、流れ図またはブロック図あるいはその両方における複数のブロックの組合せとは、コンピュータ・プログラム命令によって実装され得る、ということが理解されるだろう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルなデータ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図あるいはその両方における1つまたは複数のブロック図において特定された機能/動作を実装するための手段を作成するように、汎用コンピュータ、専用コンピュータ、または他のプログラマブルなデータ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。
【0061】
これらのコンピュータ・プログラム命令は、また、コンピュータ可読媒体に記憶された命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて特定された機能/動作を実装する命令を含む製造品を生じさせるように、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラマブルなデータ処理装置、または他のデバイスに特定の方式で機能するように指示することができるものであってもよい。
【0062】
コンピュータ・プログラム命令は、また、コンピュータまたは他のプログラマブルな装置において実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックにおいて特定された機能/動作を実装するためのプロセスを提供するように、コンピュータで実装されるプロセスを生じさせるべく、コンピュータ、他のプログラマブルなデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブルな装置、または他のデバイスにおいて一連の動作ステップを実行させるものであってもよい。
【0063】
次に、図29を参照すると、本発明の少なくとも1つの実施形態を実現させるための代表的なハードウェア環境が、示されている。この概略図は、本発明の少なくとも1つの実施形態による情報処理/コンピュータ・システムのハードウェア構成を示している。このシステムは、少なくとも1つのプロセッサまたは中央処理装置(CPU)710を備えている。CPU710は、システム・バス712を用いて、ランダム・アクセス・メモリ(RAM)714、リード・オンリ・メモリ(ROM)716、および入力/出力(I/O)アダプタ718など、様々なデバイスと相互接続されている。I/Oアダプタ718は、ディスク・ユニット711およびテープ・ドライブ713などの周辺デバイスと、または、システムによって読み出しが可能な他のプログラム・ストレージ・デバイスなどと、接続することが可能である。システムは、プログラム・ストレージ・デバイス上の本発明による命令を読み出すことができ、これらの命令に従って、本発明の少なくとも1つの実施形態の方法を実行する。システムは、さらに、キーボード715、マウス717、スピーカ724、マイクロフォン722またはタッチ・スクリーン・デバイス(図示せず)などの他のユーザ・インタフェース・デバイスもしくはこれらの組合せをバス712に接続してユーザ入力を集約する、ユーザ・インタフェース・アダプタ719を含む。さらに、通信アダプタ720が、バス712をデータ処理ネットワーク725に接続し、ディスプレイ・アダプタ721が、バス712を、たとえば、モニタ、プリンタ、または送信機などの出力デバイスとして具体化され得るディスプレイ・デバイス723に、接続する。
【0064】
図における流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能、および動作を示している。これに関しては、流れ図またはブロック図における各ブロックは、モジュール、セグメント、またはコードの一部を表し得るのであって、これは、特定された論理機能を実装するための1つまたは複数の実行可能命令を含む。いくつかの代替的な実装形態では、ブロックで示されている機能が、図において示されているのとは異なる順序で、生じる場合もあり得ることが、留意されるべきである。たとえば、関連する機能に応じて、連続的に示されている2つのブロックが、実際には実質的に同時に実行される場合もあるし、または、これらのブロックが、時には、逆の順序で実行されることもある。また、ブロック図または流れ図あるいはその両方の各ブロック、および、ブロック図または流れ図あるいはその両方における複数のブロックの組合せは、特定された機能もしくは行為を行う専用のハードウェア・ベースのシステムによって、または、専用ハードウェアとコンピュータ命令との組合せによって、実装されることも可能である、ということも留意されるだろう。
【0065】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書で述べられている教示内容の実装は、クラウド・コンピューティング環境に限定されないことは、あらかじめ理解される。むしろ、本発明の実施形態は、現時点で知られているまたは今後開発されるいずれかの他のタイプのコンピューティング環境と共に、実装され得る。
【0066】
クラウド・コンピューティングとは、最小限の管理努力による、またはサービスのプロバイダとの最小限の対話による、迅速にプロビジョニングおよびリリースされ得るように設定可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするための、サービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
【0067】
特徴は、次の通りである。
オンデマンド・セルフサービス:クラウド消費者は、必要に応じて、自動的に、サービスのプロバイダとの人的な対話を必要とすることなく、サーバ時間やネットワーク・ストレージなどのコンピューティング能力を、一方向的に、プロビジョニングすることが可能である。
幅広いネットワーク・アクセス:能力は、ネットワークを介して利用可能であって、異種シン・クライアントまたはシック・クライアントのプラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを通じて、アクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを用いる複数の消費者に役立つようにプールされ、異なる複数の物理および仮想リソースが、需要に従って、動的に割り当てられ、再度割り当てられる。消費者は、一般的には、提供されるリソースの正確な位置に関しては制御も知識も有していないが、より高い抽象化レベル(たとえば、国、州、またはデータセンタ)における位置指定が可能であり得るという点で、ある意味では、位置の独立性が存在する。
迅速な弾力性:能力は迅速かつ弾力的に、場合によっては自動的にプロビジョニングされて、素早くスケールアウトし、迅速にリリースされて素早くスケールインすることが可能である。消費者にとっては、プロビジョニングのために利用可能な能力が、多くの場合に限定されないように思えるのであって、任意の量を任意の時点で購入することができる。
測定されるサービス:クラウド・システムは、サービスのタイプ(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適した何らかの抽象化レベルで計測能力を活用することにより、リソースの利用を自動的に制御および最適化する。リソースの利用は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと消費者の双方にとっての透明性が、もたらされる。
【0068】
サービス・モデルは以下の通りである。
ソフトウェア・アズ・ア・サービス(SaaS):消費者に提供される能力は、クラウド・インフラストラクチャ上で動作するプロバイダのアプリケーションを用いることである。これらのアプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インタフェースを介して、様々なクライアント・デバイスからアクセスが可能である(たとえば、ウェブベースの電子メール)。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション能力も含め、基礎となるクラウド・インフラストラクチャを管理も制御もしないのであるが、限定的なユーザ特有のアプリケーションの構成設定については、例外がある可能性がある。
プラットフォーム・アズ・ア・サービス(PaaS):消費者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを用いて作成された、消費者によって作成または取得されたアプリケーションを、クラウド・インフラストラクチャ上に展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含め、基礎となるクラウド・インフラストラクチャを管理も制御もしないのであるが、展開されたアプリケーションに対する制御と、おそらくはアプリケーション・ホスティング環境の構成に対する制御とを有する。
インフラストラクチャ・アズ・ア・サービス(IaaS):消費者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることであり、この場合に、消費者は、オペレーティング・システムおよびアプリケーションを含み得るいずれかのソフトウェアを展開および実行することができる。消費者は、基礎となるクラウド・インフラストラクチャを管理も制御もしないのであるが、オペレーティング・システム、ストレージ、展開されたアプリケーションに対する制御と、おそらくは、精選されたネットワーキング・コンポーネント(たとえばホスト・ファイアウォール)の限られた制御とを有する。
【0069】
展開モデルは、次の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運用される。クラウド・インフラストラクチャは、この組織または第三者によって、管理されることが可能であり、当該施設に存在する場合、または、当該施設の外に存在する場合があり得る。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有される利益(たとえば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、この組織または第三者によって、管理されることが可能であり、当該施設に存在する場合、または、当該施設の外に存在する場合があり得る。
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大規模な業界団体にとって利用可能になっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合物であって、これらのクラウドは、独自のエンティティのままであるが、データおよびアプリケーションの可搬性を許容する標準化されたまたはプロプラエタリな技術によって、相互に結合されている(たとえば、複数のクラウドの間の負荷を平衡させるための、クラウド・バースティング)。
【0070】
クラウド・コンピューティング環境は、サービス指向であって、ステートレス性、低結合、モジュール性、およびセマンティックな相互運用性に焦点が置かれている。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャが存在する。
【0071】
次に図30を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示されている。クラウド・コンピューティング・ノード10は、適切なクラウド・コンピューティング・ノードの単なる一例であり、本明細書に記載された本発明の実施形態の使用または機能の範囲については、どのような限定を示唆することも意図されていない。いずれにせよ、クラウド・コンピューティング・ノード10は、前述の機能のいずれかと共に実装されること、または前述の機能のいずれかを行うこと、あるいはその両者が可能である。
【0072】
クラウド・コンピューティング・ノード10には、コンピュータ・システム/サーバ12が存在しており、コンピュータ・システム/サーバ12は、多数の他の汎用もしくは専用のコンピューティング・システム環境または構成と共に動作する。コンピュータ・システム/サーバ12と共に用いられるのに適切であり得る周知のコンピューティング・システム、環境、または構成、あるいはそれらの組合せの例には、これらに限定されることはないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブルな家電製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および、これらのシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境など、が含まれる。
【0073】
コンピュータ・システム/サーバ12は、プログラム・モジュールなど、コンピュータ・システムによって実行されるコンピュータ・システム実行可能な命令の一般的なコンテキストで、説明され得る。一般に、プログラム・モジュールは、特定のタスクを行うかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含む場合があり得る。コンピュータ・システム/サーバ12は、分散型クラウド・コンピューティング環境で実現されることがあり、その場合、タスクは、通信ネットワークを介してリンクされたリモート処理デバイスによって、行われる。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルとリモートとの両方のコンピュータ・システム・ストレージ媒体に置かれる場合があり得る。
【0074】
図30に示されるように、クラウド・コンピューティング・ノード10におけるコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形式で示されている。コンピュータ・システム/サーバ12のコンポーネントは、これらに限定されることはないが、1つもしくは複数のプロセッサまたは処理ユニット16と、システム・メモリ28と、システム・メモリ28を含む様々なシステム・コンポーネントをプロセッサ16に結合するバス18と、を含み得る。
【0075】
バス18は、様々なバス・アーキテクチャのいずれかを用いる、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサまたはローカル・バスを含むいくつかのタイプのバス構造のいずれかの1つまたは複数を表す。限定ではなく例であるが、このようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(MicroChannel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)バスを含む。
【0076】
コンピュータ・システム/サーバ12は、典型的に、様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ12からアクセス可能な任意の利用可能な媒体であり得るが、揮発性および不揮発性、取り外し可能および取り外し不可能な媒体、の両方を含む。
【0077】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方など、揮発性メモリの形式のコンピュータ・システム可読媒体を含むことが可能である。コンピュータ・システム/サーバ12は、さらに、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むこともあり得る。単なる例であるが、取り外し不可能で不揮発性の磁気媒体(図示されておらず、典型的には「ハード・ドライブ」と称される)に対し、読み取りおよび書き込みをするために、ストレージ・システム34が提供されることがあり得る。図示されていないが、取り外し可能で不揮発性の磁気ディスク(たとえば「フロッピ・ディスク(R)」)に対して、読み取りおよび書き込みをするための磁気ディスク・ドライブと、CD−ROM、DVD−ROM、または他の光学媒体など、取り外し可能で不揮発性の光学ディスクに対して、読み取りまたは書き込みをするための光学ディスク・ドライブとが、提供されることがあり得る。このような場合には、各それぞれが、1つまたは複数のデータ媒体インタフェースによって、バス18に接続され得る。後でさらなる図示および説明がなされるように、メモリ28は、本発明の実施形態の機能を実行するように構成された1組の(たとえば少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含むことがあり得る。
【0078】
例示であって限定ではないが、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データに加えて、1組の(少なくとも1つの)プログラム・モジュール42を有するプログラム/ユーティリティ40が、メモリ28に、記憶されることがあり得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組合せのそれぞれが、ネットワーキング環境のある実装形態を含むことがあり得る。プログラム・モジュール42は、一般に、本明細書に記載された本発明の実施形態の、機能または方法あるいはその両方を、実行する。
【0079】
コンピュータ・システム/サーバ12は、また、キーボード、ポインティング・デバイス、ディスプレイ24などの1つもしくは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と対話することを可能にする1つもしくは複数のデバイス、または、コンピュータ・システム/サーバ12が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)、あるいはこれらの組合せと、通信することがあり得る。このような通信は、入力/出力(I/O)インタフェース22を経由して、生じ得る。さらにまた、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を経由して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(たとえばインターネット)、あるいはそれらの組合せなど、1つもしくは複数のネットワークと通信することが可能である。示されているように、ネットワーク・アダプタ20は、バス18を経由して、コンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されていないけれども、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方が、コンピュータ・システム/サーバ12と共に用いられる場合があり得る、ということが理解されるべきである。例としては、これらに限定されないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどが含まれる。
【0080】
次に図31を参照すると、例証のためのクラウド・コンピューティング環境50が図示されている。図示のように、クラウド・コンピューティング環境50は、1つまたは複数のクラウド・コンピューティング・ノード10を含んでおり、クラウド消費者によって用いられるローカル・コンピューティング・デバイスである、たとえば、パーソナル・デジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはそれらの組合せなどが、クラウド・コンピューティング・ノード10と通信することができる。ノード10は、相互に通信することができる。これらは、前述されたようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはこれらの組合せなど、1つまたは複数のネットワークにおいて、物理的または仮想的に、グループ化されることがあり得る(図示せず)。これにより、クラウド・コンピューティング環境50が、クラウド消費者がリソースをローカル・コンピューティング・デバイス上で維持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはそれらの組合せを提示することが、可能になる。図31に示されるコンピューティング・デバイス54A〜Nのタイプは例証に過ぎないことが意図されており、そして、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークまたはネットワーク対応可能な接続あるいはその両方を介して(たとえば、ウェブ・ブラウザを用いて)、任意のタイプのコンピュータ化されたデバイスと通信できる、ということを理解されたい。
【0081】
次に図32を参照すると、クラウド・コンピューティング環境50(図31)によって提供される1組の機能的抽象化レイヤが示されている。図32に示されるコンポーネント、レイヤ、および機能は例証に過ぎないことが意図されており、本発明の実施形態はこれらに限定されない、ということが、あらかじめ理解されるべきである。図示のように、以下のレイヤおよび対応する機能が提供される。
【0082】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0083】
仮想化レイヤ70は、仮想エンティティの以下の例がそこから提供され得る抽象化レイヤを提供するのであって、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75、が提供され得る。
【0084】
ある例では、管理レイヤ80が、以下に述べる機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境の内部でタスクを実行するのに用いられるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計測および価格設定82は、クラウド・コンピューティング環境の内部でリソースが利用されるのに伴うコストの追跡と、これらのリソースの消費に対する課金または請求書発行とを提供する。ある例では、これらのリソースは、アプリケーション・ソフトウェアのライセンスを含む場合があり得る。セキュリティは、クラウド消費者およびタスクに対する識別子の検証、ならびに、データおよび他のリソースのための保護を提供する。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを、消費者およびシステム管理者に提供する。サービス・レベル管理84は、必要とされるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの配分および管理を提供する。サービス・レベル・アグリーメント(SLA)プランニングおよび履行85は、SLAに従って、将来において必要とされることが予期されるクラウド・コンピューティング・リソースの事前構成および調達を提供する。
【0085】
作業負荷レイヤ90は、それに対してクラウド・コンピューティング環境が用いられ得る機能の例を提供する。このレイヤから提供され得る作業負荷および機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ・アナリティクスの処理94、トランザクション処理95、ならびに、認知的考慮に基づくエンハンスト・eメールのリターン・レシート96が含まれる。
【0086】
本明細書で用いられる用語は、特定の実施形態を記述するという目的だけを有しており、本発明を限定することは意図されていない。本明細書では、単数形「a」、「an」、および「the」は、コンテキストが明確にそうでないと示さない限り、複数形も含むことが意図されている。さらに、基礎となる用語(root terms)「含む、有する」(「include」または「have」あるいはその両方)は、本明細書で用いられるときには、述べられた特徴、整数、ステップ、動作、要素、またはコンポーネント、あるいはそれらの組合せの存在を特定するが、少なくとも1つの他の特徴、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはそれらの組合せの存在または追加を排除しない、ということも、理解されるであろう。
【0087】
添付の特許請求の範囲におけるすべてのミーンズ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的に請求される他の特許請求された要素と組み合わせて機能を実行するための任意の構造または材料を含むことが意図されている。本発明に関する説明は、例証および説明という目的のために提示されているのであって、網羅的であること、または、開示された形式の本発明に限定されることは、意図されていない。当業者には、本発明の範囲および思想から逸脱することのない、多くの変更および変形が明らかであろう。実施形態は、本発明の原理と実際の応用との最良の説明を行うために、そして、他の当業者が、本発明を、想定されている特定の使用に適した様々な変更を伴う様々な実施形態として理解することを可能にするように、選択され説明されたものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
【国際調査報告】