(57)【要約】【課題】表データにおける項目部分と実体部分を判定する。【解決手段】表構造解析装置１００は、表データにおいて第１行のデータと第２行のデータを抽出する。これらのデータの類似度をレーベンシュタイン距離や文字数に基づいて算出する。更に、第１行と第２行全体としての類似度を求め、この類似度が所定の閾値以下であるとき、第１行と第２行の境界が、項目部分と実体部分の境界にあたると判定する。列方向についても同様に判定する。【選択図】図２
2010015554.tif 000002
【特許請求の範囲】
【請求項１】
表データを取得する表取得部と、
前記表データにおける第１のデータ系列から、第１のデータを抽出する第１データ抽出部と、
前記第１のデータ系列と隣接する第２のデータ系列から、第２のデータを抽出する第２データ抽出部と、
前記第１のデータと前記第２のデータの類似度を算出する類似度算出部と、
前記類似度が所定の閾値よりも小さいとき、前記第１のデータ系列と前記第２のデータ系列の境界が、表データにおける項目部分と実体部分の境界にあたると判定する境界判定部と、を備え、
前記類似度算出部は、前記第１のデータに所定の加工操作を施して前記第２のデータを生成するときの加工操作回数が少ないほど高い類似度を算出することを特徴とする表構造解析装置。
【請求項２】
前記類似度算出部は、前記第１のデータと前記第２のデータのレーベンシュタイン距離（Levenshtein Distance）が小さいほど高い類似度を算出することを特徴とする請求項１に記載の表構造解析装置。
【請求項３】
前記類似度算出部は、更に、前記第１のデータの文字数または前記第２のデータの文字数が多いほど高い類似度を算出することを特徴とする請求項１または２に記載の表構造解析装置。
【請求項４】
データに含まれる文字を、その字種を示す字種文字に変換する字種変換部、を更に備え、
前記類似度算出部は、変換後の前記第１のデータおよび変換後の前記第２のデータを対象として類似度を算出することを特徴とする請求項１から３のいずれかに記載の表構造解析装置。
【請求項５】
前記類似度算出部は、変換前の前記第１のデータおよび変換前の前記第２のデータを対象とする類似度を文字類似度、変換後の前記第１のデータおよび変換後の前記第２のデータを対象とする類似度を字種類似度としてそれぞれ算出し、文字類似度と字種類似度の加算値を境界判定のための類似度として算出することを特徴とする請求項４に記載の表構造解析装置。
【請求項６】
前記類似度算出部は、文字類似度および字種類似度の双方または一方を重み付けした上で、加算することを特徴とする請求項５に記載の表構造解析装置。
【請求項７】
前記類似度算出部は、文字類似度よりも字種類似度の重みが大きくなるように重み付け設定することを特徴とする請求項６に記載の表構造解析装置。
【請求項８】
前記類似度算出部は、前記第１のデータ系列と前記第２のデータ系列において互いに対応関係にある第１のデータと第２のデータを一セットとして、複数セットそれぞれについての類似度をデータ類似度として算出し、複数セットについての各データ類似度から前記第１のデータ系列と前記第２のデータ系列のデータ系列としての類似度を系列類似度として算出し、
前記境界判定部は、系列類似度が所定の閾値よりも小さいとき、前記第１のデータ系列および前記第２のデータ系列の境界が、項目部分と実体部分の境界にあたると判定することを特徴とする請求項１から７のいずれかに記載の表構造解析装置。
【請求項９】
前記境界判定部は、前記第１のデータ系列と前記第２のデータ系列に共用されるデータが存在するときには、前記第１のデータ系列および前記第２のデータ系列の境界は項目部分と実体部分の境界ではないと判定することを特徴とする請求項１から８のいずれかに記載の表構造解析装置。
【請求項１０】
前記類似度算出部は、前記第１のデータ系列における一のデータに対し、前記第２のデータ系列において複数のデータが対応付けられているときには、類似度が高くなるように調整することを特徴とする請求項１から９のいずれかに記載の表構造解析装置。
【請求項１１】
前記第１のデータ系列が項目部分を示すデータ系列であり、前記第２のデータ系列が実体部分を示すデータ系列であるとき、前記第１のデータ系列に含まれるデータに対しては項目を示す属性情報を付与し、前記第２のデータ系列に含まれるデータに対しては内容を示す属性情報を付与することにより、前記表データの構造を反映した構造化文書ファイルを生成する構造化文書生成部、を更に備えることを特徴とする請求項１から１０のいずれかに記載の表構造解析装置。
【請求項１２】
項目部分と実体部分の境界の指定をユーザから受け付ける指定受付部を更に備えることを特徴とする請求項１から１１のいずれかに記載の表構造解析装置。
【請求項１３】
表データを取得するステップと、
前記表データにおける第１のデータ系列から、第１のデータを抽出するステップと、
前記第１のデータ系列と隣接する第２のデータ系列から、第２のデータを抽出するステップと、
前記第１のデータと前記第２のデータの類似度を算出するステップと、
前記類似度が所定の閾値よりも小さいとき、前記第１のデータ系列と前記第２のデータ系列の境界が、表データにおける項目部分と実体部分の境界にあたると判定するステップと、を含み、
前記第１のデータに所定の加工操作を施して前記第２のデータを生成するときの加工操作回数が少ないほど高い類似度を算出することを特徴とする表構造解析方法。
【請求項１４】
表データを取得する処理と、
前記表データにおける第１のデータ系列から、第１のデータを抽出する処理と、
前記第１のデータ系列と隣接する第２のデータ系列から、第２のデータを抽出する処理と、
前記第１のデータと前記第２のデータの類似度を算出する処理と、
前記類似度が所定の閾値よりも小さいとき、前記第１のデータ系列と前記第２のデータ系列の境界が、表データにおける項目部分と実体部分の境界にあたると判定する処理と、をコンピュータに実行させ、
前記第１のデータに所定の加工操作を施して前記第２のデータを生成するときの加工操作回数が少ないほど高い類似度を算出することを特徴とする表構造解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書処理技術に関し、特に、表データの構造を解析するための技術、に関する。
【背景技術】
【０００２】
「表データ」は、人間にとってわかりやすいだけではなく、コンピュータにとっても情報処理しやすいデータ保持形式である。表データは、通常、項目部分と実体部分を含む。項目部分は、表の項目を示すデータ（以下、「項目データ」とよぶ）が位置する領域であり、実体部分は、表の実体的な内容を示すデータ（以下、「実体データ」とよぶ）が位置する領域である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１３４６０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
表データを正しく処理するためには、項目部分と実体部分、いいかえれば、項目データと実体データを判別する必要がある。表データを処理する前に、項目部分や実体部分を手動により明示的に指定してもよいが、こういったやり方は煩雑である。あるいは、項目部分と実体部分を特定するためのメタ情報をあらかじめ表データに設定しておいてもよいが、すべての表作成者にメタ情報の設定を義務づけることは現実的ではない。
【０００５】
本発明は、上記課題に鑑みて完成された発明であり、その主たる目的は、表データにおける項目部分と実体部分を効率的に判別するための技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明のある態様は、表構造解析装置に関する。
この装置は、表データにおける第１のデータ系列と第２のデータ系列からそれぞれデータを抽出する。「データ系列」とは、表データの「行」あるいは「列」であってもよい。それらのデータが類似していなければ、第１のデータ系列と第２のデータ系列の境界が、表データにおける項目部分と実体部分の境界にあたると判定する。
類似度は、第１のデータに所定の加工操作を施して第２のデータを生成するときの加工操作回数に基づいて算出される。
【０００７】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、システム、プログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、表データにおける項目部分と実体部分を効率的に判別できる。
【図面の簡単な説明】
【０００９】
【図１（ａ）】項目部分と実体部分が判別される前の表データを示す図である。
【図１（ｂ）】項目部分と実体部分が判別された後の図１（ａ）の表データを示す図である。
【図２】表構造解析装置の機能ブロック図である。
【図３】一部のセルが結合している表データの一例を示す図である。
【図４】一部のセルが結合している表データの別例を示す図である。
【図５】境界判定の処理過程を示すフローチャートである。
【図６】図１（ａ）の表データに基づくＸＭＬ文書を示す図である。
【図７】第１行だけが項目部分を形成する表データを示す図である。
【図８】図７の表データに基づくＸＭＬ文書を示す図である。
【図９】第１列だけが項目部分を形成する表データを示す図である。
【図１０】図９の表データに基づくＸＭＬ文書を示す図である。
【図１１】第１列と第２列が項目部分を形成する表データを示す図である。
【図１２】図１１の表データに基づくＸＭＬ文書を示す図である。
【図１３】第１行と第２行が項目部分を形成する表データを示す図である。
【図１４】図１３の表データに基づくＸＭＬ文書を示す図である。
【図１５】第２の実施の形態に係る表構造解析装置の機能ブロック図である。
【図１６】図１（ａ）に示した表データを、スプレッドシート形式で表示した画面の例を示す図である。
【図１７】表の構造に関する情報をユーザから受け付けるためのユーザインタフェース画面の例を示す図である。
【図１８】図１（ａ）に示した表データを、スプレッドシート形式で表示した画面の例を示す図である。
【図１９】表の構造に関する情報をユーザから受け付けるためのユーザインタフェース画面の例を示す図である。
【図２０】図１（ａ）に示した表データを、スプレッドシート形式で表示した画面の例を示す図である。
【図２１】表の構造に関する情報をユーザから受け付けるためのユーザインタフェース画面の例を示す図である。
【図２２】図１（ａ）に示した表データを、スプレッドシート形式で表示した画面の例を示す図である。
【発明を実施するための形態】
【００１０】
（第１の実施の形態）
図１（ａ）は、項目部分と実体部分が判別される前の表データの一例である。
図１（ａ）に示す表データは、４行×３列により１２個のデータを含む。第１行第２列のデータ（以下、「データ（１・２）」のように表記する）である「売上」は、第２列の項目名、すなわち、「列項目」を示す。同様に、「本数（１・３）」は、第３列の列項目である。「太郎（２・１）」は、第２行の項目名、すなわち、「行項目」を示す。
【００１１】
したがって、第２行第２列のデータ「１００００」は、「太郎（２・１）」という「製品（１・１）」の「売上（１・２）」が「１００００」であることを示している。以下、行や列として示される一連のデータ群のことを、「データ系列」とよぶ。
【００１２】
図１（ｂ）は、項目部分と実体部分が判別された後の図１（ａ）の表データである。
第１行の「製品」、「売上」、「本数」は、いずれも列項目を示す項目データである。以下、第１行のように項目データのみを含む行を「項目行」とよぶ。第２行の「太郎」は行項目を示す項目データであるが、「１００００」と「２５０」は、実体データである。第２行のように実体データを含む行を「実体行」とよぶ。第３行、第４行も実体行である。
【００１３】
第１列の「製品」、「太郎」、「次郎」、「三郎」は、いずれも行項目を示す項目データである。以下、第１列のように項目データのみを含む列を「項目列」とよぶ。第２列の「売上」は列項目を示す項目データであるが、「１００００」、「５０００」、「３０００」は実体データである。第２列のように実体データを含む列を「実体列」とよぶ。第３列も実体列である。
【００１４】
項目行および項目列は「項目部分」を形成し、それ以外の部分は「実体部分」を形成する。図１（ｂ）においては、項目部分を斜線にて示している。以降に示す図においても同様である。
本実施例の表構造解析装置１００は、図１（ａ）に示したような行列形式の表データを取得し、項目部分と実体部分を自動的に判別する装置である。
【００１５】
図２は、表構造解析装置１００の機能ブロック図である。
ここに示す各ブロックは、ハードウェア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組み合わせによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【００１６】
表構造解析装置１００は、ＵＩ（ユーザ・インタフェース）部１１０、データ処理部１２０およびデータ保持部１４０を含む。
ＵＩ部１１０は、ユーザインタフェース全般に関する処理を担当する。
データ処理部１２０は、ＵＩ部１１０やデータ保持部１４０から取得されたデータをもとにして各種のデータ処理を実行する。データ処理部１２０は、ＵＩ部１１０とデータ保持部１４０の間のインタフェースの役割も果たす。
データ保持部１４０は、あらかじめ用意された各種の設定データや、データ処理部１２０から受け取ったデータを格納する。
【００１７】
ＵＩ部１１０：
ＵＩ部１１０は、表取得部１１２および文書出力部１１４を含む。表取得部１１２は、表データを取得する。表データは、表計算アプリケーションにより生成されてもよい。表取得部１１２は、ＨＴＭＬ（HyperText Markup Language）に含まれるtableタグに基づいて、ＨＴＭＬ文書中から表データを抽出してもよい。表データは後述する構造化文書生成部１３４によりＸＭＬ（eXtensible Markup Language）文書に変換される。ＸＭＬ文書以外にも、ＨＴＭＬ文書やＸＨＴＭＬ（eXtensible HyperText Markup Language）文書などの他形式の構造化文書ファイルに変換してもよい。文書出力部１１４は、生成されたＸＭＬ文書を画面表示させる。あるいは、外部装置に送信する。
【００１８】
データ保持部１４０：
データ保持部１４０は、表保持部１４２と文書保持部１４４を含む。表保持部１４２は、表取得部１１２が取得した表データを保持する。文書保持部１４４は、表データから生成されたＸＭＬ文書を保持する。
【００１９】
データ処理部１２０：
データ処理部１２０は、データ抽出部１２２、字種変換部１２８、類似度算出部１３０、境界判定部１３２および構造化文書生成部１３４を含む。データ抽出部１２２は、表データからデータを抽出する。データ抽出部１２２は、第１データ抽出部１２４と第２データ抽出部１２６を含む。第１データ抽出部１２４は、表データにおける第１のデータ系列からデータを抽出し、第２データ抽出部１２６は、第１のデータ系列に隣接する第２のデータ系列からデータを抽出する。たとえば、第１データ抽出部１２４が第１行からデータ（１・ｍ）を抽出するとき、第２データ抽出部１２６は第２行からデータ（２・ｍ）を抽出する。第１データ抽出部１２４が第１列からデータ（ｎ・１）を抽出するとき、第２データ抽出部１２６は第２行からデータ（ｎ・２）を抽出する。
【００２０】
字種変換部１２８は、抽出されたデータに含まれる文字を、字種に応じた所定文字（以下、「字種文字」とよぶ）に変換する。字種文字への変換（以下、単に「字種変換」とよぶ）については後に詳述する。
【００２１】
類似度算出部１３０は、類似度を算出する。本実施例における「類似度」は、「データ類似度」と「系列類似度」を総称した概念である。また、「データ類似度」は「文字類似度」、「字種類似度」および「総合類似度」を総称した概念である。境界判定部１３２は表データにおける項目部分と実体部分の境界を類似度、より具体的には、系列類似度に基づいて判定する（以下、このような判定を「境界判定」とよぶ）。以下、類似度について説明する。
【００２２】
（１）データ類似度
（１−１）文字類似度
比較対象となる２つのデータについて、文字自体に基づく類似度を示す。文字類似度の計算式は、以下の通りである。
【００２３】
【数１】
2010015554.tif 000003
【００２４】
レーベンシュタイン距離（編集距離）とは、情報理論分野において２つの文字列がどの程度異なっているかを示す指標値である。具体的には、第１の文字列に対して、文字の挿入・置換・削除・追加といった加工操作を施し、第２の文字列を生成するときの加工操作の回数を示す。加工操作が少ないほど、いいかえれば、レーベンシュタイン距離が短いほど、第１の文字列と第２の文字列は類似していることになる。
【００２５】
たとえば、文字列「kitten」に加工操作を施して文字列「sitting」を生成する場合、
１回目．sitten（「kitten」の先頭文字「k」を「s」に置換）
２回目．sittin（「sitten」の５番目の文字「e」を「i」に置換）
３回目．sitting（文字「g」を追加）
という３回の加工操作が必要である。したがって、文字列「kitten」と文字列「sitting」のレーベンシュタイン距離は「３」となる。Distance(A,B)は、レーベンシュタイン距離に限らず、文字列としての違いを示す上で適切な指標値であればよい。
【００２６】
文字列「kitten」は６文字、文字列「sitting」は７文字であるため、Max("kitten","sitting")は、「７」となる。したがって、Sim("kitten","sitting")＝（７−３）÷７＝約０．５７となる。上記からも明らかなように、文字列類似度は、レーベンシュタイン距離が一定であれば文字列が長いほど、また、文字列長が一定であればレーベンシュタイン距離が短いほど大きな値となる。
【００２７】
同様にして、図１（ａ）において第１行の「売上（１・２）」と第２行の「１００００（２・２）」を比較してみる。「売上」は２文字、「１００００」は５文字であるため、Max("売上","１００００")＝５である。Distance("売上","１００００")＝５である。したがって、Sim("売上","１００００")＝（５−５）÷５＝０となる。
第２行の「１００００（２・２）」と第３行の「５０００（３・２）」を比較してみる。Max("１００００","５０００")＝５、Distance("１００００","５０００")＝２であるから、Sim("１００００","５０００")＝（５−２）÷５＝０．６となる。
【００２８】
第１データ抽出部１２４は、第１行から「製品」、「売上」、「本数」を順次抽出する。第２データ抽出部１２６は、第２行から「太郎」、「１００００」、「２５０」を順次抽出する。類似度算出部１３０は、「製品」と「太郎」、「売上」と「１００００」、「本数」と「２５０」のそれぞれに組み合わせについて文字類似度を算出する。
【００２９】
（１−２）字種類似度
比較対象となる２つのデータについて、字種に基づく類似度を示す。字種類似度の計算式も、文字類似度の計算式と同じである。ただし、字種類似度を計算する前に、比較対象となる各文字列に含まれる各文字を、
数字・記号    →0
英文字        →A
全角文字      →ZZ
半角カタカナ  →Y
全角区切り文字→//
その他の文字  →*
のように字種変換する。「0」、「A」、「ZZ」、「Y」、「//」、「*」は字種文字である。
【００３０】
たとえば、文字列「kitten」を字種変換すると「AAAAAA」、文字列「sitting」を字種変換すると「AAAAAAA」となる。字種変換後の文字列「kitten」と字種変換後の文字列「sitting」のレーベンシュタイン距離とは、文字列「AAAAAA」と文字列「AAAAAAA」のレーベンシュタイン距離であり、「１」となる。したがって、字種類似度Sim("kitten","sitting")＝（７−１）÷７＝約０．８６となる。字種類似度も、比較対象となる文字列が長いほど、また、レーベンシュタイン距離が短いほど大きな値となる。字種の相違による影響は、文字類似度に対してよりも字種類似度に対しての方が大きい。
【００３１】
同様にして、図１（ａ）において第１行の「売上（１・２）」と第２行の「１００００（２・２）」の字種類似度を求めてみる。「売上」→「ZZZZ」、「１００００」→「00000」であるため、Distance("売上","１００００")＝５となり、字種類似度Sim("売上","１００００")＝（５−５）÷５＝０となる。
第２行の「１００００（２・２）」と第３行の「５０００（３・２）」を比較してみる。「１００００」→「00000」、「５０００」→「0000」であるため、Distance("１００００","５０００")＝１となり、字種類似度Sim("１００００","５０００")＝（５−１）÷５＝０．８となる。
【００３２】
字種変換部１２８は、第１データ抽出部１２４や第２データ抽出部１２６が抽出するデータをそれぞれ字種変換し、類似度算出部１３０は、字種変換後の文字列それぞれについて字種類似度を計算する。
【００３３】
（１−３）総合類似度
文字類似度と字種類似度に基づく類似度である。総合類似度の計算式は、以下の通りである。
【００３４】
【数２】
2010015554.tif 000004
【００３５】
第１データ抽出部１２４が第１行からデータを抽出し、第２データ抽出部１２６が第２行からデータを抽出するとき、類似度算出部１３０は、「製品」と「太郎」、「売上」と「１００００」、「本数」と「２５０」のそれぞれに組み合わせについて文字類似度、字種類似度および総合類似度を算出する。本実施例においては、ａ＝０．３、ｂ＝０．７に設定し、文字類似度よりも字種類似度の影響が大きくなるように総合類似度の計算式を設定する。
【００３６】
（２）系列類似度
系列類似度は、比較対象となる２つのデータ系列についての類似度を示す。類似度算出部１３０は、データ類似度、すなわち、文字類似度、字種類似度あるいは総合類似度に基づいて、系列類似度を算出する。本実施例においては、総合類似度に基づいて系列類似度を算出する。より具体的には、類似度算出部１３０は、総合類似度の平均値を系列類似度として算出する。
たとえば、第１行と第２行を比較する場合、「製品」と「太郎」の総合類似度をＡ１、「売上」と「１００００」の総合類似度をＡ２、「本数」と「２５０」の総合類似度をＡ３とすると、Ａ１〜Ａ３の平均値が、第１行と第２行の系列類似度となる。系列類似度が所定の閾値（以下、「境界閾値」とよぶ）以下、たとえば、０．３２以下であれば、第１行と第２行の境界が項目部分と実体部分の境界であると判定する。
【００３７】
表データにおける項目データと実体データを見比べると、通常、データの種別や長さに顕著な差異が表れることが多い。表構造解析装置１００は、このような知見を反映したアルゴリズムによる境界判定を実現している。ａ＝０．３、ｂ＝０．７、境界閾値＝０．３２として、本発明者が実験したところ、約９０％の精度にて、正しく境界を判定することができた。
【００３８】
なお、Ａ１〜Ａ３の単純平均ではなく、たとえば、加重平均により系列類似度を求めてもよい。構造化文書生成部１３４は、境界判定の結果にしたがって、表データを構造化し、ＸＭＬ文書を生成する。ＸＭＬ文書の生成については、図６以降に関連して詳述する。
【００３９】
図３は、一部のセルが結合している表データの一例である。
図３に示す５行×３列の表データにおいて、第１行と第２行は「製品（１・１）（２・１）」を共用している。このような構造の表データの場合、通常、第１行と第２行の境界は、項目部分と実体部分の境界とはならない。そこで、比較対象となるデータ系列が１つでもデータを共用しているときには、境界判定部１３２は、系列類似度の計算をすることなく、境界ではないと判定する。代わりに、境界判定部１３２は、第２行と第３行を対象として境界判定を実行する。
以下、図３のように比較対象となるデータ系列において、データが共用される表構造のことを「第１パターン構造」とよぶ。
【００４０】
図４は、一部のセルが結合している表データの別例である。
図４に示す４行×４列の表データにおいて、第１行には１つのデータだけが含まれているが、第２行には２つのデータが含まれている。すなわち、「売上（１・１〜４）」に対しては、「上期（２・１〜２）」と「下期（２・３〜４）」の２つが対応している。このような構造の表データの場合、通常、第１行と第２行の境界が項目部分と実体部分の境界となる可能性は低い。そこで、まず、第１行と第２行を比較するに際しては、「売上」と「上期」、「売上」と「下期」のそれぞれの組み合わせについて総合類似度Ａ１、Ａ２を算出する。更に、類似度算出部１３０は総合類似度Ａ１、Ａ２に所定の補正値、たとえば、０．０７を加算する。このような補正により、図４に示す表データにおいて、第１行と第２行の境界が項目部分と実体部分の境界として判定されにくくなるように処置している。第１行と第２行の境界が項目部分と実体部分の境界として判定されなければ、境界判定部１３２は第２行と第３行について境界判定を実行する。
以下、図４のように比較対象となるデータ系列において、比較対象となるデータが１対多対応する表構造のことを「第２パターン構造」とよぶ。
【００４１】
図５は、境界判定の処理過程を示すフローチャートである。
まず、データ抽出部１２２は、比較対象となるデータ系列を特定する（Ｓ１０）。たとえば、第１行と第２行を特定する。ここで、第１行と第２行が１つのデータを共有していれば（Ｓ１２のＹ）、いいかえれば、第１パターン構造であれば、別のデータ系列が比較対象として選択される。第１行と第２行の関係において第１パターン構造となっているときには、第２行と第３行が比較対象となる。第１パターン構造となっていなければ（Ｓ１２のＮ）、第１データ抽出部１２４と第２データ抽出部１２６は、順次、比較対象となるデータを抽出する（Ｓ１４）。図１（ａ）の表データの場合、第１行と第２行が比較対象となり、まず、第１データ抽出部１２４が「製品（１・１）」、第２データ抽出部１２６が「太郎（２・１）」を抽出する。類似度算出部１３０は、文字類似度Sim1を算出する（Ｓ１６）。「製品（１・１）」と「太郎（２・１）」の場合、文字類似度Sim1は「０」となる。
【００４２】
次に、字種変換部１２８が比較対象となるデータを字種変換し、類似度算出部１３０は字種類似度Sim2を算出する（Ｓ１８）。「製品（１・１）」と「太郎（２・１）」の場合、「製品（１・１）」→「ZZZZ」、「太郎（２・１）」→「ZZZZ」に字種変換され、字種類似度Sim2は「１」となる。
【００４３】
類似度算出部１３０は、次に、総合類似度Sim3を算出する（Ｓ２０）。「製品（１・１）」と「太郎（２・１）」であれば、Sim3=0.3×Sim1+0.7×Sim2=0.7となる。
【００４４】
ここで、比較対象となるデータが、第２パターンのように１対多対応となる場合には（Ｓ２２のＹ）、いいかえれば、第２パターン構造であれば、補正値の加算により総合類似度を調整する（Ｓ２４）。１対多対応でなければ（Ｓ２２のＮ）、Ｓ２４はスキップされる。比較対象となるデータ系列において、未検証のデータがあれば（Ｓ２６のＮ）、処理はＳ１４に戻る。図１（ａ）の表データの場合、「売上（１・２）」と「１００００（２・２）」を次の比較対象として、「売上（１・２）」と「１００００（２・２）」の総合類似度を求める。図１（ａ）の表データにおける第１行と第２行の場合、
Sim3("製品","太郎")=0.7
Sim3("売上","１００００")=0
Sim3("本数","２５０")=0
となる。
【００４５】
すべてのデータについて総合類似度を算出すると（Ｓ２６のＹ）、類似度算出部１３０は、各総合類似度Sim3の平均値として系列類似度Sim4を算出する（Ｓ２８）。上記例の場合、Sim4=(0.7+0+0)/3=0.23となる。境界判定部１３２は、系列類似度が境界閾値０．３２以下であるか否かに基づいて境界判定を実行する（Ｓ３０）。上記例の場合、第１行と第２行についての系列類似度Sim4は境界閾値０．３２以下なので、第１行と第２行の境界は、項目部分と実体部分の境界であると判定される。
【００４６】
同様にして、各列についても類似度を算出し、項目列が存在するか否かについて境界判定が実行される。こうして、表データの項目部分と実体部分が自動的に特定される。構造化文書生成部１３４は、境界判定の結果に基づいて、表データに含まれる各データを構造化し、ＸＭＬ文書を生成する。
【００４７】
図６は、図１（ａ）の表データに基づくＸＭＬ文書を示す図である。
表自体は、tableタグにより示される。recordタグは、各行を示す。図１（ａ）の表データは、４行なので、record要素は４つである。
【００４８】
recordタグのheader属性は、対象行の行項目を示す。行項目がなければ、いいかれば、項目列がなければheader属性は設定されない。たとえば、図１（ａ）の表データの場合、各行の行項目は「製品」、「太郎」、「次郎」、「三郎」であるため、各行に対応するrecordタグのheader属性は、それぞれ、「製品」、「太郎」、「次郎」、「三郎」となる。
【００４９】
cell要素は、対象行に含まれるデータを示す。３列なので、各record要素におけるcell要素の数は３つである。
【００５０】
cellタグのheader属性は、対象データの列項目を示す。列項目がなければ、いいかえれば、項目行がなければheader属性は設定されない。対象データ自体が列項目である場合にはcellタグのtype属性として「h」が設定される。図１（ａ）の表データの場合、各列の列項目は「製品」、「売上」、「本数」であるため、cellタグのheader属性は、それぞれ、「製品」、「売上」、「本数」となる。ただし、第１行に含まれるデータは列項目であるため、header属性の代わりにtype属性として「h」が設定されている。
【００５１】
ＸＭＬ文書による構造化により、XPath式によるデータ検索が可能となる。たとえば、
//record[@header="太郎"]
という検索式により、行項目名＝「太郎」に該当する行のデータを検索できる。
【００５２】
図７は、第１行だけが項目部分を形成する表データである。
図７に示す表データは、４行×３列により１２個のデータを含む。第１行は項目行であり、第２行〜第４行は実体行である。また、第１列〜第３列はいずれも実体列である。
【００５３】
図８は、図７の表データに基づくＸＭＬ文書を示す図である。
図７の表データは、４行なので、record要素は４つである。項目列は存在しないため、いいかえれば、行項目が存在しないため、各recordタグにはheader属性が設定されない。３列なので、各record要素におけるcell要素の数は３つである。
【００５４】
図７の表データの場合、各列の列項目は「月」、「単価」、「数量」である。第１行は項目行であるため、cell要素のtype属性として「h」が設定される。第２行から第４行のcell要素については、header=列項目が設定される。
【００５５】
図９は、第１列だけが項目部分を形成する表データである。
図９に示す表データは、４行×３列により１２個のデータを含む。第１列は項目列であり、第２列と第３列は実体列である。また、第１行〜第４行はいずれも実体行である。
【００５６】
図１０は、図９の表データに基づくＸＭＬ文書を示す図である。
図９の表データは４行なので、record要素は４つである。また、第１列が項目列であるため、各recordタグのheader属性には行項目が設定される。３列なので、各record要素におけるcell要素の数は３つである。項目行が存在しないため、いいかえれば、列項目が存在しないため、各cellタグにはheader属性やtype属性が設定されない。
【００５７】
図１１は、第１列と第２列が項目部分を形成する表データである。
図１１に示す表データは、３行×３列であるが、第１列には１つのデータだけが含まれるため、計７個のデータが含まれている。第１列と第２列は項目列であり、第３列は実体列である。第１行〜第３行はいずれも実体行である。第１列のデータ「売上」と第２列のデータ「太郎」、「次郎」、「三郎」は、１対３の対応関係にある。したがって、第２パターン構造が形成されている。
【００５８】
図１２は、図１１の表データに基づくＸＭＬ文書を示す図である。
図１１の表データは、「売上」行に「太郎」、「次郎」、「三郎」という３行が包含される構造となっている。そこで、「売上」行に対応するrecord要素に、「太郎」行に対応するrecord要素、「次郎」行に対応するrecord要素、「三郎」行に対応するrecord要素が包含されるタグ構造となっている。
「売上」行に対応するrecord要素のheader属性には、行項目である「売上」が設定される。また、「太郎」行、「次郎」行、「三郎」行にそれぞれ対応するrecord要素のheader属性には、それぞれ、行項目である「太郎」、「次郎」、「三郎」が設定される。列項目はないので、cell要素にはtype属性もheader属性も設定されない。
【００５９】
図１３は、第１行と第２行が項目部分を形成する表データである。
図１３に示す表データは、３行×３列であるが、第１行には１つのデータだけが含まれるため、計７個のデータが含まれている。第１行と第２行は項目行であり、第３行は実体列である。第１列〜第３列はいずれも実体列である。第１行のデータ「売上」と第２行のデータ「太郎」、「次郎」、「三郎」は、１対３の対応関係にある。したがって、第２パターン構造が形成されている。
【００６０】
図１４は、図１３の表データに基づくＸＭＬ文書を示す図である。
図１３に示す表データは、３行が分離されているため、record要素は３つである。行項目は存在しないため、各record要素にheader属性は設定されない。第１行には項目データ「売上」だけが含まれるため、第１行に対応するrecord要素は、cell要素を１つしか含まない。また、第１行は項目行であるため、type属性として「h」が設定される。
【００６１】
第２行は「太郎」、「次郎」、「三郎」という３つのデータを含むため、cell要素も３つである。第２行も項目行であるため、type属性として「h」が設定される。更に、第２行の各項目データは、第１行の項目データ「売上」に属しているため、３つのcell要素を包含するcell要素のheader属性として「売上」が設定される。
【００６２】
第３行は「１０００」、「７００」、「５００」という３つのデータを含むため、cell要素も３つである。第３行は実体行であるため、type属性は設定されない。更に、第３行の各項目データは、第２行の項目データ「太郎」、「次郎」、「三郎」にそれぞれ属し、更に、第１行の項目データ「売上」に属している。
【００６３】
以上、実施例に基づいて表構造解析装置１００を説明した。
表構造解析装置１００によれば、複数のデータから構成される表データを取得したとき、項目部分と実体部分を自動的に、かつ、高い精度にて判定できる。通常、表データにおいて、項目部分と実体部分は字種が異なることが多い。このため、文字類似度ではなく、字種類似度、あるいは、総合類似度に基づいて境界判定を実行することにより、境界判定の精度をいっそう高めやすくなる。また、総合類似度を算出する際に、文字類似度よりも字種類似度に重み付け設定すれば、いっそう精度が高くなる。
【００６４】
また、実施例において説明した第１パターン構造や第２パターン構造という表データの構造的な特徴を考慮することにより、境界判定の精度を更に高めることができる。境界判定の結果として特定された表構造に基づいてＸＭＬ文書を作成することにより、表データをXPathなどの汎用技術により取り扱いやすくなる。
【００６５】
（第２の実施の形態）
第１の実施の形態では、表構造解析装置１００が表の項目部分と実体部分を自動的に判別する例について説明したが、第２の実施の形態では、表構造解析装置１００が表の項目データの指定をユーザから受け付ける例について説明する。
【００６６】
図１５は、第２の実施の形態に係る表構造解析装置１００の機能ブロック図である。本実施の形態の表構造解析装置１００は、図２に示した第１の実施の形態の表構造解析装置１００の構成に加えて、スプレッドシート表示部１１６、受付画面表示部１１８、及び指定受付部１３３を更に備える。
【００６７】
指定受付部１３３は、表取得部１１２が取得して表保持部１４２に保持されている表データのうち、表全体の範囲の指定や、項目部分と実体部分の境界の指定などをユーザから受け付ける。指定受付部１３３は、ユーザから表の構造に関する情報を受け付けるためのユーザインタフェースとなる受付画面を受付画面表示部１１８に表示させ、受付画面を介してユーザから指定を受け付ける。このとき、スプレッドシート表示部１１６は、表全体の範囲、項目行の範囲、項目列の範囲などを受け付けるためのユーザインタフェースとして、表保持部１４２に保持された表データをスプレッドシート形式で表示する。指定受付部１３３は、スプレッドシート表示部１１６が表示したスプレッドシート画面において、ユーザからマウスのドラッグ操作などによる範囲の指定を受け付ける。
【００６８】
図１６は、図１（ａ）に示した表データを、スプレッドシート形式で表示した画面の例を示す。画面２００には、表取得部１１２が取得し、表保持部１４２に保持されている表データ２０２が表示されている。
【００６９】
図１７は、表の構造に関する情報をユーザから受け付けるためのユーザインタフェース画面の例を示す。図１７に示したユーザインタフェース画面２０４では、表全体の範囲と、項目行又は項目列（見出し）の有無の設定をユーザから受け付ける。ユーザは、表の開始セル位置を入力するためのテキストボックス２０６と、表の終了セル位置を入力するためのテキストボックス２１０に、それぞれ表の開始セル位置と終了セル位置を直接入力することにより、表全体の範囲を指定することができる。また、ボタン２０８又はボタン２１２をクリックすることにより、図１８に示すように、表データをスプレッドシート形式で表示した画面２００において、開始セル位置から終了セル位置までマウスをドラッグするなどの操作により、表全体の範囲を指定することもできる。スプレッドシート形式の表データにおいて、複数行をセル結合して１行に見せている場合や、規則的に行間をあけて表データが記述されている場合などには、除外する行を入力するためのテキストボックス２１４にスキップする行数を入力することにより、指定した行数おきに表の行とするように指定することもできる。
【００７０】
表データに項目行が存在する場合は、項目行（見出し行）があることを指定するためのチェックボックス２１６をチェックすることにより、項目行を指定することができる。この場合、指定受付部１３３は、指定された表データの範囲のうち、開始セル位置を含む行、すなわち、最も上に位置する最初の行を項目行として設定する。同様に、表データに項目列が存在する場合は、項目列（見出し列）があることを指定するためのチェックボックス２１８をチェックすることにより、項目列を指定することができる。この場合、指定受付部１３３は、指定された表データの範囲のうち、開始セル位置を含む列、すなわち、最も左に位置する最初の列を項目列として設定する。
【００７１】
図１９は、表の構造に関する情報をユーザから受け付けるためのユーザインタフェース画面の例を示す。図１９に示したユーザインタフェース画面２１９では、項目行（見出し行）の範囲と、表全体の終了位置の設定をユーザから受け付ける。ユーザは、項目行の開始セル位置を入力するためのテキストボックス２２０と、項目行の終了セル位置を入力するためのテキストボックス２２４に、それぞれ項目行の開始セル位置と終了セル位置を直接入力することにより、項目行の範囲を指定することができる。また、ボタン２２２又はボタン２２６をクリックすることにより、図２０に示すように、表データをスプレッドシート形式で表示した画面２００において、開始セル位置から終了セル位置までマウスをドラッグするなどの操作により、項目行の範囲を指定することもできる。スプレッドシート形式の表データにおいて、複数行をセル結合して１行に見せている場合や、規則的に行間をあけて表データが記述されている場合などには、除外する行を入力するためのテキストボックス２２８にスキップする行数を入力することにより、指定した行数おきに表の行とするように指定することもできる。
【００７２】
項目行の範囲が指定されると、指定受付部１３３は、項目行の開始セル位置を、表全体の開始セル位置とする。表の終了位置が指定されない場合は、指定受付部１３３は、項目行から下方へ探索し、最初に空白行が出現する直前の行までを表データとする。ユーザは、表の終了条件として、特定の文字列が出現するセルの位置を基準として、その位置からの相対セル位置を指定することもできる。例えば、文字列を入力するためのテキストボックス２３０に「売上表」を入力し、相対セル位置を入力するためのテキストボックス２３２に「（＋２，＋４）」を入力することにより、「売上表」という文字列が出現するセル（Ｂ，２）から（＋２，＋４）の位置にあるセル（Ｄ，６）を終了セル位置として指定することができる。
【００７３】
図２１は、表の構造に関する情報をユーザから受け付けるためのユーザインタフェース画面の例を示す。図２１に示したユーザインタフェース画面２３３では、項目列（見出し列）の範囲と、表全体の終了位置の設定をユーザから受け付ける。ユーザは、項目列の開始セル位置を入力するためのテキストボックス２３４と、項目列の終了セル位置を入力するためのテキストボックス２３８に、それぞれ項目列の開始セル位置と終了セル位置を直接入力することにより、項目列の範囲を指定することができる。また、ボタン２３６又はボタン２４０をクリックすることにより、図２２に示すように、表データをスプレッドシート形式で表示した画面２００において、開始セル位置から終了セル位置までマウスをドラッグするなどの操作により、項目列の範囲を指定することもできる。
【００７４】
項目列の範囲が指定されると、指定受付部１３３は、項目列の開始セル位置を、表全体の開始セル位置とする。表の終了位置が指定されない場合は、指定受付部１３３は、項目列から右方へ探索し、最初に空白列が出現する直前の列までを表データとする。ユーザは、表の終了条件として、特定の文字列が出現するセルの位置を基準として、その位置からの相対セル位置を指定することもできる。例えば、文字列を入力するためのテキストボックス２４２に「売上表」を入力し、相対セル位置を入力するためのテキストボックス２４４に「（＋２，＋４）」を入力することにより、「売上表」という文字列が出現するセル（Ｂ，２）から（＋２，＋４）の位置にあるセル（Ｄ，６）を終了セル位置として指定することができる。
【００７５】
以上のように、指定受付部１３３がユーザから表の構造に関する情報を受け付けると、第１の実施の形態と同様に、構造化文書生成部１３４は、受け付けた情報に基づいて、構造化文書を生成することができる。
【００７６】
表構造解析装置１００は、境界判定部１３２が境界を判定できないときに、指定受付部１３３によりユーザから指定を受け付けてもよい。また、指定受付部１３３がユーザから指定を受け付ける際に、境界判定部１３２により自動的に判定された情報を、受付画面に予めデフォルト値として入力しておいてもよい。これにより、ユーザの利便性を向上させることができる。
【００７７】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【００７８】
１００  表構造解析装置、  １１０  ＵＩ部、  １１２  表取得部、  １１４  文書出力部、  １１６  スプレッドシート表示部、  １１８  受付画面表示部、  １２０  データ処理部、  １２２  データ抽出部、  １２４  第１データ抽出部、  １２６  第２データ抽出部、  １２８  字種変換部、  １３０  類似度算出部、  １３２  境界判定部、  １３３  指定受付部、  １３４  構造化文書生成部、  １４０  データ保持部、  １４２  表保持部。
【図１（ａ）】
2010015554.tif 000005
【図１（ｂ）】
2010015554.tif 000006
【図２】
2010015554.tif 000007
【図３】
2010015554.tif 000008
【図４】
2010015554.tif 000009
【図５】
2010015554.tif 000010
【図６】
2010015554.tif 000011
【図７】
2010015554.tif 000012
【図８】
2010015554.tif 000013
【図９】
2010015554.tif 000014
【図１０】
2010015554.tif 000015
【図１１】
2010015554.tif 000016
【図１２】
2010015554.tif 000017
【図１３】
2010015554.tif 000018
【図１４】
2010015554.tif 000019
【図１５】
2010015554.tif 000020
【図１６】
2010015554.tif 000021
【図１７】
2010015554.tif 000022
【図１８】
2010015554.tif 000023
【図１９】
2010015554.tif 000024
【図２０】
2010015554.tif 000025
【図２１】
2010015554.tif 000026
【図２２】
2010015554.tif 000027