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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7584449自然言語クエリから形式的データ・クエリへの変換
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-07
(45)【発行日】2024-11-15
(54)【発明の名称】自然言語クエリから形式的データ・クエリへの変換
(51)【国際特許分類】
   G06F 16/2452 20190101AFI20241108BHJP
   G06F 16/28 20190101ALI20241108BHJP
【FI】
G06F16/2452
G06F16/28
【請求項の数】 11
(21)【出願番号】P 2021569840
(86)(22)【出願日】2020-06-16
(65)【公表番号】
(43)【公表日】2022-08-22
(86)【国際出願番号】 IB2020055618
(87)【国際公開番号】W WO2020254962
(87)【国際公開日】2020-12-24
【審査請求日】2022-11-21
(31)【優先権主張番号】16/446,809
(32)【優先日】2019-06-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】スター、ピーター、ウィレム、ジャン
(72)【発明者】
【氏名】ドルフィ、マイケル
(72)【発明者】
【氏名】アウアー、クリストフ
(72)【発明者】
【氏名】ゲオルゴポウロス、レオニダス
(72)【発明者】
【氏名】ソブチク、アレクサンドロス
(72)【発明者】
【氏名】バカラ、ティム、ジャン
(72)【発明者】
【氏名】ビカス、コンスタンティノス
【審査官】酒井 恭信
(56)【参考文献】
【文献】国際公開第2018/213530(WO,A2)
【文献】米国特許出願公開第2008/0235199(US,A1)
【文献】特開2019-091474(JP,A)
【文献】中国特許出願公開第109241103(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00 - 16/958
(57)【特許請求の範囲】
【請求項1】
自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータが実行する方法であって、
データ・モデルとしてナレッジ・グラフを記憶することと、
ワークフロー・モデルを記憶することと、
ユーザから自然言語クエリを受け取ることと、
前記自然言語クエリを形式的データ・クエリに変換することと、
前記形式的データ・クエリをディスプレイ上で前記ユーザに可視化することと、
確認または編集あるいはその両方が行われた形式的データ・クエリを含むフィードバック応答を前記ユーザから受け取ることと、
前記自然言語クエリおよび対応する前記フィードバック応答に含まれる形式的データ・クエリをグラウンド・トゥルース・ペアとして記憶することと、
を含み、
前記自然言語クエリを形式的データ・クエリに変換することは、
前記自然言語クエリを自然言語分類器に文字列入力として提供することによって、前記自然言語クエリにおける前記ナレッジ・グラフの1つまたは複数の入力ノード・タイプおよび1つまたは複数の出力ノード・タイプを識別することと、
識別した前記1つまたは複数の入力ノード・タイプおよび前記1つまたは複数
の出力ノード・タイプを前記ワークフロー・モデルに提供することと、
前記ワークフロー・モデルによって、前記ナレッジ・グラフの前記1つまたは複数の入力ノード・タイプのノードと前記1つまたは複数の出力ノード・タイプのノードとの間の1つまたは複数の探索経路を計算して、前記形式的データ・クエリとしてワークフロー・グラフを計算することと、
を含み、
前記方法は、
前記ワークフロー・モデルを訓練するために、機械学習アルゴリズムにおいて前記グラウンド・トゥルース・ペアを使用すること
をさらに含む、方法。
【請求項2】
前記ワークフロー・グラフは有向非巡回グラフである、請求項1に記載の方法。
【請求項3】
前記ワークフロー・グラフは複数のオペレータを含む、請求項1に記載の方法。
【請求項4】
前記複数のオペレータはグループから選択され、前記グループは、
入力オペレータ、
エッジ・トラバーサル・オペレータ、
ノード・フィルタリング・オペレータ、
ノード・ランク付けオペレータ、
論理オペレータ、および
出力オペレータ、
から構成される、請求項3に記載の方法。
【請求項5】
前記1つまたは複数の探索経路を計算することは、幅優先探索アルゴリズムを実行することを含む、請求項に記載の方法。
【請求項6】
前記形式的データ・クエリを可視化することは、
ビジュアル・プログラミング・ツールで前記形式的データ・クエリを可視化すること
を含む、請求項1ないしのいずれかに記載の方法。
【請求項7】
前記ビジュアル・プログラミング・ツールは、前記自然言語クエリをテストするためのテスト機能を提供するように構成される、請求項に記載の方法。
【請求項8】
前記ビジュアル・プログラミング・ツールは、前記形式的データ・クエリを視覚的に編集するための編集機能を提供するように構成される、請求項に記載の方法。
【請求項9】
自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ・システムであって、前記コンピュータ・システムは、処理ユニットと、ストレージ・システムと、入力ユニットおよびディスプレイを備えるユーザ・インターフェースと、を備え、前記コンピュータ・システムは、
ナレッジ・グラフをデータ・モデルとして前記ストレージ・システムに記憶することと、
ワークフロー・モデルを前記ストレージ・システムに記憶することと、
前記ユーザ・インターフェースを介して、自然言語クエリを受け取ることと、
前記自然言語クエリを形式的データ・クエリに変換することと、
前記形式的データ・クエリを前記ディスプレイ上に可視化することと、
前記入力ユニットを介して、確認または編集あるいはその両方が行われた形式的データ・クエリを含むフィードバック応答をユーザから受け取ることと、
前記自然言語クエリおよび対応する前記フィードバック応答に含まれる形式的データ・クエリをグラウンド・トゥルース・ペアとして前記ストレージ・システムに記憶することと、
を行うように構成され、
前記コンピュータ・システムは、
前記自然言語クエリを前記形式的データ・クエリに変換するように構成される変換モジュールであって、前記自然言語クエリを自然言語分類器に文字列入力として提供することによって、前記自然言語クエリにおける前記ナレッジ・グラフの1つまたは複数の入力ノード・タイプおよび1つまたは複数の出力ノード・タイプを識別し、識別した前記1つまたは複数の入力ノード・タイプおよび前記1つまたは複数の出力ノード・タイプを前記ワークフロー・モデルに提供し、前記ワークフロー・モデルによって、前記ナレッジ・グラフの前記1つまたは複数の入力ノード・タイプのノードと前記1つまたは複数の出力ノード・タイプのノードとの間の1つまたは複数の探索経路を計算して、前記形式的データ・クエリとしてワークフロー・グラフを計算する、前記変換モジュールと、
訓練モジュールと、
をさらに備え、前記訓練モジュールは、
前記グラウンド・トゥルース・ペアを受け取ることと、
機械学習アルゴリズムを用いて前記ワークフロー・モデルの訓練を実行することと、
前記ワークフロー・モデルを更新することと、
を行うように構成される、コンピュータ・システム。
【請求項10】
前記ワークフロー・グラフは有向非巡回グラフである、請求項に記載のコンピュータ・システム。
【請求項11】
コンピュータ可読記録媒体に記憶され、コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記コンピュータに、請求項1ないしのいずれかに記載の方法を実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、グラウンド・トゥルースを生成するためのコンピュータ実装方法に関する。
【0002】
本開示はさらに、対応するシステム、対応するコンピュータ・プログラム製品、および対応するユーザ・インターフェースに関する。
【背景技術】
【0003】
自然言語クエリング(NLQ:natural language querying)は、自然言語を使用してマシンにクエリを行うことができる方法を研究している科学分野である。一般に、自然言語クエリを実行するには、データ・モデルと、そのデータ・モデルに関する形式的データ・クエリ(formal data query)言語と、自然言語クエリを形式的データ・クエリ言語に変換する方法とが必要である。形式的データ・クエリ言語は、マシン・データ・クエリ言語とも称され得る。
【0004】
知識を表現するために使用される最も一般的なデータ構造は、ナレッジ・グラフである。ナレッジ・グラフは、エンティティを表すノードおよびノード間のリンクを含み、これらは事実または関係を表し得る。
【0005】
これらのナレッジ・グラフにクエリを行うために、過去数十年にわたって、いくつかの異なるタイプの形式的データ・クエリ言語が設計されてきた。そのようなクエリ言語の例には、SPARQL、Cypher(neo4j)、およびGremlin(Apache Tinkerpop(登録商標))がある。
【0006】
これらのクエリ言語には、通常、クエリが低レベルのオペレーション・プリミティブ(operation primitive)の限られたセットから構成される必要があるという共通点がある。そのようなクエリを定義するには、通常、クエリ言語およびその構文に関する詳細な知識が必要となるので、適用範囲が狭くなる。
【0007】
他のアプローチは、機械学習技術を使用して、自然言語クエリから形式的またはマシン・データ・クエリ言語への変換を開始することである。そのようなアプローチは、訓練データとしてグラウンド/トゥルースを必要とする。
【0008】
そのため、当技術分野では、前述の問題に対処する必要がある。
【発明の概要】
【0009】
第1の態様から見ると、本発明は、自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法であって、データ・モデルとしてナレッジ・グラフを用意することと、ユーザから自然言語クエリを受け取ることと、自然言語クエリを形式的データ・クエリに変換することと、形式的データ・クエリをユーザに可視化することと、確認または編集あるいはその両方が行われた形式的データ・クエリを含むフィードバック応答をユーザから受け取ることと、自然言語クエリおよび対応するフィードバック応答をグラウンド・トゥルース・ペアとして記憶することと、を含む、コンピュータ実装方法を提供する。
【0010】
さらなる態様から見ると、本発明は、自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法を実行するためのコンピュータ・システムであって、システムは、処理ユニットと、ストレージ・システムと、入力ユニットおよびディスプレイを備えるユーザ・インターフェースと、を備え、システムは、ナレッジ・グラフをデータ・モデルとしてストレージ・システムに記憶することと、ユーザ・インターフェースを介して、自然言語クエリを受け取ることと、自然言語クエリを形式的データ・クエリに変換することと、形式的データ・クエリをディスプレイ上に可視化することと、入力ユニットを介して、確認または編集あるいはその両方が行われた形式的データ・クエリを含むフィードバック応答をユーザから受け取ることと、自然言語クエリおよび対応するフィードバック応答をグラウンド・トゥルース・ペアとしてストレージ・システムに記憶することと、を行うように構成される、コンピュータ・システムを提供する。
【0011】
さらなる態様から見ると、本発明は、自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法を実行するためのコンピュータ・プログラム製品であって、コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、本発明のステップを実行するための方法を実行するための、処理回路によって実行される命令を記憶するコンピュータ可読ストレージ媒体を含む、コンピュータ・プログラム製品を提供する。
【0012】
さらなる態様から見ると、本発明は、コンピュータ可読媒体に記憶され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、プログラムがコンピュータ上で実行された場合に、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
【0013】
さらなる態様から見ると、本発明は、ディスプレイおよび入力ユニットを備えるユーザ・インターフェースであって、ユーザ・インターフェースは、ユーザから自然言語クエリを受け取ることと、自然言語クエリを変換モジュールに提供することと、自然言語クエリを形式言語(formal language)に変換したものである形式的データ・クエリを変換モジュールから受け取ることと、形式的データ・クエリをディスプレイ上に可視化することと、確認または編集あるいはその両方が行われた形式的データ・クエリを含むフィードバック応答をユーザから受け取ることと、自然言語クエリおよび対応するフィードバック応答をグラウンド・トゥルース・ペアとして提供することと、を行うように構成される、ユーザ・インターフェースを提供する。
【0014】
第1の態様によれば、本発明は、自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法として具現化される。この方法は、データ・モデルとしてナレッジ・グラフを用意するステップと、ユーザから自然言語クエリを受け取るステップと、自然言語クエリを形式的データ・クエリに変換するステップと、を含む。この方法は、形式的データ・クエリをユーザに可視化するさらなるステップと、ユーザからフィードバック応答を受け取るさらなるステップと、を含む。フィードバック応答は、確認または編集あるいはその両方が行われた形式的データ・クエリを含む。この方法は、自然言語クエリおよび対応するフィードバック応答をグラウンド・トゥルース・ペアとして記憶するさらなるステップを含む。
【0015】
本発明の実施形態によるそのような方法は、効率的な方法でナレッジ・グラフに関する自然言語クエリのグラウンド・トゥルースを生成するために使用され得る。本発明の実施形態による方法は、ビジュアル・プログラミング・アプローチを使用して、自然言語クエリのグラウンド・トゥルースを生成する。より具体的には、自然言語クエリから変換された形式的データ・クエリが、視覚的な形態でユーザに提供される。グラウンド・トゥルースは、自然言語クエリ入力および対応するフィードバック応答を含むペアで提供される。フィードバック応答は、一方では、確認された形式的データ・クエリであり得る。そのような確認された形式的データ・クエリは、可視化された形式的データ・クエリが正しいこと、換言すれば自然言語クエリの自身の意図または理解に対応していることを、それぞれのユーザが承認したことを示す。他方では、フィードバック応答は、編集された形式的データ・クエリ、具体的には、訂正された形式的データ・クエリであり得る。そのような編集された形式的データ・クエリでは、可視化された形式的データ・クエリが正しくないか、または自然言語クエリの自身の意図または理解に対応していない場合に、ユーザは可視化された形式的データ・クエリに対して、編集、修正、または訂正、あるいはそれらの組合せを行い得る。
【0016】
実施形態によれば、形式的データ・クエリは、形式的またはマシン・データ・クエリ言語のフォーマットまたは形態を有するデータ・クエリとして理解されるものとする。このため、形式的データ・クエリは、マシン・データ・クエリとも称され得る。クエリ言語またはデータ・クエリ言語(DQL:data query language)は、一般に、データベースおよび情報システムにおいてクエリを実行するために使用することができるコンピュータ言語として定義され得る。自然言語クエリとは対照的に、それらはデータベースおよび情報システムに命令を伝達するように設計されており、通常、オペレータ(operator)またはオペレーション・プリミティブのセットで構成される。
【0017】
本発明の一実施形態によれば、自然言語クエリを形式的データ・クエリに変換することは、自然言語クエリをワークフロー・モデルに提供するステップと、ワークフロー・モデルによって、形式的データ・クエリとしてワークフロー・グラフを計算するステップと、を含む。
【0018】
そのようなワークフロー・モデルは、自然言語クエリを入力として受け取り、ワークフロー・グラフを出力として提供する。ワークフロー・グラフは、ワークフロー・モデルによって自然言語クエリから形式的データ・クエリへのそれぞれ変換に使用されたワークフローの視覚的表現を確立する。ワークフロー・グラフは、具体的には、有向非巡回グラフとして具現化され得る。ワークフロー・グラフは、複数のオペレータ、換言すればオペレーション・プリミティブを含み得、具体的には、入力オペレータ、すなわち、具体的には特定のタイプの入力ノードの検索を実行し得るもの、エッジ・トラバーサル(edge traversal)・オペレータ、ノード・フィルタリング・オペレータ、ノード・ランク付けオペレータ、「AND」および「OR」などの論理オペレータ、ならびに出力オペレータを含み得る。
【0019】
本発明の一実施形態によれば、ワークフロー・モデルを訓練するために、機械学習アルゴリズムにおいてグラウンド・トゥルース・ペアが使用され得る。そのような訓練により、ワークフロー・モデルが改善されるだけでなく、訓練されたワークフロー・モデルの将来の推論フェーズにおける自然言語クエリの対応する変換および応答が改善される。
【0020】
実施形態によれば、形式的データ・クエリは、ビジュアル・プログラミング・ツールで可視化され得る。ビジュアル・プログラミング・ツールは、自然言語クエリをテストするためのテスト機能を提供するように構成され得る。換言すれば、ユーザは自然言語クエリを入力し得、これらの方法は対応する出力、すなわち、自然言語クエリの結果を、形式的データ・クエリの視覚的表現と共に提供する。
【0021】
さらに、実施形態によれば、ビジュアル・プログラミング・ツールは、形式的データ・クエリを視覚的に編集するための編集機能を提供するように構成され得る。そのような編集機能は、可視化された形式的データ・クエリに対して、編集、訂正、変更、または修正、あるいはそれらの組合せを行うために使用することができる編集ツールを提供する。
【0022】
実施形態によれば、自然言語クエリを形式的データ・クエリに変換することは、自然言語クエリにおけるナレッジ・グラフの1つまたは複数の入力ノード・タイプを識別するステップと、自然言語クエリにおけるナレッジ・グラフの1つまたは複数の出力ノード・タイプを識別するステップと、を含み得る。実施形態によれば、この方法は、1つまたは複数の入力ノード・タイプと1つまたは複数の出力ノード・タイプとの間のナレッジ・グラフを通る1つまたは複数の探索経路(search path)を計算するステップを含み得る。実施形態によれば、1つまたは複数の探索経路の計算は、幅優先探索アルゴリズムによって実行され得る。
【0023】
実施形態によれば、1つまたは複数の探索経路を計算することは、自然言語分類器に文字列入力として自然言語クエリを提供するステップと、自然言語分類器によって、1つまたは複数の入力ノード・タイプおよび1つまたは複数の出力ノード・タイプを計算するステップと、を含む。そのような自然言語分類器の使用は、効率的で信頼性の高いアプローチである。
【0024】
他の態様によれば、本発明は、自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法を実行するためのコンピュータ・システムとして具現化される。このシステムは、処理ユニットと、ストレージ・システムと、入力ユニットおよびディスプレイを含むユーザ・インターフェースと、を備える。このシステムは、ナレッジ・グラフをデータ・モデルとしてストレージ・システムに記憶し、ユーザ・インターフェースを介して自然言語クエリを受け取り、自然言語クエリを形式的データ・クエリに変換するように構成される。このシステムはさらに、形式的データ・クエリをディスプレイ上に可視化し、入力ユニットを介してユーザからフィードバック応答を受け取るように構成される。フィードバック応答は、確認または編集あるいはその両方が行われた形式的データ・クエリを含む。このシステムはさらに、自然言語クエリおよび対応するフィードバック応答をグラウンド・トゥルース・ペアとしてストレージ・システムに記憶するように構成される。
【0025】
本発明のさらに他の態様によれば、コンピューティング・システム上で自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法を実行するためのコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、プログラム命令を具現化するコンピュータ可読ストレージ媒体を含み、プログラム命令は、システムによって実行可能であり、システムに方法を実行させ、方法は、データ・モデルとしてナレッジ・グラフを用意することと、ユーザから自然言語クエリを受け取ることと、自然言語クエリを形式的データ・クエリに変換することと、形式的データ・クエリをユーザに可視化することと、ユーザからフィードバック応答を受け取ることと、自然言語クエリおよび対応するフィードバック応答をグラウンド・トゥルース・ペアとして提供することと、を含む。
【0026】
本発明のさらに他の態様によれば、ディスプレイおよび入力ユニットを備えるユーザ・インターフェースが提供される。このユーザ・インターフェースは、ユーザから自然言語クエリを受け取り、自然言語クエリを変換モジュールに提供し、変換モジュールから形式的データ・クエリを受け取るように構成される。形式的データ・クエリは、自然言語クエリを形式言語に変換したものである。このユーザ・インターフェースはさらに、形式的データ・クエリをディスプレイ上に可視化し、ユーザからフィードバック応答を受け取り、自然言語クエリおよび対応するフィードバック応答をグラウンド・トゥルース・ペアとして提供するように構成される。
【0027】
以下、添付の図面を参照して、例示的かつ非限定的な例として、本発明の実施形態をより詳細に説明する。
【0028】
ここで、以下の図に示す好ましい実施形態を参照して、単なる例として、本発明を説明する。
【図面の簡単な説明】
【0029】
図1】本発明の一実施形態によるコンピュータ・システムの概略ブロック図である。
図2】自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法を実行するためのコンピュータ・システムの機能ブロックを示す機能ブロック図である。
図3】本発明の一実施形態による自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法の方法ステップのフローチャートである。
図4A】自然言語クエリ用のデータ・モデルとして使用される例示的なナレッジ・グラフを示す図である。
図4B】自然言語クエリの一例を示す図である。
図4C】自然言語クエリを形式的データ・クエリに変換するための図4Aのナレッジ・グラフの使用法を示す図である。
図4D】ワークフロー・グラフを含む画面レイアウトを示す図である。
図4E】編集されたワークフロー・グラフを含む画面レイアウトを示す図である。
図5A】他の例示的なナレッジ・グラフを示す図である。
図5B】自然言語クエリの一例を示す図である。
図5C】自然言語クエリを形式的データ・クエリに変換するための図5Aのナレッジ・グラフの使用法を示す図である。
図5D】ワークフロー・グラフを含む画面レイアウトを示す図である。
図5E】編集されたワークフロー・グラフを含む画面レイアウトを示す図である。
【発明を実施するための形態】
【0030】
図1図5Eを参照して、本発明の実施形態のいくつかの一般的な態様および用語を説明する。
【0031】
本発明の実施形態は、効率的な方法で自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法を提供する。
【0032】
グラウンド・トゥルースという用語は、一般的には、推論によって提供される情報ではなく、直接的な観察によって提供される情報(すなわち、経験的証拠)を指し得る。
【0033】
本発明の実施形態によるグラフは、複数のノードおよびノード間の複数のエッジを含む知識表現システムである。このため、グラフはナレッジ・グラフとして具現化され得る。複数のノードは、様々なノード・タイプを有し得る。複数のノードは、情報項目(information item)に関する情報を保持し得る。複数のエッジは、ノード間の特定の関係を示す。
【0034】
より具体的には、グラフまたはナレッジ・グラフKGのインスタンス化は、3つ組(triplet)のセットKG{V、E}であり、セットVはいくつかのノードを含み、これらは許可されたタイプのセットの中のあるタイプを有する。セットEは、セットVのノードのペアをリンクさせる、エッジ・タイプ・リスト内のエッジを含む。KGの基礎となる数学的構造は、有向または無向グラフ{V、E}であり、ノードおよびエッジのタイプは数値的重み付け方式(numeric weighting scheme)で表され得る。
【0035】
ナレッジ・グラフは、いかなるタイプのデータ・スキーム(data-scheme)も必要とせず、変更、更新などに関して非常に柔軟であるので、群を抜いて最も一般的なデータ・モデルである。
【0036】
本発明の実施形態により、ユーザは強化された機能を用いて自然言語クエリを行うことが可能になる。より具体的には、ユーザは、それぞれの自然言語クエリの応答を閲覧するだけでなく、それらの応答につながったナレッジ・グラフ上の内部ワークフローを閲覧し、点検し、手動で編集し得る。これによりグラウンド・トゥルースが生成され、これは将来のクエリに対する応答を改善するために使用され得る。
【0037】
ここで図1を参照すると、コンピュータ・システム100のブロック図が示されている。コンピュータ・システム100は、自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法を実行するように構成され得る。コンピュータ・システム100は、他の多くの汎用または専用のコンピューティング・システム環境または構成で動作可能であり得る。コンピュータ・システム100での使用に適し得るよく知られているコンピューティング・システム、環境、または構成、あるいはそれらの組合せの例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムもしくはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが含まれるが、これらに限定されない。
【0038】
コンピュータ・システム100は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的なコンテキストで記述し得る。一般に、プログラム・モジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などが含まれ得る。コンピュータ・システム100は、汎用コンピューティング・デバイスの形態で示している。コンピュータ・システム100のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット116と、システム・メモリ128と、システム・メモリ128を含む様々なシステム・コンポーネントをプロセッサ116に結合するバス118と、を含み得るが、これらに限定されない。
【0039】
バス118は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、加速グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のうちのいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス規格協会(VESA)ローカル・バス、および周辺機器相互接続(PCI)バスが含まれる。
【0040】
コンピュータ・システム100は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム100によってアクセス可能な任意の利用可能な媒体であり得、揮発性および不揮発性の媒体、取り外し可能および取り外し不可能な媒体の両方を含む。
【0041】
システム・メモリ128は、ランダム・アクセス・メモリ(RAM)130またはキャッシュ・メモリ132あるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム100は、他の取り外し可能/取り外し不可能な揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含み得る。単なる例として、取り外し不可能な不揮発性の磁気媒体(図示せず、典型的には「ハード・ドライブ」と呼ばれるもの)に読み書きするためのストレージ・システム134を設けることができる。図示していないが、取り外し可能な不揮発性の磁気ディスク(たとえば、「フロッピー(R)・ディスク」)に読み書きするための磁気ディスク・ドライブと、CD-ROM、DVD-ROM、または他の光学媒体などの取り外し可能な不揮発性の光学ディスクに読み書きするための光学ディスク・ドライブと、を設けることができる。そのような例では、それぞれを、1つまたは複数のデータ・メディア・インターフェースによってバス118に接続することができる。以下でさらに図示および説明するように、メモリ128は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
【0042】
プログラム・モジュール142のセット(少なくとも1つ)を有するプログラム/ユーティリティ140は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ128に記憶され得る。プログラム・モジュール142は、変換モジュール142aおよび訓練モジュール142bを包含し得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらの何らかの組合せのそれぞれは、ネットワーク環境の実装形態を含み得る。プログラム・モジュール142は、一般に、本明細書に記載の本発明の実施形態の機能または方法論あるいはその両方を実行する。プログラム・モジュール142は、具体的には、自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法の1つまたは複数のステップ、たとえば、以下に説明する方法の1つまたは複数のステップを実行し得る。
【0043】
コンピュータ・システム100はまた、入力ユニット125、ポインティング・デバイス、ディスプレイ124などの1つもしくは複数の外部デバイス115、ユーザがコンピュータ・システム100とやりとりすることを可能にする1つもしくは複数のデバイス、またはコンピュータ・システム100が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)、あるいはそれらの組合せと通信し得る。そのような通信は、入力/出力(I/O)インターフェース122を介して行うことができる。またさらに、コンピュータ・システム100は、ネットワーク・アダプタ120を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(たとえば、インターネット)、あるいはそれらの組合せなどの、1つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ120は、バス118を介してコンピュータ・システム100の他のコンポーネントと通信する。図示していないが、他のハードウェアまたはソフトウェアあるいはその両方のコンポーネントを、コンピュータ・システム100と併用できることを理解されたい。例には、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。入力ユニット125、たとえば、キーボードおよびディスプレイ124は、ユーザ・インターフェース126を確立する。
【0044】
図2は、自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法を実行するためのコンピュータ・システム200の機能ブロックを示す機能ブロック図を示している。
【0045】
システム200は、図1に示す入力ユニット125などの入力ユニットを介してユーザなどから入力として自然言語クエリ210を受け取るように構成される。
【0046】
次いで、自然言語クエリ210は、ワークフロー・モデル220に入力として供給される。ワークフロー・モデル220は、自然言語クエリ210を形式的データ・クエリに変換する。より具体的には、形式的データ・クエリとしてワークフロー・グラフ230を計算する。次いで、ワークフロー・グラフがユーザに表示され、ユーザは編集されたワークフロー・グラフ240をフィードバック応答として提供し得る。自然言語クエリ210および対応する編集されたワークフロー・グラフ240は、一緒にグラウンド・トゥルース・ペア250を形成する。次いで、グラウンド・トゥルース・ペア250は、ワークフロー・モデル220を更新および改善するために、機械学習アルゴリズム260によって使用され得る。
【0047】
図3は、本発明の一実施形態による自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法の方法ステップのフローチャートを示している。この方法は、たとえば、図1のシステム100によって実行され得、したがって、以下では図1のシステムのコンポーネントを参照して説明する。この方法は、具体的には、システム100上で動作している変換モジュール142aの制御下で実行され得る。
【0048】
ステップ310において、データ・モデルとしてナレッジ・グラフが用意される。ナレッジ・グラフは、たとえば、コンピューティング・システム100のストレージ・システム134に記憶され得る。
【0049】
ステップ320において、入力ユニット125などを介してコンピューティング・システム100のユーザから自然言語クエリ(NLQ)が受け取られる。
【0050】
ステップ330において、受け取られた自然言語クエリにおいて、1つまたは複数の入力ノード・タイプおよび1つまたは複数の出力ノード・タイプがコンピュータにより識別される。これは、具体的には、自然言語クエリを自然言語分類器に文字列入力として提供することによって実行され得る。次いで、自然言語分類器は、1つまたは複数の入力ノード・タイプおよび1つまたは複数の出力ノード・タイプを計算し得る。自然言語分類器は、たとえば、文字列分類方法、またはシーケンス・ツー・シーケンス・モデル(sequence to sequence model)、あるいはその両方を使用し得る。
【0051】
ステップ340において、識別された入力ノードおよび出力ノードがワークフロー・モデルに供給される。
【0052】
ステップ350において、ワークフロー・モデルはワークフロー・グラフを計算する。ワークフロー・グラフは、自然言語クエリの形式的またはマシン・データ・クエリを確立する。
【0053】
したがって、ステップ330~350は、受け取られた自然言語クエリから、ワークフロー・グラフとして具現化される形式的データ・クエリへの変換を実行する。
【0054】
ステップ360において、ワークフロー・グラフは、たとえば、コンピューティング・システム100のディスプレイ124に表示することによって、ユーザに可視化される。
【0055】
その後、ユーザは表示されたワークフロー・グラフを視覚的に点検およびチェックすることができる。具体的には、ユーザは、ワークフロー・グラフおよび結果が、自然言語クエリの自身の所望の意味および意図に対応しているか否かをチェックすることができる。
【0056】
次いで、ステップ370において、ユーザはワークフロー・グラフを編集し、それによって、入力ユニット125などを介して、システム100へのフィードバック応答の形態でフィードバックを提供し得る。フィードバック応答は、具体的には、編集されたワークフロー・グラフを含み得る。
【0057】
ステップ380において、システム100は、フィードバック応答、具体的には、ワークフロー・グラフの編集物、および対応する自然言語クエリをグラウンド・トゥルース・ペアとして記憶し得る。グラウンド・トゥルース・ペアは、たとえば、コンピューティング・システム100のストレージ・システム134に記憶され得る。
【0058】
次いで、ステップ390において、グラウンド・トゥルース・ペアを使用して、将来の自然言語クエリに対するシステム100の応答を改善するためにワークフロー・モデルを訓練または再訓練し得る。
【0059】
図4A図4Eは、本発明の一実施形態による自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法の一例を示している。
【0060】
図4Aは、自然言語クエリ用のデータ・モデルとして使用されるナレッジ・グラフ401を示している。図示の例によれば、ナレッジ・グラフ401は、4つのノード1、2、3、および4と、ノード1と2との間のエッジ12と、ノード1と4との間のエッジ14と、ノード1と3との間のエッジ13と、ノード2と3との間のエッジ23とを含む。ノードおよびエッジはタイプに分けられており、すなわち、ナレッジ・グラフ401は、特定のタイプのノードおよびエッジのセットを有する。より具体的には、図4Aは「引用グラフ」を表し、論文、著者、トピック、および所属のタイプのノードを含む。また、このグラフのエッジは、特定のタイプ、すなわち、「論文-論文」、「論文-著者」、「論文-トピック」、「著者-所属」を有する。したがって、ナレッジ・グラフ401は、論文、著者、トピック、および所属のノード・タイプと、「論文-論文」、「論文-著者」、「論文-トピック」、「著者-トピック」、および「著者-所属」のエッジ・タイプとを含むメタグラフとして具現化される。
【0061】
実施形態によれば、そのようなメタグラフは、元のナレッジ・グラフのトポロジと称され得、ここで、元のナレッジ・グラフとは、メタグラフの導出元のナレッジ・グラフである。元のナレッジ・グラフのトポロジ、したがって、メタグラフは、新しいタイプのノードがナレッジ・グラフに挿入されない限り変化しない。メタグラフのトポロジ、すなわち、この例では引用グラフのトポロジを変更せずに、さらに多くの文書をナレッジ・グラフに挿入することができる。
【0062】
ナレッジ・グラフのノードおよびエッジのそれぞれが特定の概念またはタイプを表すのであれば、一般にほぼ全てのナレッジ・グラフをそのようなトポロジまたはメタグラフで記述することができる。
【0063】
図4Bは、自然言語クエリの一例を示している。この例では、自然言語クエリは、「A社の人工知能(AI)分野の専門家は誰ですか?」と書かれている。
【0064】
図4Cは、自然言語クエリ402を形式的データ・クエリに変換するための図4Aのメタグラフの使用法を示している。この方法は、ノード2(トピック)およびノード4(所属)を自然言語クエリ402における入力ノードとして識別し、ノード1(著者)を自然言語クエリ402におけるナレッジ・グラフ401の出力ノード・タイプとして識別する。識別された入力ノード・タイプは波模様で示しており、識別された出力ノード・タイプは市松模様で示している。入力ノード・タイプおよび出力ノード・タイプは、自然言語クエリ402を自然言語分類器に文字列入力として提供することによって識別され得る。次いで、自然言語分類器は、自然言語クエリ文字列402から入力ノード・タイプおよび出力ノード・タイプを計算し得る。
【0065】
さらに、コンピューティング・システム100は、入力ノード・タイプと出力ノード・タイプとの間の探索経路を計算する。この例では、タイプ「トピック」のノード2とタイプ「著者」のノード1との間で探索経路410が計算され、タイプ「所属」のノード4とタイプ「著者」のノード1との間で探索経路411が計算される。
【0066】
図4Dは、図1のディスプレイ124などによって表示され得る画面レイアウト403を示している。画面レイアウト403は、有向非巡回グラフとして具現化されるワークフロー・グラフ420を含む。ワークフロー・グラフ420は、図1の変換モジュール142aなどの変換モジュールによって自然言語クエリ402から変換された、換言すれば、導出された形式的データ・クエリを表す。変換モジュールは、ワークフロー・グラフ420を計算するための基礎となるワークフロー・モデルを使用する。ワークフロー・グラフ420は、複数のオペレータまたはオペレーション・プリミティブを含み得る。そのようなオペレータは入力オペレータなどを包含し得、入力オペレータは、具体的には特定のタイプの入力ノードの検索を実行し得る。さらなるオペレータには、2つの異なるタイプのノード間でエッジ・トラバーサルを実行し得るエッジ・トラバーサル・オペレータ、1つまたは複数の基準に従ってノードをフィルタリングするノード・フィルタリング・オペレータ、および1つまたは複数の事前定義された基準に従ってノードをランク付けするノード・ランク付けオペレータが含まれる。さらなる例として、「AND」および「OR」などの論理オペレータ、ならびに出力オペレータが使用され得る。
【0067】
ワークフロー・グラフ420は入力オペレータ431を含み、入力オペレータ431は、「所属の入力」INを提供し、タイプ「所属」を有する全ての入力タイプ・ノードにおいて「A社」の検索を実行する。ワークフロー・グラフ420はさらなる入力オペレータ432を含み、さらなる入力オペレータ432は、「トピックの入力」INを提供し、タイプ「トピック」を有する全ての入力タイプ・ノードにおいて「人工知能」の検索を実行する。ワークフロー・グラフ420はエッジ・トラバーサル・オペレータ433を含み、エッジ・トラバーサル・オペレータ433は、語句「A社」を含むタイプ「所属」の識別されたノードと、タイプ「著者」の対応するノードとの間のエッジ・トラバーサルETAA「所属-著者」を実行する。ワークフロー・グラフ420はさらなるエッジ・トラバーサル・オペレータ434を含み、さらなるエッジ・トラバーサル・オペレータ434は、語句「人工知能」を含むタイプ「トピック」の識別されたノードと、タイプ「著者」の対応するノードとの間のエッジ・トラバーサルETTA「トピック-著者」を実行する。次いで、エッジ・トラバーサル・オペレータ433およびエッジ・トラバーサル・オペレータ434の出力は、「AND」オペレータ435によってマージされ、すなわち、「AND」オペレータ435は、エッジ・トラバーサル・オペレータ433およびエッジ・トラバーサル・オペレータ434の出力の共通部分(intersection)を求める。次いで、出力オペレータ435は、自然言語クエリ402の結果440を生成して、それを画面レイアウト403上に表示する。この例では、結果440は著者のリスト「著者1、著者2、著者3」を含む。この例によれば、ワークフロー・モデルがアルファベット順の著者のリストの形態で結果を表示することを想定している。
【0068】
ビジュアル・プログラミング・ツールは、形式的データ・クエリを視覚的に編集するための編集機能を提供する。図4Dでは、ツールは編集モードであり、これは編集ボタン450を表す語「編集」を太字で図示することによって示している。これは、ユーザが、具体的には、ワークフロー・グラフ420の1つまたは複数のオペレータを削除、修正、または追加することによって、ワークフロー・グラフ420を編集し得ることを意味する。
【0069】
図4Eは、編集されたワークフロー・グラフ421を含む画面レイアウト404を示している。ワークフロー・グラフ421は編集された形式的データ・クエリを表し、これは、ユーザが元のワークフロー・グラフ420を点検した後にユーザによって編集されたものである。元のワークフロー・グラフ420と比較して、ユーザはランク付けオペレータ437を挿入している。ランク付けオペレータ437は、たとえば、引用回数に応じて結果(著者)をランク付けするオペレータであり得る。したがって、ユーザは、アルファベット順の結果を含む結果440に完全に満足していたわけではなく、引用回数に応じたランク付けを望んだのであろう。ビジュアル・プログラミング・ツールは、自然言語クエリをテストするためのテスト機能を提供する。それに応じて、ユーザは次いで、検索ボタン451をアクティブ化することによって、編集されたワークフロー・グラフ421をテストし得る。アクティブ化されると、画面レイアウトは、引用回数でソートされた著者「著者3、著者2、著者1」を含む修正された結果441を表示する。
【0070】
次いで、コンピュータ・システム100は、自然言語クエリ402を編集されたワークフロー・グラフ421(形式的データ・クエリ)と共にグラウンド・トゥルース・ペアとしてストレージ・システム134に記憶し得る。次いで、このグラウンド・トゥルース・ペアは、好ましくは複数のさらなるグラウンド・トゥルース・ペアと組み合わせて、訓練モジュール142bによって変換モジュール142aを訓練するために使用され得る。そして、コンピューティング・システム100は、次に同様のクエリを受け取った場合、著者などの結果リストをランク付けされた方法で提供する。
【0071】
図5A図5Eは、本発明の他の実施形態による自然言語クエリング用のグラウンド・トゥルースを生成するためのコンピュータ実装方法の一例を示している。図5A図5Eの例は図4A図4Eの例に部分的に対応するので、同一または類似の要素は同一の参照符号で表す。
【0072】
図5Aは、自然言語クエリ用の他のデータ・モデルとして使用されるナレッジ・グラフ501を示している。図示の例によれば、ナレッジ・グラフ501は、4つのノード1、2、3および5と、ノード1と2との間のエッジ12と、ノード1と3との間のエッジ13と、ノード2と3との間のエッジ23と、図4Aとは異なり、ノード3と5との間のエッジ35とを含む。ノードおよびエッジはタイプに分けられており、すなわち、ナレッジ・グラフ501は、特定のタイプのノードおよびエッジのセットを有する。より具体的には、図5Aもまた「引用グラフ」を表し、図4Aの例と同じく、「論文」、「著者」、「トピック」、および「所属」のタイプのノードを含む。また、このグラフのエッジは、「論文-論文」、「論文-著者」、「論文-トピック」、「著者-トピック」のタイプを包含するが、「著者-所属」の代わりに、エッジ35「論文-所属」を包含する。
【0073】
したがって、ナレッジ・グラフ501もまた、元のグラフのトポロジを表すメタグラフとして具現化される。
【0074】
図5Bは、自然言語クエリ502の一例を示している。この例では、前の例と同じ自然言語クエリ、すなわち、「A社の人工知能(AI)分野の専門家は誰ですか?」を使用している。
【0075】
図5Cは、自然言語クエリ502を形式的データ・クエリに変換するための図5Aのメタグラフの使用法を示している。この方法は、ノード2(トピック)およびノード5(所属)を自然言語クエリ502における入力ノードとして識別し、ノード1(著者)を出力ノード・タイプとして識別する。識別された入力ノード・タイプは波模様で示しており、識別された出力ノード・タイプは市松模様で示している。コンピューティング・システム100は、入力ノード・タイプと出力ノード・タイプとの間の探索経路を計算する。この例では、タイプ「トピック」のノード2とタイプ「著者」のノード1との間で探索経路510が計算され、タイプ「所属」のノード5とタイプ「著者」のノード1との間でタイプ「論文」のノード3を介して探索経路511が計算される。
【0076】
図5Dは、図1のディスプレイ124などによって表示され得る画面レイアウト503を示している。画面レイアウト503は、有向非巡回グラフとして具現化されるワークフロー・グラフ520を含む。ワークフロー・グラフ520は、図1の変換モジュール142aなどの変換モジュールによって自然言語クエリ502から変換された、換言すれば、導出された形式的データ・クエリを表す。変換モジュールは、ワークフロー・グラフ520を計算するための基礎となるワークフロー・モデルを使用する。ワークフロー・グラフ520は入力オペレータ531を含み、入力オペレータ531は、タイプ「所属」を有する全ての入力タイプ・ノードにおいて「A社」の検索を実行する。ワークフロー・グラフ520はさらなる入力オペレータ532を含み、さらなる入力オペレータ532は、タイプ「トピック」を有する全ての入力タイプ・ノードにおいて「人工知能」の検索を実行する。ワークフロー・グラフ520はエッジ・トラバーサル・オペレータ533を含み、エッジ・トラバーサル・オペレータ533は、語句「A社」を含むタイプ「所属」の識別されたノードと、タイプ「論文」の対応するノードとの間でエッジ・トラバーサル「所属-論文」を実行する。ワークフロー・グラフ520はさらなるエッジ・トラバーサル・オペレータ534を含み、さらなるエッジ・トラバーサル・オペレータ534は、語句「人工知能」を含むタイプ「トピック」の識別されたノードと、タイプ「論文」の対応するノードとの間でエッジ・トラバーサル「トピック-論文」を実行する。次いで、エッジ・トラバーサル・オペレータ533およびエッジ・トラバーサル・オペレータ534の出力は、「AND」オペレータ535によってマージされ、すなわち、「AND」オペレータ535は、エッジ・トラバーサル・オペレータ533およびエッジ・トラバーサル・オペレータ534の出力の共通部分を求める。この例では、追加のエッジ・トラバーサル・オペレータ536が提供され、これはエッジ・トラバーサルETAA「論文-著者」を実行する。次いで、出力オペレータ537は、自然言語クエリ502の結果540を生成して、それを画面レイアウト503上に表示する。この例では、結果540は著者のリスト「著者1、著者2、著者3」を含む。この例によれば、ワークフロー・モデルがアルファベット順の著者のリストの形態で結果を表示することを想定している。
【0077】
図5Dでは、ビジュアル・プログラミング・ツールは同様に編集モードであり、これは編集ボタン/フィールド550の語句「編集モード」を太字で図示することによって示している。これは、ユーザがワークフロー・グラフ520を編集し得ることを意味する。
【0078】
図5Eは、編集されたワークフロー・グラフ521を含む画面レイアウト504を示している。ワークフロー・グラフ521は編集された形式的データ・クエリを表し、これは、ユーザが元のワークフロー・グラフ520を点検した後にユーザによって編集されたものである。元のワークフロー・グラフ520と比較して、ユーザはランク付けオペレータ538を挿入している。ランク付けオペレータ538は、引用回数に応じて結果(著者)をランク付けするように構成される。ビジュアル・プログラミング・ツールは、自然言語クエリをテストするためのテスト機能を提供する。それに応じて、ユーザは次いで、検索ボタン551をアクティブ化することによって、編集されたワークフロー・グラフ521をテストし得る。アクティブ化されると、画面レイアウト504は、引用回数でソートされた著者「著者3、著者2、著者1」を含む修正された結果541を表示する。
【0079】
次いで、コンピュータ・システム100は、自然言語クエリ502をワークフロー・グラフ521(形式的データ・クエリ)と共にグラウンド・トゥルース・ペアとしてストレージ・システム134に記憶し得る。次いで、このグラウンド・トゥルース・ペアは、好ましくは複数のさらなるグラウンド・トゥルース・ペアと組み合わせて、訓練モジュール142bによって変換モジュール142aを訓練するために使用され得る。
【0080】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せであり得る。コンピュータ・プログラム製品は、本発明の態様をコンピュータ・システム100のプロセッサ/処理ユニットに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(または複数の媒体)を含み得る。
【0081】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のために命令を保持および記憶可能な有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、たとえば、限定はしないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであり得る。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリー・スティック(R)、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝の隆起構造などの機械的にコード化されたデバイス、およびこれらの任意の適切な組合せが含まれる。コンピュータ可読ストレージ媒体は、本明細書で使用する場合、たとえば、電波または他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、または有線で伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
【0082】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組合せなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶する。
【0083】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされ得る。一部の実施形態では、たとえば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人向けにすることによって、コンピュータ可読プログラム命令を実行し得る。
【0084】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せが、コンピュータ可読プログラム命令によって実装できることは理解されよう。
【0085】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製造品を構成するように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはそれらの組合せに特定の方式で機能するように指示することができるものであってよい。
【0086】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装するように、コンピュータ実装処理を作出するべく、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0087】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理的機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実装形態では、ブロックに記載した機能は、図示した順序以外で行われ得る。たとえば、関与する機能に応じて、連続して示した2つのブロックは、実際には実質的に同時に実行され得、またはそれらのブロックは、場合により逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用のハードウェア・ベースのシステムによって実装できることにも留意されたい。
【0088】
本発明の様々な実施形態の説明は、例示の目的で提示してきたが、網羅的であることも、開示した実施形態に限定されることも意図したものではない。記載した実施形態の範囲から逸脱することなく、多くの変更および変形が当業者には明らかであろう。本明細書で使用する用語は、実施形態の原理、実際の適用、もしくは市場に見られる技術に対する技術的改善を最もよく説明するために、または当業者が本明細書に開示した実施形態を理解できるようにするために選択した。
図1
図2
図3
図4A
図4B
図4C
図4D
図4E
図5A
図5B
図5C
図5D
図5E