(57)【要約】【課題】  検索語による文書を検索する時に、検索語が存在する文書を検索すると同時に、検索語中の異体字を含んだ検索語が存在する文書を検索できるＸＭＬ文書検索システムを提供する。【解決手段】  検索語による文書を検索する時に、異体字を含んだ検索語の文書を検索するために、文字列解析部１３と異体字辞書１６ｂと親字タグ発生部１４とデータベース登録部１５とを用いて登録したＸＭＬ形式の文書データベース１６ａから、異体字辞書１６ｂと親字取得部１９と異体字グループ取得部２０とを用いた検索語の異体字検索をすることにより、異体字を含んだ検索語が存在する文書を検索できるＸＭＬ文書検索システム１０【選択図】図１
2005346537.tif 000002
【特許請求の範囲】
【請求項１】
入力したＸＭＬ文書から、要素と要素の文字列とを分離するタグ解析部と、
分離した要素の中から、異体字に親字情報を付加する異体字処理が必要な要素を限定する制御部と、
処理する文字列を文字に分解して、文字が処理対象の文字種であるか判別する文字列解析部と、
判別した文字の親字情報を、異体字辞書から取得する親字取得部と、
親字が存在した文字に、親字情報として、親字タグとその文字コードを追加する親字タグ発生部と、
使用可能なすべての異体字に対し親字になる文字を記述・定義している異体字辞書と、
異体字処理をしたＸＭＬ文書を、データベースに登録するデータベース登録部と、
検索語の異体字グループを取得して、その情報を保持する異体字グループ取得部と、
保持する異体字グループを用いて検索語の全ての異体字を検索すると同時に、データベースの検索範囲を選択限定するクエリを生成するクエリ構成部と、
クエリ構成部から生成したクエリにて、データベースに問い合わせて、結果を取得するクエリ発行部と、
を備えるＸＭＬ異体字検索システム。
【請求項２】
入力したＸＭＬ文書から、要素と要素の文字列とを分離するタグ解析部と、
分離した要素の中から、異体字に親字情報を付加する異体字処理が必要な要素を限定する制御部と、
処理する文字列を文字に分解して、文字が処理対象の文字種であるか判別する文字列解析部と、
判別した文字の親字情報を、異体字辞書から取得する親字取得部と、
親字が存在した文字に、親字情報として、親字タグとその文字コードを追加する親字タグ発生部と、
使用可能なすべての異体字に対し親字になる文字を記述・定義している異体字辞書と、
異体字処理をしたＸＭＬ文書を、リポジトリに文書保管したり、リポジトリから読出す文書保管・読出部と、
検索語の異体字グループを取得して、その情報を保持する異体字グループ取得部と、
ＸＭＬ文書中の親字タグに相当するノードの親ノードの文字列を被検索文字列として取得する処理ノード取得部と、
検索文字列中の異体字を全て親字に変換する異体字変換部と、
親字変換済み検索語で検索する文字列検索部と、
を備えるＸＭＬ異体字検索システム。
【請求項３】
使用可能なすべての異体字に対し親字になる文字を記述・定義している異体字辞書を使用して異体字検索を行う方法であって、
入力したＸＭＬ文書から、要素と要素の文字列とを分離するタグ解析ステップと、
分離した要素の中から、異体字に親字情報を付加する異体字処理が必要な要素を限定する制御ステップと、
処理する文字列を文字に分解して、文字が処理対象の文字種であるか判別する文字列解析ステップと、
判別した文字の親字情報を、異体字辞書から取得する親字取得ステップと、
親字が存在した文字に、親字情報として、親字タグとその文字コードを追加する親字タグ発生ステップと、
処理すべき全ての文字列の異体字処理を終了したら、異体字処理をしたＸＭＬ文書を、データベースに登録するデータベース登録ステップと、
検索語の異体字グループを取得して、その情報を保持する異体字グループ取得ステップと、
保持する異体字グループを用いて検索語の全ての異体字を検索すると同時に、データベースの検索範囲を選択限定するクエリを生成するクエリ構成ステップと、
クエリ構成部から生成したクエリにて、データベースに問い合わせて、結果を取得するクエリ発行ステップと、
を含んだ手順でなされるＸＭＬ異体字検索方法。
【請求項４】
使用可能なすべての異体字に対し親字になる文字を記述・定義している異体字辞書を使用して異体字検索を行う方法であって、
入力したＸＭＬ文書から、要素と要素の文字列とを分離するタグ解析ステップと、
分離した要素の中から、異体字に親字情報を付加する異体字処理が必要な要素を限定する制御ステップと、
処理する文字列を文字に分解して、文字が処理対象の文字種であるか判別する文字列解析ステップと、
判別した文字の親字情報を、異体字辞書から取得する親字取得ステップと、
親字が存在した文字に、親字情報として、親字タグとその文字コードを追加する親字タグ発生ステップと、
異体字処理をしたＸＭＬ文書を、リポジトリに文書保管したり、リポジトリから読出す文書保管・読出ステップと、
検索語の異体字グループを取得して、その情報を保持する異体字グループ取得ステップと、
ＸＭＬ文書中の親字タグに相当するノードの親ノードの文字列を被検索文字列として取得する処理ノード取得ステップと、
検索文字列中の異体字を全て親字に変換する異体字変換ステップと、
親字変換済み検索語で検索する文字列検索ステップと、
を含んだ手順でなされるＸＭＬ異体字検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索語を用いて検索するときに、検索語の異体字を含めた文書検索を実現するＸＭＬ異体字検索システム及びＸＭＬ異体字検索方法に関するものである。
【背景技術】
【０００２】
文書中の語句の検索において、検索語に指定した語句に対し、非検索文書中に含まれる異体字語句（同音同義で字形が異なる語句）を区別無く検索したい場合がある。たとえば、データベースの検索において、人名が"高田"を含むレコードを検索する場合、"高"の字には異体字として"「図２１のＧ１１の文字」"が存在しており、データ登録時にどちらの"高"が使用されているか通常は不明である。そのため単純な文字列マッチングで検索する場合においては、検索語として"高田"または"「図２１のＧ１１の文字」田"を含むレコードを検索しなければならない。1文字に対し複数の異体字を持つ文字も存在することや、検索語中の複数の文字に異体字が存在する可能性もあるので、単純な文字列マッチングによる異体字検索は非効率である。もちろん、文書をデータベースに登録する前に、"「図２１のＧ１１の文字」田"を"高田"に正規化してしまえば、検索語"高田"に対し、"「図２１のＧ１１の文字」田"も "高田"も抽出することができるが、この方法では"「図２１のＧ１１の文字」田"に正しくマッチする文書を抽出することができない。
【０００３】
このため、これまでも種々の方法で異体字を含む文書検索を行う方法が提案されている。たとえば、特許文献１には、正規表現処理をすることで文字検索の能率を高める方法を提供する技術が開示されている。正規表現処理装置が組み込まれたデータベースを用いて、検索語を正規表現に変換した上で文書を検索する。異体字やOCR読み取り時の類似表記などを検索することができるが、データベース中の文書に適用する場合は、データベース本体に正規表現を検索できる装置が必要になるため、データベース製品によっては利用できない。なお、正規表現は文字列の指定をするための記述文法である。正規表現の記述は決定性有限オートマトンという単純な情報検索アルゴリズムで変換できる。（従来技術１）
【特許文献１】特開平０７−１２１５４７号公報（２頁〜３頁、図１−図５）特許文献２には、「データまたはインデックスの2重登録による方法」を提供する技術が開示されている。データの２重登録は、被検索文書の内容のうち、異体字辞書によって異体字部分を親字（正字とも呼ばれる）に変換した正規化文書を、オリジナル文書とともに登録する。検索時は異体字検索を行わない通常検索の場合はオリジナル文書を、異体字検索を行う場合は正規化文書を検索する。インデックスの2重化は同じ考え方で、検索用のインデックスのみをオリジナル文書と正規化文書の2種類用意し、検索の形態にあわせて両者を使い分ける。いずれの方法もデータ管理が複雑化する欠点がある。（従来技術２）
【特許文献２】特開平１０―３０１９４０号公報特許文献３には、日本語処理を提供する技術が開示されている。  被検索文書を、形態素解析やシソーラス辞書を用いて分析した上で類似度演算を行ってあらかじめ同義の文字列を抽出しておき、検索語も同様の処理を行って、最も似ていると思われる文書を抽出する  。この場合、日本語処理装置や辞書が必要になり、また異体字検索のように類似度が100％でない検索の場合、選択する類似度の設定値によっては異体字関係に無い文字列も抽出される欠点がある。（従来技術３）
【特許文献３】特開平０５−１５８９９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、正規表現処理による方法（従来技術１）は、オリジナル文書と正規化文書の2種類を用意する必要がない点や、日本語処理装置や同義の文字列辞書を用意する必要がない点から、上記従来技術２や従来技術３より優れた方法であるが、従来技術１の方法では、正規表現検索処理のための特別なデータベース登録処理が必要であったり、検索語の正規表現処理の構築や正規表現のクエリ展開が必要であり、システム構築に多大な手間を要した。
【０００５】
本発明はこのような従来技術を考慮してなされたものであって、本発明の課題は、データベースに登録された電子文書を検索語により検索するシステムにおいて、検索語が存在する文書を検索すると同時に、検索語中の異体字を含めた検索語が存在する文書が検索できる検索システムを提供することにより、異体字の検索のデータ構築を容易にすると同時に、異体字入力装置を持たない検索端末からでも制限を受けることなく異体字検索作業ができるＸＭＬ異体字検索システムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は、以下のような解決手段により、前記課題を解決する。すなわち、請求項１の発明は、たとえば、ＸＭＬパーサーと呼ばれるＸＭＬ文書解析プログラム、あるいは、文字列処理プログラムを用いて、入力したＸＭＬ文書から、要素（タグ）と要素の文字列（タグ内容）とを分離するタグ解析部と、分離した要素の中から、文字に親字情報を付加する異体字処理が必要な要素を限定する制御部と、処理する文字列を文字に分解して、文字が処理対象の文字種であるか判別する文字列解析部と、判別した文字の親字情報を、異体字辞書から取得する親字取得部と、親字が存在した文字に、親字情報として、親字タグとその文字コード（たとえば、ユニコード）を追加する親字タグ発生部と、使用可能なすべての異体字に対し親字になる文字を記述・定義している異体字辞書と、異体字処理をしたＸＭＬ文書をデータベースに登録するデータベース登録部と、検索語の異体字グループを取得して、その情報を保持する異体字グループ取得部と、保持する異体字グループを用いて検索語の全ての異体字を検索すると同時に、データベースの検索範囲を選択限定するクエリを生成するクエリ構成部と、クエリ構成部から生成したクエリにて、データベースに問い合わせて、結果を取得するクエリ発行部と、を備えるＸＭＬ異体字検索システムである。ここで、異体字処理とは、異体字が存在する文字に親字情報を追加する処理である。
【０００７】
請求項２の発明は、たとえば、ＸＭＬパーサーと呼ばれるＸＭＬ文書解析プログラム、あるいは、文字列処理プログラムを用いて、入力したＸＭＬ文書から、要素（タグ）と要素の文字列（タグ内容）とを分離するタグ解析部と、分離した要素の中から、文字に親字情報を付加する異体字処理が必要な要素を限定する制御部と、処理する文字列を文字に分解して、文字が処理対象の文字種であるか判別する文字列解析部と、判別した文字の親字情報を、異体字辞書から取得する親字取得部と、親字が存在した文字に、親字情報として、親字タグとその文字コード（たとえば、ユニコード）を追加する親字タグ発生部と、使用可能なすべての異体字に対し親字になる文字を記述・定義している異体字辞書と、異体字処理をしたＸＭＬ文書を、リポジトリに文書保管したり、リポジトリから読出す文書保管・読出部と、検索語の異体字グループを取得して、その情報を保持する異体字グループ取得部と、ＸＭＬ文書中の親字タグに相当するノードの上位ノードである親ノードの文字列を被検索文字列として取得する処理ノード取得部と、検索文字列中の異体字を全て親字に変換する異体字変換部と、親字変換済み検索語で検索する文字列検索部と、を備えるＸＭＬ異体字検索システムである。
【０００８】
請求項３の発明は、使用可能なすべての異体字に対し親字になる文字を記述・定義している異体字辞書を使用して異体字検索を行う方法であって、たとえば、ＸＭＬパーサーと呼ばれるＸＭＬ文書解析プログラム、あるいは、文字列処理プログラムを用いて、入力したＸＭＬ文書から、要素（タグ）と要素の文字列（タグ内容）とを分離するタグ解析ステップと、分離した要素の中から、文字に親字情報を付加する異体字処理が必要な要素を限定する制御ステップと、処理する文字列を文字に分解して、文字が処理対象の文字種であるか判別する文字列解析ステップと、判別した文字の親字情報を、異体字辞書から取得する親字取得ステップと、親字が存在した文字に、親字情報として、親字タグとその文字コード（たとえば、ユニコード）を追加する親字タグ発生ステップと、異体字処理をしたＸＭＬ文書を、データベースに登録するデータベース登録ステップと、検索語の異体字グループを取得して、その情報を保持する異体字グループ取得ステップと、保持する異体字グループを用いて検索語の全ての異体字を検索すると同時に、データベースの検索範囲を選択限定するクエリを生成するクエリ構成ステップと、クエリ構成部から生成したクエリにて、データベースに問い合わせて、結果を取得するクエリ発行ステップと、を含んだ手順でなされるＸＭＬ異体字検索方法である。
【０００９】
請求項４の発明は、使用可能なすべての異体字に対し親字になる文字を記述・定義している異体字辞書を使用して異体字検索を行う方法であって、たとえば、ＸＭＬパーサーと呼ばれるＸＭＬ文書解析プログラム、あるいは、文字列処理プログラムを用いて、入力したＸＭＬ文書から、要素（タグ）と要素の文字列（タグ内容）とを分離するタグ解析ステップと、分離した要素の中から、文字に親字情報を付加する異体字処理が必要な要素を限定する制御ステップと、処理する文字列を文字に分解して、文字が処理対象の文字種であるか判別する文字列解析ステップと、判別した文字の親字情報を異体字辞書から取得する親字取得ステップと、親字が存在した文字に、親字情報として、親字タグとその文字コード（たとえば、ユニコード）を追加する親字タグ発生ステップと、異体字処理をしたＸＭＬ文書を、リポジトリに文書保管したり、リポジトリから読出す文書保管・読出ステップと、検索語の異体字グループを取得して、その情報を保持する異体字グループ取得ステップと、ＸＭＬ文書中の親字タグに相当するノードの上位ノードである親ノードの文字列を被検索文字列として取得する処理ノード取得ステップと、検索文字列中の異体字を全て親字に変換する異体字変換ステップと、親字変換済み検索語で検索する文字列検索ステップと、を含んだ手順でなされるＸＭＬ異体字検索方法である。
【発明の効果】
【００１０】
本願発明によれば、
検索語中の異体字を含めた検索語が存在する文書が検索できる検索システムにおいて、ＸＭＬデータベースに登録されたＸＭＬ文書、あるいは、リポジトリに登録されたＸＭＬ文書による検索システムを提供することにより、異体字検索の用途に登録するＸＭＬ文書データの構築が容易になると同時に、検索者が、検索語に特別な異体字処理を施さなくても、異体字検索が簡便かつ効率的に行えて、更に、異体字入力装置を持たない検索端末からでも制限を受けることなく異体字検索作業が可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、図面等を参照しながら、本発明の実施の形態について、更に詳しく説明する。まず、はじめに、本発明のＸＭＬ異体字検索システムの基本構成を説明する。
（第１実施形態）
図１は、本発明によるＸＭＬ異体字検索システムの全体図である。本発明では、文書の論理形式としてＸＭＬ形式を採用し、ＸＭＬデータベースに文書を登録することによって、異体字を含む文書検索を可能にするシステムを提供する。ここで、文書入力部１１は、登録するＸＭＬ文書１１ａの入力部である。入力したＸＭＬ文書１１ａは、ＸＭＬデータベースに登録する前に、ＸＭＬ文書の異体字処理を行う。まず、ＸＭＬタグ解析部１２にあるＸＭＬパーサーと呼ばれるＸＭＬ文書解析プログラムを用いて、入力したＸＭＬ文書１１ａから、要素（タグ）と要素の文字列（タグ内容）とを分離する。次に、分離した要素の中から異体字処理が必要な要素を限定して、制御部１７は、その要素に含まれる限定した文字列への異体字処理を文字列解析部１３に指示する。そこで、文字列解析部１３は、処理する文字列を、文字に分解して、文字が異体字処理を必要とする文字種であるか判別する。異体字処理が必要な文字種であるかどうかは、たとえば文字コードがＳ−ＪＩＳならばＳ−ＪＩＳの漢字領域、ユニコードであればＣＪＫ統合漢字領域に存在するかどうかで判定する。また漢字以外でも、囲み英数字の領域や、一般に外字とよばれる私用領域に対し、異体字処理対象を拡張してもよい。そして、分解した文字が異体字処理を必要とする文字種の場合には、親字取得部１９が、この文字に親字が存在するかの有無を、異体字辞書１６ｂに問い合わせる。その結果、親字が存在すれば、異体字辞書１６ｂから親字情報を取得する。ここで、親字タグ発生部１４は、親字が存在した文字（＝異体字）に、その異体字の親字情報として、親字タグとその属性値として、文字コード（たとえば、ユニコード）を追加する。たとえば、姓名が「図２１のＧ１１の文字」田の場合には、"「図２１のＧ１１の文字」"の親字は、"高"であるので、姓名のＸＭＬタグ"<name>「図２１のＧ１１の文字」田</name>"の要素内容に対して、親字タグ"<OYA p="高"/>"を追加すると、"<name>「図２１のＧ１１の文字」<OYA p="高"/>田</name>"となる。ところで、親字タグの追加に当たって、親字を検索・選択する場合には、使用可能なすべての異体字に対し親字になる文字を記述・定義している、異体字辞書を用いる。ここで、すべての文字に親字が存在するとは限らない。また、複数の異体字が同一の親字を持つ場合もある。最後に、処理すべき全ての文字列の異体字処理を終了したら、データベース登録部１５は、異体字処理をしたＸＭＬ文書を、ＸＭＬデータベース１６ａに登録する。
【００１２】
次に、異体字検索について、説明する。ＸＭＬデータベースの異体字検索には、XQuery（エックスクエリ）と呼ばれるＸＭＬデータベース用の問い合わせ言語（クエリ）を用いる。ここで、クエリの働きは、ＸＭＬデータベースを構成する要素の中から、検索対象の要素を絞込み、検索条件に合う要素をクエリで指定した形式で出力することで、ＸＭＬデータの抽出作業を行うものである。検索条件の指定の中には、要素中の文字列の照合マッチングも含まれる。異体字検索は、まず、検索語の異体字処理から始める。検索語入力部１８から入力した検索語１８ａは、ＸＭＬ文書登録処理と同様に、ＸＭＬタグ解析部１２と文字列解析部１３とを用いて、異体字処理が必要な文字種部分を判定する。次に、異体字グループ取得部２０は、この文字の親字と、その親字に属するほかの異体字を、異体字辞書１６ｂから取得して、異体字グループとして保持する。たとえば、検索語の"「図２１のＧ１１の文字」田"を異体字処理するときには、検索語中の"「図２１のＧ１１の文字」"の異体字グループ（"「図２１のＧ１１の文字」"の親字"高"と、"「図２１のＧ１１の文字」"を含む"高"の異体字全て）を異体字辞書から取得して、保持する。"田"については、異体字辞書に登録されていないので、異体字グループの保持はなされない。次に、クエリ処理を行う。クエリ構成部２１は、ＸＭＬデータベースから検索対象の要素を選択する機能と、検索語中の異体字グループの文字を全て検索する機能の２点から構成されているクエリを生成する。クエリ構成部２１から生成したクエリは、クエリ発行部２２にて、ＸＭＬデータベース１６ａに、問い合わせて、結果を取得する。たとえば、XQueryを使って、先の例の"「図２１のＧ１１の文字」田"を異体字検索するときには、まず、親字タグ<OYA p=" 高"/>を含む要素<name>を選択して、次に、保持してある"「図２１のＧ１１の文字」"の異体字グループの文字（"高"、"「図２１のＧ１１の文字」"）を含む文書を検索抽出して、最後に、異体字を親字に置換した後に、"高田"で照合して一致したものを抽出する。このようにクエリで指示することで、全ての"高"の異体字を含むＸＭＬ文書データの抽出をすることが可能となる。
【００１３】
なお、XQueryは、XMLデータベースの問い合わせ言語で、現在はバージョン1.0のワーキングドラフトが公開されており、W3Cで標準化の作業が進んでいる。なお、W3Cとは、World Wide Web Consortiumで、WWW（World Wide Web）で使用される、さまざまな技術標準を定める組織である。
【００１４】
図２は、異体字辞書の説明図である。異体字辞書は、親字３２と異体字３１のペアの組合わせである。たとえば、一行目の表記は、異体字"「図２１のＧ１１の文字」"と親字"高"のペアを表している。曽の異体字グループ３３は、親字"曽"と１つの異体字"曾"から構成されることが分かる。異体字辞書に登録されていない文字については、親字が存在しない。
【００１５】
図３は、本発明による文書登録のフローチャートであり、図４は、本発明による登録するＸＭＬ文書の例である。図４のＸＭＬ文書の登録および検索では、meibo/memberの下の要素nameと要素addressを異体字処理対象としており、要素idは処理対象としない。この理由は、異体字が入力される可能性のあるタグのみに異体字処理を限定し、処理の負荷を軽減するためである。たとえば、図４のＸＭＬ文書の要素nameを例に、文書登録時の異体字処理手順を説明する。
（１）<name>「図２１のＧ１１の文字」橋  一郎</name>の文字列について、要素の文字    列を文字に分解する。（ステップＳ３２）"「図２１のＧ１１の文字」","橋","  "    （空白）,"一","郎"の５つの文字それぞれについて、以下の処理を行う。
（２）処理する文字"「図２１のＧ１１の文字」"を結果文字列に格納する。（ステップＳ３４）
（３）処理する文字"「図２１のＧ１１の文字」"が異体字処理を必要とする文字種であ    るか判別する。（ステップＳ３５）
ここでは"「図２１のＧ１１の文字」"が漢字領域にある文字のため、処理を継続す    る。異体字処理対象外の文字の場合（たとえば、空白、"1-1-1","イ","238"など）    は、（２）に戻り、次の文字を処理する。
（４）処理する文字"「図２１のＧ１１の文字」"を異体字辞書から検索し、親字を取得    する。（ステップＳ３６）
ここでは"「図２１のＧ１１の文字」"の親字として"高"が返される。処理する文    字自体が親字であった場合（たとえば、高橋の"高"、一郎の"郎"など）は、その    文字が返される。また、親字のない文字では、ヌルが返される。
（５）親字がない場合は、（２）に戻り、次の文字を処理する。（ステップＳ３７）
（６）返された親字"高"をタグとして整形し、結果文字列に追加する。（ステップＳ３    ８）
ここでは、<OYA p="高"/>が"「図２１のＧ１１の文字」"の直後に追加される。
（７）（２）に戻り、次の文字を処理する。
（８）すべての文字が処理されたら、<name>要素の内容を、結果文字列に置き換える。（    ステップＳ３９）
（９）すべての処理対象の要素の処理が終了したら、ＸＭＬ文書をＸＭＬデータベースに    登録する。（ステップＳ４０）
図４の例では、上記の"「図２１のＧ１１の文字」"のほかに、"高","橋","「図２１のＧ１２の文字」","「図２１のＧ１３の文字」","郎","「図２１のＧ１４の文字」","曾","福","会","檜","原"が、親字の存在する文字か、もしくは、それ自身を親字とする文字である。それ以外は、親字−異体字関係のない文字である。
【００１６】
図５は、本発明による親字タグを付加したＸＭＬデータベース登録文書の例であり、図４のＸＭＬ文書の処理結果である。親字のある文字は、直後に親字タグが追加されている。たとえば、"「図２１のＧ１１の文字」"の親字タグ<OYA p="高"/>５１、"橋"の親字タグ<OYA p="橋"/>５２、"郎"の親字タグ<OYA p="郎"/>５３である。
【００１７】
図６は、本発明による異体字検索を説明するフローチャートである。ＸＭＬ文書の異体字検索では、入力された検索語から、異体字検索を行うクエリを形成する。ここでは例として、登録名簿の氏名に"一郎"を含むものを検索することを想定し、<name>に"一郎"や"一「図２１のＧ１４の文字」"を含む<member>を検索する。
（１）検索語文字列"一郎"を、文字単位"一","郎"に分解する。（ステップＳ６１）    
（２）処理する文字"一"が異体字処理を必要とする文字種であるか判別する。（ステッ    プＳ６３）
異体字処理対象外の文字の場合は文字を結果文字列に追加し、次の文字を処理する。    
（３）処理する文字"一"の親字を異体字辞書から検索し、親字があれば異体字グループ    を取得する。（ステップＳ６４）ここではまず、"一"の親字が検索されるが、"一    "には親字−異体字関係が存在しないため、辞書からはヌルが返される。
（４）親字がない場合は、文字を結果文字列に追加（ステップＳ６８）し、（２）に戻っ    て次の文字を処理する。
（５）次の文字"郎"の親字を異体字辞書から取得する。（ステップＳ６４）
異体字辞書からは、"郎"が返され、次に"郎"が親字であるすべての異体字"「図    ２１のＧ１４の文字」"が取得される（"郎"の異体字は"「図２１のＧ１４の文字    」"のみ）。
（６）異体字が存在する文字なので、結果文字列に親字を追加する（ステップＳ６７）と    ともに、異体字グループの内容を保持（ステップＳ６６）した後に、（２）に戻って    次の文字を処理する。（ステップＳ６３）
（７）検索語中のすべての異体字処理が終了（ステップＳ６２）したら、処理すべき異体    字グループがあったかどうか確認する。（ステップＳ６９）
異体字グループがなかった場合は、通常検索のクエリ（図１４参照）を発生する。（    ステップＳ７１）
（８）結果文字列（検索語であって、異体字を親字に変換したもの）と一時的に保持した    異体字グループの内容から、異体字検索用クエリの内容を構成する。（ステップＳ７    ０）
クエリの内容は、親字タグを含む要素に検索対象を限定する機能と、検索対象文字列    中の異体字を親字に置換する機能と、親字に置換した検索語を含む文書を抽出する機    能と、検索結果を整形出力する機能である。
（９）作成したクエリをＸＭＬデータベースに問い合わせ、結果を取得する。（ステップ    Ｓ７２）（ステップＳ７３）
【００１８】
次に、図６の異体字検索用クエリを構成するステップＳ７０と作成したクエリでＸＭＬデータベースに問い合わせて結果を取得するステップＳ７２との内容を詳細に説明する。図７は、本発明による異体字検索クエリの構成と動作を説明するフローチャートであり、図８は、本発明による異体字検索クエリの実施例である。図６の例示に従って、図７の動作と図８の異体字検索クエリのXQuery記述例８０とを対応させて説明する。
（１）文字が"郎"である親字タグを含むname要素に、検索対象$iを限定する。（ステッ      プＳ１００）
for $i in /meibo/member[./name/OYA[@p="郎"]]
（２）親字に置換する文字列として、name要素の文字列を指定して、文字置換用変数$jに    設定する。（ステップＳ１０１）
let $j:=$i/name
（３）保持した異体字グループから、親字と異体字を取得して（ステップＳ１０２）（ス    テップＳ１０３）、置換用変数$j中の異体字（"「図２１のＧ１４の文字」"）を、    親字（"郎"）に置換する。（ステップＳ１０４）すべての異体字グループ中に存在    する異体字の数だけ繰り返す。（ステップＳ１０５）（ステップＳ１０６）
let $j:=replace（$j,"「図２１のＧ１４の文字」", "郎"）
（４）親字に変換された検索語（"一郎"）を含む変数に、検索対象を限定する。（ステ        ップＳ１０７）
where $j[contains（.,"一郎"）]
（５）検索結果から、ヒットした結果文書群を整形出力する。（ステップＳ１０８）
return（
<member>
<id>[$i/id/text（）]</id>
<name>[$i/name/text（）]</name>
<address>[$i/address/text（）]</address>
</member>
）
【００１９】
上記のクエリ８０で、たとえば、図５に例示のＸＭＬデータベースを検索すると、整形出力した結果８１が返る。図９〜図１３は、本発明による検索クエリ８０で、図５に例示のＸＭＬデータベースを検索したときの処理イメージであり、検索クエリ８０の各処理ステップに応じた、$i と$jとの内容の変化を示している。図９は、検索対象を親字タグを含むname要素に限定するステップＳ１００での$i９１と$j９２との内容を、図１０は、name要素の文字列を文字置換用変数に設定するステップＳ１０１での$i１００ と$j１０１との内容を、図１１は、置換用変数中の異体字を親字に置換するステップＳ１０４での$i１１０と$j１１１との内容を、図１２は、親字に変換された検索語を含む変数に検索対象を限定するステップＳ１０７での$i１２０と$j１２１との内容を、図１３は、ヒットした結果文書群を整形出力するステップＳ１０８での$i１３０と$j１３１との内容を、それぞれ示している。XQueryの特性として、対象を絞り込みながら検索を行うことができ、さらに絞り込んだ検索対象のそれぞれについて、新たな変数を追加したり、変数の値で条件にマッチするもののみを抽出する処理ができる。したがって、上記のように検索条件を複雑にすることができる。ヒットした結果文書群を整形出力するステップＳ１０８の内容出力は、親字に変換された検索語を含む変数に検索対象を限定するステップＳ１０７で指定された式が成立する結果の組のみに適用されるため、例示では、異体字をすべて親字に置換した$j１１１の中で、検索語  "一郎"  にマッチしたものに相当する、$i１２０のノード（要素に含まれるデータ）が指定されることになる。
【００２０】
図１４は、通常検索クエリの説明図である。ＸＭＬ文書の通常検索では、特に親字タグを意識することなく、検索クエリ１４０を設定する。つまり、"「図２１のＧ１１の文字」田"を検索するときに、異体字検索を行わない通常検索では、<name>要素に"「図２１のＧ１１の文字」田"を含むものを容易に検索できる。図８の検索結果と比較したら分かるように、通常検索では、検索語に完全に一致した検索結果１４１だけが返される。
【００２１】
さて、１つの検索語に複数の異体字が入っていた場合は、後述するＡＮＤ検索を行う。図１６は、本発明による１つの検索語に複数の異体字が入ったクエリ１６０の説明図である。たとえば、検索語"高橋"での検索は、"高" "橋"共に異体字を持つために、親字タグで要素限定をするときに、複数の親字タグを記述し、ＡＮＤで接続する。
【００２２】
以上、検索語が一つの場合について説明したが、次に、複数の検索語を使用した異体字検索の場合を説明する。このとき、異体字処理の手順は、検索語が一つの場合と同等である。図１５は、本発明による複数の検索語をＡＮＤで結んだ場合のクエリ形成１５０の説明図である。たとえば、検索語が"高橋" ＡＮＤ "一郎"とし、<name>に"高橋"と"一郎"を共に含む要素の異体字検索は、次のような手順で処理を行う。検索語を異体字処理して、「高」と「橋」と「郎」が、異体字処理対象であることを確定した後に、以下の複数検索語異体字ＡＮＤ検索クエリ構成発行処理を行う。
（１）親字タグを含む要素に、検索対象を限定する。（ステップＳ１００）
for $i in /meibo/member[./name/OYA[@p="高"] and ./name/OYA[@p="橋"] a          nd ./name/OYA[@p="郎"]]
（２）文字置換用の変数を設定し、内容をname要素の文字列とする。（ステップＳ１０１    ）
let $j := $i/name
（３）上記の検索対象文字列の異体字を親字に置換する。（ステップＳ１０４）すべての    異体字グループ中に存在する異体字の数だけ繰り返す。（ステップＳ１０５）（ステ    ップＳ１０６）
let $j := replace（$j,"「図２１のＧ１１の文字」","高"）
let $j := replace（$j,"「図２１のＧ１２の文字」","橋"）
let $j := replace（$j,"「図２１のＧ１４の文字」","郎"）
（４）親字に変換された検索語を含む要素に、検索対象を限定する。ここでは２つの検索    語（"高橋""一郎"）をandでかける。（ステップＳ１０７）
where $j[contains（.,"高橋"）][contains（.,"一郎"）]
（５）検索結果から、ヒットした結果文書群を整形出力する。（ステップＳ１０８）
return（
<member>
<id>[$i/id/text（）]</id>
<name>[$i/name/text（）]</name>
<address>[$i/address/text（）]</address>
</member>
）
この複数検索語異体字ＡＮＤ検索クエリ１５０で、図５のＸＭＬデータベースを検索すると整形した結果１５１が返る。
【００２３】
図１７は、本発明による複数の検索語をＯＲで結んだ場合のクエリの説明図である。たとえば、<name>に"鴎外"または"曽根"を含むデータの異体字検索は、次のような手順で処理を行う。検索語を異体字処理して、"鴎"と"曽"が、異体字処理対象であることを確定した後に、以下の複数検索語異体字ＯＲ検索クエリ構成発行処理を行う。
（１）親字タグを含む要素に、検索対象を限定する。（ステップＳ１００）
for $i in /meibo/member[./name/OYA[@p="鴎"] or ./name/OYA[@p="曽"]]
（２）文字置換用の変数を設定し、内容をname要素の文字列とする。（ステップＳ１０１）
let $j := $i/name
（３）検索対象の文字列の異体字を親字に置換する。（ステップＳ１０４）すべての異体    字グループ中に存在する異体字の数だけ繰り返す。（ステップＳ１０５）（ステップ    Ｓ１０６）
let $j := replace（$j,"「図２１のＧ１３の文字」","鴎"）
let $j := replace（$j,"曾","曽"）
（４）親字に変換された検索語を含む要素に、検索対象を限定する。ここでは２つの検索    語をorでかける。（ステップＳ１０７）
where $j[contains（.,"鴎外"） or contains（.,"曽根"）]
（５）検索結果から、ヒットした結果文書群を整形出力する。（ステップＳ１０８）
return（
<member>
<id>[$i/id/text（）]</id>
<name>[$i/name/text（）]</name>
<address>[$i/address/text（）]</address>
</member>
）
この複数検索語異体字ＯＲ検索クエリ１７０で、図５のＸＭＬデータベースを検索すると整形した結果１７１が返る。
【００２４】
このように、ＸＭＬデータベースは、ＸＭＬ文書のタグ構造を保持して文書を格納して、タグの親子関係やタグ中の属性を指定した検索を高速に行うことができる。
【００２５】
以上説明した実施例の中で、登録処理でのＸＭＬの解析はパーサーの代わりに、同様の結果が得られる文字列処理を実施しても良い。また、親字タグは、異体字の直後でなく、文字列の末尾等のように、文字列と同階層にあればよい。更に、異体字に親字タグを付加するという方法を説明したが、その代わりに、異体字を親字と置き換えて、置き換えた親字に異体字タグを付加する方法でも、同様の効果が得られるので、どちらの方法を採ってもよい。また親字タグの属性として記述する親字の文字コードは、属性値ではなく親字タグの内容文字列として記述してもよい。
【００２６】
（第二実施形態）
本発明の第二実施形態として、ＸＭＬデータベースを使わずに、単純なリポジトリに登録したＸＭＬ文書から、ＸＭＬ文書解析のためのパーサーを利用して、指定の文書の異体字検索を行うしくみを説明する。図１８は、本発明によるＸＭＬ文書をリポジトリに登録するＸＭＬ異体字検索システムの全体図である。データベース登録部の代わりに、文書保管・読出部１８５であり、記憶部のＸＭＬデータベースの代わりに、リポジトリ１８６ａであり、クエリ構成部とクエリ発行部の代わりに、処理ノード取得部１９１と異体字変換部１９２と文字列検索部１９３であることを除いて、ＸＭＬデータベース・システムと同じ構成である。文書保管・読出部１８１は、パーサーを用いて、ＸＭＬ文書をリポジトリ１８６ａに登録保管したり、リポジトリ１８６ａからＸＭＬ文書を検索して読出す。処理ノード取得部１９１は、親字タグに相当するノードの上位ノードである親ノードの文字列を被検索文字列として取得する。異体字変換部１９２は、検索文字列中の異体字を全て親字に変換する。文字列検索部１９３は、親字変換済み検索語を検索する。ここで、ノードとは、XMLのツリー構造の１つの分岐点をいう。たとえば、図５を例にすれば、name要素のノードは文字列および親字タグ<OYA/>で構成される。また、親ノードとは、注目しているノードの１つ上の階層のノードを指し、図５の例ではOYA要素の親ノードはnameノードになる。
【００２７】
図１９は、本発明によるＸＭＬ文書をリポジトリに登録するときのフローチャートである。異体字処理の手順は、ＸＭＬデータベース利用のときと、全く同様である。ただし、全ての異体字処理が終了したら、ステップＳ１９９では、パーサーを用いて、異体字処理結果のＸＭＬ文書をファイルに書き出し、これをリポジトリに登録する。
【００２８】
図２０は、本発明によるリポジトリに登録されたＸＭＬ文書の異体字検索のフローチャートである。処理手順のうち、検索語の異体字処理に関しては、ＸＭＬデータベース利用のときと同様であるので、リポジトリから文書を取得するところから説明する。
（１）検索語の異体字処理は、図６のステップＳ６０〜ステップＳ６８に同じ。
（２）被検索文書をリポジトリから取得し、パーサーで解析する。（ステップＳ２００）
（３）処理すべき異体字グループがあったかどうか確認する。（ステップＳ２０１）異体    字グループがなかった場合は、通常検索と同じ処理、つまり、処理するノードを選択    し、文字列のマッチングを実施する。
（４）1つの異体字グループの親字を取得する。（ステップＳ２０２）
（５）処理すべきノード以下で、取得した親字を属性に持つタグ<OYA/>を選択する。（ス    テップＳ２０３）
（６）タグ<OYA/>があれば、その親ノードの文字列を被検索文字列として取得する。（ス    テップＳ２０４）
（７）処理する異体字グループの異体字を1つ選択し（ステップＳ２０５）、被検索文字    列中の異体字を全て親字に変換する。（ステップＳ２０６）
（８）他に異体字があれば、（７）に戻り処理を続ける。（ステップＳ２０７）
（９）他に処理すべき異体字グループがあれば、（４）に戻り処理を続ける。（ステップ    Ｓ２０８）
（１０）全ての異体字の処理が終了したので、被検索文字列中で、親字変換済み検索語を    検索する。（ステップＳ２１０）マッチした場合はそのノードを検索ヒットとして出    力する。（ステップＳ２１１）
【００２９】
以上詳しく説明したように、第一実施形態によれば、ＸＭＬ文書をＸＭＬデータベースに登録した異体字検索システムは、異体字検索の用途に登録するＸＭＬ文書データの構築が容易になると同時に、検索が高速なために異体字検索が効率的に行えて、更に、異体字入力装置を持たない検索端末からでも制限を受けることなく異体字検索作業が可能となる。
【００３０】
また、第二実施形態によれば、ＸＭＬ文書をリポジトリに登録した異体字検索システムは、第一実施形態に比べて、より簡便な異体字検索システムを提供して、異体字検索の用途に登録するＸＭＬ文書データの構築を容易にすると同時に、検索者が、検索語に特別な異体字処理を施さなくても、異体字検索が簡便に行えて、更に、異体字入力装置を持たない検索端末からでも制限を受けることなく異体字検索作業が可能となる。
【図面の簡単な説明】
【００３１】
【図１】本発明によるＸＭＬ異体字検索システムの全体図
【図２】異体字辞書の説明図
【図３】本発明による文書登録のフローチャート
【図４】本発明による登録するＸＭＬ文書の例
【図５】本発明による親字タグを付加したＸＭＬデータベース登録文書の例
【図６】本発明による異体字検索を説明するフローチャート
【図７】本発明による異体字検索クエリの動作を説明するフローチャート
【図８】本発明による異体字検索クエリの実施例
【図９】本発明による検索クエリの処理イメージ（１）
【図１０】本発明による検索クエリの処理イメージ（２）
【図１１】本発明による検索クエリの処理イメージ（３）
【図１２】本発明による検索クエリの処理イメージ（４）
【図１３】本発明による検索クエリの処理イメージ（５）
【図１４】通常検索クエリの説明図
【図１５】本発明による複数の検索語をＡＮＤで結んだ場合のクエリ形成の説明図
【図１６】本発明による１つの検索語に複数の異体字が入ったクエリ形成の説明図
【図１７】本発明による複数の検索語をＯＲで結んだ場合のクエリ形成の説明図
【図１８】本発明によるＸＭＬ文書をリポジトリに登録するＸＭＬ異体字検索システムの全体図
【図１９】本発明によるＸＭＬ文書をリポジトリに登録するときのフローチャート
【図２０】本発明によるリポジトリに登録されたＸＭＬ文書の異体字検索のフローチャート
【図２１】異体字のフォントパターン対応
【符号の説明】
【００３２】
１０  ＸＭＬ異体字検索システム
１８０  ＸＭＬ異体字検索システム
１１  文書入力部
１８１  文書入力部
１１ａ  登録文書
１８１ａ  登録文書
１２  タグ解析部
１８２  タグ解析部
１３  文字列解析部
１８３  文字列解析部
１４  親字タグ発生部
１８４  親字タグ発生部
１５  データベース登録部
１６ａ  ＸＭＬデータベース
１６ｂ  異体字辞書
１８６ｂ  異体字辞書
１７  制御部
１８７  制御部
１８  検索語入力部
１８８  検索語入力部
１８ａ  検索語
１８８ａ  検索語
１９  親字取得部
１８９  親字取得部
２０  異体字グループ取得部
１９０  異体字グループ取得部
２１  クエリ構成部
２２  クエリ発行部
３１  異体字
３２  親字
３３  異体字グループ
５１  親字タグ
５２  親字タグ
５３  親字タグ
１８５  文書保管・読出部
１９１  処理ノード取得部
１９２  異体字変換部
１９３  文字列検索部
【図１】
2005346537.tif 000003
【図２】
2005346537.tif 000004
【図３】
2005346537.tif 000005
【図４】
2005346537.tif 000006
【図５】
2005346537.tif 000007
【図６】
2005346537.tif 000008
【図７】
2005346537.tif 000009
【図８】
2005346537.tif 000010
【図９】
2005346537.tif 000011
【図１０】
2005346537.tif 000012
【図１１】
2005346537.tif 000013
【図１２】
2005346537.tif 000014
【図１３】
2005346537.tif 000015
【図１４】
2005346537.tif 000016
【図１５】
2005346537.tif 000017
【図１６】
2005346537.tif 000018
【図１７】
2005346537.tif 000019
【図１８】
2005346537.tif 000020
【図１９】
2005346537.tif 000021
【図２０】
2005346537.tif 000022
【図２１】
2005346537.tif 000023