【文献】
Satnam Alag,集合知イン・アクション,日本,ソフトバンククリエイティブ株式会社,2009年 4月 1日,第1版,p.175−206
【文献】
倉光 君郎,セマンティックWebのための検索エンジン,データベースとWeb情報システムに関するIPSJ DBS/ACM SIGMOD Japan Chapter/JSPS−RFTFAMCP 合同シンポジウム論文集,日本,社団法人情報処理学会,2000年12月 6日,Vol.2000 No.14,p.323−330
(58)【調査した分野】(Int.Cl.,DB名)
リソースディレクトリに追加された新しいエンティティは、前記リソースディレクトリに付与されたバージョン番号が、前記追加された新しいエンティティの追加と共に一度変更されたことを示す注釈を含み、再処理するステップは、前記ストアされた情報セグメントを、前記リソースディレクトリに追加された新しいエンティティに従って再処理することをさらに含むことを特徴とする請求項1に記載のプロセス。
各新しいエンティティに割り当てられた前記識別子は、前記各新しいエンティティを明らかにした前記処理されたセグメントの識別子と同じであることを特徴とする請求項3に記載のプロセス。
前記情報ストリームからの情報セグメントを処理するステップにおいて、新しいエンティティはユーザによって明らかにされるか、または入力され、対応する前記リソースディレクトリ内に追加されることを特徴とする請求項1乃至4のいずれか1つに記載のプロセス。
前記処理された情報セグメントは、タイプ、オプションのユニバーサルリソース識別子、および制約なしメタデータのセットを含み、各メタデータはキーと値のペアを含むことを特徴とする請求項1乃至6のいずれか1つに記載のプロセス。
前記情報ストリームからの前記処理された情報セグメントは、選択した情報ソースに従ってストアされることを特徴とする請求項1乃至7のいずれか1つに記載のプロセス。
前記既存エンティティのプロファイルおよび前記新しいエンティティの新しいプロファイルは、プロファイルリポジトリにストアされることを特徴とする請求項10に記載のプロセス。
エンティティの完成したプロファイルを、インデクシングエンジンに送信するステップをさらに含むことを特徴とする請求項10乃至11のいずれか1つに記載のプロセス。
前記情報ストリームから前記情報セグメントを処理するステップにおいて、前記情報セグメントの1つにおいて特定されたユニバーサルリソースロケータと、前記情報セグメントの前記1つに割り当てられたユニークな識別子との間のマッピングが、前記システムによってハッシュディレクトリ内に登録されることを特徴とする請求項3乃至12のいずれか1つに記載のプロセス。
【背景技術】
【0002】
Web検索エンジン(Google(登録商標)、MSN(登録商標)search、AllTheWeb(登録商標)など)は、ユニークなインデックスから情報レコードにアクセスする方法を提供している。この目的のために、検索エンジンは新しいコンテンツを見つけるために最初にWebをクロールする。次に、コンテンツがインデックス作成される。すなわち、コンテンツが構造解析され、ストアされて高速かつ正確な情報検索を容易化する。そのあと、ユーザは結果を得るために検索エンジンに問い合わせを行い、その検索結果は一般にリストの形で提示されている。
【0003】
Webをクロールすることは困難なタスクである。事実、Webクローラは大量のデータに直面し、Webの全コンテンツをダウンロードすることができない。さらに、Webのコンテンツは絶えず変更されている。このダイナミック性は、Webクローリングでは新しいコンテンツが追加されたかどうかを定期的にチェックしなければならず、また既知のコンテンツが更新されたかどうか、あるいは削除されたかどうかもチェックしなければならないことを意味している。そのために、Webクローラは、膨大な計算リソースを必要とする複数のプロセス処理を実行するだけでなく、コンテンツがフェッチされてWebクローラに送信されるときにネットワークバンド幅を消費している。
【0004】
この目的のために、キャッシングシステムが開発され、上記に挙げた制約を緩和している。キャッシングシステムは以前に見た情報のバージョンをストアして、その情報が問い合わされて表示される必要があるときのレスポンスタイムを改善している。例えば、Webキャッシュは、WebブラウザおよびWebプロキシサーバによって採用され、WebページなどのWebサーバからの以前のレスポンスをストアする。Webキャッシュは、キャッシュに以前にストアされた情報を頻繁に再使用し、ネットワーク上を送信する必要のある情報量を低減している。さらに、キャッシングはWebのユーザの応答性を向上するのに役立っている。しかし、WebキャッシュはWebクローラによって検索された膨大な情報量を処理するのに適していない。事実、Webクローラは、クローラを通るデータのコピーをストアしているが、ストアされたデータを管理する手段も、ストレージコストを低減する手段も提供していない。
【0005】
特許文献1は、イベントオブジェクトとも呼ばれる、見つかったエンティティが関係するイベントに関する情報を抽出するシステムを開示している。この特許文献は、アーティクルを一度フェッチし、そのあと一回の処理のためにローカルにストアすることを教示している。各アーティクルは既存の環境モデルを使用して一度処理され、特定のシステム実装に関する特定の業界別の焦点に従って、関心のないコンテンツをフィルタリングで除去している(例えば、取り除いている)。イベント処理制御プログラムは、その環境モデルに定義されたエンティティとは無関係のフェッチしたアーティクルをフィルタリングする。その結果として、この解析システムは、検索した情報の大部分(例えば、99%またはそれ以上)を除去してから新しいアーティクルにイベント検出エンジンを適用する。
【0006】
しかし、フェッチしたアーティクルはシステムによって保存されていない。つまり、このことは、例えば、アーティクルが更新され、再処理する必要があるときそのアーティクルが再度フェッチされることを意味している。従って、システムは、同じ(または類似)
コンテンツを何度もダウンロードする必要がある。
【0007】
特許文献2は、どのようにして構造化データおよび非構造化データを、複数のデータソースからキャプチャスキーマに抽出し、非構造化データを変形し解析して、それを解析スキーマにロードするかを教示している。この特許文献は、どのようにして非構造化データおよび構造化データの構造化ビューを提供し、例えば、そのデータに対して解析〈例えば、ビジネスインテリジェンス〉を実行するかを教示している。しかし、この特許文献は、どのように新しいリソースの作成をデータで管理し、新しいビジネスデータおよび既に見たビジネスデータに対するこれらの変更を管理するかの問題に取り組んでいない。
【0008】
従って、簡単に上述した既存のソリューションの制約によれば、データの再処理およびストアされたデータ量を低減するために、情報セグメントをより効率的な方法で管理する改善された情報処理が要求されている。
【発明の概要】
【0010】
従って、本発明は、エンティティに関係する情報であって、そのエンティティが情報ストリームに含まれる情報を処理するコンピュータ実装プロセスを提供する。このエンティティはシステムのリソースディレクトリに含まれ、各リソースディレクトリはエンティティを含み、少なくとも1つの新しいエンティティの追加後に、変更されたバージョン番号で注釈を付ける。本プロセスは、
異なる情報ソースから情報ストリームを検索するステップと、
情報ストリームからの情報セグメントをリソースディレクトリのエンティティに従って処理するステップと、
前記リソースディレクトリのどのバージョンが使用され、前記情報セグメントを処理するのかを示す注釈と共に情報セグメントをストアするステップと、
前記リソースディレクトリの少なくとも1つを少なくとも1つの新しいエンティティで更新すると共に前記少なくとも1つのリソースディレクトリのバージョン番号を更新するステップと、
前記情報セグメントがその少なくとも1つのリソースディレクトリの以前バージョンで処理されたことを示す注釈を含む、ストアされた情報セグメントを再処理するステップと、
を含んでいる。
【0011】
また、本プロセスは、
リソースディレクトリに追加された新しいエンティティであって、前記リソースディレクトリは前記追加された新しいエンティティの追加と共に一度変更された前記リソースディレクトリに付けられたバージョン番号を示す注釈を含むものであって、再処理するステップは、ストアされた情報セグメントを前記リソースエンティティに追加された新しいエンティティに従って再処理することさらに含んでいるものと、
各処理された情報セグメントと各エンティティとに割り当てられたユニークIDを含み、
各新しいエンティティに割り当てられたユニークIDは前記新しいエンティティを明らかにした処理されたセグメントのIDと同じであり、
情報ストリームから情報セグメントを処理するステップにおいて、新しいエンティティはユーザによって明らかにされるか、または入力されて、対応するリソースディレクトリ内に追加され、
処理された情報セグメントはデータ構造であり、
処理された情報セグメントはタイプ、オプションのユニバーサルリソースID、および制約なしメタデータのセットを含み、各メタデータはキーと値のペアを含み、
情報ストリームからの処理された情報セグメントは選択した情報ソースに従ってストアされ、
ストリームから情報セグメントを処理するステップに先立って、検索した情報ストリームをマッパキュー内に割り当てるステップであって、そのマッパキューは情報ストリームの情報ソースに従って選択されて、map−レデュースメカニズムによって処理されるものを含み、
情報ストリームから情報セグメントを処理するステップのあと、
処理された情報ストリームをレデューサキュー内に割り当てるステップであって、そのレデューサキューは情報ストリームの情報ソースに従って選択されるものと、
各既存エンティティについて、情報ストリームから情報セグメントを処理するステップの結果得られる情報でエンティティのプロファイルを強化するステップと、
各明らかにされたエンティティについて、新しいエンティティの新プロファイルを作成し、情報ストリームから情報セグメントを処理するステップの結果得られる情報でエンティティのプロファイルを強化するステップと、を含み、
既存エンティティのプロファイルまたは新しいエンティティの新プロファイルはタイプおよび事前定義のメタデータのセットを含み、各メタデータはキーと値のペアを含み、
既存エンティティのプロファイルおよび新しいエンティティの新プロファイルはプロファイルリポジトリ内にストアされ、
エンティティの完成したプロファイルをインデクシングエンジンに送信し、
情報ストリームから情報セグメントを処理するステップにおいて、情報セグメントの1つにおいて特定されたユニバーサルリソースロケータと、情報セグメントの前記1つに割り当てられたユニークIDとの間のマッピングはシステムによってハッシュディレクトリ内に登録されることを含んでいる。
【0012】
さらに、本発明は、コンピュータ可読媒体上にストアされていて、エンティティであって、情報ストリーム内に含まれたエンティティに関する情報を処理するコンピュータプログラムであって、そのエンティティはシステムのリソースディレクトリ内に含まれ、各リソースディレクトリはエンティティを含み、少なくとも1つの新しいエンティティの追加と共に変更されたバージョン番号で注釈が付けられ、本プロセスのステップをコンピュータに実行させるコード手段を含んでいるコンピュータプログラムを提供している。
【0013】
さらに、本発明は、エンティティであって、情報ストリーム内に含まれているエンティティに関する情報を処理する装置であって、そのエンティティはシステムのリソースディレクトリ内に含まれ、各リソースディレクトリはエンティティを含み、少なくとも1つの新しいエンティティの追加と共に変更されたバージョン番号で注釈が付けられていて、本プロセスのステップを実現する手段を含む装置に関する。
【発明の効果】
【0014】
以下には、本発明および本発明を具現化するシステムによるプロセスが、非限定的な例を示し、添付図面を参照して説明されている。なお、添付図面において、
【発明を実施するための形態】
【0016】
本発明は、情報ストリーム内に含まれるエンティティに関係する情報を処理するコンピュータ実装プロセスに関する。エンティティはタイプ付きデータであり、そこではタイプ付きデータは、値のセット、他のタイプ付きデータへのリンクおよび可能な場合は、これらの値に対する操作をさらに含む場合がある。例えば、タイプ付きデータはクライアント名、都市、製品名、感情的価値(sentiment value)、支払い方法とすることができる。これらのエンティティはシステムのリソースディレクトリにストアされる。各リソースディレクトリはエンティティを含み、少なくとも1つの新しいエンティティの追加と共に変更されたバージョン番号で注釈が付けられる。バージョン番号は増分的に異なるデータのバージョンを記録するために使用されることがあり、そのバージョン番号は、例えば、システムにストアされたデータの新しさを示す。
【0017】
本プロセスは、異なる情報ソースから情報ストリームを検索するステップを含む。次に、情報セグメントが前記リソースディレクトリのエンティティに従って情報ストリームから処理される。一般的に、既存リソースディレクトリのエンティティに見つかったエンティティに関する情報が抽出される。そのあと、情報セグメントは、前記リソースディレクトリのどのバージョンが前記情報セグメントの処理のために使用されたのかを示す注釈と共にストアされる。新しいエンティティが処理されたセグメントに見つかった場合には、前記リソースディレクトリの少なくとも1つを少なくとも1つの新しいエンティティで更新し、さらに前記少なくとも1つのリソースディレクトリのバージョン番号を更新するステップがそのあとに続く。一般的に、新しいエンティティは情報ストリームの中に見つけられる。そのあと、本プロセスはストアされた情報セグメントを再処理し、その情報セグメントは、前記少なくとも1つの更新されたリソースディレクトリの以前バージョンで前記情報セグメントが処理されたことを示す注釈を含む。有利な点は、開示したテクノロジによると、どの情報ソースが再処理される必要があるかを特定することによってストアする情報ストリームが少なくなることである。さらに、ストアされた情報セグメントのサブセットだけが再処理されるので、処理時間が改善される。
【0018】
図1は、本発明のプロセスの実施形態を示す図である。情報ストリーム10と従来のインデクシングエンジン11との間にコンソリデーションボックス12が挿入され、本発明のプロセスを実行する。コンソリデーションボックスは、1つまたは2つ以上の入力情報ソースからのエンティティに関するデータを変形し、統合するのを可能にするコンピュータシステムである。
【0019】
コンソリデーションボックス12は、異なる情報ソースから情報ストリーム10を検索する。一般的に、情報ストリーム10は、Webとも呼ばれるWorld Wide Webによって提供される。しかし、情報ストリーム10は、イントラネットやエクストラネットのようなプライベートネットワークによって提供されることもある。ところで、どの情報ソースも、その発生源に関係なく本発明を実行するために使用されることがある。情報ストリーム10はエンティティに関係する情報セグメントを提供する。エンティティはタイプ付きデータであり、この場合、タイプ付きデータは値のセット、他のデータタイプとの関係のセット、および可能ならば、これらの値に対する操作を含むことができる。例えば、タイプ付きデータはクライアント名、都市、製品名、感情的価値、支払い方法とすることができる。情報セグメントは、リソースディレクトリにストアされたエンティティに従って情報ストリームから処理される。リソースディレクトリはエンティティを含み、バージョン番号で注釈が付けられる。そのあと、情報セグメントは、エンティティに関するプロファイルを継続的および増分的に構築するコンソリデーションボックス上にキャッシュ(13)される。一般的に、プロファイルはプロファイルリポジトリ上にストアされ、コンソリデーションボックス12によって生成される出力データである。プロファイルはエンティティに関係するデータの集まりである。一般的に、プロファイルはタイプおよび事前定義したメタデータのセットを含むデータ構造であり、メタデータのセットは互いにキーと値のペアで構成されている。一部のメタデータはオプションとすることができる。定義により、オプションのメタデータのキーと値のペアのうちの値部分は空とすることができる。他のメタデータは、データ構造をプロファイルと見なすために、
その存在を必須とすることができる。従って、あるエンティティのプロファイルが完成したとき、すなわち、すべての必要データが統合されたとき、そのプロファイルは、プロファイルのデータのインデックスを作成するインデクシングエンジン11に送られる。
【0020】
実際には、コンソリデーションボックス12はDSS(Decision Support System:意思決定支援システム)の一部とすることができる。DSSは特定クラスのコンピュータ化情報システムであり、このシステムは、ビジネスおよび組織の意思決定アクティビティをサポートし、意思決定者が生データ、ドキュメント、個人知識および/またはビジネスモデルから有用な情報をコンパイルして問題を特定して解決し、意思決定を行なうおとを支援することを目的としている。
【0021】
次に、
図2は本発明のプロセスを実行するシステムの実施形態、すなわち、コンソリデーションボックスを示す図である。
【0022】
コンソリデーションボックス12はコネクタ26、27を介して外部世界に接続されている。コネクタは情報ストリームのソースにアクセスし、異なる情報ソースから情報ストリームを検索する。実際には、コネクタはデータソース(ファイルシステム、Webページ、データベース、Eメール)に接続すると共に、そのソースからタイプ付きデータ(例えば、送信者名、Eメール本文テキストなどを指定するXML)を抽出するコンピュータモジュールである。非限定的な例として、コネクタは、レストランに関するWebサイトの与えられたリストを継続的にクロールし、情報ストリームから、すなわち、レストランを記述したWebページから情報セグメントを抽出することが可能である。
【0023】
これらのコネクタを使用すると、システムのユーザはどの情報ストリームがインデックス生成されるエンティティに関する情報セグメントを提供する可能性があるかを決定することができる。この決定はストリームの発生源に応じて行なわれることがある。発生源は、サーバの地理的ロケーション、そのIPアドレス、そのサービス(HTTP、FTPなど)などの情報ストリームのソースの技術的考慮に基づいて判断されることがある。また、発生源はストリームソースのタイプ、例えば、Webサイト、フォーラム、Webサイトにおけるコメント、ブログポストなどに基づいて判断されることもある。理解されるように、有利な点は選択した情報ソースに従って情報ストリームを選択することである。従って、データ量が激減することがあるので(Web全体をクロールするのではなく)、コンソリデーションボックス12の計算リソースが保持される。有利な点は、インデックス作成されるエンティティがまだシステムに知られていない場合でも決定を行なうことができることである。これが有利であるのは、ある与えられたエンティティが見つかれば、そのエンティティに関する情報が失われることがないとユーザが予測できることである。
【0024】
コネクタはストリームから情報セグメントを抽出する。情報セグメントはコンソリデーションボックスによって処理された入力データである。各情報セグメントはデータ構造である。実際には、情報セグメントのデータ構造はタイプ、オプションのURIおよび制約なしメタデータのセットを含み、各メタデータは互いにキーと値のペアから構成される。情報ストリームからの情報セグメントは、検索されると、リソースディレクトリのカレントバージョンに従って処理される。
【0025】
コンソリデーションボックスに入力された情報セグメントの処理が開始されとき、ユニークIDが各処理される情報セグメントに割り当てられることがある。これに付随して、システム内の各エンティティにIDが割り当てられることもある。一般的に、処理された情報セグメントに見つかった各新しいエンティティについて、両方のIDは同じである。従って、情報セグメント内のメタデータ部分を処理するマスタ参照IDジェネレータ(master reference identifier generator)によってマスタ参照IDが割り当てられる。例えば、エンティティの1つがレストランに関するものであれば、このIDジェネレータはレストランの名前とそのアドレスを含むメタデータを受け取って、エンティティレストランのレストランマスタ参照IDを生成することができる。より一般的には、ある与えられたタイプの各情報セグメントが特定のIDジェネレータにマッピングされる。(エンティティ)マスタ参照IDは、あるエンティティに関する複数の情報セグメントをそのエンティティに関する単一のプロファイルにリンクさせる。情報セグメントがURIを含む場合、そのURIと生成された(エンティティ)マスタ参照IDとの間のマッピングがDIH(Document Identifier Hashtable/ドキュメント識別子ハッシュテーブル)に登録される。
【0026】
マスタ参照IDが計算されると、本プロセスは情報セグメントをマッパキュー20に割り当てて、そこでさらに別の処理を待機する。この割り当てを、そのセグメントのソースのタイプに従って処理することができる。実際には、割り当てるプロセスを、コンソリデーションボックス12内部の通信を管理するマスタプログラムであるコンソリデーションボックスマネージャによって実行することができる。
【0027】
マッパキュー20は、この分野では公知であるように、map−レデュースメカニズム21によって処理される。このmap−レデュースメカニズム21は、クラスタと総称される非常に多数のコンピュータを使用して膨大なデータセットを処理するフレームワークに頼っている。情報セグメントはエンティティタイプ別プロセスにマッピングされ、このプロセスはエンティティマスタ参照IDによって特定された各IDに関する別のメタデータの抽出を試みる。この処理は高度並行処理であり、そこでは自然言語処理および情報抽出などの大量コンピューティング操作が情報セグメントに対して実行される。情報抽出は、非構造化または構造化データからある特定タイプのエンティティ(例えば、人々、場所、金、日付、組織、製品)を認識する自然言語処理の分野である。エンティティ認識技法では、リンク、ルールまたはこれらを組み合わせたものが使用される。エンティティはエンティティ階層でタグを付けることもできる。エンティティはコンソリデーションボックス12のエンティティストア25にストアされる。さらに、セグメントの処理中に情報セグメントに特定されたエンティティもエンティティストア25にストアすることができる。
【0028】
マッピングメカニズムによってリソースディレクトリのエンティティに従って情報セグメントを処理したあと、情報セグメントは専用ストア25にストアされる。これに付随して、あるエンティティタイプにマッピングされた各情報セグメントを、そのエンティティタイプに従ってコンソリデーションボックス12の初期構成にストア可能またはストア不能として宣言することが可能である。そのエンティティタイプがストア不能として宣言された場合は、情報セグメントはストアされない。これとは反対に、ある情報セグメントがマッピングされるときのエンティティがストア可能として構成されている場合は、その情報セグメントはそのオリジナルフォーマットでストアされるか、場合によりマッピング段階期間に生成された追加のメタデートと共にストアされるが、そのセグメントが処理されてコンソリデーションボックス内部の情報セグメントストア22にストアされたときのリソースのバージョン番号で注釈が付けられることは確かである。事実、上記で見たように、エンティティはエンティティストア25と呼ばれるリソースディレクトリにストアされる。リソースディレクトリはある特定タイプのエンティティに対応しており、各リソースディレクトリはバージョン番号をもっている。
【0029】
情報セグメントの処理は、例えば、上述したエンティティ認識を使用して新しいエンティティを明らかにすることができる。リソースを使用して、エンティティを特定することができ、リスト、ディクショナリ、シソーラスまたはオントロジで構成されることもある。これらの新しいエンティティはエンティティストア25にストアされる。リソースディレクトリ25に追加された新しいエンティティは、追加された新しいエンティティの追加と共に一度変更されたリソースディレクトリに付けられたバージョン番号を示す注釈を含むことができる。これに応じて、対応するリソースディレクトリの更新が実行されるが、その更新に伴って各リソースディレクトリのそれぞれのバージョン番号が変更される。さらに、以前に見られた情報ストリーム(情報セグメントストア22にストアされた)の一部分はこれらの新しいエンティティに関する情報を含むことができる。従って、これらがリソースディレクトリの以前バージョン番号でその情報セグメントが処理されたことを示す注釈を含むストア22された情報セグメントが再処理される。ストアされた情報セグメントの再処理はリソースディレクトリに追加された新しいエンティティに従って実行されることもできる。当然に理解されるように、各情報セグメントの注釈に利点があるのは、情報セグメントストア22にストアされたどのセグメントがエンティティリソースの以前バージョンで処理されたかを本プロセスが選択できるからである。同じタイプのエンティティリソースで処理されないセグメントは再処理のために選択されない。従って、この選択のお陰で、ストア22にストアされた情報セグメントのサブセットだけが再処理され、その結果として計算リソースが保持され、処理時間が改善される。さらに、ストアしておく必要のある情報セグメントのストリームは、どの情報セグメントを再処理する必要があるかを特定することにより少なくて済むので、ストレージコストが低減される。もう1つの利点は、リソースのバージョン番号により、情報セグメントの再処理期間に、エンティティのリソースディレクトリの新バージョンに現れたエンティティに関する情報だけを抽出できることである。事実、これらのリソースディレクトリでは、各エンティティが最初に現れたリソースディレクトリのバージョン番号で各エンティティにも注釈が付けられるので、システムは、どのエンティティが新情報の抽出を必要としているかを再処理期間に認識することができる。この場合も、新しいエンティティの情報だけを抽出することにより、ストアされた情報セグメントの再処理時に処理時間が減少する。
【0030】
これに付随して、情報ストリームから情報セグメントを処理する間に新しいエンティティが明らかにされることがあるが、ユーザによって入力されることもある。さらに、コンソリデーションボックス12がインタフェースとなって、自然言語処理リソースをダイナミックに更新することもある。各リソースはバージョン番号を有している。リソースの更新がコミットされると、バージョン番号が変わるので、関係する情報セグメントの再処理が実行されることになる。
【0031】
次に、マッピングメカニズムによる処理が行なわれ、情報セグメントを追加のメタデータ(もしあれば)と共にストアしたあと、処理された情報セグメントがレデューサキュー23に追加される。各エンティティには、コンソリデーションボックス12の構成に定義されたレデューサが関連付けられている。このレデューサは1つまたは2つ以上の情報セグメントを入力として受け取ることができるコンピュータプログラムである。
【0032】
プロファイルがレデュースステージ24で作成される。同じマスタ参照IDをもつエンティティが既に存在する場合は、そのエンティティは、エンティティストア25からローカルに、コンソリデーションボックスにフェッチされる。情報セグメントはターゲットであるエンティティごとに順次に処理される。レデュースメカニズムは、すべてのプロファイルを、ローカルにコンソリデーションボックス12にストアされたプロファイルにストアするが、一部の必須メタデータを欠くプロファイルでさえもストアする。
【0033】
コンソリデーションボックス構成において、そのエンティティタイプについて定義された全必須メタデータをプロファイルが含む場合、レデュースメカニズム24はコンソリデーションボックス12の外部のインデクシングエンジン11にそのプロファイルを送信する。
【0034】
本発明による本プロセスの実施形態を例示するシナリオについて、以下で説明する。このシナリオでは、3つの情報ソースがコンソリデーションボックス12によって処理される。すなわち、レストランWebサイト、コメントおよびブログエントリ(ブログポストとも呼ばれる)である。レストランのプロファイルは処理された情報から構築され、名前、アドレス、支払い方法、メニュー、顧客感情などのフィールドを含むことができ、これらは各レストランに関連付けられている。
【0035】
2つのコネクタ26、27は情報ストリームソースにアクセスし、情報ストリームからの情報セグメントをコンソリデーションボックス12の中にプッシュする。一方のコネクタはレストランの情報とコメントを複数のレストランレビューWebサイトから抽出し、これらをコンソリデーションボックス12にプッシュする。第2のコネクタは複数のブログからブログを抽出し、これらのコンソリデーションボックス12の中にプッシュする。
【0036】
このシナリオでは、第1のコネクタは次に示す情報セグメントをコンソリデーションボックスに入力する。
<Data type=“restaurant”>
<meta name=“URI“ Value=“http://www.restaurantreviews.com/ABCRestraurant“ />
<meta name=“restaurantName“ value=“ABC Restaurant“ />
<meta name=“address“ value=“123 food street“ />
</Data>
【0037】
情報セグメントはタイプ、“restaurant”、オプションのユニバーサルリソースID、“http//www.restaurantreviews.com/ABCRestraurant”および制約なしメタデータを含み、各メタデータはキーと値のペア(例えば、キー名=“restaurantName”および値=“ABC Restaurant”)を含む。従って、この情報セグメントはレストラン情報セグメントである。
【0038】
コンソリデーションボックス12は、このレストラン情報セグメントを処理する。“restaurant”タイプの情報セグメントに対するマスタ参照IDジェネレータが計算される。コンソリデーションボックスの構成においてこのタイプ(“restaurant”)の情報セグメントに関連付けられたマスタ参照IDジェネレータはレストランのアドレスと名前を解析し、正規化してエンティティ“ABCレストランと名付けたレストラン”のユニークなエンティティマスタ参照IDを生成する。このエンティティマスタ参照IDは新メタデータとして情報セグメントに追加される。このエンティティマスタ参照IDをユニークキーとして使用して、異なるレビューWebサイトに渡って同じエンティティ“ABCレストランと名付けたレストラン”に対して収集された情報がそのエンティティの同じディレクトリに統合される。有利なことは、異なるストリートアドレスに別の“ABCレストラン”が存在する場合、ジェネレータはその別のレストランに対して異なるエンティティマスタ参照IDを生成するので、エンティティ“ABCレストランと名付けたレストラン”と第2のレストランエンティティである第2のレストランとが区別されることである。
【0039】
次に、情報セグメントはメタデータとしてURIを有しているので、コンソリデーションボックスマネージャはURIと以前に計算したエンティティマスタ参照IDとの間のマッピングをコンソリデーションボックス12に独自のDIHに登録する。このハッシュテーブルは、ハッシュ関数を使用してエンティティマスタ参照IDを関連のURIに効率的にマッピングするデータ構造である。有利なことは、ハッシュテーブルを使用すると、効率的な検索が可能になることである。
【0040】
そのあと、コンソリデーションボックスマネージャはレストラン情報セグメントをマッパキュー22内にプッシュする。情報ストリームのマッパキューへの割り当ては、情報ストリームのタイプ(または情報ソース)に従ってマッパキューが選択されるように行なわれる。この情報セグメントはタイプ“restaurant”のエンティティに関係しているので、このレストラン情報セグメントはレストランタイプの情報セグメントのマッパキューに入って送信される。マッパマネージャのプログラムはコンソリデーションボックスのマネージャによって起動され、マッパキュー内のレストラン情報セグメントがmap−レデュースメカニズム21によって処理される。
【0041】
次に、レストラン情報セグメントがマッパマネージャによって抽出され、レストランマッパに送信される。このレストランマッパはプログラムであり、(レストラン名、エンティティマスタ参照ID)ペアが既に存在するかどうかを、コンソリデーションボックスにローカルのリソースにおいて検証する。マッパプログラムによって抽出された(レストラン名、エンティティマスタ参照ID)ペアがリソースに存在しなければ、そのリソースが更新のためにプログラムされ、新情報がローカルファイルにストアされ、そのリソースが「ダーティ(dirty)」とマーク付けられる。すなわち、このことは、新情報がその後のいつかに新バージョンの構築に利用できることを意味している。
【0042】
次に、レストラン情報セグメントは、ストア可能として構成されていないので、これは情報セグメントストア22に書き出されない。
【0043】
そのあと、レストラン情報セグメントがマッパ21によってレデューサキュー23に送信される。
【0044】
レデュースステージがトリガされると、レストラン情報セグメントがレストランエンティティのレデューサによって処理される。エンティティ“ABCレストランと名付けたレストラン”のエンティティマスタ参照IDについてプロファイルがまだ存在しないので、新プロファイルが作成される。この新プロファイルはタイプと事前定義メタデータのセットを含み、各メタデータはキーと値のペアを含んでいる。プロファイルはオリジナル情報セグメントからのほかに、エンティティ“ABCレストランと名付けたレストラン”のそのエンティティマスタ参照IDに関係する他の情報セグメントがレデューサキューにあればその情報セグメントからも、マッパによって生成されたすべての情報を用いて強化される。
【0045】
そのあと、新たに変更されたプロファイルがプロファイルリポジトリ、すなわち、プロファイルストア29にストアされる。ストアされたプロファイルが必要とするすべてのメタデータを含む場合、すなわち、プロファイルのすべての必須フィールドが満たされていれば、そのプロファイルはコンソリデーションボックスの外部の従来のインデックスエンジン11によるインデックス作成のために送信される。
【0046】
第2のコネクタは次に挙げたブログポスト情報セグメントを入力し、それをコンソリデーションボックスに送信する。
<Data type=“blogpost”
<meta name=“URI”value=http://www.foodblog.com/entries/1“ />
<meta name=“text“ value=“Today we tried ABC Restaurant, and it was
Fabulous.“/>
</Data>
【0047】
コンソリデーションボックスは、“ブログポスト“タイプの情報セグメントに対するコンソリデーションボックス構成の中で関連付けられたマスタ参照IDジェネレータプログラムにタイプ“ブログポスト“のこの情報セグメントを最初に送信することによってその情報セグメントを処理する(例えば、情報ストリームのソースはブログである)。このマスタ参照IDジェネレータプログラムはドキュメントの単純な特徴(fingerprint)をそのマスタ参照IDとして生成する。従って、この情報セグメントはブログポスト情報セグメントである。
【0048】
次に、ブログポスト情報セグメントはURIをもっているので、DIH内のエントリが追加され、ブログポスト情報セグメントのURIをそのエンティティマスタ参照IDにマッピングすることになる。
【0049】
そのあと、コンソリデーションボックス12のマネージャはブログポスト情報セグメントを、マッピングのためのキュー20に挿入する。
【0050】
そのあと、マップマネージャプログラムがコンソリデーションボックスのマネージャによって起動されるのでブログポスト情報セグメントが“ブログポスト”タイプの情報セグメントのために専用されるマッパ21によって処理される。この“ブログポスト”マッパはレストラン名を含むリソースとマッチさせる自然言語処理を実行する。“ブログポスト”マッパ21がブログポストに既知のレストラン名を見つけると、レストランエンティティマスタ参照IDをもつノートがブログポスト情報セグメントに追加される。このケースでは、“レストラン名”のリソースディレクトリがエンティティ“ABCレストランと名付けたレストラン”の“ABCレストラン”名でまだ更新されていないので、これまではどの名前もマッチしていない。
【0051】
次に、“ブログポスト”タイプの情報セグメントはコンソリデーションボックスの構成の中でストア可能として宣言されているので、このブログポスト情報セグメントは、リソースディレクトリのどのバージョンが処理の過程で使用されたかを示すために注釈が付けられて情報セグメントストア22にストアされる。このケースでは、レストラン名リソースのカレントバージョンはバージョン0である。
【0052】
そのあと、ブログポスト情報セグメントがマッパ21によってレデューサキューに送られる。
【0053】
そのあと、レデュースステージがコンソリデーションボックスマネージャによって起動され、新ブログポストプロファイルがブログポストレデューサによって作成される。この目的のために、ブログポスト情報セグメントのメタデータが新しく作成されたプロファイルにコピーされるが、これはそのブログポスト情報セグメントのマスタ参照IDにはまだプロファイルが存在しないためである。
【0054】
そのあと、コンソリデーションボックス内部のプロファイルストア29にブログポストプロファイルがストアされる。さらに、すべての必須メタデータがプロファイルに存在していれば、レデューサは、従来の外部インデクサ11によってインデックス生成されるためにコンソリデーションボックスの外部のプロファイルも送信する。
【0055】
レストラン名リソースのカレントバージョンはバージョン0である。ある時点で、コンソリデーションボックスマネージャは、レストラン名リソースの新バージョンを構築することを決定する。これに付随して、外部イベントが、例えば、ユーザの決定を受けてリソースの更新をトリガすることもある。リソースのこの新バージョン、すなわち、バージョン1では、エンティティ“ABCレストランと名付けたレストラン”のレストラン名“ABCレストラン”およびそのエンティティマスタ参照IDがレストラン名のリソースディレクトリに現れる。見つかったすべての新しい(レストラン名、エンティティマスタ参照ID)ペアを統合することによって、レストラン名のリソースディレクトリの新バージョンが構築されると、コンソリデーションボックスマネージャは情報ストア22のローカルセグメントにストアされたすべての情報セグメントを調べて、このリソースの以前バージョンを使用する情報セグメントがあれば、そのセグメントを「ダーティ」にする。これらのデータが新リソースで再処理される必要があるのは、リソースの以前バージョンで見つからなかった情報、例えば、以前に未知のレストランに関する情報を含むことがあるからである。本プロセスは、情報セグメントストア22にストアされたどのセグメントがリソースの以前バージョンを使用して処理されたのかを選択することができる。従って、ストア22にストアされた情報セグメントのサブセットだけが再処理され、その結果として、計算リソースと処理時間が保持されている。さらに、どの情報ソースが再処理される必要があるかを特定することにより、ストアする必要のある情報セグメントストリームが少なくなるのでストレージコストが低減されている。さらに、注釈が付いた情報セグメントがローカル情報セグメントストア22にストアされるので、リソースが更新されるとき外部情報ソースから情報をリフレッシュする必要がない。これにより、ネットワークバンド幅の消費が大幅に減少している。
【0056】
そのあと、コンソリデーションボックスマネージャは“Reprocess obsolete Business Data”プログラムを起動し、ブログポスト情報セグメントを、マッピングのためにキュー20に挿入することによってすべての“ダーティ”情報セグメントをコンソリデーションプロセスに再入させる。
【0057】
今回は、マッパは、ブログポスト情報セグメントのテキストの中のエンティティ“ABCレストランと名付けたレストラン”のレストラン名“ABCレストラン”をマッチさせ、“ABCレストラン”エンティティのマスタ参照IDをもつノートをブログポスト情報セグメントに追加する。
【0058】
そのあと、ブログポスト・レデューサとレストラン・レデューサにおいてレデュースするブログポスト情報セグメントがキューに置かれる。このブログポストレデューサはブログポストのマスタ参照IDを使用してローカルプロファイルストア29を探索し、そのブログポストに対応する以前に構築されたプロファイルを見つけ、そのあとレストランのマスタ参照IDをその既存ブログポストプロファイルに追加する。
【0059】
レストランレデューサはこの同じブログポスト情報セグメントをレデュースして、エンティティ“ABCレストランと名付けたレストラン”のプロファイルをフェッチし、そのエンティティに関係するブログポストの数を増加するか、または感情解析メタデータがマッパによってブログポスト情報セグメントに追加されていれば感情解析を計算する。
【0060】
最後に、ブログポストとレストランのプロファイルの両方がプロファイルストアにストアされ、これらのプロファイルがそれぞれの必須のメタデータセットを含む場合、外部インデクサ11に送出される。
【0061】
このシナリオで処理された第3タイプの情報ソースはレストラン・コメントである。異なるコネクタからであり、自然言語処理技法を必要とするブログポストとは異なり、コメントはそのページに直接にリンクしたレストランまたはページとして同じWebページ上で抽出される。
【0062】
レストランコネクタは次に挙げた情報セグメント(タイプ“コメント”の)をコンソリデーションボックスにプッシュする。
<Data type=“comment”
<meta name=“URI”
Value=http://www.restauratreviews/ABCRestaurant/comments />
<meta name=“restaurant URI”
Value=http://www.restaurantreviews.com/ABCRestaurant />
<meta name=“text”value=“This is the best restaurant.”/>
</Data>
【0063】
コンソリデーションボックスマネージャは、コメント情報セグメントに関連付けられたマスタ参照IDジェネレータに情報セグメントのコメントに送信する。コメントには複雑な解決ルールがないので、ドキュメントの単純な特徴がコメントマスタ参照IDとして割り当てられる。
【0064】
次に、コメント情報セグメントはURIを含むので、DIH内のエントリが追加され、コメントURIをそのコメントマスタ参照IDにマッピングする。
【0065】
そのあと、コメント情報セグメントが処理され、コンソリデーションボックスマネージャによってマッピングキュー20に送られる。コンソリデーションボックスマネージャがマッピングメカニズムを起動すると、コメント情報セグメントがコメントマッパによって処理される。このコメントマッパはDHI内を単純に調べて、レストランURIをレストランマスタ参照IDに分解し、対応するレストランマスタ参照IDをコメント情報セグメント内に新メタデータとして追加する。
【0066】
そのあと、コメント情報セグメントはコンソリデーションボックス構成においてストア不能として定義されるので、コメント情報セグメントはローカル情報セグメントストア22にストアされない。
【0067】
次に、マッパは増補されたコメント情報セグメントをレデューサキューに入れる。レデュースステージがコンソリデーションボックスマネージャによって起動されると、コメント情報セグメントがコメントレデューサとレストランレデューサの両方によって処理される。レストランレデューサはプロファイルストア29から“ABCレストラン”をフェッチし、そのレストランに関係するコメントの数を増やすか、または感情解析を計算し、更新したレストランプロファイルをプロファイルストア29に戻してストアする。コメントレデューサは新コメントプロファイルを作成し、コメント情報セグメントのメタデータをコメント情報セグメントのプロファイルにコピーする。
【0068】
最後に、すべての必須メタデータが存在していれば、コメントのプロファイルがプロファイルストア29にストアされ、最終的にインデックスエンジン11に送られる。
【0069】
以上から理解されるように、上述した方法は、システムによって定義される可能性のあるどの構成においてもどの情報ストリームにも適用可能である。本発明は、デジタル電子回路に実現されることも、コンピュータハードウエア、ファームウエア、ソフトウェアまたはこれらを組み合わせたもので実現されることもある。本発明の装置は、プログラマブルプロセッサによる実行のためにマシン可読ストレージデバイスに有形に具現化されたコンピュータプログラム製品で実現されることもあり、本発明の方法ステップは、入力データに操作を及ぼして出力を生成することにより本発明の機能を実行するために命令からなるプログラムを実行するプログラマブルプロセッサによって実行されることもある。
【0070】
本発明の利点として、本発明はプログラマブルシステム上で実行可能である1つまたは2つ以上のコンピュータプルグラムで実現されることがあり、そのプログラマブルシステムとしては、データストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスとの間でデータおよび命令を受信し、送信するように結合された少なくとも1つのプログラマブルプロセッサがある。アプリケーションプログラムは高水準手続き型またはオブジェクト指向プログラミング言語で実現されることも、必要ならばアセンブリまたはマシン言語で実現されることもあり、いずれの場合も、その言語はコンパイル型または解釈型言語とすることができる。
【0071】
図5はコンピュータシステムス、例えば、コンソリデーションボックスを示す図である。コンソリデーションボックスは内部通信バス(BUS))100に接続された中央処理ユニット(CPU)、BUSにも接続されたランダムアクセスメモリ(RAM)105を備えている。マスストレージデバイスコントローラは、ハードドライブ103のようなマスメモリデバイスへのアクセスを管理する。コンピュータプログラム命令およびデータを有形に具現化するのに適したマスメモリデバイスとしては、あらゆる形体の不揮発性メモリがあり、その中には、例を挙げると、EPROM、EEPROMなどの半導体メモリデバイス、およびフラッシュメモリデバイス、磁気ディスク(内部ハードディスクや取り外し可能ディスクなど)、光磁気ディスクおよびCP−ROMディスク104がある。上記に挙げたもののいずれも、特殊設計のASIC(application-specific integrated circuit/特定用途向け集積回路)によって補強されることも、そこに組み込まれることもある。ネットワークアダプタ107はネットワーク108へのアクセスを管理する。コンソリデーションボックスはディスプレイ106と触覚デバイスを含んでいることがある。この方法によると、ユーザは、例えば、自然言語処理リソースを変更するために、コンピュータシステムとのやりとりが可能になる。
【0072】
以上、本発明の好適実施形態について説明してきた。当然に理解されるように、本発明の精神および範囲から逸脱することなく種々の変更が行なわれることもある。従って、他の実施形態は特許請求の範囲内に属している。例えば、本発明のプロセスはインデックスエンジンによって実行されることがある。