(57)【要約】【課題】ＸＰａｔｈ式における述語の処理のうち、文字列の一致処理を迅速に実行できる方法を提供する。【解決手段】フィルタエンジン１０は、問い合わせパースモジュール１２で抽出された個人プロファイルのテキスト値に基づいて、ＸＭＬパースモジュール１１に入力されたＸＭＬデータに対するキーワードの適合判定を行うための関数であるキーワードインデックスを管理するキーワードインデックス管理モジュール１６と、１つの条件ごとに個人プロファイルを分割して生成されるＸＰａｔｈ式を識別するＸＰａｔｈＩＤと、個人プロファイルに含まれるＸＰａｔｈＩＤ間の論理演算子と、キーワードインデックスとを関連付けて記憶するプロファイル管理部１５と、キーワードインデックスに基づいて特定されたＸＰａｔｈＩＤとＸＰａｔｈＩＤ間の論理演算子とに基づいて個人プロファイルの適合判定を行うデータ抽出モジュール１３を備える。【選択図】図２
2007249773.tif 000002
【特許請求の範囲】
【請求項１】
情報提供者からユーザへ提供される所定の情報を示すＸＭＬデータを、前記ユーザの望む情報の検索条件である個人プロファイルとして入力されたＸＰａｔｈ式に基づいて、前記ユーザごとに予め定められた形式のＸＭＬデータに変換する処理を実行するＸＰａｔｈ式処理装置であって、
前記個人プロファイルとして入力されたＸＰａｔｈ式の構造を解析し、前記ＸＰａｔｈ式から、前記ＸＰａｔｈ式に含まれるテキスト値を指定した述語を含む条件を抽出する問い合わせパースモジュールと、
前記テキスト値に基づいて、前記ＸＭＬデータに対するキーワードの適合判定を行うための関数であるキーワードインデックスを作成するキーワードインデックス作成手段と、
前記条件ごとに前記個人プロファイルを分割して生成されるシングルＸＰａｔｈ式を識別する情報であるＸＰａｔｈ式識別情報と、前記個人プロファイルに含まれるＸＰａｔｈ式識別情報間の論理演算子と、前記キーワードインデックスとを関連付けて記憶するプロファイル管理部と、
前記個人プロファイルを前記プロファイル管理部に追加する命令である追加命令が入力されたときに、前記問い合わせパースモジュールで抽出された条件に基づいて、前記キーワードインデックス作成手段で作成されたキーワードインデックスまたは前記プロファイル管理部に記憶されているキーワードインデックスに、前記条件で指定されるテキスト値と、前記ＸＰａｔｈ式識別情報との組を追加するキーワードインデックス追加手段と、
前記個人プロファイルを前記プロファイル管理部から削除する命令である削除命令が入力されたときに、前記問い合わせパースモジュールで抽出された条件に基づいて、前記プロファイル管理部に記憶されているキーワードインデックスから、前記条件で指定されるテキスト値と、前記ＸＰａｔｈ式識別情報との組を削除するキーワードインデックス削除手段と、
入力されたＸＭＬデータの構造を解析し、解析結果としての情報である構造情報を抽出するＸＭＬパースモジュールと、
前記ＸＭＬパースモジュールで抽出された構造情報のうち、テキスト値タグに対応したキーワードインデックスに基づいて、前記テキスト値タグで指定されるテキスト値に対応するＸＰａｔｈ式識別情報を特定し、特定されたＸＰａｔｈ式識別情報と前記ＸＰａｔｈ式識別情報間の論理演算子とに基づいて、前記個人プロファイルの適合判定を行うデータ抽出モジュールと、
前記データ抽出モジュールで適合判定された個人プロファイルに基づいて、前記入力されたＸＭＬデータを、予め定められた形式のＸＭＬデータへ変換するデータ変換モジュールと、
を備えることを特徴とするＸＰａｔｈ式処理装置。
【請求項２】
前記個人プロファイルとして入力されたＸＰａｔｈ式に含まれるテキスト値を単語に区切って、単語区切り付きテキスト値を生成する形態素解析モジュールをさらに備え、
前記キーワードインデックス追加手段は、前記プロファイル管理部に記憶されているキーワードインデックスに、前記単語区切り付きテキスト値と、前記ＸＰａｔｈ式識別情報との組を追加し、
前記キーワードインデックス削除手段は、前記プロファイル管理部に記憶されているキーワードインデックスから、前記単語区切り付きテキスト値と、前記ＸＰａｔｈ式識別情報との組を削除し、
前記データ抽出モジュールは、前記プロファイル管理部に記憶されているキーワードインデックスに基づいて、前記単語区切り付きテキスト値に対応するＸＰａｔｈ式識別情報を特定することを特徴とする請求項１に記載のＸＰａｔｈ式処理装置。
【請求項３】
前記キーワードインデックスを追加あるいは削除するタグを指定するためのタグ指定用ＸＰａｔｈ式の構造を解析し、解析結果としての構造情報を取得し、前記構造情報から抽出されたパスに対応するキーワードインデックスが、前記プロファイル管理部に記憶されているか否かを判別するインデックス指定パースモジュールをさらに備え、
前記キーワードインデックス作成手段は、前記キーワードインデックスを前記プロファイル管理部に追加する命令が入力されたときに、前記インデックス指定パースモジュールで前記キーワードインデックスが前記プロファイル管理部に記憶されていないと判別された場合に、前記抽出されたパスに対応するキーワードインデックスを作成し、
前記キーワードインデックス削除手段は、前記キーワードインデックスを前記プロファイル管理部から削除する命令が入力されたときに、前記インデックス指定パースモジュールで前記キーワードインデックスが前記プロファイル管理部に記憶されていると判別された場合に、前記抽出されたパスに対応するキーワードインデックスを削除することを特徴とする請求項１または請求項２に記載のＸＰａｔｈ式処理装置。
【請求項４】
情報提供者からユーザへ提供される所定の情報を示すＸＭＬデータを、前記ユーザの望む情報の検索条件である個人プロファイルとして入力されたＸＰａｔｈ式に基づいて、前記ユーザごとに予め定められた形式のＸＭＬデータに変換する処理を実行するＸＰａｔｈ式処理装置のＸＰａｔｈ式処理方法であって、
前記ＸＰａｔｈ式処理装置は、
前記個人プロファイルとして入力されたＸＰａｔｈ式の構造を解析し、前記ＸＰａｔｈ式から、前記ＸＰａｔｈ式に含まれるテキスト値を指定した述語を含む条件を抽出する述語抽出ステップと、
前記テキスト値に基づいて、前記ＸＭＬデータに対するキーワードの適合判定を行うための関数であるキーワードインデックスを作成する作成ステップと、
前記条件ごとに前記個人プロファイルを分割して生成されるシングルＸＰａｔｈ式を識別する情報であるＸＰａｔｈ式識別情報と、前記個人プロファイルに含まれるＸＰａｔｈ式識別情報間の論理演算子と、前記キーワードインデックスとを関連付けて記憶するプロファイル管理部に、前記個人プロファイルを追加する命令である追加命令が入力されたときに、前記抽出された条件に基づいて、前記作成されたキーワードインデックスまたは前記プロファイル管理部に記憶されているキーワードインデックスに、前記条件で指定されるテキスト値と、前記ＸＰａｔｈ式識別情報との組を追加する追加ステップと、
前記個人プロファイルを前記プロファイル管理部から削除する命令である削除命令が入力されたときに、前記抽出された条件に基づいて、前記プロファイル管理部に記憶されているキーワードインデックスから、前記条件で指定されるテキスト値と、前記ＸＰａｔｈ式識別情報との組を削除する削除ステップと、
入力されたＸＭＬデータの構造を解析し、解析結果としての情報である構造情報を抽出する構造情報抽出ステップと、
前記抽出された構造情報のうち、テキスト値タグに対応したキーワードインデックスに基づいて、前記テキスト値タグで指定されるテキスト値に対応するＸＰａｔｈ式識別情報を特定する識別情報特定ステップと、
前記特定されたＸＰａｔｈ式識別情報と前記ＸＰａｔｈ式識別情報間の論理演算子とに基づいて、前記ＸＭＬパースモジュールで抽出された構造情報に対する前記個人プロファイルの適合判定を行う適合判定ステップとを含んで実行することを特徴とするＸＰａｔｈ式処理方法。
【請求項５】
前記ＸＰａｔｈ式処理装置は、
前記個人プロファイルとして入力されたＸＰａｔｈ式に含まれるテキスト値を単語に区切って、単語区切り付きテキスト値を生成する生成ステップをさらに含んで実行し、
前記追加ステップは、前記プロファイル管理部に記憶されているキーワードインデックスに、前記単語区切り付きテキスト値と、前記ＸＰａｔｈ式識別情報との組を追加し、
前記削除ステップは、前記プロファイル管理部に記憶されているキーワードインデックスから、前記単語区切り付きテキスト値と、前記ＸＰａｔｈ式識別情報との組を削除し、
前記識別情報特定ステップは、前記プロファイル管理部に記憶されているキーワードインデックスに基づいて、前記単語区切り付きテキスト値に対応するＸＰａｔｈ式識別情報を特定することを特徴とする請求項４に記載のＸＰａｔｈ式処理方法。
【請求項６】
前記ＸＰａｔｈ式処理装置は、
前記キーワードインデックスを追加あるいは削除するタグを指定するためのタグ指定用ＸＰａｔｈ式の構造を解析し、解析結果としての構造情報を取得するステップと、
前記取得された構造情報から抽出されたパスに対応するキーワードインデックスが、前記プロファイル管理部に記憶されているか否かを判別する判別ステップと、
前記判別ステップで前記キーワードインデックスが前記プロファイル管理部に記憶されていないと判別された場合に、前記抽出されたパスに対応するキーワードインデックスを作成するステップと、
前記判別ステップで前記キーワードインデックスが前記プロファイル管理部に記憶されていると判別された場合に、前記抽出されたパスに対応するキーワードインデックスを削除するステップとをさらに含んで実行することを特徴とする請求項４または請求項５に記載のＸＰａｔｈ式処理方法。
【請求項７】
請求項４乃至請求項６のいずれか一項に記載のＸＰａｔｈ式処理方法をコンピュータに実行させることを特徴とするＸＰａｔｈ式処理プログラム。
【請求項８】
請求項７に記載のＸＰａｔｈ式処理プログラムが記録されたことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＰａｔｈ式の処理に関するＸＰａｔｈ式処理装置、ＸＰａｔｈ式処理方法、ＸＰａｔｈ式処理プログラムおよびそのプログラムを記憶した記憶媒体に関する。
【背景技術】
【０００２】
ＸＭＬ（Extensible Markup Language）は、データの意味や構造を記述するためのマークアップ言語であり、ネットワークに接続されたコンピュータ同士でのデータの送受信に標準的に使用されている。例えば、ＸＭＬは、ＮｅｗｓＭＬ（ニューズエムエル）等をはじめとして広い分野で使われている。ＮｅｗｓＭＬは、ニュース記事やそれに関連した画像、動画、音声等の情報を、ウェブサイト、携帯電話、テレビ（テレビのデータ放送）等さまざまな端末装置に送ることができるニュース配信フォーマットである。
【０００３】
ＸＰａｔｈ（XML Path Language）式は、例えば、ニュース等を提供する情報提供者から提供されるストリームデータ等のＸＭＬデータ（以下、単にＸＭＬデータという）における特定の部分を指し示す言語である。ＸＰａｔｈ式によれば、ＸＭＬデータにアンカ等が埋め込まれていなくともＸＭＬデータの任意の位置を指し示すことができる。そのため、ＸＰａｔｈ式は、ＸＭＬデータに対するクエリや変換等において重要な役割を果たしている。
【０００４】
ＸＭＬデータと、そのＸＭＬデータの特定部分を指定するＸＰａｔｈ式とを入力としたときに、ＸＭＬデータ中の指定された特定の部分を抽出する（フィルタ処理する）技術が注目を集めている。例えば、ＮｅｗｓＭＬの受け側（ユーザ）は、フィルタエンジンにＸＰａｔｈ式（検索条件）を予め登録しておくことで、膨大な情報の中から必要な情報を得ることができる。
【０００５】
従来、フィルタエンジンが、ＸＰａｔｈ式を用いて、入力されたＸＭＬデータをフィルタ処理する際に、ＸＰａｔｈ式から導出されたオートマトン（Automaton）を用いるＸＰａｔｈ式処理方法が知られている（例えば、特許文献１、非特許文献１および非特許文献２参照）。これらの従来のＸＰａｔｈ式処理方法は、ＸＰａｔｈ式に対する処理の高速化や、メモリ使用量の削減等を目的とした方法である。
【特許文献１】特開２００３−３２３４２９号公報（段落００２８〜００３４、図２）
【非特許文献１】T. J. Green et al,“Processing XML Streams with Deterministic Automata”,ICDT 2003,LNCS2572,Springer-verlag,p.173-189
【非特許文献２】Y・Diao et al,“YFilter:Efficient and Scalable Filtering of XML Documents”,Proceedings of 18th International Conference of Data Engineering,IEEE,2002,p.341-342
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のフィルタエンジンでは、ＸＰａｔｈ式における述語の処理のうち、文字列の一致（完全一致や部分一致等）処理に関して、単純な文字列一致処理を実行する場合に、ユーザによって登録されるＸＰａｔｈ式の個数が増加したり、ユーザによって指定されるキーワードの個数が増加したりすると、処理速度が低下するという問題があった。
【０００７】
さらに、従来のフィルタエンジンでは、ユーザによって指定されるキーワードと、ＸＭＬデータのテキスト値とを単純にマッチングさせた場合に、ＸＭＬデータのテキスト値を正しく適合判定することができないことがあった。つまり、キーワードで指定される記事の抽出精度が低いという問題があった。例えば、従来のフィルタエンジンで、検索条件（ＸＰａｔｈ式）として、「ＸＭＬデータの本文タグに“ｃｄｅ株式会社”を含む記事」という内容を登録しておいた場合、ＸＭＬデータから、不必要な記事である「本文タグに“ａｂｃｄｅ株式会社”を含む記事」も抽出され、ユーザへ通知されることとなる。つまり、ユーザは、必要とする「本文タグに“ｃｄｅ株式会社”を含む記事」のみを取得することができない。
【０００８】
そこで、本発明では、前記した問題を解決し、ＸＰａｔｈ式における述語の処理のうち、文字列の一致処理を迅速に実行できるＸＰａｔｈ式処理装置、ＸＰａｔｈ式処理方法、ＸＰａｔｈ式処理プログラムおよびそのプログラムを記憶した記憶媒体を提供することを目的とする。
【０００９】
また、本発明では、ＸＰａｔｈ式における述語の処理のうち、文字列の一致処理の精度を高めることのできるＸＰａｔｈ式処理装置、ＸＰａｔｈ式処理方法、ＸＰａｔｈ式処理プログラムおよびそのプログラムを記憶した記憶媒体を提供することを他の目的とする。
【課題を解決するための手段】
【００１０】
前記課題を解決するために、本願発明者は種々検討を行った結果、以下の知見を見出した。すなわち、本発明では、提供されたＸＭＬデータに対するキーワードの適合判定を行うための関数であるキーワードインデックスを導入することとした。このキーワードインデックスは、ユーザの個人プロファイルに基づいてＸＰａｔｈ式に含まれるテキスト値に対して作成される。そして、本発明では、提供されたＸＭＬデータから、ＸＰａｔｈ式の述語で指定された要素（タグ）を抽出し、対応するキーワードインデックを用いるので、複数キーワードのマッチングを行うために、ＸＭＬデータにおけるテキスト値をバックトラックする必要がなくなる。そのため、従来よりも計算量を抑えることができる。その結果、ユーザから登録されるＸＰａｔｈ式の増加や、キーワードを指定した述語数の増加に関わらず、ＸＰａｔｈ式処理における文字列の述語処理を高速化することが可能である。また、本発明では、文字列の一致処理に利用されるユーザの個人プロファイルに関して、個人プロファイルがキーワードを指定した述語別に分類された個々のＸＰａｔｈ式を識別する識別情報と、述語間の論理演算子と、キーワードインデックスとを関連付けて記憶することとした。これにより、ユーザによって指定されるキーワードの個数が増加したとしても処理速度の低下を抑制することが可能となる。
【００１１】
また、ＸＭＬデータおよびＸＰａｔｈ式から抽出されたタグにおけるテキスト値を加工して、キーワードの単純な前方一致や後方一致等の部分一致を防止することができれば、キーワードの適合判定精度を高めることが可能となる。
さらに、キーワードインデックスを作成すべき個々のＸＰａｔｈ式や、登録済みの個人プロファイルから削除すべきキーワードインデックスを予め指定しておけば、個人プロファイルの追加や削除、および、入力されるＸＭＬデータからのキーワードの抽出処理を簡略化できるので、迅速に文字列の一致処理を実行することが可能となる。
【００１２】
そこで、請求項１に記載のＸＰａｔｈ式処理装置は、情報提供者からユーザへ提供される所定の情報を示すＸＭＬデータを、前記ユーザの望む情報の検索条件である個人プロファイルとして入力されたＸＰａｔｈ式に基づいて、前記ユーザごとに予め定められた形式のＸＭＬデータに変換する処理を実行するＸＰａｔｈ式処理装置であって、
前記個人プロファイルとして入力されたＸＰａｔｈ式の構造を解析し、前記ＸＰａｔｈ式から、前記ＸＰａｔｈ式に含まれるテキスト値を指定した述語を含む条件を抽出する問い合わせパースモジュールと、前記テキスト値に基づいて、前記ＸＭＬデータに対するキーワードの適合判定を行うための関数であるキーワードインデックスを作成するキーワードインデックス作成手段と、前記条件ごとに前記個人プロファイルを分割して生成されるシングルＸＰａｔｈ式を識別する情報であるＸＰａｔｈ式識別情報と、前記個人プロファイルに含まれるＸＰａｔｈ式識別情報間の論理演算子と、前記キーワードインデックスとを関連付けて記憶するプロファイル管理部と、前記個人プロファイルを前記プロファイル管理部に追加する命令である追加命令が入力されたときに、前記問い合わせパースモジュールで抽出された条件に基づいて、前記キーワードインデックス作成手段で作成されたキーワードインデックスまたは前記プロファイル管理部に記憶されているキーワードインデックスに、前記条件で指定されるテキスト値と、前記ＸＰａｔｈ式識別情報との組を追加するキーワードインデックス追加手段と、前記個人プロファイルを前記プロファイル管理部から削除する命令である削除命令が入力されたときに、前記問い合わせパースモジュールで抽出された条件に基づいて、前記プロファイル管理部に記憶されているキーワードインデックスから、前記条件で指定されるテキスト値と、前記ＸＰａｔｈ式識別情報との組を削除するキーワードインデックス削除手段と、入力されたＸＭＬデータの構造を解析し、解析結果としての情報である構造情報を抽出するＸＭＬパースモジュールと、前記ＸＭＬパースモジュールで抽出された構造情報のうち、テキスト値タグに対応したキーワードインデックスに基づいて、前記テキスト値タグで指定されるテキスト値に対応するＸＰａｔｈ式識別情報を特定し、特定されたＸＰａｔｈ式識別情報と前記ＸＰａｔｈ式識別情報間の論理演算子とに基づいて、前記個人プロファイルの適合判定を行うデータ抽出モジュールと、前記データ抽出モジュールで適合判定された個人プロファイルに基づいて、前記入力されたＸＭＬデータを、予め定められた形式のＸＭＬデータへ変換するデータ変換モジュールとを備えることを特徴とする。
【００１３】
かかる構成によれば、ＸＰａｔｈ式処理装置は、プロファイル管理部に、キーワードインデックスと共に、個人プロファイルのＸＰａｔｈ式の条件で指定されるテキスト値と、ＸＰａｔｈ式識別情報との組とを記憶しておく。なお、シングルＸＰａｔｈ式を生成するために個人プロファイルを分割する条件には、述語を含んでいる。そして、ＸＰａｔｈ式処理装置は、データ抽出モジュールによって、入力されるＸＭＬデータの構造情報のテキスト値タグで指定されるテキスト値に対応するＸＰａｔｈ式識別情報を特定し、ＸＰａｔｈ式識別情報間の論理演算子に基づいて、個人プロファイルの適合判定を行う。このとき、データ抽出モジュールは、キーワードインデックスによって、ＸＰａｔｈ式識別情報を特定する。なお、データ抽出モジュールは、キーワードを含む記事（部分ＸＭＬデータ）を抽出する。
これにより、キーワードインデックスを用いて、複数キーワードのマッチングを行うために、ＸＭＬデータにおけるテキスト値をバックトラックする必要がないので、従来よりも計算量を抑えることができる。その結果、ユーザから登録されるＸＰａｔｈ式の増加や、キーワードを指定した述語数の増加に関わらず、ＸＰａｔｈ式処理における文字列の述語処理を高速化することが可能である。
【００１４】
また、請求項２に記載のＸＰａｔｈ式処理装置は、請求項１に記載のＸＰａｔｈ式処理装置において、前記個人プロファイルとして入力されたＸＰａｔｈ式に含まれるテキスト値を単語に区切って、単語区切り付きテキスト値を生成する形態素解析モジュールをさらに備え、前記キーワードインデックス追加手段は、前記プロファイル管理部に記憶されているキーワードインデックスに、前記単語区切り付きテキスト値と、前記ＸＰａｔｈ式識別情報との組を追加し、前記キーワードインデックス削除手段は、前記プロファイル管理部に記憶されているキーワードインデックスから、前記単語区切り付きテキスト値と、前記ＸＰａｔｈ式識別情報との組を削除し、前記データ抽出モジュールは、前記プロファイル管理部に記憶されているキーワードインデックスに基づいて、前記単語区切り付きテキスト値に対応するＸＰａｔｈ式識別情報を特定することを特徴とする。
【００１５】
かかる構成によれば、ＸＰａｔｈ式処理装置は、形態素解析モジュールによって、個人プロファイルとして入力されたＸＰａｔｈ式に含まれるテキスト値を単語に区切って、単語区切り付きテキスト値を生成する。ここで、形態素とは、これ以上に細かくすると意味がなくなってしまう最小の文字列をいい、形態素解析とは、予め作成された辞書を用いてテキスト値を形態素のレベルまで分解して解析することである。そして、形態素解析モジュールは、形態素解析をすることによって意味が考慮されたテキスト値にさらに単語区切りを付与する。ここで、単語区切りは、ＸＰａｔｈ式に含まれるテキスト値の前後にも付与されることが好ましい。このように入力されたテキスト値が加工されることにより、キーワードの単純な前方一致や後方一致等の誤った部分一致を防止することができる。その結果、キーワードの適合判定精度を高めることが可能となる。
【００１６】
また、請求項３に記載のＸＰａｔｈ式処理装置は、請求項１または請求項２に記載のＸＰａｔｈ式処理装置において、前記キーワードインデックスを追加あるいは削除するタグを指定するためのタグ指定用ＸＰａｔｈ式の構造を解析し、解析結果としての構造情報を取得し、前記構造情報から抽出されたパスに対応するキーワードインデックスが、前記プロファイル管理部に記憶されているか否かを判別するインデックス指定パースモジュールをさらに備え、前記キーワードインデックス作成手段は、前記キーワードインデックスを前記プロファイル管理部に追加する命令が入力されたときに、前記インデックス指定パースモジュールで前記キーワードインデックスが前記プロファイル管理部に記憶されていないと判別された場合に、前記抽出されたパスに対応するキーワードインデックスを作成し、前記キーワードインデックス削除手段は、前記キーワードインデックスを前記プロファイル管理部から削除する命令が入力されたときに、前記インデックス指定パースモジュールで前記キーワードインデックスが前記プロファイル管理部に記憶されていると判別された場合に、前記抽出されたパスに対応するキーワードインデックスを削除することを特徴とする。
【００１７】
かかる構成によれば、ＸＰａｔｈ式処理装置は、インデックス指定パースモジュールによって、入力されたタグ指定用ＸＰａｔｈ式に関するキーワードインデックスが、プロファイル管理部に記憶されているか否かを判別する。そして、ＸＰａｔｈ式処理装置は、インデックス指定パースモジュールの判別結果に基づいて、キーワードインデックスの削除、または、作成および追加を実行する。したがって、ＸＰａｔｈ式処理装置は、個人プロファイルのＸＰａｔｈ式において、キーワードインデックスを適用する箇所や、テキスト値を加工してキーワードインデックスを適用する箇所を指定することができる。その結果、入力されたＸＭＬデータの抽出処理を高速化することができる。
【００１８】
また、前記課題を解決するため、請求項４に記載のＸＰａｔｈ式処理方法は、情報提供者からユーザへ提供される所定の情報を示すＸＭＬデータを、前記ユーザの望む情報の検索条件である個人プロファイルとして入力されたＸＰａｔｈ式に基づいて、前記ユーザごとに予め定められた形式のＸＭＬデータに変換する処理を実行するＸＰａｔｈ式処理装置のＸＰａｔｈ式処理方法であって、前記ＸＰａｔｈ式処理装置は、前記個人プロファイルとして入力されたＸＰａｔｈ式の構造を解析し、前記ＸＰａｔｈ式から、前記ＸＰａｔｈ式に含まれるテキスト値を指定した述語を含む条件を抽出する述語抽出ステップと、前記テキスト値に基づいて、前記ＸＭＬデータに対するキーワードの適合判定を行うための関数であるキーワードインデックスを作成する作成ステップと、前記条件ごとに前記個人プロファイルを分割して生成されるシングルＸＰａｔｈ式を識別する情報であるＸＰａｔｈ式識別情報と、前記個人プロファイルに含まれるＸＰａｔｈ式識別情報間の論理演算子と、前記キーワードインデックスとを関連付けて記憶するプロファイル管理部に、前記個人プロファイルを追加する命令である追加命令が入力されたときに、前記抽出された条件に基づいて、前記作成されたキーワードインデックスまたは前記プロファイル管理部に記憶されているキーワードインデックスに、前記条件で指定されるテキスト値と、前記ＸＰａｔｈ式識別情報との組を追加する追加ステップと、前記個人プロファイルを前記プロファイル管理部から削除する命令である削除命令が入力されたときに、前記抽出された条件に基づいて、前記プロファイル管理部に記憶されているキーワードインデックスから、前記条件で指定されるテキスト値と、前記ＸＰａｔｈ式識別情報との組を削除する削除ステップと、入力されたＸＭＬデータの構造を解析し、解析結果としての情報である構造情報を抽出する構造情報抽出ステップと、前記抽出された構造情報のうち、テキスト値タグに対応したキーワードインデックスに基づいて、前記テキスト値タグで指定されるテキスト値に対応するＸＰａｔｈ式識別情報を特定する識別情報特定ステップと、前記特定されたＸＰａｔｈ式識別情報と前記ＸＰａｔｈ式識別情報間の論理演算子とに基づいて、前記ＸＭＬパースモジュールで抽出された構造情報に対する前記個人プロファイルの適合判定を行う適合判定ステップとを含んで実行することを特徴とする。
【００１９】
かかる手順によれば、ＸＰａｔｈ式処理装置は、構造情報抽出ステップで、入力されるＸＭＬデータの構造情報からテキスト値タグを抽出する。そして、ＸＰａｔｈ式処理装置は、識別情報特定ステップで、プロファイル管理部に記憶された、キーワードインデックスと、個人プロファイルのＸＰａｔｈ式の条件で指定されるテキスト値と、ＸＰａｔｈ式識別情報との組とに基づいて、抽出されたテキスト値タグで指定されるテキスト値に対応するＸＰａｔｈ式識別情報を特定する。これにより、キーワードインデックスを用いて、複数キーワードのマッチングを行うために、ＸＭＬデータにおけるテキスト値をバックトラックする必要がないので、従来よりも計算量を抑えることができる。
【００２０】
また、請求項５に記載のＸＰａｔｈ式処理方法は、請求項４に記載のＸＰａｔｈ式処理方法において、前記ＸＰａｔｈ式処理装置は、前記個人プロファイルとして入力されたＸＰａｔｈ式に含まれるテキスト値を単語に区切って、単語区切り付きテキスト値を生成する生成ステップをさらに含んで実行し、前記追加ステップは、前記プロファイル管理部に記憶されているキーワードインデックスに、前記単語区切り付きテキスト値と、前記ＸＰａｔｈ式識別情報との組を追加し、前記削除ステップは、前記プロファイル管理部に記憶されているキーワードインデックスから、前記単語区切り付きテキスト値と、前記ＸＰａｔｈ式識別情報との組を削除し、前記識別情報特定ステップは、前記プロファイル管理部に記憶されているキーワードインデックスに基づいて、前記単語区切り付きテキスト値に対応するＸＰａｔｈ式識別情報を特定することを特徴とする。
【００２１】
かかる手順によれば、ＸＰａｔｈ式処理装置は、生成ステップで、個人プロファイルとして入力されたＸＰａｔｈ式に含まれるテキスト値を単語に区切って、単語区切り付きテキスト値を生成する。ここで、単語区切りは、ＸＰａｔｈ式に含まれるテキスト値の前後にも付与されることが好ましい。このように入力されたテキスト値が加工されることにより、キーワードの単純な前方一致や後方一致等の誤った部分一致を防止することができる。
【００２２】
また、請求項６に記載のＸＰａｔｈ式処理方法は、請求項４または請求項５に記載のＸＰａｔｈ式処理方法において、前記ＸＰａｔｈ式処理装置は、
前記キーワードインデックスを追加あるいは削除するタグを指定するためのタグ指定用ＸＰａｔｈ式の構造を解析し、解析結果としての構造情報を取得するステップと、前記取得された構造情報から抽出されたパスに対応するキーワードインデックスが、前記プロファイル管理部に記憶されているか否かを判別する判別ステップと、前記判別ステップで前記キーワードインデックスが前記プロファイル管理部に記憶されていないと判別された場合に、前記抽出されたパスに対応するキーワードインデックスを作成するステップと、前記判別ステップで前記キーワードインデックスが前記プロファイル管理部に記憶されていると判別された場合に、前記抽出されたパスに対応するキーワードインデックスを削除するステップとをさらに含んで実行することを特徴とする。
【００２３】
かかる手順によれば、ＸＰａｔｈ式処理装置は、判別ステップで、入力されたタグ指定用ＸＰａｔｈ式に関するキーワードインデックスが、プロファイル管理部に記憶されているか否かを判別し、判別結果に基づいて、キーワードインデックスの削除、または、作成および追加を実行する。したがって、ＸＰａｔｈ式処理装置は、個人プロファイルのＸＰａｔｈ式において、キーワードインデックスを適用する箇所や、テキスト値を加工してキーワードインデックスを適用する箇所を指定することができる。
【００２４】
また、請求項７に記載のＸＰａｔｈ式処理プログラムは、請求項４乃至請求項６のいずれか一項に記載のＸＰａｔｈ式処理方法をコンピュータに実行させることを特徴とする。このように構成されることにより、このプログラムをインストールされたコンピュータは、このプログラムに基づいた各機能を実現することができる。
【００２５】
また、請求項８に記載の記録媒体は、請求項７に記載のＸＰａｔｈ式処理プログラムが記録されたことを特徴とする。このように構成されることにより、この記録媒体を装着されたコンピュータは、この記録媒体に記録されたプログラムに基づいた各機能を実現することができる。
【発明の効果】
【００２６】
本発明によれば、ＸＰａｔｈ式における述語の処理のうち、文字列の一致処理を迅速に実行することができる。また、本発明によれば、ＸＰａｔｈ式における述語の処理のうち、文字列の一致処理の精度を高めることができる。
【発明を実施するための最良の形態】
【００２７】
以下、図面を参照して本発明のＸＰａｔｈ式処理装置およびＸＰａｔｈ式処理方法を実施するための最良の形態（以下「実施形態」という）について、第１実施形態ないし第３実施形態に分けて詳細に説明する。
【００２８】
（第１実施形態）
図１は、ＸＰａｔｈ式処理方法が適用されるフィルタエンジンの概要を示す図である。
フィルタエンジン（ＸＰａｔｈ式処理装置）１０は、図示しない情報提供者からユーザへ提供される所定の情報を示すＸＭＬデータを、ユーザの望む情報の検索条件である個人プロファイルとして入力されたＸＰａｔｈ式に基づいて、ユーザごとに予め定められた形式のＸＭＬデータに変換する処理を実行するものである。ここで、ＸＭＬは、インターネットの標準としてＷ３Ｃ（World Wide Web Consortium）により勧告されたメタ言語である。なお、メタ言語とは、言語を作る言語という意味である。ＸＭＬデータは、ＸＭＬによって作られた言語を用いて作成された文書やデータである。ＸＭＬデータには、タグがある。タグは、ＸＭＬデータにおいて、要素の位置を明示し、属性を収納するために記述される文字列のことである。タグには、本文タグ、テキスト値タグ、タイトルタグ等の種類がある。
【００２９】
情報提供者によりＸＭＬ形式にしたがって生成されたＸＭＬデータは、ＸＰａｔｈ式処理方法を実行するフィルタエンジン１０にイントラネット等のネットワークを経由して送信される。
情報提供者が提供するＸＭＬデータを受け取る個々のユーザは、個人プロファイルをＸＭＬ問い合わせという形式でフィルタエンジン１０に予め登録する。
フィルタエンジン１０は、登録されている個人プロファイルに応じて、送られてくるニュースソース等のＸＭＬデータをフィルタ・変換し、フィルタされたＸＭＬデータを個々のユーザに配信する。
【００３０】
ニュースソース等のＸＭＬデータの具体例としては、ＮｅｗｓＭＬがある。ＮｅｗｓＭＬは前記のとおり、ＸＭＬをベースにした新しいニュース配信フォーマットであり、ニュース記事、画像、動画、音声等のさまざまなニュース素材が自由に組み合わされた情報を、ウェブサイトや携帯電話等さまざまな機器を対象に送ることができる。また、ＮｅｗｓＭＬは、ニュース記事、画像、動画、音声等のさまざまなニュース素材を構造化して一元管理するのに適している。
【００３１】
[フィルタエンジンの内部構成]
図２は、本発明の第１実施形態に係るフィルタエンジンの一例を示す機能ブロック図である。フィルタエンジン１０は、図２に示すように、ＸＭＬパースモジュール１１と、問い合わせパースモジュール１２と、データ抽出モジュール１３と、データ変換モジュール１４と、プロファイル管理部１５と、キーワードインデックス管理モジュール１６とを備える。
【００３２】
このフィルタエンジン１０は、ＣＰＵ（Central Processing Unit）およびＲＡＭ（Random Access Memory）から構成される主制御装置、ハードディスク等から構成される外部記憶装置、通信を行うためのＮＩＣ（Network Interface Card）を有するコンピュータと、ルータ（Router）とを含んで構成される。なお、プロファイル管理部１５は、例えば、外部記憶装置に格納される。
【００３３】
＜ＸＭＬパースモジュール＞
ＸＭＬパースモジュール１１は、入力されたＸＭＬデータを先頭から順次シーケンシャルに読み込みつつ、その構造を解析し、解析結果としての情報である構造情報を抽出するものである。つまり、ＸＭＬパースモジュール１１は、入力されたＸＭＬデータをパースし、ＸＭＬのタグを検出するごとにアドインされた各種ハンドラ（プログラム）を起動することにより、内部形式ＸＭＬデータ（ＳＡＸ（Simple API for XML）イベント）に変換する。なお、パースとは、ＸＭＬデータを読み込んで、ＸＭＬのタグで指定された文書要素や属性等を解析する解析処理である。入力されたＸＭＬデータは、テキスト形式で記述されているが、パースの過程で、内部形式で記述されたＸＭＬデータ（内部形式ＸＭＬデータ）に変換される。この内部形式ＸＭＬデータ（抽出された構造情報）は、データ抽出モジュール１３ヘ出力される。
【００３４】
＜問い合わせパースモジュール１２＞
問い合わせパースモジュール１２は、個人プロファイルとして入力されたＸＰａｔｈ式の構造を解析し、解析結果としての情報である構造情報に基づいて、ＸＰａｔｈ式から、ＸＰａｔｈ式に含まれるテキスト値を指定した述語を含む条件を抽出するものである。つまり、問い合わせパースモジュール１２は、入力された個人プロファイルをパースする。また、問い合わせパースモジュール１２は、１つの条件ごとにＸＰａｔｈ式（個人プロファイル）を分割し、この分割したＸＰａｔｈ式（以下、シングルＸＰａｔｈ式という）を生成する。なお、以下では、問い合わせパースモジュール１２は、ＸＰａｔｈ式から、ＸＰａｔｈ式に含まれるテキスト値を指定した述語を抽出し、この抽出した述語ごとに個人プロファイルを分割するものとして説明する。
【００３５】
具体的には、問い合わせパースモジュール１２は、入力されたＸＰａｔｈ式、例えば、
/item/title[contains(text(), "ABC")]
において、テキスト値を指定した述語が存在するか否かを判定し、テキスト値を指定した述語が存在する場合に、述語が指定されているタグを受け付け、受け付けたタグとその指定されたテキスト値をキーワードインデックス管理モジュール１６に出力する。ここで、「テキスト値を指定した述語」とは、“＝”，“ｃｏｎｔａｉｎｓ（）”，“ｓｔａｒｔｓ−ｗｉｔｈ（）”等の文字列に関する演算子を用いた式を指す。つまり、例示したＸＰａｔｈ式においては、“ｃｏｎｔａｉｎｓ（）”のことである。
また、問い合わせパースモジュール１２は、入力されたＸＰａｔｈ式の構造情報をプロファイル管理部１５へ格納する。
【００３６】
また、問い合わせパースモジュール１２は、分割したシングルＸＰａｔｈ式を、データ抽出モジュール１３、プロファイル管理部１５およびキーワードインデックス管理モジュール１６へ出力する。なお、ＸＰａｔｈ式は、ＸＭＬデータから所定のデータを抽出するためにＸＭＬデータの特定の部分を指し示す言語である。このＸＰａｔｈ式を利用すれば、ＸＭＬデータ中にアンカ等が埋め込まれていなくとも、データ中の任意の位置を指し示すことができる。また、問い合わせパースモジュール１２は、キーワードに関する述語に関わらず全てのＸＰａｔｈ式を処理対象とする。
【００３７】
＜データ抽出モジュール＞
データ抽出モジュール１３は、問い合わせパースモジュール１２から入力されるシングルＸＰａｔｈ式ごとに、識別する情報であるＸＰａｔｈＩＤ（ＸＰａｔｈ式識別情報）を付与し、プロファイル管理部１５に格納する。このデータ抽出モジュール１３は、図３に示すように、後記するプロファイル管理部１５のメモリ上で、シングルＸＰａｔｈ式ごとに、ＮＦＡ（非決定性オートマトン）を生成し、生成された複数のＮＦＡを１つのノードに結合することにより結合ＮＦＡを生成し、この結合ＮＦＡとＸＭＬデータの入力とに応じて、ＤＦＡ（決定性オートマトン）を順次生成および更新する。
【００３８】
また、データ抽出モジュール１３は、プロファイル管理部１５に格納されたＤＦＡを用いて、ＸＭＬパースモジュール１１から入力されたＸＭＬデータをフィルタして、一部のＸＭＬデータ（部分ＸＭＬ）を抽出し、データ変換モジュール１４に出力する。具体的には、データ抽出モジュール１３は、ＸＭＬデータの構造情報と、プロファイル管理部１５に格納されているＸＰａｔｈ式の構造情報とを照合する。この照合方法としては、公知の方法（非特許文献１，２または特許文献１参照）を用いることができる。そして、データ抽出モジュール１３は、ＸＭＬパースモジュール１１で抽出された構造情報であるテキスト値タグで指定されるテキスト値に対応した関数である後記するキーワードインデックスに基づいて、当該テキスト値に対応するＸＰａｔｈＩＤを特定し、特定されたＸＰａｔｈＩＤとＸＰａｔｈＩＤ間の論理演算子とに基づいて、個人プロファイルの適合判定を行う。
【００３９】
このデータ抽出モジュール１３は、特定したＸＰａｔｈＩＤをプロファイル管理部１５のメモリに一次記憶する。そして、データ抽出モジュール１３は、入力されたＸＭＬデータの終端タグを検出したときに、プロファイル管理部１５のメモリに一次記憶されたＸＰａｔｈＩＤを評価する。ここで、評価とは、一次記憶されたＸＰａｔｈＩＤの中から、個人プロファイルに合致するＸＰａｔｈＩＤを見つけ出すことである。
【００４０】
＜データ変換モジュール＞
データ変換モジュール１４は、データ抽出モジュール１３で個人プロファイルの適合判定が行われた入力ＸＭＬデータを、ユーザの希望する形式のＸＭＬデータ（フィルタされたＸＭＬデータ）へ変換する。なお、フィルタされたＸＭＬデータは、内部形式ＸＭＬデータである。また、ユーザの希望する形式のＸＭＬデータへ変換方法は、本発明において特に限定されるものではない。ここで、ユーザの希望する形式は、予め定められている。
【００４１】
＜プロファイル管理部＞
プロファイル管理部１５は、例えば、ＨＤＤ（Hard Disk Drive）と、ＲＡＭ（Random Access Memory）とを備える。この場合に、ＲＡＭは、演算処理等に利用されると共に、外部から取得した情報等を記憶し、ＨＤＤは、各種データベース、所定のプログラム、処理結果等を格納する。
プロファイル管理部１５は、前記したデータ抽出モジュール１３が、オートマトンの生成、および生成したオートマトンを用いたフィルタ処理を実行するために利用するメモリを有している。
また、プロファイル管理部１５は、ＸＰａｔｈ式の構造情報を格納するためのメモリを有している。
また、プロファイル管理部１５は、問い合わせパースモジュール１２で抽出された条件（テキスト値を指定した述語等）ごとに、ＸＰａｔｈＩＤと、個人プロファイルに含まれるＸＰａｔｈＩＤ間の論理演算子と、キーワードインデックスとを関連付けて記憶するものである。このために、プロファイル管理部１５には、複数のデータベースが格納されている。例えば、プロファイル管理部１５は、図４に示すように、第１テーブル４１０と、第２テーブル４３０と、第３テーブル４５０とを備えている。図４は、プロファイル管理部の記憶構造の一例を示す説明図である。
【００４２】
第１テーブル４１０は、図４（ａ）に示すように、項目として、条件ＩＤ４１１と、ＸＰａｔｈＩＤの集合４１２と、ＸＰａｔｈＩＤ間の論理演算子４１３とを備えている。
条件ＩＤ４１１は、ユーザから指定された検索条件の識別情報を示す項目である。条件ＩＤは、例えば、「１」、「２」、「３」等の数字、あるいは、文字および記号で示される。
ＸＰａｔｈＩＤの集合４１２は、ユーザから指定された検索条件に用いられたＸＰａｔｈ式を分割したシングルＸＰａｔｈの識別情報（ＸＰａｔｈＩＤ）を示す項目である。ＸＰａｔｈＩＤは、例えば、「１」、「２」、「３」等の数字、あるいは、文字および記号で示される。
ＸＰａｔｈＩＤ間の論理演算子４１３は、ユーザから指定された検索条件に用いられた論理演算子を示す項目である。論理演算子は、例えば、「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」等の文字、あるいは、数字および記号で示される。ここで、図示された「ＸＸＸ」、「ＹＹＹ」、「ＺＺＺ」を、例えば、それぞれ、「ＯＲ（論理和）」、「論理演算子なし」、「ＡＮＤ（論理積）」としてもよい。
【００４３】
第２テーブル４３０は、図４（ｂ）に示すように、項目として、ＸＰａｔｈＩＤ４３１と、シングルＸＰａｔｈ４３２とを備えている。
ＸＰａｔｈＩＤ４３１は、問い合わせパースモジュール１２で分割されたシングルＸＰａｔｈに対してデータ抽出モジュール１３で付与されたＸＰａｔｈＩＤを示す項目である。シングルＸＰａｔｈ４３２は、ＸＰａｔｈＩＤを付与されたシングルＸＰａｔｈを示す項目である。
【００４４】
前記した第１テーブル４１０および第２テーブル４３０は、以下のようにして作成される。例えば、ユーザが条件を入力すると、フィルタエンジン１０は、次のような検索条件を含むＸＰａｔｈ式を生成する。
/item/[contains(title/text(), "ABC") or contains(body/text(), "XYZ")]
そして、フィルタエンジン１０は、この検索条件に、条件ＩＤ「１」を付与し、シングルＸＰａｔｈに分解する。
/item/title[contains(text(), "ABC")]
/item/body[contains(text(), "XYZ")]
そして、各々にＸＰａｔｈＩＤとして、「１」および「２」を付与して、第１テーブル４１０と、第２テーブル４３０に格納する。最後に、論理演算子「ｏｒ」に相当する「ＸＸＸ」を第１テーブル４１０に格納する。
【００４５】
第３テーブル４５０は、図４（ｃ）に示すように、項目として、ＸＰａｔｈ式４５１と、キーワードインデックス４５２とを備えている。
ＸＰａｔｈ式４５１は、シングルＸＰａｔｈに含まれるテキスト値タグを含む項目である。テキスト値タグは、例えば、「title」、「body」、「date」等を含み、どのタグ名の後に続くタグであるのかを示す情報も含んでいる。
キーワードインデックス４５２は、ＸＰａｔｈ式４５１に格納されるテキスト値タグに対応するインデックスを示す項目である。キーワードインデックスは、例えば、「Index1」、「Index2」、「Index3」等である。
なお、第３テーブル４５０は、個人プロファイルの登録とは別に予め作成されることもある。
【００４６】
＜キーワードインデックス管理モジュール＞
キーワードインデックス管理モジュール１６は、図２に示すように、キーワードインデックス作成手段１６１と、キーワードインデックス追加手段１６２と、キーワードインデックス削除手段１６３とを備えている。
【００４７】
＜＜キーワードインデックス作成手段＞＞
キーワードインデックス作成手段１６１は、問い合わせパースモジュール１２で抽出された述語で指定されるテキスト値に基づいて、ＸＭＬデータに対するキーワードの適合判定を行うための関数であるキーワードインデックスを作成するものである。
また、キーワードインデックス作成手段１６１は、問い合わせパースモジュール１２から問い合わせがあった場合に、キーワードインデックスがプロファイル管理部１５に既に登録されているか（キーワードインデックスが存在するか）否かを判定する。
【００４８】
キーワードインデックス作成手段１６１は、個人プロファイルの追加命令があり、かつ、キーワードインデックスが存在する場合には、追加命令をキーワードインデックス追加手段１６２に出力する。
キーワードインデックス作成手段１６１は、個人プロファイルの追加命令があり、かつ、キーワードインデックスが存在しない場合には、タグ名を受け付け、受け付けたタグ名を対象として、キーワードインデックスを作成し、作成したキーワードインデックスへの問い合わせパースモジュール１２で抽出された述語で指定されるテキスト値の追加命令をキーワードインデックス追加手段１６２に出力する。
また、キーワードインデックス作成手段１６１は、個人プロファイルの削除命令があり、かつ、キーワードインデックスが存在する場合には、問い合わせパースモジュール１２で抽出された述語で指定されるテキスト値の削除命令をキーワードインデックス削除手段１６３に出力する。
【００４９】
キーワードインデックス作成手段１６１は、プロファイル管理部１５に、例えば、図５に示すように、Index1用テーブル５１０と、Index2用テーブル５３０と、Index3用テーブル５５０とを作成する。なお、これらのテーブルは、キーワードインデックスを視覚化したものに相当する。
【００５０】
Index1用テーブル５１０は、図５（ａ）に示すように、項目として、テキスト値５１１と、ＸＰａｔｈＩＤ５１２とを備えている。
テキスト値５１１は、キーワードインデックスが「Index１」であるテキスト値タグに指定されたテキスト値を示す項目である。
ＸＰａｔｈＩＤ５１２は、キーワードインデックスが「Index１」であるテキスト値タグを含むシングルＸＰａｔｈに付与されているＸＰａｔｈＩＤを示す項目である。
【００５１】
また、Index2用テーブル５３０は、図５（ｂ）に示すように、項目として、テキスト値５３１と、ＸＰａｔｈＩＤ５３２とを備えている。
さらに、Index3用テーブル５５０は、図５（ｃ）に示すように、項目として、テキスト値５５１と、ＸＰａｔｈＩＤ５５２とを備えている。
Index2用テーブル５３０およびIndex3用テーブル５５０は、キーワードインデックスが「Index2」または「Index3」である点を除いて、Index1用テーブル５１０と同様なので、説明を省略する。
これらIndex1用テーブル５１０と、Index2用テーブル５３０と、Index3用テーブル５３０とは、固定的なものではなく、追加命令によって２行目が追加されたり、削除命令によって１行目が削除されたりするものである。これらテーブルを特に区別することなく指す場合には、「キーワードインデックス」と呼ぶ場合もある。
【００５２】
また、図５（ｄ）に示す評価用テーブル５７０は、プロファイル管理部１５のメモリに格納されるものである。この評価用テーブル５７０は、前記したデータ抽出モジュール１３（図２参照）によって、作成されるものである。評価用テーブル５７０は、図５（ｄ）に示すように、項目として、ＸＰａｔｈＩＤ５７１と、一次判定用フラグ５７２とを備えている。ＸＰａｔｈＩＤ５７１は、以下の処理の結果として格納される情報を示す項目である。すなわち、データ抽出モジュール１３は、入力されたＸＭＬデータの構造情報からテキスト値を抽出した場合に、図５（ａ）に示すキーワードインデックス（Index1用テーブル５１０）へ、そのテキスト値を入力する。そのテキスト値に“ＡＢＣ”が含まれていれば、ＸＰａｔｈＩＤとして「１」および「３」を特定する。そして、データ抽出モジュール１３は、特定したＸＰａｔｈＩＤを、ＸＰａｔｈＩＤ５７１の項目に格納する。そして、格納されたときに、一次判定用フラグ５７２に「○」が格納される。この一次判定用フラグ５７２は、ＸＰａｔｈＩＤがメモリに一次記憶されたことを示す項目であり、格納されたことを示す情報は、記号のほかに、「０」、「１」等の数字または文字を用いてもよい。
【００５３】
図２に戻って、キーワードインデックス管理モジュール１６の説明を続ける。
＜＜キーワードインデックス追加手段＞＞
キーワードインデックス追加手段１６２は、個人プロファイルをプロファイル管理部１５に追加する命令である追加命令が入力されたときに、問い合わせパースモジュール１２で抽出された述語に基づいて、キーワードインデックス作成手段１６１で作成されたキーワードインデックスまたはプロファイル管理部１５に記憶されているキーワードインデックスに、述語で指定されるテキスト値と、ＸＰａｔｈＩＤとの組を追加するものである。
具体的には、キーワードインデックス追加手段１６２は、キーワードインデックス作成手段１６１から追加命令を取得した場合に、テキスト値とＸＰａｔｈＩＤとの組を、キーワードインデックスに追加する。
【００５４】
＜＜キーワードインデックス削除手段＞＞
キーワードインデックス削除手段１６３は、個人プロファイルをプロファイル管理部１５から削除する命令である削除命令が入力されたときに、問い合わせパースモジュール１２で抽出された述語に基づいて、プロファイル管理部１５に記憶されているキーワードインデックスから、述語で指定されるテキスト値と、ＸＰａｔｈＩＤとの組を削除するものである。具体的には、キーワードインデックス削除手段１６３は、キーワードインデックス作成手段１６１から削除命令を取得した場合に、テキスト値とＸＰａｔｈＩＤとの組を、キーワードインデックスから削除する。
また、キーワードインデックス削除手段１６３は、テキスト値とＸＰａｔｈＩＤとの組が削除されたキーワードインデックスに、まだ他にテキスト値が存在するか否かを判別し、テキスト値が存在しない場合に、当該キーワードインデックスを削除する。なお、テキスト値が存在する場合には、当該キーワードインデックスを削除しない。
【００５５】
なお、前記した各モジュール１１〜１４，１６は、ＣＰＵがＨＤＤに格納された所定のプログラムをＲＡＭに展開して実行することにより実現されるものである。
【００５６】
[フィルタエンジンの動作]
＜個人プロファイルの追加＞
図２に示したフィルタエンジン１０の動作について図６を参照（適宜図２参照）して説明する。図６は、図２に示したフィルタエンジンによる個人プロファイルの追加を示すフローチャートである。
フィルタエンジン１０は、問い合わせパースモジュール１２によって、個人プロファイルとして、ＸＰａｔｈ式を読み込み、構造を解析し、解析結果として構造情報を得る（ステップＳ１）。そして、フィルタエンジン１０は、問い合わせパースモジュール１２によって、ＸＰａｔｈ式において、テキスト値を指定した述語が存在するか否かを判定する（ステップＳ２：述語抽出ステップ）。
【００５７】
テキスト値を指定した述語が存在する場合、すなわち、述語を抽出できた場合（ステップＳ２：Ｙｅｓ）、フィルタエンジン１０は、問い合わせパースモジュール１２によって、述語が指定されているタグを受け付け、受け付けたタグとその指定されたテキスト値をキーワードインデックス管理モジュール１６に出力する。
例えば、以下に示すＸＰａｔｈ式の場合には、問い合わせパースモジュール１２は、/item/titleと"ABC"とをキーワードインデックス管理モジュール１６に出力する。
/item/title[contains(text(), "ABC")]
【００５８】
キーワードインデックス管理モジュール１６は、キーワードインデックス作成手段１６１によって、キーワードインデックスが存在するか否かを判定する（ステップＳ３）。キーワードインデックスが存在する場合（ステップＳ３：Ｙｅｓ）、キーワードインデックス管理モジュール１６は、キーワードインデックス追加手段１６２によって、テキスト値とＸＰａｔｈＩＤとの組を、キーワードインデックスに追加する（ステップＳ４）。ステップＳ４に続いて、フィルタエンジン１０は、問い合わせパースモジュール１２によって、個人プロファイルの構造情報をプロファイル管理部１５へ格納し（ステップＳ５）、処理を終了する。
【００５９】
一方、キーワードインデックスが存在しない場合（ステップＳ３：Ｎｏ）、キーワードインデックス管理モジュール１６は、キーワードインデックス作成手段１６１によって、タグ名を受け付け、受け付けたタグ名を対象として、キーワードインデックスを作成し（ステップＳ６）、ステップＳ４に進む。また、構造を解析したＸＰａｔｈ式において、テキスト値を指定した述語が存在しない場合、すなわち、述語を抽出できない場合（ステップＳ２：Ｎｏ）、フィルタエンジン１０は、ステップＳ５に進む。
【００６０】
＜ＸＭＬデータの抽出＞
図２に示したフィルタエンジン１０の動作について図７を参照（適宜図２参照）して説明する。図７は、図２に示したフィルタエンジンによるＸＭＬデータの抽出を示すフローチャートである。
フィルタエンジン１０は、ＸＭＬパースモジュール１１によって、ＸＭＬデータを先頭から読み込み、構造情報を順次抽出し（ステップＳ１１）、それをデータ抽出モジュール１３へ送信する。そして、フィルタエンジン１０は、ステップＳ１１で構造情報等が抽出される度に、データ抽出モジュール１３によって、その構造情報を受け付け、受け付けた構造情報がＸＭＬデータの終端であるか否かを判定する（ステップＳ１２）。
【００６１】
受け付けた構造情報がＸＭＬデータの終端ではない場合（ステップＳ１２：Ｎｏ）、フィルタエンジン１０は、データ抽出モジュール１３によって、ＤＦＡ等のオートマトン制御等のパス処理を行う（ステップＳ１３）。そして、データ抽出モジュール１３は、受け付けた構造情報がテキスト値タグであるか否かを判定する（ステップＳ１４）。受け付けた構造情報がテキスト値タグではない場合（ステップＳ１４：Ｎｏ）、データ抽出モジュール１３は、ステップＳ１１に戻る。一方、受け付けた構造情報がテキスト値タグである場合（ステップＳ１４：Ｙｅｓ）、データ抽出モジュール１３は、そのテキスト値タグ（受け付けたＸＭＬデータの構造情報）に関するキーワードインデックスがプロファイル管理部１５に存在するか否かを判別する（ステップＳ１５）。
【００６２】
キーワードインデックスが存在しない場合（ステップＳ１５：Ｎｏ）、そのテキスト値（ＸＭＬデータの構造情報）に対応するＸＰａｔｈ式が存在しないので、フィルタエンジン１０は、ステップＳ１１に戻る。一方、キーワードインデックスが存在する場合（ステップＳ１５：Ｙｅｓ）、そのテキスト値（ＸＭＬデータの構造情報）に対応するＸＰａｔｈ式（シングルＸＰａｔｈ）が存在するので、データ抽出モジュール１３は、そのテキスト値（ＸＭＬデータの構造情報）を、当該キーワードインデックスに入力し、対応するＸＰａｔｈＩＤを特定する（ステップＳ１６）。そして、データ抽出モジュール１３は、特定したＸＰａｔｈＩＤをプロファイル管理部１５のメモリに一次的に保存し（ステップＳ１７）、ステップＳ１１に戻る。
【００６３】
ステップＳ１２において、受け付けた構造情報がＸＭＬデータの終端である場合（ステップＳ１２：Ｙｅｓ）、フィルタエンジン１０は、データ抽出モジュール１３によって、プロファイル管理部１５に一次格納されたＸＰａｔｈＩＤを評価し（ステップＳ１８）、処理を終了する。
【００６４】
この評価により、一次記憶されたＸＰａｔｈＩＤの中から、ユーザの指定する検索条件（登録された個人プロファイル）に合致するＸＰａｔｈＩＤが見つけ出される。そして、データ抽出モジュール１３は、ＸＰａｔｈＩＤに基づく抽出結果（部分ＸＭＬデータ）を、データ変換モジュール１４へ出力し、データ変換モジュール１４は、抽出結果をユーザの希望する形式へ変換し、変換結果であるフィルタされたＸＭＬデータを出力する。
【００６５】
＜個人プロファイルの削除＞
図２に示したフィルタエンジン１０の動作について図８を参照（適宜図２参照）して説明する。図８は、図６に示したフィルタエンジンによる個人プロファイルの削除を示すフローチャートである。
フィルタエンジン１０は、問い合わせパースモジュール１２によって、個人プロファイルとして、ＸＰａｔｈ式を受け取る。具体的には、例えば、次のようなＸＰａｔｈ式を受け取る。
/item/title[contains(text(), "ABC")]
そして、問い合わせパースモジュール１２は、受け取ったＸＰａｔｈ式の構造を解析し、解析結果として構造情報を得る（ステップＳ２１）。そして、フィルタエンジン１０は、問い合わせパースモジュール１２によって、ＸＰａｔｈ式において、テキスト値を指定した述語が存在するか否かを判定する（ステップＳ２２：述語抽出ステップ）。テキスト値を指定した述語が存在する場合、すなわち、述語を抽出できた場合（ステップＳ２２：Ｙｅｓ）、フィルタエンジン１０は、問い合わせパースモジュール１２によって、述語が指定されている「ｔｉｔｌｅタグ」を受け付け、受け付けた「ｔｉｔｌｅタグ」をキーワードインデックス管理モジュール１６に出力する。
【００６６】
キーワードインデックス管理モジュール１６は、キーワードインデックス作成手段１６１によって、キーワードインデックスが存在するか否かを判定する（ステップＳ２３）。キーワードインデックスが存在する場合（ステップＳ２３：Ｙｅｓ）、キーワードインデックス管理モジュール１６は、キーワードインデックス削除手段１６３によって、テキスト値とＸＰａｔｈＩＤとの組を、キーワードインデックスから削除する（ステップＳ２４）。
【００６７】
次に、キーワードインデックス管理モジュール１６は、キーワードインデックス削除手段１６３によって、当該キーワードインデックスにテキスト値が存在するか否かを判別する（ステップＳ２５）。当該キーワードインデックスにテキスト値が存在する場合（ステップＳ２５：Ｙｅｓ）、問い合わせパースモジュール１２は、解析したＸＰａｔｈ式の構造情報を、プロファイル管理部１５から削除し（ステップＳ２６）、処理を終了する。
【００６８】
ステップＳ２５において、キーワードインデックスにテキスト値が存在しない場合（ステップＳ２５：Ｎｏ）、キーワードインデックス管理モジュール１６は、キーワードインデックス削除手段１６３によって、当該キーワードインデックスを削除し（ステップＳ２７）、ステップＳ２６に進む。
【００６９】
ステップＳ２２およびステップＳ２３において、テキスト値を指定した述語が存在しない場合、すなわち、述語を抽出できない場合（ステップＳ２２：Ｎｏ）、または、キーワードインデックスが存在しない場合（ステップＳ２３：Ｎｏ）、フィルタエンジン１０は、ステップＳ２６に進む。
【００７０】
なお、フィルタエンジン１０は、一般的なコンピュータに、前記した各ステップを実行させるＸＰａｔｈ処理プログラムを実行することで実現することもできる。これらのプログラムは、通信回線を介して配布することも可能であるし、ＣＤ−ＲＯＭ等の記録媒体に書き込んで配布することも可能である。
【００７１】
第１実施形態によれば、フィルタエンジン１０は、キーワードインデックスを用いて、複数キーワードのマッチングを行うことができる。そのため、ＸＭＬデータにおけるテキスト値をバックトラックする必要がないので、従来よりも計算量を抑えることができる。その結果、ユーザから登録されるＸＰａｔｈ式の増加や、キーワードを指定した述語数の増加に関わらず、ＸＰａｔｈ式処理における文字列の述語処理を高速化することが可能である。
【００７２】
（第２実施形態）
[フィルタエンジンの構成]
図９は、本発明の第２実施形態に係るフィルタエンジンの一例を示す機能ブロック図である。フィルタエンジン１０Ａは、図９に示すように、形態素解析モジュール２０を備える点を除いて、図２に示したフィルタエンジン１０と同様の構成なので、同一の構成には同一の符号を付して説明を省略する。
【００７３】
形態素解析モジュール２０は、個人プロファイルとして入力されたＸＰａｔｈ式に含まれるテキスト値を単語に区切って、単語区切り付きテキスト値を生成するものである。このため、形態素解析モジュール２０は、入力されたテキストを形態素解析する。
例えば、形態素解析モジュール２０は、テキスト値“ＡＢＣ株式会社”が入力されると、テキスト値“ＡＢＣ株式会社”を、“ＡＢＣ”、“株式”、“会社”という３つの単語に区切る。そして、形態素解析モジュール２０は、区切った単語の間に、単語区切り文字を挿入してから連結し、連結されたテキスト値の先頭および末尾に単語区切り文字を挿入する。これにより、単語区切り付きテキスト値が生成される。ここで、単語区切り文字は、任意の文字あるいは記号や数字である。
【００７４】
例えば、単語区切り文字を「￥ｔａｂ」とした場合には、形態素解析モジュール２０は、テキスト値“ＡＢＣ株式会社”から、単語区切り付きテキスト値“￥ｔａｂＡＢＣ￥ｔａｂ株式￥ｔａｂ会社￥ｔａｂ”を生成することとなる。
なお、当然ながら、形態素解析モジュール２０に入力されるテキストは文章でもよい。例えば、形態素解析モジュール２０は、テキスト値“４月よりＡＢＣ株式会社  ＸＹＺサービス開始”から、単語区切り付きテキスト値“￥ｔａｂ４￥ｔａｂ月￥ｔａｂより￥ｔａｂＡＢＣ￥ｔａｂ株式￥ｔａｂ会社￥ｔａｂＸＹＺ￥ｔａｂサービス￥ｔａｂ開始￥ｔａｂ”を生成することもできる。
なお、形態素解析モジュール２０は、ＣＰＵがＨＤＤに格納された所定のプログラムをＲＡＭに展開して実行することにより実現されるものであり、図示は省略するが形態素解析用の辞書を有している。
【００７５】
フィルタエンジン１０ＡのうちＸＭＬパースモジュール１１とデータ変換モジュール１４とを除く各部は、入力されたＸＰａｔｈ式に含まれるテキスト値そのものではなく、単語区切りつきテキスト値を処理対象とすることとなる。
したがって、キーワードインデックス作成手段１６１は、個人プロファイルの追加命令があり、かつ、キーワードインデックスが存在する場合には、テキスト値を形態素解析モジュール２０に出力し、形態素解析モジュール２０から単語区切り付きテキスト値を取得してから、追加命令をキーワードインデックス追加手段１６２に出力する。
また、キーワードインデックス作成手段１６１は、個人プロファイルの追加命令があり、かつ、キーワードインデックスが存在しない場合には、テキスト値を形態素解析モジュール２０に出力し、形態素解析モジュール２０から単語区切り付きテキスト値を取得してから、キーワードインデックスを作成し、追加命令をキーワードインデックス追加手段１６２に出力する。
また、キーワードインデックス作成手段１６１は、個人プロファイルの削除命令があり、かつ、キーワードインデックスが存在する場合には、テキスト値を形態素解析モジュール２０に出力し、形態素解析モジュール２０から単語区切り付きテキスト値を取得してから、削除命令をキーワードインデックス削除手段１６３に出力する。
【００７６】
また、キーワードインデックス追加手段１６２は、プロファイル管理部１５に記憶されているキーワードインデックスに、単語区切り付きテキスト値と、ＸＰａｔｈＩＤとの組を追加する。
また、キーワードインデックス削除手段１６３は、プロファイル管理部１５に記憶されているキーワードインデックスから、単語区切り付きテキスト値と、ＸＰａｔｈ式識別情報との組を削除する。
また、データ抽出モジュール１３は、ＸＭＬパースモジュール１１で抽出された構造情報で指定されるテキスト値を形態素解析モジュール２０に出力し、形態素解析モジュール２０から単語区切り付きテキスト値を取得してから、プロファイル管理部１５に記憶されている、対応したキーワードインデックスに基づいて、単語区切り付きテキスト値に対応するＸＰａｔｈＩＤを特定する。
【００７７】
[フィルタエンジンの動作]    
＜個人プロファイルの追加＞
図９に示したフィルタエンジン１０Ａの動作について図１０を参照（適宜図９参照）して説明する。図１０は、図９に示したフィルタエンジンによる個人プロファイルの追加を示すフローチャートである。フィルタエンジン１０Ａが実行するステップＳ３１〜ステップＳ３３の各処理は、図６のフローチャートに示したステップＳ１〜ステップＳ３の各処理と同一なので説明を省略する。
【００７８】
ステップＳ３３の判定処理の結果、キーワードインデックスが存在する場合（ステップＳ３３：Ｙｅｓ）、フィルタエンジン１０Ａのキーワードインデックス管理モジュール１６は、キーワードインデックス作成手段１６１によって、テキスト値を形態素解析モジュール２０に出力する。そして、形態素解析モジュール２０は、入力されたテキスト値を単語に区切って、単語区切り付きテキスト値を生成し（ステップＳ３４）、キーワードインデックス作成手段１６１に出力する。
【００７９】
次に、フィルタエンジン１０Ａのキーワードインデックス管理モジュール１６は、キーワードインデックス追加手段１６２によって、単語区切り付きテキスト値とＸＰａｔｈＩＤとの組を、キーワードインデックスに追加する（ステップＳ３５）。ステップＳ３５に続いて、フィルタエンジン１０Ａは、問い合わせパースモジュール１２によって、個人プロファイルの構造情報をプロファイル管理部１５へ格納し（ステップＳ３６）、処理を終了する。
【００８０】
一方、キーワードインデックスが存在しない場合（ステップＳ３３：Ｎｏ）、フィルタエンジン１０Ａのキーワードインデックス管理モジュール１６は、キーワードインデックス作成手段１６１によって、タグ名を受け付け、受け付けたタグ名を対象として、キーワードインデックスを作成し（ステップＳ３７）、ステップＳ３４に進む。また、構造を解析したＸＰａｔｈ式において、テキスト値を指定した述語が抽出できない場合（ステップＳ３２：Ｎｏ）、フィルタエンジン１０Ａは、ステップＳ３６に進む。
【００８１】
＜ＸＭＬデータの抽出＞
図９に示したフィルタエンジン１０Ａの動作について図１１を参照（適宜図９参照）して説明する。図１１は、図９に示したフィルタエンジンによるＸＭＬデータの抽出を示すフローチャートである。フィルタエンジン１０Ａが実行するステップＳ４１〜ステップＳ４５の各処理は、図７のフローチャートに示したステップＳ１１〜ステップＳ１５の各処理と同一なので説明を省略する。
【００８２】
ステップＳ４５において、フィルタエンジン１０Ａは、データ抽出モジュール１３によって、ＸＭＬパースモジュール１１で受け付けたＸＭＬデータの構造情報（テキスト値タグ）に関するキーワードインデックスが存在しないと判定した場合（ステップＳ４５：Ｎｏ）、ステップＳ４１に戻る。
【００８３】
一方、キーワードインデックスが存在する場合（ステップＳ４５：Ｙｅｓ）、データ抽出モジュール１３は、テキスト値を形態素解析モジュール２０に出力する。そして、形態素解析モジュール２０は、入力されたテキスト値を単語に区切って、単語区切り付きテキスト値を生成し（ステップＳ４６）、データ抽出モジュール１３に出力する。
【００８４】
次に、フィルタエンジン１０Ａは、データ抽出モジュール１３によって、単語区切り付きテキスト値を当該キーワードインデックスに入力し、対応するＸＰａｔｈＩＤを特定する（ステップＳ４７）。続いて、フィルタエンジン１０Ａが実行するステップＳ４８およびステップＳ４９の各処理は、図７のフローチャートに示したステップＳ１７およびステップＳ１８の各処理と同一なので説明を省略する。
【００８５】
＜個人プロファイルの削除＞
図９に示したフィルタエンジン１０Ａの動作について図１２を参照（適宜図９参照）して説明する。図１２は、図９に示したフィルタエンジンによる個人プロファイルの削除を示すフローチャートである。フィルタエンジン１０Ａが実行するステップＳ５１〜ステップＳ５３の各処理は、図８のフローチャートに示したステップＳ２１〜ステップＳ２３の各処理と同一なので説明を省略する。
【００８６】
ステップＳ５３の判定処理の結果、キーワードインデックスが存在する場合（ステップＳ５３：Ｙｅｓ）、フィルタエンジン１０Ａのキーワードインデックス管理モジュール１６は、キーワードインデックス作成手段１６１によって、テキスト値を形態素解析モジュール２０に出力する。そして、形態素解析モジュール２０は、入力されたテキスト値を単語に区切って、単語区切り付きテキスト値を生成し（ステップＳ５４）、キーワードインデックス作成手段１６１に出力する。
【００８７】
次に、フィルタエンジン１０Ａのキーワードインデックス管理モジュール１６は、キーワードインデックス削除手段１６３によって、単語区切り付きテキスト値とＸＰａｔｈＩＤとの組を、キーワードインデックスから削除する（ステップＳ５５）。
【００８８】
続いて、フィルタエンジン１０Ａが実行するステップＳ５６〜ステップＳ５８の各処理は、図８のフローチャートに示したステップＳ２５〜ステップＳ２７の各処理と同一なので説明を省略する。なお、ステップＳ５２およびステップＳ５３において、テキスト値を指定した述語が存在しない場合（ステップＳ５２：Ｎｏ）、または、キーワードインデックスが存在しない場合（ステップＳ５３：Ｎｏ）、フィルタエンジン１０Ａは、ステップＳ５７に進む。
【００８９】
第２実施形態によれば、フィルタエンジン１０Ａは、形態素解析モジュール２０によって、個人プロファイルとして入力されたＸＰａｔｈ式から、意味が考慮された単語区切り付きテキスト値を生成する。したがって、キーワードの単純な前方一致や後方一致等の誤った部分一致を防止することができる。その結果、キーワードの適合判定精度を高めることが可能となる。
【００９０】
（第３実施形態）
[フィルタエンジンの構成]
図１３は、本発明の第３実施形態に係るフィルタエンジンの一例を示す機能ブロック図である。フィルタエンジン１０Ｂは、図１３に示すように、インデックス指定パースモジュール３０を備える点を除いて、図９に示したフィルタエンジン１０Ａと同様の構成なので、同一の構成には同一の符号を付して説明を省略する。
【００９１】
インデックス指定パースモジュール３０は、キーワードインデックスを追加あるいは削除するタグを指定するためのタグ指定用ＸＰａｔｈ式の構造を解析し、解析結果としての構造情報を取得し、その構造情報から抽出されたパスに対応するキーワードインデックスが、プロファイル管理部１５に記憶されているか否かを判別するものである。判定結果は、キーワードインデックス管理モジュール１６に出力される。なお、インデックス指定パースモジュール３０は、ＸＰａｔｈ式を処理対象とする。
【００９２】
インデックス指定パースモジュール３０が、キーワードインデックスは、プロファイル管理部１５に記憶されていないと判別した場合には、キーワードインデックス作成手段１６１は、その抽出されたパスに対応するキーワードインデックスを作成する。
また、インデックス指定パースモジュール３０が、キーワードインデックスは、プロファイル管理部１５に記憶されていると判別した場合には、キーワードインデックス削除手段１６３は、その抽出されたパスに対応するキーワードインデックスを削除する。
また、データ抽出モジュール１３は、キーワードインデックスが存在しない場合にも、受け付けたＸＭＬデータの構造情報と、プロファイル管理部１５の格納情報（例えば、第２テーブル４３０（図４参照）等）を参照して、テキスト値タグを指定した全キーワードを照合することにより、ＸＰａｔｈＩＤを特定する。
【００９３】
[フィルタエンジンの動作]    
＜タグ指定の追加＞
図１３に示したフィルタエンジン１０Ｂの動作について図１４を参照（適宜図１３参照）して説明する。図１４は、図１３に示したフィルタエンジンによるタグ指定の追加を示すフローチャートである。
フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０によって、タグ指定用ＸＰａｔｈ式の構造を解析し、解析結果としての構造情報を取得する（ステップＳ６１）。そして、フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０によって、構造情報から抽出されたパスに対応するキーワードインデックスが存在するか否かを判別する（ステップＳ６２）。つまり、インデックス指定パースモジュール３０は、該当するキーワードインデックスがプロファイル管理部１５に記憶されているか否かを判別する。
【００９４】
キーワードインデックスが存在する場合（ステップＳ６２：Ｙｅｓ）、フィルタエンジン１０Ｂは、処理を終了する。一方、キーワードインデックスが存在しない場合（ステップＳ６２：Ｎｏ）、フィルタエンジン１０Ｂは、キーワードインデックス作成手段１６１によって、キーワードインデックスを作成する（ステップＳ６３）。そして、フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０によって、構造を解析したＸＰａｔｈ式をプロファイル管理部１５に格納し（ステップＳ６４）、処理を終了する。
【００９５】
なお、キーワードインデックスを作成するためのＸＰａｔｈ式がプロファイル管理部１５に予め格納されている場合、ステップＳ６１において、インデックス指定パースモジュール３０は、そのＸＰａｔｈ式を読み込み、その構造を解析し、構造情報を取得するようにしてもよい。
【００９６】
＜個人プロファイルの追加＞
図１３に示したフィルタエンジン１０Ｂの動作について図１５を参照（適宜図１３参照）して説明する。図１５は、図１３に示したフィルタエンジンによる個人プロファイルの追加を示すフローチャートである。ここでは、フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０によって、タグ指定用ＸＰａｔｈ式が入力されている、すなわち、キーワードインデックスが作成済みであるものとする。
【００９７】
フィルタエンジン１０Ｂが実行するステップＳ７１〜ステップＳ７６の各処理は、図１０のフローチャートに示したステップＳ３１〜ステップＳ３６の各処理と同様なので説明を省略する。異なる点は以下の通りである。すなわち、ステップＳ７３の判定処理の結果、テキスト値を指定した述語に関するキーワードインデックスが存在しない場合（ステップＳ７３：Ｎｏ）、フィルタエンジン１０Ｂは、ステップＳ７６に進む。つまり、この場合には、フィルタエンジン１０Ｂは、キーワードインデックスを作成することなく、問い合わせパースモジュール１２によって、解析したＸＰａｔｈ式の構造情報をプロファイル管理部１５に格納し（ステップＳ７６）、処理を終了する。
【００９８】
＜ＸＭＬデータの抽出＞
図１３に示したフィルタエンジン１０Ｂの動作について図１６を参照（適宜図１３参照）して説明する。図１６は、図１３に示したフィルタエンジンによるＸＭＬデータの抽出を示すフローチャートである。ここでは、フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０によって、タグ指定用ＸＰａｔｈ式が入力されている、すなわち、キーワードインデックスが作成済みであるものとする。フィルタエンジン１０Ｂが実行するステップＳ８１〜ステップＳ８９の各処理は、図１１のフローチャートに示したステップＳ４１〜ステップＳ４９の各処理と同様なので説明を省略する。異なる点は以下の通りである。すなわち、ステップＳ８５の判定処理の結果、テキスト値タグ（ＸＭＬパースモジュール１１で受け付けたＸＭＬデータの構造情報）に関するキーワードインデックスが存在しない場合（ステップＳ８５：Ｎｏ）、フィルタエンジン１０Ｂは、ステップＳ９０に進む。
【００９９】
ステップＳ９０において、フィルタエンジン１０Ｂは、データ抽出モジュール１３によって、テキスト値（受け付けたＸＭＬデータの構造情報）と、プロファイル管理部１５に格納してあるキーワードのうち、そのテキスト値タグを指定した全キーワードとを照合する。そして、フィルタエンジン１０Ｂは、データ抽出モジュール１３によって、該当する各キーワードを指定したＸＰａｔｈＩＤを特定し（ステップＳ９１）、ステップＳ８８に進む。
【０１００】
＜個人プロファイルの削除＞
図１３に示したフィルタエンジン１０Ｂの動作について図１７を参照（適宜図１３参照）して説明する。図１７は、図１３に示したフィルタエンジンによる個人プロファイルの削除を示すフローチャートである。ここでは、フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０によって、タグ指定用ＸＰａｔｈ式が入力されている、すなわち、キーワードインデックスが作成済みであるものとする。
【０１０１】
フィルタエンジン１０Ｂが実行するステップＳ１０１〜ステップＳ１０６の各処理は、図１２のフローチャートに示したステップＳ５１〜ステップＳ５７の各処理と同様なので説明を省略する。ただし、ステップＳ５６に相当する判定処理はない。つまり、フィルタエンジン１０Ｂは、問い合わせパースモジュール１２によって、テキスト値とＸＰａｔｈＩＤとの組が削除されたキーワードインデックスにテキスト値が存在するか否かを判定することなく、解析したＸＰａｔｈ式の構造情報を、プロファイル管理部１５から削除する（ステップＳ１０６）。
【０１０２】
＜タグ指定の削除＞
図１３に示したフィルタエンジン１０Ｂの動作について図１８を参照（適宜図１３参照）して説明する。図１８は、図１３に示したフィルタエンジンによるタグ指定の削除を示すフローチャートである。
フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０によって、タグ指定用ＸＰａｔｈ式の構造を解析し、解析結果としての構造情報を取得する（ステップＳ１１１）。そして、フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０によって、構造情報から抽出されたパスに対応するキーワードインデックスが存在するか否かを判別する（ステップＳ１１２）。
【０１０３】
キーワードインデックスが存在しない場合（ステップＳ１１２：Ｎｏ）、フィルタエンジン１０Ｂは、処理を終了する。一方、キーワードインデックスが存在する場合（ステップＳ１１２：Ｙｅｓ）、フィルタエンジン１０Ｂは、キーワードインデックス削除手段１６３によって、キーワードインデックスを削除する（ステップＳ１１３）。そして、フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０によって、構造を解析したＸＰａｔｈ式をプロファイル管理部１５から削除し（ステップＳ１１４）、処理を終了する。
【０１０４】
なお、キーワードインデックスを削除するためのＸＰａｔｈ式がプロファイル管理部１５に予め格納されている場合、ステップＳ１１１において、インデックス指定パースモジュール３０は、そのＸＰａｔｈ式を読み込み、その構造を解析し、構造情報を取得するようにしてもよい。
【０１０５】
また、インデックス指定パースモジュール３０に、形態素解析をするか否かを示す情報を入力し、その情報に基づいて、形態素解析モジュール２０の動作を制御するように構成してもよい。また、インデックス指定パースモジュール３０から、キーワードインデックス作成手段１６１の動作を制御するための情報を入力するように構成してもよい。さらに、インデックス指定パースモジュール３０から、予め作成されたキーワードインデックスを入力してプロファイル管理部１５に登録するように構成してもよい。
【０１０６】
第３実施形態によれば、フィルタエンジン１０Ｂは、インデックス指定パースモジュール３０を備えているので、個人プロファイルのＸＰａｔｈ式において、キーワードインデックスを適用する箇所や、テキスト値を加工してキーワードインデックスを適用する箇所を指定することができる。その結果、入力されたＸＭＬデータの抽出処理を形態素解析などの加工を伴わず実行できることから高速化することができる。
【０１０７】
以上、本発明の各実施形態について説明したが、本発明はこれらに限定されるものではなく、その趣旨を変えない範囲で実施することができる。例えば、ＸＭＬデータとして例示したＮｅｗｓＭＬは一例であり、ＸＭＬデータがＮｅｗｓＭＬに限定されることはない。例えば、ＸＭＬデータがＮＩＴＦ（News Industry Text Format）データ等でもよい。
【０１０８】
また、フィルタエンジン１０を構成する装置は、１台に限定されることはなく、複数の装置に機能を分散配置してもよい。例えば、フィルタ処理を実行する装置（ＸＭＬパースモジュール１１、データ抽出モジュール１３、および、データ変換モジュール１４）と、問い合わせパースモジュール１２、プロファイル管理部１５、キーワードインデックス管理モジュール１６等を、別々の装置として構成してもよい。これにより、各装置への負荷が分散され、高速な処理が実現可能となる。
【図面の簡単な説明】
【０１０９】
【図１】ＸＰａｔｈ式処理方法を実行するフィルタエンジンの説明図である。
【図２】第１実施形態に係るフィルタエンジンの構成例を示す機能ブロック図である。
【図３】図２に示したプロファイル管理部のメモリ上で構成されるオートマトンのデータの一例を示す説明図である。
【図４】図２に示したプロファイル管理部に記憶されたデータベースの一例を示す説明図である。
【図５】図２に示したプロファイル管理部に記憶されたデータベースの一例を示す説明図である。
【図６】図２に示したフィルタエンジンによる個人プロファイルの追加処理を示すフローチャートである。
【図７】図２に示したフィルタエンジンによるＸＭＬデータの抽出処理を示すフローチャートである。
【図８】図２に示したフィルタエンジンによる個人プロファイルの削除処理を示すフローチャートである。
【図９】第２実施形態に係るフィルタエンジンの構成例を示す機能ブロック図である。
【図１０】図９に示したフィルタエンジンによる個人プロファイルの追加処理を示すフローチャートである。
【図１１】図９に示したフィルタエンジンによるＸＭＬデータの抽出処理を示すフローチャートである。
【図１２】図９に示したフィルタエンジンによる個人プロファイルの削除処理を示すフローチャートである。
【図１３】第３実施形態に係るフィルタエンジンの構成例を示す機能ブロック図である。
【図１４】図１３に示したフィルタエンジンによるタグ指定の追加処理を示すフローチャートである。
【図１５】図１３に示したフィルタエンジンによる個人プロファイルの追加処理を示すフローチャートである。
【図１６】図１３に示したフィルタエンジンによるＸＭＬデータの抽出処理を示すフローチャートである。
【図１７】図１３に示したフィルタエンジンによる個人プロファイルの削除処理を示すフローチャートである。
【図１８】図１３に示したフィルタエンジンによるタグ指定の削除処理を示すフローチャートである。
【符号の説明】
【０１１０】
１０（１０Ａ，１０Ｂ）  フィルタエンジン
１１    ＸＭＬパースモジュール
１２    問い合わせパースモジュール
１３    データ抽出モジュール
１４    データ変換モジュール
１５    プロファイル管理部
１６    キーワードインデックス管理モジュール
１６１  キーワードインデックス作成手段
１６２  キーワードインデックス追加手段
１６３  キーワードインデックス削除手段
２０    形態素解析モジュール
３０    インデックス指定パースモジュール
【図１】
2007249773.tif 000003
【図２】
2007249773.tif 000004
【図３】
2007249773.tif 000005
【図４】
2007249773.tif 000006
【図５】
2007249773.tif 000007
【図６】
2007249773.tif 000008
【図７】
2007249773.tif 000009
【図８】
2007249773.tif 000010
【図９】
2007249773.tif 000011
【図１０】
2007249773.tif 000012
【図１１】
2007249773.tif 000013
【図１２】
2007249773.tif 000014
【図１３】
2007249773.tif 000015
【図１４】
2007249773.tif 000016
【図１５】
2007249773.tif 000017
【図１６】
2007249773.tif 000018
【図１７】
2007249773.tif 000019
【図１８】
2007249773.tif 000020