(57)【特許請求の範囲】
【請求項１】
ＨＴＭＬ文書に含まれる表形式データから、前記表形式データに含まれる知識を抽出してインデキシングし、キーワード集合あるいは自然文により与えられた検索クエリに直接回答可能な表セルを検索スコアによりランキングして返却する表セル検索装置であって、
前記ＨＴＭＬ文書の集合から、ｔａｂｌｅタグにより記述された表形式データからなる表形式データ集合を取得する表形式データ抽出部と、
前記表形式データの各々について、前記表形式データに関連する表関連情報を、前記表形式データを含む前記ＨＴＭＬ文書から抽出する表関連情報抽出部と、
前記表形式データの各々について、前記表形式データの構造及び内容に基づいて、前記表形式データを、前記表形式データに関して予め定められた、縦リスト、横リスト、縦属性、横属性、及び行列のいずれかの表のタイプに分類する表タイプ分類部と、
前記表形式データの各々について、前記表形式データの構造及び内容に基づいて、前記表形式データの表に含まれる各行及び各列のタイプを分類する行列タイプ分類部と、
前記表形式データの各々について、前記表関連情報抽出部により抽出された前記表関連情報、前記表タイプ分類部における分類結果、及び前記行列タイプ分類部における分類結果に基づいて、前記表のタイプに応じて予め定められた抽出規則に従って、前記表形式データから抽出されるエンティティ、属性、及び属性値を含む表内情報と、前記表関連情報との組から構成されるセル知識を抽出し、抽出した前記セル知識を検索データベースに格納する表内知識抽出部と、
与えられた検索クエリであるキーワード集合あるいは自然文について、検索クエリ内の属性に対応するキーワードにラベルを付与するクエリ解釈部と、
前記クエリ解釈部によって前記ラベルが付与された前記検索クエリに基づいて、前記検索データベースから前記検索クエリに対応する前記セル知識を出力する知識検索部と、
前記知識検索部の出力に基づいて、ユーザに検索結果を返却する検索結果生成部と、
を含む表セル検索装置。
【請求項２】
前記表関連情報抽出部は、前記表形式データの各々について、前記ＨＴＭＬ文書からページタイトル、テーブルのキャプション、テーブルが記載されたセクションの見出し、テーブルの直前のテキスト、又はテーブルの直後のテキスト情報を表関連情報として抽出し、
前記表内知識抽出部は、前記表形式データの各々について、前記表関連情報抽出部により抽出された前記表関連情報、前記表タイプ分類部における分類結果、及び前記行列タイプ分類部における分類結果に基づいて、前記表のタイプに応じて予め定められた抽出規則に従って、前記表形式データから、前記表形式データにおけるエンティティ、エンティティタイプ、属性、及び属性値を含む表内情報と、前記表関連情報との組から構成されるセル知識を抽出し、抽出した前記セル知識を検索データベースに格納する請求項１に記載の表セル検索装置。
【請求項３】
前記クエリ解釈部は、検索クエリ内の属性以外のキーワードに更にラベルを付与し、
前記知識検索部は、前記検索データベースから、前記検索クエリの属性に対応するキーワードと、前記表内情報の属性が一致し、かつ、前記検索クエリの属性以外のキーワードと、前記表内情報のエンティティ、エンティティタイプ、又は前記表関連情報が一致する前記セル知識を出力する請求項１又は請求項２に記載の表セル検索装置。
【請求項４】
ＨＴＭＬ文書に含まれる表形式データから、前記表形式データに含まれる知識を抽出してインデキシングし、キーワード集合あるいは自然文により与えられた検索クエリに直接回答可能な表セルを検索スコアによりランキングして返却する表セル検索装置における表セル検索方法であって、
表形式データ抽出部が、前記ＨＴＭＬ文書の集合から、ｔａｂｌｅタグにより記述された表形式データからなる表形式データ集合を取得するステップと、
表タイプ分類部が、前記表形式データの各々について、前記表形式データの構造及び内容に基づいて、前記表形式データを、前記表形式データに関して予め定められた、縦リスト、横リスト、縦属性、横属性、及び行列のいずれかの表のタイプに分類するステップと、
行列タイプ分類部が、前記表形式データの各々について、前記表形式データの構造及び内容に基づいて、前記表形式データの表に含まれる各行及び各列のタイプを分類するステップと、
表関連情報抽出部が、前記表形式データの各々について、前記表形式データに関連する表関連情報を、前記表形式データを含む前記ＨＴＭＬ文書から抽出するステップと、
表内知識抽出部が、前記表形式データの各々について、前記表関連情報抽出部により抽出された前記表関連情報、前記表タイプ分類部における分類結果、及び前記行列タイプ分類部における分類結果に基づいて、前記表のタイプに応じて予め定められた抽出規則に従って、前記表形式データから抽出されるエンティティ、属性、及び属性値を含む表内情報と、前記表関連情報との組から構成されるセル知識を抽出し、抽出した前記セル知識を検索データベースに格納するステップと、
クエリ解釈部が、与えられた検索クエリであるキーワード集合あるいは自然文について、検索クエリ内の属性に対応するキーワードにラベルを付与するステップと、
知識検索部が、前記クエリ解釈部によって前記ラベルが付与された前記検索クエリに基づいて、前記検索データベースから前記検索クエリに対応する前記セル知識を出力するステップと、
検索結果生成部が、前記知識検索部の出力に基づいて、ユーザに検索結果を返却するステップと、
を含む表セル検索方法。
【請求項５】
前記表関連情報抽出部が抽出するステップは、前記表形式データの各々について、前記ＨＴＭＬ文書からページタイトル、テーブルのキャプション、テーブルが記載されたセクションの見出し、テーブルの直前のテキスト、又はテーブルの直後のテキスト情報を表関連情報として抽出し、
前記表内知識抽出部が抽出するステップは、前記表形式データの各々について、前記表関連情報抽出部により抽出された前記表関連情報、前記表タイプ分類部における分類結果、及び前記行列タイプ分類部における分類結果に基づいて、前記表のタイプに応じて予め定められた抽出規則に従って、前記表形式データから、前記表形式データにおけるエンティティ、エンティティタイプ、属性、及び属性値を含む表内情報と、前記表関連情報との組から構成されるセル知識を抽出し、抽出した前記セル知識を検索データベースに格納する請求項４に記載の表セル検索方法。
【請求項６】
前記クエリ解釈部が解釈するステップは、検索クエリ内の属性以外のキーワードに更にラベルを付与し、
前記知識検索部が検索するステップは、前記検索データベースから、前記検索クエリの属性に対応するキーワードと、前記表内情報の属性が一致し、かつ、前記検索クエリの属性以外のキーワードと、前記表内情報のエンティティ、エンティティタイプ、又は前記表関連情報が一致する前記セル知識を出力する請求項４又は請求項５に記載の表セル検索方法。
【請求項７】
コンピュータを、請求項１〜請求項３のいずれか１項に記載の表セル検索装置の各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表セル検索装置、方法、及びプログラムに係り、特に、表形式データをインデキシングして、検索クエリに回答するための表セル検索装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
コンピュータ技術の発展により、Ｗｅｂ上にＨＴＭＬで記述された表データは大量に存在するようになった。表データには、エンティティ、属性、及び属性値の三つ組が抽出可能な表が多数存在しており、表の構造を正確に読み取ることにより、エンティティの属性の値を問う検索要求や、特定の属性値を持つエンティティを問う検索要求に直接回答することが可能になる。
【０００３】
表データからエンティティ、属性、及び属性値の三つ組を抽出するためには、表のタイプおよび、表に含まれる各行及び各列のタイプを理解する必要があり、それぞれ非特許文献１、非特許文献２などで提案されている手法が利用可能である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Eric Crestan, Patrick Pantel: Web-scale table census and classification. WSDM 2011: 545-554
【非特許文献２】Jing Fang, Prasenjit Mitra, Zhi Tang, C. Lee Giles: Table Header Detection and Classification. AAAI 2012
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、表内の情報だけでは、検索対象として用いる知識としては不足している。例えば、スポーツ大会Ａに出場した各選手の得点を整理した表から、（山田太郎，得点，123.45）という三つ組を抽出できたとしても、この三つ組がスポーツ大会Ａにおける知識であることを補完しなければ、ユーザの検索要求に直接回答することはできない。こうした表内から獲得した情報について表外情報による適切な具象化を行って検索可能な知識として保存することは、これまで実現されていない。
【０００６】
本発明は、上記問題点を解決するために成されたものであり、表外の知識を利用してセル知識を獲得し、検索クエリに対して回答を検索することができる表セル検索装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、第１の発明に係る表セル検索装置は、ＨＴＭＬ文書に含まれる表形式データから、前記表形式データに含まれる知識を抽出してインデキシングし、キーワード集合あるいは自然文により与えられた検索クエリに直接回答可能な表セルを検索スコアによりランキングして返却する表セル検索装置であって、前記ＨＴＭＬ文書の集合から、ｔａｂｌｅタグにより記述された表形式データからなる表形式データ集合を取得する表形式データ抽出部と、前記表形式データの各々について、前記表形式データに関連する表関連情報を、前記表形式データを含む前記ＨＴＭＬ文書から抽出する表関連情報抽出部と、前記表形式データの各々について、前記表形式データの構造及び内容に基づいて、前記表形式データの表のタイプを分類する表タイプ分類部と、前記表形式データの各々について、前記表形式データの構造及び内容に基づいて、前記表形式データの表に含まれる各行及び各列のタイプを分類する行列タイプ分類部と、前記表形式データの各々について、前記表関連情報抽出部により抽出された前記表関連情報、前記表タイプ分類部における分類結果、及び前記行列タイプ分類部における分類結果に基づいて、前記表形式データから抽出されるエンティティ、属性、及び属性値を含む表内情報と、前記表関連情報との組から構成されるセル知識を抽出し、抽出した前記セル知識を検索データベースに格納する表内知識抽出部と、与えられた検索クエリであるキーワード集合あるいは自然文について、検索クエリ内の属性に対応するキーワードにラベルを付与するクエリ解釈部と、前記クエリ解釈部によって前記ラベルが付与された前記検索クエリに基づいて、前記検索データベースから前記検索クエリに対応する前記セル知識を出力する知識検索部と、前記知識検索部の出力に基づいて、ユーザに検索結果を返却する検索結果生成部と、を含んで構成されている。
【０００８】
また、第１の発明に係る表セル検索装置において、前記表関連情報抽出部は、前記表形式データの各々について、前記ＨＴＭＬ文書からページタイトル、テーブルのキャプション、テーブルが記載されたセクションの見出し、テーブルの直前のテキスト、又はテーブルの直後のテキスト情報を表関連情報として抽出し、前記表内知識抽出部は、前記表形式データの各々について、前記表関連情報抽出部により抽出された前記表関連情報、前記表タイプ分類部における分類結果、及び前記行列タイプ分類部における分類結果に基づいて、前記表形式データの表のタイプに応じて、前記表形式データから、前記表形式データにおけるエンティティ、エンティティタイプ、属性、及び属性値を含む表内情報と、前記表関連情報との組から構成されるセル知識を抽出し、抽出した前記セル知識を検索データベースに格納するようにしてもよい。
【０００９】
また、第１の発明に係る表セル検索装置において、前記クエリ解釈部は、検索クエリ内の属性以外のキーワードに更にラベルを付与し、前記知識検索部は、前記検索データベースから、前記検索クエリの属性に対応するキーワードと、前記表内情報の属性が一致し、かつ、前記検索クエリの属性以外のキーワードと、前記表内情報のエンティティ、エンティティタイプ、又は前記表関連情報が一致する前記セル知識を出力するようにしてもよい。
【００１０】
第２の発明に係る表セル検索方法は、ＨＴＭＬ文書に含まれる表形式データから、前記表形式データに含まれる知識を抽出してインデキシングし、キーワード集合あるいは自然文により与えられた検索クエリに直接回答可能な表セルを検索スコアによりランキングして返却する表セル検索装置における表セル検索方法であって、表形式データ抽出部が、前記ＨＴＭＬ文書の集合から、ｔａｂｌｅタグにより記述された表形式データからなる表形式データ集合を取得するステップと、表タイプ分類部が、前記表形式データの各々について、前記表形式データの構造及び内容に基づいて、前記表形式データの表のタイプを分類するステップと、行列タイプ分類部が、前記表形式データの各々について、前記表形式データの構造及び内容に基づいて、前記表形式データの表に含まれる各行及び各列のタイプを分類するステップと、表関連情報抽出部が、前記表形式データの各々について、前記表形式データに関連する表関連情報を、前記表形式データを含む前記ＨＴＭＬ文書から抽出するステップと、表内知識抽出部が、前記表形式データの各々について、前記表関連情報抽出部により抽出された前記表関連情報、前記表タイプ分類部における分類結果、及び前記行列タイプ分類部における分類結果に基づいて、前記表形式データから抽出されるエンティティ、属性、及び属性値を含む表内情報と、前記表関連情報との組から構成されるセル知識を抽出し、抽出した前記セル知識を検索データベースに格納するステップと、クエリ解釈部が、与えられた検索クエリであるキーワード集合あるいは自然文について、検索クエリ内の属性に対応するキーワードにラベルを付与するステップと、知識検索部が、前記クエリ解釈部によって前記ラベルが付与された前記検索クエリに基づいて、前記検索データベースから前記検索クエリに対応する前記セル知識を出力するステップと、検索結果生成部が、前記知識検索部の出力に基づいて、ユーザに検索結果を返却するステップと、を含んで実行することを特徴とする。
【００１１】
また、第２の発明に係る表セル検索方法において、前記表関連情報抽出部が抽出するステップは、前記表形式データの各々について、前記ＨＴＭＬ文書からページタイトル、テーブルのキャプション、テーブルが記載されたセクションの見出し、テーブルの直前のテキスト、又はテーブルの直後のテキスト情報を表関連情報として抽出し、前記表内知識抽出部が抽出するステップは、前記表形式データの各々について、前記表関連情報抽出部により抽出された前記表関連情報、前記表タイプ分類部における分類結果、及び前記行列タイプ分類部における分類結果に基づいて、前記表形式データの表のタイプに応じて、前記表形式データから、前記表形式データにおけるエンティティ、エンティティタイプ、属性、及び属性値を含む表内情報と、前記表関連情報との組から構成されるセル知識を抽出し、抽出した前記セル知識を検索データベースに格納するようにしてもよい。
【００１２】
また、第２の発明に係る表セル検索方法において、前記クエリ解釈部が解釈するステップは、検索クエリ内の属性以外のキーワードに更にラベルを付与し、
前記知識検索部が検索するステップは、前記検索データベースから、前記検索クエリの属性に対応するキーワードと、前記表内情報の属性が一致し、かつ、前記検索クエリの属性以外のキーワードと、前記表内情報のエンティティ、エンティティタイプ、又は前記表関連情報が一致する前記セル知識を出力するようにしてもよい。
【００１３】
また、第３の発明に係るプログラムは、コンピュータを、第１の発明に係る表セル検索装置の各部として機能させるためのプログラムである。
【発明の効果】
【００１４】
本発明の表セル検索装置、方法、及びプログラムによれば、表形式データの各々について、表形式データに関連する表関連情報を、表形式データを含むＨＴＭＬ文書から抽出し、表形式データの表のタイプを分類し、各行及び各列のタイプを分類し、表関連情報、及び分類結果に基づいて、表形式データから抽出されるエンティティ、属性、及び属性値を含む表内情報と、表関連情報との組から構成されるセル知識を抽出し、抽出したセル知識を検索データベースに格納し、与えられた検索クエリであるキーワード集合あるいは自然文について、検索クエリ内の属性に対応するキーワードにラベルを付与し、ラベルが付与された検索クエリに基づいて、検索データベースから検索クエリに対応するセル知識を出力し、出力に基づいて、ユーザに検索結果を返却することにより、表外の知識を利用してセル知識を獲得し、検索クエリに対して回答を検索することができる、という効果が得られる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態に係る表セル検索装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係る表セル検索装置における表セル検索処理ルーチンを示すフローチャートである。
【図３】表タイプ分類部によって分類される表タイプの一例を示す図である。
【図４】本発明の実施の形態に係る表セル検索装置における表形式データ抽出処理ルーチンを示すフローチャートである。
【図５】ｔａｂｌｅタグから表形式データの抽出例を示す図である。
【図６】本発明の実施の形態に係る表セル検索装置における表関連情報抽出処理ルーチンを示すフローチャートである。
【図７】表関連情報の抽出例を示す図である。
【図８】本発明の実施の形態に係る表セル検索装置における「縦リスト」の場合の表内知識抽出処理ルーチンを示すフローチャートである。
【図９】表タイプのクラスが「縦リスト」の場合の表内知識の抽出例を示す図である。
【図１０】本発明の実施の形態に係る表セル検索装置における「横リスト」の場合の表内知識抽出処理ルーチンを示すフローチャートである。
【図１１】表タイプのクラスが「横リスト」の場合の表内知識の抽出例を示す図である。
【図１２】本発明の実施の形態に係る表セル検索装置における「縦属性」の場合の表内知識抽出処理ルーチンを示すフローチャートである。
【図１３】表タイプのクラスが「縦属性」の場合の表内知識の抽出例を示す図である。
【図１４】本発明の実施の形態に係る表セル検索装置における「横属性」の場合の表内知識抽出処理ルーチンを示すフローチャートである。
【図１５】表タイプのクラスが「横属性」の場合の表内知識の抽出例を示す図である。
【図１６】本発明の実施の形態に係る表セル検索装置における「行列」の場合の表内知識抽出処理ルーチンを示すフローチャートである。
【図１７】表タイプのクラスが「行列」の場合の表内知識の抽出例を示す図である。
【図１８】表タイプのクラスが「行列」の場合の表内知識の抽出例を示す図である。
【図１９】本発明の実施の形態に係る表セル検索装置における表セル検索処理ルーチンを示すフローチャートである。
【図２０】表セル検索装置の検索結果の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１７】
＜本発明の実施の形態に係る表セル検索装置の構成＞
【００１８】
まず、本発明の実施の形態に係る表セル検索装置の構成について説明する。本発明の実施の形態の表セル検索装置は、ＨＴＭＬ文書に含まれる表形式データから、表形式データに含まれる知識を抽出してインデキシングし、キーワード集合あるいは自然文により与えられた検索クエリに直接回答可能な表セルを検索スコアによりランキングして返却する。
【００１９】
図１に示すように、本発明の実施の形態に係る表セル検索装置１００は、ＣＰＵと、ＲＡＭと、後述する検索インデキシング処理ルーチン、及び表セル検索処理ルーチンを実行するためのプログラムや各種データを記憶したＲＯＭと、を含むコンピュータで構成することが出来る。この表セル検索装置１００は、機能的には図１に示すように入力部１０と、演算部２０と、出力部５０とを備えている。
【００２０】
入力部１０は、知識の抽出対象として、ＨＴＭＬ文書の集合を受け付ける。ＨＴＭＬ文書は表形式データを含む。また、入力部１０は、検索クエリとしてキーワード集合あるいは自然文を受け付ける。
【００２１】
演算部２０は、検索データベース２８と、表形式データ抽出部３０と、表タイプ分類部３２と、行列タイプ分類部３４と、表関連情報抽出部３６と、表内知識抽出部３８と、クエリ解釈部４０と、知識検索部４２と、検索結果生成部４４とを含んで構成されている。なお、各処理部の具体的な処理については、後述する表セル検索装置の作用において説明する。
【００２２】
表形式データ抽出部３０は、ＨＴＭＬ文書の集合から、ｔａｂｌｅタグにより記述された表形式データからなる表形式データ集合を取得する。
【００２３】
表タイプ分類部３２は、表形式データ抽出部３０で取得した表形式データの各々について、当該表形式データの構造及び内容に基づいて、当該表形式データの表のタイプを分類する。
【００２４】
行列タイプ分類部３４は、表形式データ抽出部３０で取得した表形式データの各々について、当該表形式データの構造及び内容に基づいて、当該表形式データの表に含まれる各行及び各列のタイプを分類する。
【００２５】
表関連情報抽出部３６は、表形式データ抽出部３０で取得した表形式データの各々について、表形式データに関連する表関連情報を、当該表形式データを含むＨＴＭＬ文書から抽出する。ここでは、表関連情報として、ＨＴＭＬ文書からページタイトル、テーブルのキャプション、テーブルが記載されたセクションの見出し、テーブルの直前のテキスト、又はテーブルの直後のテキスト情報を抽出する。
【００２６】
表内知識抽出部３８は、表形式データの各々について、表関連情報抽出部３６により抽出された表関連情報、表タイプ分類部３２における分類結果、及び行列タイプ分類部３４における分類結果に基づいて、当該表形式データの表のタイプに応じて、表形式データから、表形式データにおけるエンティティ、エンティティタイプ、属性、及び属性値を含む表内情報と、表関連情報との組から構成されるセル知識を抽出し、抽出したセル知識を検索データベース２８に格納する。
【００２７】
検索データベース２８には、表内知識抽出部３８で抽出されたセル知識が格納される。セル知識は、知識レコード表と、知識セルＩＤ表とからなる。知識レコード表は、エンティティタイプ、エンティティ、エンティティ２、属性、属性値、表タイプ、関連情報（タイトル、キャプション、セクション見出し、表前テキスト、及び表外テキスト）を１レコードとしたテーブルである。知識セルＩＤ表は、エンティティタイプ行ＩＤ、エンティティタイプ列ＩＤ、エンティティ行ＩＤ、エンティティ列ＩＤ、エンティティ２ＩＤ、エンティティ２ＩＤ、属性行ＩＤ、属性列ＩＤ、属性値行ＩＤ、及び属性値列ＩＤを１レコードとしたテーブルである。
【００２８】
クエリ解釈部４０は、入力部１０で受け付けた検索クエリであるキーワード集合あるいは自然文について、検索クエリ内の属性に対応するキーワードにラベルを付与すると共に、検索クエリ内の属性以外のキーワードにラベルを付与する。
【００２９】
知識検索部４２は、クエリ解釈部４０によってラベルが付与された検索クエリに基づいて、検索データベース２８から検索クエリに対応するセル知識を出力する。ここでは、検索データベース２８から、検索クエリの属性に対応するキーワードと、表内情報の属性が一致し、かつ、検索クエリの属性以外のキーワードと、表内情報のエンティティ、エンティティタイプ、又は表関連情報が一致するセル知識を出力する。
【００３０】
検索結果生成部４４は、知識検索部４２から出力されたセル知識に基づいて、獲得したセル知識の知識レコードのフィールド「属性値」の集合を検索結果として出力部５０に出力することにより、ユーザに検索結果を返却する。
【００３１】
＜本発明の実施の形態に係る表セル検索装置の作用＞
【００３２】
次に、本発明の実施の形態に係る表セル検索装置１００の作用について説明する。
【００３３】
表セル検索装置１００は、以下に説明する検索インデキシング処理ルーチン、及び表セル検索処理ルーチンを実行する。
【００３４】
まず、検索インデキシング処理ルーチンについて説明する。
【００３５】
入力部１０においてＨＴＭＬ文書の集合を受け付けると、表セル検索装置１００は、図２に示す検索インデキシング処理ルーチンを実行する。
【００３６】
まず、ステップＳ１００では、表形式データ抽出部３０が、入力部１０で受け付けたＨＴＭＬ文書集合のＨＴＭＬ文書から、ｔａｂｌｅタグにより記述された表形式データからなる表形式データ集合を取得する。
【００３７】
次に、ステップＳ１０２では、表タイプ分類部３２が、処理対象のｔａｂｌｅタグの表形式データについて、ステップＳ１００にて取得された表形式データの属性−属性値集合を入力として、表タイプの分類を行う。表タイプの分類には、属性−属性値集合を素性とした非特許文献１に記載の手法などが利用可能である。本実施の形態における表タイプは、縦リスト、横リスト、縦属性、横属性、行列、又はその他の６クラスである。なお、ステップＳ１０２の分類結果が「その他」である場合には、ステップＳ１００に戻って、次のｔａｂｌｅタグを選択し、以降の処理を続行する。
【００３８】
図３に各表タイプの例を示す。なお、後述するステップＳ１０６の処理では、各表について、以下の前提であるものとする。縦リスト、及び縦属性表は属性が記述されたヘッダ行を持つ。横リスト、及び横属性表は属性が記述されたヘッダ列を持つ。行列はエンティティが記述されたヘッダ行及びヘッダ列を持つ。縦リストはエンティティが記述された列を持つ。横リストはエンティティが記述された行を持つ。
【００３９】
ステップＳ１０４では、行列タイプ分類部３４が、処理対象のｔａｂｌｅタグの表形式データについて、ステップＳ１００にて抽出された表形式データの属性−属性値集合を入力として、表形式データの各行（行番号ｉを持つセル集合）及び各列（列番号ｊを持つセル集合）のタイプ分類を行う。行タイプ、列タイプの分類には、属性−属性値集合を素性とした非特許文献２に記載の手法などが利用可能である。本実施の形態における行列タイプは、ヘッダ、又はデータの２クラスである。なお、ヘッダと判定された行及び列が存在しない場合、ステップＳ１００に戻って、次のｔａｂｌｅタグを選択し、以降の処理を続行する。
【００４０】
ステップＳ１０６では、表関連情報抽出部３６が、処理対象のｔａｂｌｅタグの表形式データを含むＨＴＭＬ文書を解析して、当該ＨＴＭＬ文書の表形式データに関する表関連情報である属性−属性値集合を抽出する。
【００４１】
ステップＳ１０８では、処理対象のｔａｂｌｅタグの表形式データについて、ステップＳ１０６により抽出された表関連情報、ステップＳ１０２における表タイプの分類結果、及びステップＳ１０４における行列タイプの分類結果に基づいて、当該表形式データの表のタイプに応じて、表形式データから、表形式データにおけるエンティティ、エンティティタイプ、属性、及び属性値を含む表内情報と、表関連情報との組から構成されるセル知識を抽出し、抽出したセル知識を検索データベース２８に格納する。
【００４２】
上記のステップＳ１００〜Ｓ１０８についてＨＴＭＬ文書に含まれるｔａｂｌｅタグごとに繰り返す。
【００４３】
また、上記ｔａｂｌｅタグごとに繰り返すことを、ＨＴＭＬ文書の集合に含まれるＨＴＭＬ文書ごとに繰り返す。
【００４４】
上記ステップＳ１００の処理は図４に示す表形式データ抽出処理ルーチンによって実行される。
【００４５】
ステップＳ２００では、ｔａｂｌｅタグの子要素として出現するｔａｂｌｅタグについて、ｔａｂｌｅタグに含まれる文字列集合に置換し、全てのＨＴＭＬ構造を消去する。
【００４６】
ステップＳ２０１では、行番号変数ｉを０で初期化する。また、２次元配列として表形式データを初期化する。
【００４７】
次に、ｔｒタグが出現する毎に、以下の処理を繰り返す。
【００４８】
まず、ステップＳ２０２では、行番号変数ｉを１増やすと共に、列番号変数ｊを０にする。
そして、ｔｒタグの子要素としてｔｄタグあるいはｔｈタグを表すタグ（以下、セルタグと呼ぶ）が出現する毎に、ステップＳ２０４の処理を繰り返す。
【００４９】
ステップＳ２０４では、ｔｄタグあるいはｔｈタグを表すタグ（以下、セルタグと呼ぶ）について、セルタグから属性−属性値集合を取得する。詳しい属性−属性値集合は以下の通りである。
【００５０】
属性「行サイズ（記号ｎ）」として、ｒｏｗｓｐａｎ属性を属性値とする。ｒｏｗｓｐａｎの属性値指定が無い場合はｎ＝１とする。
【００５１】
属性「列サイズ（記号ｍ）」として、ｃｏｌｓｐａｎ属性を属性値とする。ｃｏｌｓｐａｎの属性値指定が無い場合はｍ＝１とする。
【００５２】
属性「文字列」として、セルタグ子要素中のテキストを属性値とする。
【００５３】
属性「タグ名」として、セルタグの名前（‘ｔｈ’あるいは‘ｔｄ’）を属性値とする。
【００５４】
属性「画像フラグ」について、‘ｉｍｇ’タグがセルタグの子要素に存在すれば１、そうでなければ０を属性値とする。
【００５５】
属性「数値フラグ」について、セル内の文字列が数値であれば１、そうでなければ０を属性値とする。
【００５６】
属性「日付フラグ」について、セル内の文字列が日付であれば１、そうでなければ０を属性値とする。
【００５７】
属性「記号フラグ」について、セル内の文字列が記号のみであれば１、そうでなければ０を属性値とする。
【００５８】
属性「長文字列フラグ」について、セル内の文字列の文字数が閾値以上であれば１、そうでなければ０を属性値とする。閾値には５０などを設定する。
【００５９】
属性「書式フラグ」について、セル内にｂタグ、ｓｔｒｏｎｇタグなど、ブラウジング時の見え方を変更するタグがあれば１、そうでなければ０を属性値とする。
【００６０】
その他、ＨＴＭＬ文書から該当セルタグに関する情報として、例えば、背景色、文字位置指定の有無などを属性として追加しても良い。
【００６１】
ステップＳ２０６では、表形式データ［ｉ］［ｊ］に、ステップＳ２０４で取得した属性−属性値集合を格納する。
【００６２】
ステップＳ２０６の処理を、表形式データ［ｉ］［ｊ］に属性−属性値集合が格納されない列番号になるまで、ｊを１ずつ増やしていく。その後に、ｉ≦行番号≦ｉ＋ｎ、ｊ≦列番号≦ｊ＋ｍを満たす行番号、列番号の全組合せについて、ステップＳ２０４で得られた属性−属性値集合を、表形式データ［行番号］［列番号］に格納する。つまり、ここでは連結されたセルの内容を対応する表形式データ［行番号］［列番号］の各々にコピーする処理を行う。なお、行番号と列番号が指定された表形式データを以降「セル」と呼ぶ。
【００６３】
上記ステップＳ２０４〜Ｓ２０６の処理を、未処理のセルタグが無くなるまで、出現順に処理を繰り返す。
【００６４】
また、上記セルタグの処理について、ｔａｂｌｅタグの子要素に出現するｔｒタグについて、未処理のｔｒタグが無くなるまで、出現順に処理を繰り返す。
【００６５】
ステップＳ２０８では、表形式データに属性−属性値集合が格納された行番号、及び列番号のうちそれぞれ最大のものを該表形式データの行数Ｎ、及び列数Ｍとして保持する。１≦行番号≦Ｎ、１≦列番号≦Ｍを満たす行番号、及び列番号の全組合せについて、表形式データ［行番号］［列番号］に属性−属性値集合が未格納の場合、空集合を追加する。
【００６６】
図５に表形式データの抽出例を示す。図５に示すように表形式データは行番号、及び列番号が割り振られ、要素として文字列、タグ名、数値、行サイズ、列サイズ、及び起点をもつ。
【００６７】
上記ステップＳ１０６の処理は図６に示す表関連情報抽出処理ルーチンによって実行される。
【００６８】
ステップＳ３００では、タイトルとして、ｔｉｔｌｅタグのテキスト情報を属性値として取得し、属性「タイトル」として格納する。ｔｉｔｌｅタグが存在しない場合は、属性値はｎｕｌｌ文字列を設定する。
【００６９】
ステップＳ３０２では、キャプションとして、当該表形式データが抽出されたｔａｂｌｅタグの子要素にｃａｐｔｉｏｎタグが含まれている場合、属性値としてｃａｐｔｉｏｎの子要素に含まれるテキストを取得し、属性「キャプション」として格納する。ｃａｐｔｉｏｎタグが存在しない場合はｎｕｌｌ文字列を設定する。
【００７０】
ステップＳ３０４では、前テキストとして、当該表形式データが抽出されたｔａｂｌｅタグの開始直前に出現するｐ、又はｄｉｖタグの子要素に含まれるテキストを取得し、属性「前テキスト」として格納する。ｔａｂｌｅタグの直前に出現するｐ、又はｄｉｖタグが存在しない場合、ｎｕｌｌ文字列を設定する。
【００７１】
ステップＳ３０６では、属性「後テキスト」に、当該表形式データが抽出されたｔａｂｌｅタグの終了直後に出現するｐ、又はｄｉｖタグの子要素に含まれるテキストを取得する。ｔａｂｌｅタグの直後に出現するｐ、又はｄｉｖタグが存在しない場合ｎｕｌｌ文字列を設定する。
【００７２】
ステップＳ３０８では、見出し配列（要素番号１〜６）を空文字列で初期化する。抽出要素がｈ１〜ｈ６タグの場合、各タグの見出しレベル（ｈ１の場合１、ｈ６の場合６）を取得し、見出し配列の見出しレベル以降を空文字列で初期化する。例えば、ｈ２の場合、見出し配列の２〜６以降を削除する。そして、以下ステップＳ３１０〜Ｓ３１２により、ＨＴＭＬ文書に出現するｈ１〜ｈ６タグおよび当該表形式データのｔａｂｌｅタグを抽出要素として出現順に抽出することを繰り返す。
【００７３】
ステップＳ３１０では、抽出要素の文字列を取得し、見出し配列［見出しレベル］に、当該抽出要素の文字列を格納する。
【００７４】
ステップＳ３１２では、抽出要素がｔａｂｌｅタグの場合、繰り返しを抜け、属性「見出し」の属性値として見出し配列の各要素を空白で結合した文字列を格納する。見出し配列に文字列が格納されていない場合、ｎｕｌｌ文字列を属性「見出し」の属性値として格納する。
【００７５】
上記ステップＳ３００〜Ｓ３１２の処理を行うことで、表関連情報抽出部３６は、表関連情報として、ページタイトル、テーブルのキャプション、テーブルが記載されたセクションの見出し、テーブルの直前のテキスト、又はテーブルの直後のテキスト情報を抽出する。
【００７６】
図７に表関連情報の抽出例を示す。
【００７７】
上記ステップＳ１０８の処理は、以下に説明するように、ステップＳ１０２で分類された表タイプのクラスに応じて、縦リスト、横リスト、縦属性、横属性、及び行列のそれぞれに対応した表内知識抽出処理ルーチンが実行される。
【００７８】
まず、表タイプのクラスが「縦リスト」の場合について説明する。「縦リスト」の場合、図８に示す表内知識抽出処理ルーチンを実行する。
【００７９】
ステップＳ４００では、行番号ｉの行タイプ分類結果が、１≦ｉ≦ｎの範囲においてすべてヘッダであるとき、１≦ｉ≦ｎの範囲をヘッダ行番号集合として取得する。また、ヘッダ行番号集合に含まれず、かつ、１≦ｉ≦Ｎを満たす行番号の集合をデータ行番号集合として取得する。なお、ヘッダ行番号集合が空集合の場合、検索インデキシング処理ルーチンのステップＳ１００に戻って、次のｔａｂｌｅタグを選択し、以降の処理を続行する。
【００８０】
ステップＳ４０２では、下記の条件１を満たす列番号の集合を、エンティティ列番号集合として取得する。
【００８１】
（条件１）行番号１〜Ｎのうち行タイプの分類結果が「データ」である行における、表形式データ［行番号］［列番号］の属性−属性値集合の属性「文字列」の種類数Ｋ１÷行タイプの分類結果が「データ」である行数Ｋ２＜閾値θ
【００８２】
なお、Ｋ２が０のとき条件１は満たされないものとする。θの値としては、具体的には０．７５などを設定する。なお、エンティティ列番号集合が空集合の場合、検索インデキシング処理ルーチンのステップＳ１００に戻って、次のｔａｂｌｅタグを選択し、以降の処理を続行する。
【００８３】
エンティティ列番号集合に含まれる列番号ｊごとに、以下の処理を繰り返す。ただし、ｋ＝ｊの場合は次の列番号ｊの処理に移る。
【００８４】
まず、１からＭまでの属性列番号ｋごとに、データ行番号集合に含まれる行番号ｉの各々について、以下のステップＳ４０４、Ｓ４０６を繰り返す。
【００８５】
ステップＳ４０４では、エンティティ列番号集合に含まれる列番号ｊ、属性列番号ｋ、及びデータ行番号集合に含まれる行番号ｉについて、表内知識を抽出する。抽出する表内知識は、以下のエンティティタイプ、エンティティ、エンティティ２、属性、及び属性値である。
【００８６】
エンティティタイプは、ヘッダ行番号集合に含まれる行番号ｈのそれぞれについて行番号が若い順に表形式データ［ｈ］［ｊ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。エンティティタイプ行ＩＤはヘッダ行番号集合、エンティティタイプ列ＩＤはｊとする。
【００８７】
エンティティは、表形式データ［ｉ］［ｊ］の属性「文字列」とする。エンティティ行ＩＤはｉ、エンティティ列ＩＤはｊとする。
【００８８】
エンティティ２は、ｎｕｌｌ文字列とする。エンティティ２行ＩＤ、エンティティ２列ＩＤはそれぞれｎｕｌｌ文字列とする。
【００８９】
属性は、ヘッダ行番号集合に含まれる行番号ｈのそれぞれについて行番号が若い順に表形式データ［ｈ］［ｋ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。属性行ＩＤはヘッダ行番号集合、属性列ＩＤはｋとする。
【００９０】
属性値は、表形式データ［ｉ］［ｋ］の属性「文字列」とする。属性値行ＩＤはｉ、属性列ＩＤはｋとする。
【００９１】
ステップＳ４０６では、ステップＳ４０４により獲得されたエンティティタイプ、エンティティ、エンティティ２、属性、属性値、ステップＳ１０２により獲得された表タイプ、及びステップＳ１０６により獲得された表関連情報（タイトル、キャプション、セクション見出し、表前テキスト、及び表外テキスト）を１レコードとして、検索データベース２８の知識レコード表に格納する。また、ステップＳ４０４により獲得されたエンティティタイプ行ＩＤ、エンティティタイプ列ＩＤ、エンティティ行ＩＤ、エンティティ列ＩＤ、エンティティ２ＩＤ、エンティティ２ＩＤ、属性行ＩＤ、属性列ＩＤ、属性値行ＩＤ、及び属性値列ＩＤを１レコードとして、検索データベース２８の知識セルＩＤ表に格納する。
【００９２】
上記ステップＳ４０４〜Ｓ４０６について、データ行番号集合に含まれる行番号ｉごとに繰り返す。
【００９３】
また、上記のように行番号ｉごとに繰り返すことを１からＭまでの属性列番号ｋごとに繰り返す。
【００９４】
また、上記のように属性列番号ｋごとに繰り返すことをエンティティ列番号集合に含まれる列番号ｊごとに繰り返す。
【００９５】
図９に、表タイプのクラスが「縦リスト」の場合の表内知識の抽出例を示す。
【００９６】
次に、表タイプのクラスが「横リスト」の場合について説明する。「横リスト」の場合、図１０に示す表内知識抽出処理ルーチンを実行する。
【００９７】
ステップＳ５００では、列番号ｊの列タイプ分類結果が、１≦ｊ≦ｍの範囲においてすべてヘッダであるとき、１≦ｊ≦ｍの範囲をヘッダ列番号集合として取得する。また、ヘッダ列番号集合に含まれず、かつ、１≦ｊ≦Ｍを満たす行番号の集合をデータ列番号集合として取得する。なお、ヘッダ列番号集合が空集合の場合、検索インデキシング処理ルーチンのステップＳ１００に戻って、次のｔａｂｌｅタグを選択し、以降の処理を続行する。
【００９８】
ステップＳ５０２では、下記の条件２を満たす行番号の集合を、エンティティ行番号集合として取得する。
【００９９】
（条件２）列番号１〜Ｍのうち列タイプの分類結果が「データ」である列における、表形式データ［行番号］［列番号］の属性−属性値集合の属性「文字列」の種類数Ｋ１÷列タイプの分類結果が「データ」である列数Ｋ２＜閾値θ
【０１００】
なお、Ｋ２が０のとき条件２は満たされないものとする。θの値としては、具体的には０．７５などを設定する。なお、エンティティ行番号集合が空集合の場合、検索インデキシング処理ルーチンのステップＳ１００に戻って、次のｔａｂｌｅタグを選択し、以降の処理を続行する。
【０１０１】
エンティティ行番号集合に含まれる行番号ｉごとに、以下の処理を繰り返す。
【０１０２】
まず、１からＮまでの行番号ｋごとに、データ列番号集合に含まれる列番号ｊの各々について、以下のステップＳ５０４、Ｓ５０６を繰り返す。
【０１０３】
ステップＳ５０４では、エンティティ行番号集合に含まれる行番号ｉ、行番号ｋ、及びデータ列番号集合に含まれる列番号ｊについて、表内知識を抽出する。抽出する表内知識は、以下のエンティティタイプ、エンティティ、エンティティ２、属性、及び属性値である。
【０１０４】
エンティティタイプは、ヘッダ列番号集合に含まれる列番号ｈのそれぞれについて列番号が若い順に表形式データ［ｉ］［ｈ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。エンティティ行ＩＤはｉ、エンティティ列ＩＤはヘッダ列番号集合とする。
【０１０５】
エンティティは、表形式データ［ｉ］［ｊ］の属性「文字列」とする。エンティティ行ＩＤはｉ、エンティティ列ＩＤはｊとする。
【０１０６】
エンティティ２は、ｎｕｌｌ文字列とする。エンティティ２行ＩＤ、エンティティ２列ＩＤはそれぞれｎｕｌｌ文字列とする。
【０１０７】
属性は、ヘッダ列番号集合に含まれる列番号ｈのそれぞれについて列番号が若い順に表形式データ［ｋ］［ｈ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。属性行ＩＤはｋ、属性列ＩＤはヘッダ列番号集合とする。
【０１０８】
属性値は、表形式データ［ｋ］［ｊ］の属性「文字列」とする。属性行ＩＤはｋ、エンティティ列ＩＤはｊとする。
【０１０９】
ステップＳ５０６では、ステップＳ５０４により獲得されたエンティティタイプ、エンティティ、エンティティ２、属性、属性値、ステップＳ１０２により獲得された表タイプ、及びステップＳ１０６により獲得された表関連情報（タイトル、キャプション、セクション見出し、表前テキスト、及び表外テキスト）を１レコードとして、検索データベース２８の知識レコード表に格納する。また、エンティティタイプ行ＩＤ、エンティティタイプ列ＩＤ、エンティティ行ＩＤ、エンティティ列ＩＤ、エンティティ２ＩＤ、エンティティ２ＩＤ、属性行ＩＤ、属性列ＩＤ、属性値行ＩＤ、属性値列ＩＤを１レコードとして、検索データベース部の知識セルＩＤ表に格納する。
【０１１０】
上記ステップＳ５０４〜Ｓ５０６について、データ列番号集合に含まれる列番号ｊごとに繰り返す。
【０１１１】
上記のように列番号ｊごとに繰り返すことを、１からＮまでの行番号ｋごとに繰り返す。
【０１１２】
また、上記のように行番号ｋごとに繰り返すことを、エンティティ行番号集合に含まれる行番号ｉごとに繰り返す。ただし、ｋ＝ｉの場合は次の行番号ｉの処理に移る。
【０１１３】
図１１に、表タイプのクラスが「横リスト」の場合の表内知識の抽出例を示す。
【０１１４】
次に、表タイプのクラスが「縦属性」の場合について説明する。「縦属性」の場合、図１２に示す表内知識抽出処理ルーチンを実行する。
【０１１５】
ステップＳ６００では、行番号ｉの行タイプ分類結果が、１≦ｉ≦ｎの範囲においてすべてヘッダであるとき、１≦ｉ≦ｎの範囲をヘッダ行番号集合として取得する。また、ヘッダ行番号集合に含まれず、かつ、１≦ｉ≦Ｎを満たす行番号の集合をデータ行番号集合として取得する。なお、ヘッダ行番号集合が空集合の場合、検索インデキシング処理ルーチンのステップＳ１００に戻って、次のｔａｂｌｅタグを選択し、以降の処理を続行する。
【０１１６】
ステップＳ６０２では、列番号ｊの列タイプ分類結果が、１≦ｊ≦ｍの範囲においてすべてヘッダであるとき、１≦ｊ≦ｍの範囲をヘッダ列番号集合として取得する。ヘッダ列番号集合に含まれず、かつ、１≦ｊ≦Ｍを満たす行番号の集合をデータ列番号集合として取得する。
【０１１７】
そして、データ列番号集合に含まれる列番号ｊごとに、以下のステップＳ６０４〜Ｓ６０６を繰り返す。
【０１１８】
ステップＳ６０４では、データ列番号集合に含まれる列番号ｊについて、表内知識を抽出して、検索データベース２８にレコードを格納する。抽出する表内知識は、以下のエンティティタイプ、エンティティ、エンティティ２、属性、及び属性値である。
【０１１９】
エンティティタイプはｎｕｌｌ文字列とする。エンティティタイプ行ＩＤ、エンティティタイプ列ＩＤはそれぞれｎｕｌｌ文字列とする。
【０１２０】
エンティティは、表関連情報の属性「キャプション」にｎｕｌｌ文字列以外が設定されている場合は、その属性値を設定し、エンティティ行ＩＤ、エンティティ列ＩＤをそれぞれｎｕｌｌ文字列とする。
【０１２１】
属性「キャプション」がｎｕｌｌ文字列かつヘッダ行番号集合が空集合で無い場合は、ヘッダ列番号集合に含まれる列番号ｈのそれぞれおよび１〜Ｎの行番号ｋのそれぞれについて列番号が若い順、次に行番号が若い順に表形式データ［ｋ］［ｈ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列をエンティティとする。エンティティ行ＩＤは［１、２、…、Ｎ］、エンティティ列ＩＤはヘッダ列番号集合とする。
【０１２２】
属性「キャプション」がｎｕｌｌ文字列かつヘッダ行番号集合が空集合のときは、表関連情報の属性「タイトル」をエンティティとする。エンティティ行ＩＤ、エンティティ列ＩＤをそれぞれｎｕｌｌ文字列とする。
【０１２３】
エンティティ２は、ｎｕｌｌ文字列とする。エンティティ２行ＩＤ、エンティティ２列ＩＤはそれぞれｎｕｌｌ文字列とする。
【０１２４】
属性は、ヘッダ行番号集合に含まれる行番号ｈのそれぞれについて行番号が若い順に表形式データ［ｈ］［ｊ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。属性行ＩＤはヘッダ行番号集合、属性列ＩＤはｊとする。
【０１２５】
属性値は、データ行番号集合に含まれる行番号ｄのそれぞれについて列番号が若い順に表形式データ［ｄ］［ｊ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。属性値行ＩＤはデータ行番号集合、属性値列ＩＤはｊとする。
【０１２６】
ステップＳ６０６では、ステップＳ６０４により獲得されたエンティティタイプ、エンティティ、エンティティ２、属性、属性値、ステップＳ１０２により獲得された表タイプ、及びステップＳ１０６により獲得された関連情報（タイトル、キャプション、セクション見出し、表前テキスト、及び表外テキスト）を１レコードとして、検索データベース２８の知識レコード表に格納する。また、エンティティタイプ行ＩＤ、エンティティタイプ列ＩＤ、エンティティ行ＩＤ、エンティティ列ＩＤ、エンティティ２ＩＤ、エンティティ２ＩＤ、属性行ＩＤ、属性列ＩＤ、属性値行ＩＤ、属性値列ＩＤを１レコードとして、検索データベース２８の知識セルＩＤ表に格納する。
【０１２７】
図１３に、表タイプのクラスが「縦属性」の場合の表内知識の抽出例を示す。
【０１２８】
次に、表タイプのクラスが「横属性」の場合について説明する。「横属性」の場合、図１４に示す表内知識抽出処理ルーチンを実行する。
【０１２９】
ステップＳ７００では、行番号ｉの行タイプ分類結果が、１≦ｉ≦ｎの範囲においてすべてヘッダであるとき、１≦ｉ≦ｎの範囲をヘッダ行番号集合として取得する。また、ヘッダ行番号集合に含まれず、かつ、１≦ｉ≦Ｎを満たす行番号の集合をデータ行番号集合として取得する。
【０１３０】
ステップＳ７０２では、列番号ｊの列タイプ分類結果が、１≦ｊ≦ｍの範囲においてすべてヘッダであるとき、１≦ｊ≦ｍの範囲をヘッダ列番号集合として取得する。ヘッダ列番号集合に含まれず、かつ、１≦ｊ≦Ｍを満たす行番号の集合をデータ列番号集合として取得する。なお、ヘッダ列番号集合が空集合の場合、検索インデキシング処理ルーチンのステップＳ１００に戻って、次のｔａｂｌｅタグを選択し、以降の処理を続行する。
【０１３１】
そして、データ行番号集合に含まれる行番号ｉごとに、以下のステップＳ７０４〜Ｓ７０６を繰り返す。
【０１３２】
ステップＳ７０４では、データ行番号集合に含まれる行番号ｉについて、表内知識を抽出して、検索データベース部にレコードを格納する。抽出する表内知識は、以下のエンティティタイプ、エンティティ、エンティティ２、属性、及び属性値である。
【０１３３】
エンティティタイプはｎｕｌｌ文字列とする。エンティティタイプ行ＩＤ、エンティティタイプ列ＩＤはそれぞれｎｕｌｌ文字列とする。
【０１３４】
表関連情報の属性「キャプション」にｎｕｌｌ文字列以外が設定されている場合は、エンティティに属性「キャプション」の属性値を設定し、エンティティ行ＩＤ、エンティティ列ＩＤをそれぞれｎｕｌｌ文字列とする。
【０１３５】
属性「キャプション」がｎｕｌｌ文字列かつヘッダ行番号集合が空集合で無い場合は、ヘッダ行番号集合に含まれる行番号ｈのそれぞれおよび１〜Ｍの列番号ｋのそれぞれについて行番号が若い順、次に列番号が若い順に表形式データ［ｈ］［ｋ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列をエンティティとする。エンティティ行ＩＤはヘッダ行番号集合、エンティティ列ＩＤは、［１、２、…、Ｍ］の配列とする。
【０１３６】
属性「キャプション」がｎｕｌｌ文字列かつヘッダ行番号集合が空集合のときは、表関連情報の属性「タイトル」をエンティティとする。エンティティ行ＩＤ、エンティティ列ＩＤをそれぞれｎｕｌｌ文字列とする。
【０１３７】
エンティティ２は、ｎｕｌｌ文字列とする。エンティティ２行ＩＤ、エンティティ２列ＩＤはそれぞれｎｕｌｌ文字列とする。
【０１３８】
属性は、ヘッダ列番号集合に含まれる列番号ｈのそれぞれについて列番号が若い順に表形式データ［ｉ］［ｈ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。属性行ＩＤはｉ、属性列ＩＤはヘッダ列番号集合とする。
【０１３９】
属性値は、データ列番号集合に含まれる列番号ｄのそれぞれについて列番号が若い順に表形式データ［ｉ］［ｄ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。属性値行ＩＤはｉ、属性列ＩＤはデータ列番号集合とする。
【０１４０】
ステップＳ７０６では、ステップＳ７０４により獲得されたエンティティタイプ、エンティティ、エンティティ２、属性、属性値、ステップＳ１０２により獲得された表タイプ、及びステップＳ１０６により獲得された表関連情報（タイトル、キャプション、セクション見出し、表前テキスト、及び表外テキスト）を１レコードとして、検索データベース２８の知識レコード表に格納する。また、エンティティタイプ行ＩＤ、エンティティタイプ列ＩＤ、エンティティ行ＩＤ、エンティティ列ＩＤ、エンティティ２ＩＤ、エンティティ２ＩＤ、属性行ＩＤ、属性列ＩＤ、属性値行ＩＤ、属性値列ＩＤを１レコードとして、検索データベース２８の知識セルＩＤ表に格納する。
【０１４１】
図１５に、表タイプのクラスが「横属性」の場合の表内知識の抽出例を示す。
【０１４２】
次に、表タイプのクラスが「行列」の場合について説明する。「行列」の場合、図１６に示す表内知識抽出処理ルーチンを実行する。
【０１４３】
ステップＳ８００では、行番号ｉの行タイプ分類結果が、１≦ｉ≦ｎの範囲においてすべてヘッダであるとき、１≦ｉ≦ｎの範囲をヘッダ行番号集合として取得する。また、ヘッダ行番号集合に含まれず、かつ、１≦ｉ≦Ｎを満たす行番号の集合をデータ行番号集合として取得する。
【０１４４】
ステップＳ８０２では、列番号ｊの列タイプ分類結果が、１≦ｊ≦ｍの範囲においてすべてヘッダであるとき、１≦ｊ≦ｍの範囲をヘッダ列番号集合として取得する。また、ヘッダ列番号集合に含まれず、かつ、１≦ｊ≦Ｍを満たす行番号の集合をデータ列番号集合として取得する。なお、ヘッダ列番号集合が空集合の場合、検索インデキシング処理ルーチンのステップＳ１００に戻って、次のｔａｂｌｅタグを選択し、以降の処理を続行する。
【０１４５】
そして、列番号ｊごとに繰り返すことについて、データ行番号集合に含まれる行番号ｉごとに、以下の処理を繰り返す。
【０１４６】
データ列番号集合に含まれる列番号ｊごとに、以下のステップＳ８０４〜Ｓ８０６の処理を繰り返す。
【０１４７】
ステップＳ８０４では、データ行番号集合に含まれる行番号ｉ、及びデータ列番号集合に含まれる列番号ｊについて、表内知識を抽出して、検索データベース２８にレコードを格納する。抽出する表内知識は、以下のエンティティタイプ、エンティティ、エンティティ２、属性、及び属性値である。
【０１４８】
エンティティタイプはｎｕｌｌ文字列とする。エンティティタイプ行ＩＤ、エンティティタイプ列ＩＤはそれぞれｎｕｌｌ文字列とする。
【０１４９】
エンティティは、ヘッダ列番号集合に含まれる列番号ｈのそれぞれについて列番号が若い順に表形式データ［ｉ］［ｈ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。エンティティ行ＩＤはｉ、エンティティ列ＩＤはヘッダ列番号集合とする
【０１５０】
エンティティ２は、ヘッダ行番号集合に含まれる行番号ｈのそれぞれについて行番号が若い順に表形式データ［ｈ］［ｊ］の属性「文字列」を取得した後、重複する文字列を除去した文字列集合を空白文字で連結した文字列とする。エンティティ２行ＩＤはヘッダ行番号集合、エンティティ２列ＩＤはｊとする。
【０１５１】
属性は、表関連情報の属性「キャプション」、属性「セクション見出し」、属性「タイトル」の属性値の中で、ｎｕｌｌ文字列で無いものを指定する。ｎｕｌｌ文字列で無い該属性値が複数個ある場合は、キャプションを最も優先し、次にセクション見出しを優先する。属性行ＩＤ、属性列ＩＤはそれぞれｎｕｌｌ文字列とする。
【０１５２】
属性値は、表形式データ［ｉ］［ｊ］の属性「文字列」とする。属性値行ＩＤはｉ、属性値列ＩＤはｊとする。
【０１５３】
ステップＳ８０６では、ステップＳ８０４により獲得されたエンティティタイプ、エンティティ、エンティティ２、属性、属性値と、ステップＳ１０２により獲得された表タイプと、ステップＳ１０６により獲得された関連情報（タイトル、キャプション、セクション見出し、表前テキスト、及び表外テキスト）を１レコードとして、検索データベース２８の知識レコード表に格納する。また、エンティティタイプ行ＩＤ、エンティティタイプ列ＩＤ、エンティティ行ＩＤ、エンティティ列ＩＤ、エンティティ２ＩＤ、エンティティ２ＩＤ、属性行ＩＤ、属性列ＩＤ、属性値行ＩＤ、属性値列ＩＤを１レコードとして、検索データベース２８の知識セルＩＤ表に格納する。
上記ステップＳ８０４〜Ｓ８０６を、データ列番号集合に含まれる列番号ｊごとに繰り返す。
【０１５４】
上記のように列番号ｊごとに繰り返すことを、データ行番号集合に含まれる行番号ｉごとに繰り返す。
【０１５５】
図１７及び図１８に、表タイプのクラスが「行列」の場合の表内知識の抽出例を示す。
【０１５６】
以上が、検索インデキシング処理ルーチンの説明である。
【０１５７】
次に、表セル検索処理ルーチンについて説明する。
【０１５８】
入力部１０において検索クエリであるキーワード集合あるいは自然文を受け付けると、表セル検索装置１００は、図１９に示す表セル検索処理ルーチンを実行する。
【０１５９】
ステップＳ９００では、クエリ解釈部４０は入力部１０で受け付けた検索クエリであるキーワード集合あるいは自然文について、検索クエリ内の属性に対応するキーワード、及び検索クエリ内の属性以外のキーワードにラベルを付与する。
【０１６０】
ラベルの付与方法は、検索クエリの内容に応じて異なる。
【０１６１】
まず、検索クエリが定義済キーワードテンプレートにマッチするキーワード集合（空白文字区切りの文字列をキーワードと呼ぶ）で与えられた場合は、与えられた定義に従って各キーワードにラベル「属性」あるいは「その他」を付与する。
【０１６２】
定義済キーワードテンプレートは、
「(属性)of(その他)」
「(その他)の(属性)」
などが利用でき、例えば、「山田  の  誕生日」というキーワード集合に対しては、属性以外のキーワードである「山田」に「その他」、属性のキーワードである「誕生日」に「属性」というラベルを付与する。その他、自由に定義済キーワードテンプレートは追加しても良い。
【０１６３】
次に、検索クエリが定義済キーワードテンプレート集合にマッチしないキーワード集合で与えられた場合は、各キーワードにより検索データベースの知識レコード表の「属性」フィールドを検索し、最も検索ヒット数が多いキーワードに「属性」ラベルを付与し、属性以外のキーワードには「その他」ラベルを付与する。
【０１６４】
クエリが定義済自然文テンプレートにマッチする自然文で与えられた場合は、与えられた定義に従って自然文中の各キーワードにラベルを付与する。定義済自然文テンプレートは、
【０１６５】
「(.+:属性)の(.+:その他)はいつですか」
【０１６６】
などが利用できる。ここで、テンプレート中のカッコは、(正規表現パターン:ラベル名)を意味する。
【０１６７】
例えば、「山田の誕生日はいつですか」という自然文に対しては正規表現マッチングにより前記テンプレートとマッチするので、「山田」に「その他」、「誕生日」に「属性」というラベルを付与できる。その後で、自然文を形態素解析して得られた形態素のうち、テンプレートにマッチしなかった形態素について「その他」のラベルを付与することで、ラベル付与済みキーワード集合を得る。
【０１６８】
次に、検索クエリが定義済自然文テンプレートにマッチしない自然文で与えられた場合は、自然文を形態素解析してキーワード集合に変換した後に、上記検索クエリが定義済キーワードテンプレート集合にマッチしないキーワード集合で与えられた場合の処理を行うことでラベル付与済みキーワード集合を得る。
【０１６９】
また、ラベル付与済みキーワード集合のキーワードのそれぞれについて、同義語辞書にマッチしたものについては同義語をマッチしたキーワードと同じラベルを付与してラベル付与済みキーワード集合に追加する。例えば、ラベル付与済みキーワード集合が、「山田:その他」「誕生日：属性」であり、同義語辞書に、「誕生日」と「バースデイ」が登録されていた場合、ラベル付与済みキーワード集合は、「山田:その他」「誕生日：属性」「バースデイ：属性」とする。
【０１７０】
ステップＳ９０２では、ステップＳ２０２で得たラベル付与済みキーワード集合を用いて、検索データベース２８を検索し、知識レコードを獲得する。具体的には、以下のように検索する。
【０１７１】
「属性」ラベルが付与されたキーワードのいずれかが、検索データベース２８の知識レコード表の「属性」フィールドの全文検索にマッチした知識レコードを獲得する。
【０１７２】
また、「その他」ラベルが付与されたキーワードのいずれかが、知識レコード表の「エンティティ」フィールドの全文検索にマッチした知識レコードを獲得する。
【０１７３】
また、「その他」ラベルが付与されたキーワードのいずれかが「エンティティ」フィールド以外のフィールの全文検索にマッチした知識レコードについても獲得する。ここでは、知識レコード表の「エンティティタイプ」あるいは「タイトル」あるいは「セクション見出し」あるいは「キャプション」あるいは「表前テキスト」あるいは「表後テキスト」フィールドのいずれかに全文検索でマッチした知識レコードを獲得する。なお、獲得した知識レコードの「表タイプ」が「行列」の知識レコードについては、「その他」ラベルが付与されたキーワードのいずれかが「エンティティ２」フィールドに全文検索でマッチするか否かを判定し、マッチしない場合は獲得した知識レコードから除去する。
【０１７４】
ステップＳ９０４では、ステップＳ９０２で獲得した知識レコードのフィールド「属性値」の集合を検索結果として出力部５０に出力する。また、図２０の例に示す様に、獲得した知識レコードのフィールド「知識ＩＤ」に対応する検索データベース２８の知識セルＩＤ表を検索したレコードを検索結果に含めても良い。
【０１７５】
以上説明したように、本発明の実施の形態に係る表セル検索装置によれば、表形式データの各々について、表形式データに関連する表関連情報を、表形式データを含むＨＴＭＬ文書から抽出し、表形式データの表のタイプを分類し、各行及び各列のタイプを分類し、表関連情報、及び分類結果に基づいて、表形式データから抽出されるエンティティ、属性、及び属性値を含む表内情報と、表関連情報との組から構成されるセル知識を抽出し、抽出したセル知識を検索データベースに格納し、与えられた検索クエリであるキーワード集合あるいは自然文について、検索クエリ内の属性に対応するキーワードにラベルを付与し、ラベルが付与された検索クエリに基づいて、検索データベースから検索クエリに対応するセル知識を出力し、出力に基づいて、ユーザに検索結果を返却することにより、表外の知識を利用してセル知識を獲得し、検索クエリに対する回答を検索することができる。
【０１７６】
また、本発明の実施の形態の係る手法によれば、表形式データの表内に含まれるエンティティ、属性、及び属性値から構成される情報を、表外情報により補完したものを知識レコードとして抽出することで検索要求に直接回答可能になるため、情報検索や質問応答、対話システムなどに利用可能である。
【０１７７】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【０１７８】
１０   入力部
２０   演算部
２８   検索データベース
３０   表形式データ抽出部
３２   表タイプ分類部
３４   行列タイプ分類部
３６   表関連情報抽出部
３８   表内知識抽出部
４０   クエリ解釈部
４２   知識検索部
４４   検索結果生成部
５０   出力部
１００ 表セル検索装置
【図１】
0006480380.tif 000002
【図２】
0006480380.tif 000003
【図３】
0006480380.tif 000004
【図４】
0006480380.tif 000005
【図５】
0006480380.tif 000006
【図６】
0006480380.tif 000007
【図７】
0006480380.tif 000008
【図８】
0006480380.tif 000009
【図９】
0006480380.tif 000010
【図１０】
0006480380.tif 000011
【図１１】
0006480380.tif 000012
【図１２】
0006480380.tif 000013
【図１３】
0006480380.tif 000014
【図１４】
0006480380.tif 000015
【図１５】
0006480380.tif 000016
【図１６】
0006480380.tif 000017
【図１７】
0006480380.tif 000018
【図１８】
0006480380.tif 000019
【図１９】
0006480380.tif 000020
【図２０】
0006480380.tif 000021