(57)【要約】【課題】様々な構造の文書を抽出対象文書とする場合でも、指定部分を精度良く抽出する。【解決手段】単一要素ノード識別子生成部１４が、ツリー構造に変換された参照文書について、指定された要素ノードからツリー構造のルートノードまでの各要素ノードについて、要素ノード名、属性ノード名とその属性ノードの値、及び要素ノードをルートノードとするサブツリーに含まれるテキストノードの値の組み合わせを生成し、その組み合わせとツリー構造の同一階層におけるその組み合わせの順番を示す数値索引を生成し、要素ノード識別子生成部１６が、組み合わせと数値索引との組を、ルートノードから指定された要素ノードまで連鎖させた文字列を、指定された要素ノードの要素ノード識別子として生成する。【選択図】図５
2013218627.tif 000002
【特許請求の範囲】
【請求項１】
部分指定手段と、抽出手段とを含む構造化文書からの情報抽出装置における構造化文書からの情報抽出方法であって、
前記部分指定手段が、
ツリー構造の参照文書について、指定部分に対応する要素ノードから前記ツリー構造のルートノードまでの各要素ノードについて、該要素ノードの要素ノード名、該要素ノードに属する属性ノードの属性ノード名と該属性ノードの値、及び該要素ノードをルートノードとするサブツリーに含まれるテキストノードの値の組み合わせから単一要素ノード識別子を生成し、
前記単一要素ノード識別子と前記ツリー構造の同一階層における該単一要素ノード識別子の順番を示す数値索引を生成し、
前記単一要素ノード識別子と前記数値索引との組を、前記ツリー構造のルートノードから前記指定部分に対応する要素ノードまで連鎖させた文字列を、前記指定部分に対応する要素ノードの要素ノード識別子として生成し、
生成した要素ノード識別子に、前記指定部分を識別するための指定部分ＩＤを対応付け、
前記抽出手段が、
ツリー構造の抽出対象文書から、指定部分を示す指定部分ＩＤに対応付けられた要素ノード識別子と同一の要素ノード識別子を持つ要素ノードを特定し、特定した要素ノードに対応する前記抽出対象文書の部分を抽出する
構造化文書からの情報抽出方法。
【請求項２】
前記部分指定手段は、複数の参照文書に基づいて生成された複数の要素ノード識別子について、各要素ノード識別子を構成する単一要素ノード識別子を比較し、共通しない前記要素ノード名、前記属性ノード名と該属性ノードの値、及び前記テキストノードの値を、前記単一要素ノード識別子と組の数値索引と共に除外して、前記要素ノード識別子を生成する請求項１記載の構造化文書からの情報抽出方法。
【請求項３】
前記部分指定手段は、各要素ノードについて前記単一要素ノード識別子を生成する際に、該要素ノードをルートノードとするサブツリーに含まれるテキストノードの値から、該要素ノードの直下にないテキストノードの値を除外する請求項１または請求項２記載の構造化文書からの情報抽出方法。
【請求項４】
前記部分指定手段は、要素ノード識別子を構成する単一要素ノード識別子をリーフから順に１つずつ追加して連結することにより生成される識別子であって、該要素ノード識別子を用いて特定される指定部分と同じ部分を特定する識別子のうち、最も短い識別子を縮約された要素ノード識別子として生成する請求項１〜請求項３のいずれか１項記載の構造化文書からの情報抽出方法。
【請求項５】
ツリー構造の参照文書について、指定部分に対応する要素ノードから前記ツリー構造のルートノードまでの各要素ノードについて、該要素ノードの要素ノード名、該要素ノードに属する属性ノードの属性ノード名と該属性ノードの値、及び該要素ノードをルートノードとするサブツリーに含まれるテキストノードの値の組み合わせから単一要素ノード識別子を生成し、前記単一要素ノード識別子と前記ツリー構造の同一階層における該単一要素ノード識別子の順番を示す数値索引を生成し、前記単一要素ノード識別子と前記数値索引との組を、前記ツリー構造のルートノードから前記指定部分に対応する要素ノードまで連鎖させた文字列を、前記指定部分に対応する要素ノードの要素ノード識別子として生成し、生成した要素ノード識別子に、前記指定部分を識別するための指定部分ＩＤを対応付ける部分指定手段と、
ツリー構造の抽出対象文書から、指定部分を示す指定部分ＩＤに対応付けられた要素ノード識別子と同一の要素ノード識別子を持つ要素ノードを特定し、特定した要素ノードに対応する前記抽出対象文書の部分を抽出する抽出手段と、
を含む構造化文書からの情報抽出装置。
【請求項６】
コンピュータに、請求項１〜請求項４のいずれか１項記載の構造化文書からの情報抽出方法の各手順を実行させるための構造化文書からの情報抽出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書からの情報抽出方法、装置、及びプログラムに係り、特に、ＨＴＭＬ等の構造化文書から、事前に所望の部分を指定し、類似した構造を有する別の構造化文書から、指定した部分を特定して抽出する構造化文書からの情報抽出方法、装置、及びプログラムに関する。
【背景技術】
【０００２】
ウェブ検索システム等において、ＥＣサイト等におけるＨＴＭＬ等の構造化文書の集合から、商品名や価格等の商品情報が記載されている部分を特定し、抽出して索引化することで、的確な検索結果を表示したいというニーズがある。
【０００３】
また、日々更新されるＨＴＭＬ等の構造化文書から、一部分だけを指定したいというニーズがある。例えば、ユーザが毎日見るウェブサイトから注目部分だけを集めて、スクラップすることで、必要な情報だけを容易に一覧することができる。また、そのスクラップされた部分の情報源が日々更新される場合、更新された文書から指定した部分を再度スクラップすることで、常に最新の情報を一覧できる。
【０００４】
このようなニーズに応えるために、ＨＴＭＬタグと書式属性との組み合わせによって、構造化文書から必要な部分を特定する方法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−３８２６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、参照文書を用いて、ＨＴＭＬタグと書式属性との組み合わせとして事前に指定した部分を、参照文書と類似した構造を有する抽出対象文書において正しく特定できない場合がある。以下に具体例を挙げて説明する。
【０００７】
図１に参照文書とする構造化文書の例を示す。図１は構造化文書の記述言語として一般的なＨＴＭＬを用いて記述した例である。ＤＩＶノードにはこのノードが文書中で特別な意味を持つノードであることを意味するｉｄ属性が、ＵＬノードにはこのノードのレイアウトを指示するｃｌａｓｓ属性が記述されている。
【０００８】
図２は、図１の構造化文書をツリー構造に変換したものである。ＤＩＶノード及びＵＬノードにはそれぞれｉｄ属性、ｃｌａｓｓ属性に対応する属性ノードが属しており、これを＃ａｔｔｒｉｂｕｔｅとして図示した。ＤＩＶノードに属する属性ノードのノード名は“ｉｄ”であり、ノード値は“ｌｉｓｔ”である。また、ＵＬノードに属する属性ノードのノード名は“ｃｌａｓｓ”であり、ノード値は“ｎｏｒｍａｌ”である。また、４つあるＳＰＡＮノード及び同じく４つあるＢノードにはテキストノードが属しており、これを＃ｔｅｘｔとして図示した。１番目のＳＰＡＮノードに属するテキストノードのノード値は“電電一郎”、１番目のＢノードに属するテキストノードのノード値は“氏名：”である。
【０００９】
構造化文書における要素ノードを指定する方式としてＸＰａｔｈが用いられる（参考文献１："XPath and XPointer" John E. Simpson, O'Reilly & Associates, Inc. USA, Aug., 2002.）。図１の氏名、都道府県、市区町村、郵便番号の各値（電電一郎、神奈川県、横須賀市、２３９−０８４７）に対応するＸＰａｔｈは様々な記述が可能だが、特許文献１の方式をＸＰａｔｈを用いて表記すれば以下のようになる。
【００１０】
氏名：/html[1]/body[1]/div[@id='list'][1]/ul[@class='normal'[1]/li[1]/span[1]
都道府県：/html[1]/body[1]/div[@id='list'][1]/ul[@class='normal'[1]/li[1]/span[2]
市区町村：/html[1]/body[1]/div[@id='list'][1]/ul[@class='normal'[1]/li[1]/span[3]
郵便番号：/html[1]/body[1]/div[@id='list'][1]/ul[@class='normal'[1]/li[1]/span[4]
【００１１】
上記のＸＰａｔｈを、抽出対象文書である図３の構造化文書へ適用すると、氏名、都道府県、市区町村、郵便番号として以下の各値が抽出される。
【００１２】
氏名：電電二郎
都道府県：１８０−８５８５
市区町村：東京都
郵便番号：武蔵野市
【００１３】
この例では、図１では４行目にあった郵便番号の行が、図３では２行目にあるために、１行目の氏名以外については、正しい値が抽出されない。
【００１４】
同じように、上記のＸＰａｔｈを、抽出対象文書である図４の構造化文書へ適用すると、氏名、都道府県、市区町村、郵便番号として以下の各値が抽出される。
【００１５】
氏名：電電三郎
都道府県：日本電信電話株式会社
市区町村：１８０−８５８５
郵便番号：東京都
【００１６】
この例では、図４の２行目に会社名の行が挿入されたために、１行目の氏名以外については、正しい値が抽出されない。
【００１７】
これらの例から分かるように、予め指定した部分を抽出しようとすると、抽出対象文書において、氏名、都道府県、市区町村、郵便番号がこの順番で記述されている必要がある。このように、従来技術が適用可能な抽出対象文書の構造には、強い制約があり、様々な構造の文書を抽出対象文書とする場合には、指定部分の抽出精度が低下する、という問題がある。
【００１８】
本発明は、上記問題点に鑑みて成されたものであり、様々な構造の文書を抽出対象文書とする場合でも、指定部分を精度良く抽出することができる構造化文書からの情報抽出方法、装置、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、本発明の構造化文書からの情報抽出方法は、部分指定手段と、抽出手段とを含む構造化文書からの情報抽出装置における構造化文書からの情報抽出方法であって、前記部分指定手段が、ツリー構造の参照文書について、指定部分に対応する要素ノードから前記ツリー構造のルートノードまでの各要素ノードについて、該要素ノードの要素ノード名、該要素ノードに属する属性ノードの属性ノード名と該属性ノードの値、及び該要素ノードをルートノードとするサブツリーに含まれるテキストノードの値の組み合わせから単一要素ノード識別子を生成し、前記単一要素ノード識別子と前記ツリー構造の同一階層における該単一要素ノード識別子の順番を示す数値索引を生成し、前記単一要素ノード識別子と前記数値索引との組を、前記ツリー構造のルートノードから前記指定部分に対応する要素ノードまで連鎖させた文字列を、前記指定部分に対応する要素ノードの要素ノード識別子として生成し、生成した要素ノード識別子に、前記指定部分を識別するための指定部分ＩＤを対応付け、前記抽出手段が、ツリー構造の抽出対象文書から、指定部分を示す指定部分ＩＤに対応付けられた要素ノード識別子と同一の要素ノード識別子を持つ要素ノードを特定し、特定した要素ノードに対応する前記抽出対象文書の部分を抽出する方法である。
【００２０】
これにより、要素ノードの要素ノード名、要素ノードに属する属性ノードの属性ノード名とその属性ノードの値が一部不定である場合でも、当該要素ノードに含まれるテキストノードの値を手掛かりとして指定部分を抽出することができるため、様々な構造の文書を抽出対象文書とする場合でも、指定部分を精度良く抽出することができる。
【００２１】
また、前記部分指定手段は、複数の参照文書に基づいて生成された複数の要素ノード識別子について、各要素ノード識別子を構成する単一要素ノード識別子を比較し、共通しない前記要素ノード名、前記属性ノード名と該属性ノードの値、及び前記テキストノードの値を、前記単一要素ノード識別子と組の数値索引と共に除外して、前記要素ノード識別子を生成することができる。これにより、複数の参照文書においてそれぞれ指定した部分から、必要な部分を指示する手掛かりのみを用いて、要素ノード識別子を記述することが可能となる。
【００２２】
また、前記部分指定手段は、各要素ノードについて前記単一要素ノード識別子を生成する際に、該要素ノードをルートノードとするサブツリーに含まれるテキストノードの値から、該要素ノードの直下にないテキストノードの値を除外することができる。これにより、指定部分の抽出精度を低下させずに、要素ノード識別子を短い文字列で記述することが可能となる。
【００２３】
また、前記部分指定手段は、要素ノード識別子を構成する単一要素ノード識別子をリーフから順に１つずつ追加して連結することにより生成される識別子であって、該要素ノード識別子を用いて特定される指定部分と同じ部分を特定する識別子のうち、最も短い識別子を縮約された要素ノード識別子として生成することができる。これにより、指定部分の抽出精度を低下させずに、要素ノード識別子を短い文字列で記述することが可能となる。
【００２４】
また、本発明の構造化文書からの情報抽出装置は、ツリー構造の参照文書について、指定部分に対応する要素ノードから前記ツリー構造のルートノードまでの各要素ノードについて、該要素ノードの要素ノード名、該要素ノードに属する属性ノードの属性ノード名と該属性ノードの値、及び該要素ノードをルートノードとするサブツリーに含まれるテキストノードの値の組み合わせから単一要素ノード識別子を生成し、前記単一要素ノード識別子と前記ツリー構造の同一階層における該単一要素ノード識別子の順番を示す数値索引を生成し、前記単一要素ノード識別子と前記数値索引との組を、前記ツリー構造のルートノードから前記指定部分に対応する要素ノードまで連鎖させた文字列を、前記指定部分に対応する要素ノードの要素ノード識別子として生成し、生成した要素ノード識別子に、前記指定部分を識別するための指定部分ＩＤを対応付ける部分指定手段と、ツリー構造の抽出対象文書から、指定部分を示す指定部分ＩＤに対応付けられた要素ノード識別子と同一の要素ノード識別子を持つ要素ノードを特定し、特定した要素ノードに対応する前記抽出対象文書の部分を抽出する抽出手段と、を含んで構成することができる。
【００２５】
また、本発明の構造化文書からの情報抽出プログラムは、コンピュータに、上記の構造化文書からの情報抽出方法の各手順を実行させるためのプログラムである。
【発明の効果】
【００２６】
以上説明したように、本発明の構造化文書からの情報抽出方法、装置、及びプログラムによれば、要素ノードの要素ノード名、要素ノードに属する属性ノードの属性ノード名とその属性ノードの値が一部不定である場合でも、当該要素ノードに含まれるテキストノードの値を手掛かりとして指定部分を抽出することができるため、様々な構造の文書を抽出対象文書とする場合でも、指定部分を精度良く抽出することができる、という効果が得られる。
【図面の簡単な説明】
【００２７】
【図１】構造化文書の一例を示す図である。
【図２】構造化文書をツリー構造に変換した一例を示す図である。
【図３】構造化文書の他の例を示す図である。
【図４】構造化文書の他の例を示す図である。
【図５】本発明の実施の形態の構造化文書からの情報抽出装置の機能的構成を示すブロック図である。
【図６】本発明の実施の形態の情報抽出装置における部分指定処理の流れを示すフローチャートである。
【図７】二つの要素ノード識別子の比較を説明するための図である。
【図８】要素ノード識別子の縮約を説明するための図である。
【図９】本発明の実施の形態の情報抽出装置における抽出処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２８】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００２９】
＜装置構成＞
【００３０】
本発明の実施の形態に係る構造化文書からの情報抽出装置１０（以下、単に「情報抽出装置１０」ともいう）は、ＣＰＵ（Central Processing Unit）と、ＲＡＭ（Random Access Memory）と、後述する部分指定処理及び抽出処理を含む構造化文書からの情報抽出処理ルーチンを実行するためのプログラムを記憶したＲＯＭ（Read Only Memory）とを備えたコンピュータで構成されている。このコンピュータは、機能的には、図１に示すように、参照文書入力部１１と、ツリー変換部１２と、部分指定部１４と、抽出対象文書入力部１８と、抽出部１９と、抽出結果出力部２０とを含んだ構成で表すことができる。
【００３１】
参照文書入力部１１は、情報抽出装置１０にＨＴＭＬファイルとして入力された構造化文書である参照文書を受け付け、ツリー変換部１２へ受け渡す。
【００３２】
抽出対象文書入力部１８は、情報抽出装置１０にＨＴＭＬファイルとして入力された構造化文書である抽出対象文書、及び後述する指定部分ＩＤを含む抽出要求を受け付け、ツリー変換部１２へ受け渡す。
【００３３】
ツリー変換部１２は、入力された参照文書または抽出対象文書の文書構造を解析し、ツリー構造を有するデータに変換する。ツリー構造に変換された参照文書は、抽出ノード指定部１３へ受け渡され、ツリー構造に変換された抽出対象文書は、抽出部１９に受け渡される。
【００３４】
抽出ノード指定部１３は、要素ノード識別子を生成すべき要素ノードの指定を受け付ける。要素ノードの指定は、例えば、ユーザが図示しないマウスやキーボード等の入力装置を用いて、抽出したい部分として参照文書において指定する部分（以下、「指定部分」という）に対応する要素ノードを指定することにより行う。
【００３５】
部分指定部１４は、さらに、単一要素ノード識別子生成部１５と、要素ノード識別子生成部１６と、要素ノード識別子縮約部１７とを含んだ構成で表すことができる。
【００３６】
単一要素ノード識別子生成部１５は、ツリー構造に変換された参照文書において、指定された要素ノードを起点として、指定された要素ノードからツリー構造のルートノードまでの各要素ノードについて、要素ノードの要素ノード名、要素ノードに属する属性ノードの属性ノード名と属性ノードの値、及び要素ノードをルートノードとするサブツリーに含まれるテキストノードの値を抽出し、これらの組み合わせを生成する。また、単一要素ノード識別子生成部１５は、上記の組み合わせとツリー構造の同一階層におけるその組み合わせの順番を示す数値索引を生成し、上記の組み合わせとその数値索引とを組にした単一要素ノード識別子を生成する。
【００３７】
さらに、単一要素ノード識別子生成部１５は、単一要素ノード識別子の生成過程において、抽出されたテキストノードの値をテキストノード値記憶部２１に記憶し、これを参照することにより、後述する新たなテキストノード値についてのみ、単一要素ノード識別子として追加する。
【００３８】
要素ノード識別子生成部１６は、参照文書を表すツリーのルートノードから指定された要素ノードまでの各要素ノードについて、単一要素ノード識別子生成部１５で生成された単一要素ノード識別子を連鎖させた文字列を、指定された要素ノードについての要素ノード識別子として生成する。
【００３９】
要素ノード識別子縮約部１７は、複数の参照文書に基づいて生成された複数の要素ノード識別子について、各要素ノード識別子を構成する単一要素ノード識別子を比較し、共通しない要素ノード名、属性ノード名と属性ノードの値、及びテキストノードの値を、単一要素ノード識別子と組の数値索引と共に除外して、要素ノード識別子を縮約する。
【００４０】
また、要素ノード識別子縮約部１７は、要素ノード識別子を構成する単一要素ノード識別子をリーフから順に１つずつ追加して連結することにより生成される縮約識別子であって、要素ノード識別子を用いて特定される指定部分と同じ部分を特定する縮約識別子のうち、最も短い縮約識別子を縮約された要素ノード識別子として生成する。
【００４１】
さらに、要素ノード識別子縮約部１７は、生成及び縮約した要素ノード識別子を、指定部分を識別するための指定部分ＩＤと対応付けて、要素ノード識別子記憶部２２に記憶する。
【００４２】
抽出部１９は、要素ノード識別子記憶部２２から、指定部分を示す指定部分ＩＤに対応付けられた要素ノード識別子を取得し、ツリー構造に変換された抽出対象文書において、取得した要素ノード識別子と同一の要素ノード識別子を持つ要素ノードを特定し、特定した要素ノードに含まれるテキストノードの値を抽出する。
【００４３】
抽出結果出力部２０は、抽出部１９により抽出されたテキストノードの値を、抽出結果として出力する。
【００４４】
＜情報抽出装置の作用＞
【００４５】
次に、本実施の形態に係る情報抽出装置１０の作用について説明する。本装置に参照文書が入力されると、図６に示す部分指定処理を実行する。また、本装置に抽出対象文書及び抽出要求が入力されると、図９に示す抽出処理を実行する。以下、各処理について詳述する。
【００４６】
まず、部分指定処理（図６）について説明する。ここでは、図１及び図２に示すＨＴＭＬファイルを参照文書とする場合について説明する。
【００４７】
ステップ１００で、参照文書入力部１１が、入力された参照文書であるＨＴＭＬファイルを受け付ける。ここでは、図１に示すＨＴＭＬファイルを受け付けたものとする。次に、ステップ１０２で、ツリー変換部１２が、上記ステップ１００で受け付けた参照文書の文書構造を解析し、ツリー構造を有するデータに変換する。ここでは、前述のように、図２に示すようなツリー構造に変換される。
【００４８】
次に、ステップ１０４で、抽出ノード指定部１３が、要素ノード識別子を生成すべき要素ノードの指定を受け付ける。ここでは、都道府県の値を指定部分として、この指定部分に対応する要素ノードであるＳＰＡＮノードが指定されるものとする。
【００４９】
次に、ステップ１０６で、上記ステップ１０４で指定された要素ノードを処理要素ノードに設定し、以下のステップ１０８〜１１２の処理で、処理要素ノードについての単一要素ノード識別子を生成する。
【００５０】
詳細には、ステップ１０８で、単一要素ノード識別子生成部１５が、処理要素ノード（ここでは、指定された要素ノード）のノード名を抽出する。ここでは、“ＳＰＡＮ”が抽出される。また、単一要素ノード識別子生成部１５が、処理要素ノードの属性ノード名とその値を抽出する。ここでは、処理要素ノードに属する属性ノードは存在しないため、該当するノード名及び値は抽出されない。また、単一要素ノード識別子生成部１５が、処理要素ノードをルートノードとするサブツリーに含まれるテキストノードの値を抽出する。ここでは、“神奈川県”が抽出される。
【００５１】
次に、ステップ１１０で、単一要素ノード識別子生成部１５が、上記ステップ１０８で抽出した要素ノード名、属性ノード名と値、テキストノードの値の組み合わせが、ツリーの同一階層において、何番目に出現するかを判定し、数値索引とする。ここでは、“ＳＰＡＮ”と“神奈川県”との組み合わせはただ一つなので、数値索引は“１”となる。
【００５２】
次に、ステップ１１２で、単一要素ノード識別子生成部１５が、上記ステップ１０８で抽出した組み合わせと、上記ステップ１１０で生成した数値索引とを連結して、処理要素ノードの単一要素ノード識別子を生成する。ＸＰａｔｈを用いて、ここで生成された単一要素ノード識別子を記述すると、
/span[contains(.,'神奈川県')][1]
となる。
【００５３】
次に、ステップ１１４で、現在の処理要素ノードが、上記ステップ１０２で変換された参照文書のツリー構造のルートノードか否かを判定する。処理要素ノードがルートノードではない場合には、ステップ１１６へ移行し、ルートノードの場合には、ステップ１１８へ移行する。ここでは、処理要素ノードはツリー構造のルートノードではないため、ステップ１１６へ移行し、現在の処理要素ノードの親ノードを処理要素ノードに設定して、ステップ１０８へ戻る。ここでは、ＬＩノードが処理要素ノードに設定される。
【００５４】
ＬＩノードを処理要素ノードとして、上記ステップ１０８〜１１２と同様の処理により単一要素ノード識別子を生成する。この場合、処理要素ノードをルートノードとするサブツリーに含まれるテキストノードは二つあり、その値は“都道府県”及び“神奈川県”である。繰り返し処理における本ステップでは、テキストノードの新しい値のみを抽出する。この例では、“神奈川県”は、現在の処理要素ノードの子ノードであるＳＰＡＮノードを処理要素ノードとして処理した１つ前のステップ１０８において、既に抽出済みの値であるので、ここでは“都道府県”のみが抽出される。ここで生成された単一要素ノード識別子は、
/li[contains(.,'都道府県')][1]
となる。
【００５５】
さらに、ステップ１１４で処理要素ノードがツリー構造のルートノードであると判定されるまで、上記ステップ１０８〜１１６の処理を繰り返すことで、以下の単一要素ノード識別子が順に生成される。
【００５６】
/ul[contains(@class,'normal')][contains(.,'239-0847')][contains(.,'市区町村:')][contains(.,'横須賀市')][contains(.,'氏名:')][contains(.,'郵便番号:')][contains(.,'電電一郎')][1]
/div[@id='list'][1]
/body[1]
/html[1]
【００５７】
次に、ステップ１１８で、要素ノード識別子生成部１６が、上記ステップ１１２で生成された単一要素ノード識別子をツリー構造のルートノードから順に連鎖させた文字列を、上記ステップ１０４で指定した要素ノードに対する要素ノード識別子として生成する。ここでは、下記（１）式に示す要素ノード識別子が生成される。
【００５８】
/html[1]/body[1]/div[@id='list'][1]/ul[contains(@class,'normal')][contains(.,'239-0847')][contains(.,'市区町村:')][contains(.,'横須賀市')][contains(.,'氏名:')][contains(.,'郵便番号:')][contains(.,'電電一郎')][1]/li[contains(.,'都道府県:')][1]/span[contains(.,'神奈川県')][1]      ・・・（１）
【００５９】
次に、ステップ１２０で、次の参照文書が入力されたか否かを判定し、入力された場合には、ステップ１００へ戻り、入力されていない場合には、ステップ１２２へ移行する。ここでは、図３のＨＴＭＬファイルが入力されたものとして、ステップ１００へ戻る。図１のＨＴＭＬファイルを用いて都道府県の値を指定した場合と同様に、上記ステップ１００〜１１８の処理を行うことで、下記（２）式に示す要素ノード識別子が生成される。
【００６０】
/html[1]/body[1]/div[@id='list'][1]/ul[contains(@class,'normal')][contains(.,'市区町村:')][contains(.,'武蔵野市')][contains(.,'氏名:')][contains(.,'郵便番号:')][contains(.,'電電二郎')][contains(.,'180-8585')][1]/li[contains(.,'都道府県:')][1]/span[contains(.,'東京都')][1]       ・・・（２）
【００６１】
次に、ステップ１２２で、要素ノード識別子縮約部１７が、ここまでで得られた二つの要素ノード識別子を比較し、要素ノード識別子間で共通しない要素ノード名、属性ノード名とその値、テキストノードの値を除外する。単一要素ノード識別子の一部が変更された場合、出現順が変わる可能性があるため数値索引も合わせて除外する。二つの要素ノード識別子であるＸＰａｔｈにおいて、共通しない部分に取り消し線を付し、図７に示す。これより、下記（３）式の要素ノード識別子を得ることができる。
【００６２】
/html[1]/body[1]/div[@id='list'][1]/ul[contains(@class,'normal')][contains(.,'市区町村:')][contains(.,'氏名:')][contains(.,'郵便番号:')]/li[contains(.,'都道府県:')][1]/SPAN      ・・・（３）
【００６３】
次に、ステップ１２４で、要素ノード識別子縮約部１７が、図８に示すように、要素ノード識別子を構成する単一要素ノード識別子をリーフから順に１つずつ追加して連結することにより複数の縮約識別子を生成する。ここで、先頭がルートノードで始まらない識別子については、ＸＰａｔｈの書式に則って先頭を“//”とした。
【００６４】
図８（ａ）の縮約識別子は、図３に示すＨＴＭＬファイルから、“電電二郎”、“１８０−８５８５”、“東京都”、“武蔵野市”の４つの値を抽出する。図８（ｂ）〜（ｅ）の縮約識別子はいずれも“東京都”を抽出する。元の要素ノード識別子（（３）式）は“東京都”を抽出するものであるので、同じ“東京都”を抽出する縮約識別子（ｂ）〜（ｅ）のうち、最も短い（ｂ）、すなわち
//li[contains(.,'都道府県:')][1]/SPAN
を（３）式に示す要素ノード識別子を縮約した要素ノード識別子として採用し、指定部分（都道府県の値）を示す指定部分ＩＤと対応付けて、要素ノード識別子記憶部２２に保存して、部分指定処理を終了する。
【００６５】
次に、抽出処理（図９）について説明する。ここでは、図４に示すＨＴＭＬ文書を抽出対象文書とする場合について説明する。
【００６６】
ステップ１３０で、抽出対象文書入力部１８が、入力された抽出対象文書であるＨＴＭＬファイル、及び指定部分ＩＤを含む抽出要求を受け付ける。次に、ステップ１３２で、ツリー変換部１２が、上記ステップ１３０で受け付けた抽出対象文書の文書構造を解析し、ツリー構造を有するデータに変換する。
【００６７】
次に、ステップ１３４で、抽出部１９が、要素ノード識別子記憶部２２から、上記ステップ１３０で受け付けた抽出要求に含まれる指定部分ＩＤに対応付けられた要素ノード識別子を取得する。ここでは、上記部分指定処理で要素ノード識別子記憶部２２に保存された図８（ｂ）の要素ノード識別子が取得されるものとする。
【００６８】
次に、ステップ１３６で、抽出部１９が、上記ステップ１３２でツリー構造に変換された抽出対象文書において、上記ステップ１３４で取得した要素ノード識別子と同一の要素ノード識別子を持つ要素ノードを特定する。
【００６９】
次に、ステップ１３８で、抽出部１９が、特定した要素ノードに含まれるテキストノードの値を抽出する。ここでは、“東京都”が抽出される。そして、抽出結果出力部２０が、抽出したテキストノードの値を抽出結果として出力し、抽出処理を終了する。
【００７０】
このように、要素ノードをルートノードとするサブツリーに含まれるテキストノードの値も用いた要素ノード識別子を用いることで、図１及び図３に示すように行の順番が異なるＨＴＭＬファイルや、図４に示すように“会社名”の行が追加されたＨＴＭＬファイルからも、適切な値を抽出することができる。
【００７１】
また、適切に値を抽出できない場合は、抽出対象文書を新たな参照文書として、再度要素ノード識別子を生成することでより良い結果を得ることができる。
【００７２】
要素ノード識別子をＸＰａｔｈで記述することによって、部分特定部１４は既存技術であるＸＳＬＴ（参考文献２："XSLT, Second Edition" Doug Tidwell, O’Reilly & Associates, Inc. USA, Jun., 2008.）にしたがって実施することができる。
【００７３】
以上説明したように、本実施の形態に係る情報抽出装置によれば、参照文書を用いて構造化文書の任意の部分を事前に指定し、抽出対象文書において指定部分を特定するために、構造化文書をツリー構造に変換し、指定部分に対応する要素ノードの識別子を生成する段階において、各要素ノードをルートノードとするサブツリーに含まれるテキストノードの値を含めて単一要素ノード識別子を生成することにより、要素ノードに対応する要素ノード名、要素ノードに属する属性ノード名とその値が一部不定である場合でも、要素ノードに含まれるテキストノードの値を手掛かりとして、指定部分の抽出精度の低下を防止することができる。
【００７４】
また、複数の参照文書に基づいて生成された複数の要素ノード識別子について、各要素ノード識別子を構成する単一要素ノード識別子を比較し、共通しない要素ノード名、属性ノード名とその属性ノードの値、及びテキストノードの値を、単一要素ノード識別子と組の数値索引と共に除外することで、複数の参照文書においてそれぞれ指定した部分から、必要な部分を指示する手掛かりのみを用いて、要素ノード識別子を記述することが可能となる。
【００７５】
また、単一要素ノード識別子を生成する際に、各要素ノードをルートノードとするサブツリーに含まれるテキストノードの値から、該要素ノードの直下にないテキストノードの値を除外することにより、指定部分の抽出精度を低下させずに、要素ノード識別子を短い文字列で記述することが可能となる。
【００７６】
また、要素ノード識別子を構成する単一要素ノード識別子をリーフから順に１つずつ追加して連結することにより生成される識別子であって、要素ノード識別子を用いて特定される指定部分と同じ部分を特定する識別子のうち、最も短い識別子を縮約された要素ノード識別子として生成することにより、指定部分の抽出精度を低下させずに、要素ノード識別子を短い文字列で記述することが可能となる。
【００７７】
本発明は、上記実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【００７８】
例えば、上述の情報抽出装置は、内部にコンピュータシステムを有しているが、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
【００７９】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
【符号の説明】
【００８０】
１０   構造化文書からの情報抽出装置
１１   参照文書入力部
１２   ツリー変換部
１３   抽出ノード指定部
１４   部分指定部
１５   単一要素ノード識別子生成部
１６   要素ノード識別子生成部
１７   要素ノード識別子縮約部
１８   抽出対象文書入力部
１９   抽出部
２０   抽出結果出力部
２１   テキストノード値記憶部
２２   要素ノード識別子記憶部
【図１】
2013218627.tif 000003
【図２】
2013218627.tif 000004
【図３】
2013218627.tif 000005
【図４】
2013218627.tif 000006
【図５】
2013218627.tif 000007
【図６】
2013218627.tif 000008
【図７】
2013218627.tif 000009
【図８】
2013218627.tif 000010
【図９】
2013218627.tif 000011