JP6674094B2 - 領域抽出プログラム、領域抽出方法、および領域抽出装置 - Google Patents

領域抽出プログラム、領域抽出方法、および領域抽出装置 Download PDF

Info

Publication number
JP6674094B2
JP6674094B2 JP2016070011A JP2016070011A JP6674094B2 JP 6674094 B2 JP6674094 B2 JP 6674094B2 JP 2016070011 A JP2016070011 A JP 2016070011A JP 2016070011 A JP2016070011 A JP 2016070011A JP 6674094 B2 JP6674094 B2 JP 6674094B2
Authority
JP
Japan
Prior art keywords
area
constant value
sum
rectangular
rectangular area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016070011A
Other languages
English (en)
Other versions
JP2017182526A (ja
Inventor
啓介 後藤
啓介 後藤
太田 唯子
唯子 太田
稲越 宏弥
宏弥 稲越
健人 上村
健人 上村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016070011A priority Critical patent/JP6674094B2/ja
Priority to US15/424,495 priority patent/US10255261B2/en
Publication of JP2017182526A publication Critical patent/JP2017182526A/ja
Application granted granted Critical
Publication of JP6674094B2 publication Critical patent/JP6674094B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/183Tabulation, i.e. one-dimensional positioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、領域抽出プログラム、領域抽出方法、および領域抽出装置に関する。
コンピュータシステムでは、業務に使用する数値の多くが、表形式のデータ構造で保存されている。以下、管理対象の数値を保持する表形式のデータを数値表と呼ぶ。数値表は、ヘッダ領域と、管理対象の数値が設定される数値管理領域とを有している。ヘッダ領域は、数値管理領域に設定された数値が、どのような項目に関する数値なのかを表している。数値管理領域は、ヘッダ領域で示された項目に関する数値を設定する領域である。
数値表に設定された数値は、データマイニングに使用することができる。例えば、商品売り上げに関するデータが蓄積された多数の数値表を用いたデータマイニングを行うことで、売り上げの推移などを統計的に解析することができる。数値表をデータマイニングで使用する場合、数値表のどの部分がヘッダ領域であり、どの部分が数値管理領域なのかの区分けが行われる。ただし、このような区分けを人手で行ったのでは、多数の数値表がある場合、手間がかかりすぎる。
そこで数値表内の領域を自動で判断する技術が考えられている。例えば表型のデータ構造をもつデーターベースに保存された帳票データを出力する際に用いる帳票を容易に作成することのできる帳票作成方法およびそれを用いた帳票作成装置が考えられている。また、スプレッドシートからリレーショナルデータを自動抽出する方法も考えられている。
なお、数値表を処理対象とした解析では、数値表内の数値を用いて、所定条件を満たす領域を特定したい場面がある。そこで、例えば数値の配列の総和が最大となる領域を求める方法が考えられている。
特開平11−175641号公報
Zhe Chen, Michael Cafarella, "Automatic web spreadsheet data extraction", SS@ '13 Proceedings of the 3rd International Workshop on Semantic Search Over the Web, ACM, 2013-08-30 Kuan-Yu Chen, Kun-Mao Chao, "On the range maximum-sum segment query problem", Discrete Applied Mathematics, 1 October 2007, Volume 155, Issue 16, Pages 2043-2052
数値表において、数値管理領域内のセルには、通常は数値が設定されるが、数値以外のデータが設定される場合がある。同様に、ヘッダ領域内のセルに、数値が設定される場合もある。従来の技術では、数値管理領域内のセルに文字列が設定されたり、ヘッダ領域内のセルに数値が設定されたりすると、各領域を適切に抽出することがきでない。
1つの側面では、数値と文字列が混在するヘッダ領域や数値管理領域を適切に抽出できるようにすることを目的とする。
1つの案では、コンピュータに以下の処理を実行させる領域抽出プログラムが提供される。
領域抽出プログラムに基づいて、コンピュータは、複数のセルが矩形に配置され、少なくとも一部のセルに数値または文字列が設定された表を取得する。次にコンピュータは、表内の数値を第1定数値に置き換え、表内の文字列を、第1定数値とは符号が逆の第2定数値に置き換える。次にコンピュータは、表内に、任意の長さの上辺と左辺を有する第1の矩形領域、第1の矩形領域の左辺を右辺として有する第2の矩形領域、および第1の矩形領域の上辺を下辺として有する第3の矩形領域を含む領域群を、第1の矩形領域の範囲を変えて複数生成する。次にコンピュータは、生成された複数の領域群それぞれについて、第1の矩形領域内のセルに設定された第1定数値および第2定数値の合計と、第2の矩形領域内のセルと第3の矩形領域内のセルとに設定された第1定数値および第2定数値の合計とを比較する。そしてコンピュータは、比較結果に基づいて、複数の領域群のうち、少なくとも1つの領域群を出力する。
1態様によれば、数値と文字列が混在するヘッダ領域や数値管理領域を適切に抽出できる。
第1の実施の形態に係る領域抽出装置の構成例を示す図である。 第2の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。 コンピュータの機能を示すブロック図である。 数値表の一例を示す図である。 領域判定対象の数値表の例を示す図である。 置き換え後の数値表の例を示す図である。 矩形の組み合わせの第1の例を示す図である。 矩形の組み合わせの第2の例を示す図である。 矩形の組み合わせの第3の例を示す図である。 スコアが最大となる矩形の表示例を示す図である。 矩形を特定するための変数を示す図である。 計算量の削減方法を示す図である。 1次元配列の総和が最大となる領域を求める手法(定理1)を説明する図である。 2次元配列の総和が最小となる領域を求める手法(定理2)を説明する図である。 row_area(C)の計算方法(定理3)を説明する図である。 col_area(C)の計算方法(定理4)を説明する図である。 任意の矩形の総和を計算する方法(定理5)を説明する図である。 演算部の機能の詳細を示すブロック図である。 数値表置換処理の手順の一例を示すブロック図である。 候補領域生成処理の手順の一例を示すフローチャートである。 最適解探索処理の手順の一例を示すフローチャートである。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る領域抽出装置の構成例を示す図である。領域抽出装置10は、記憶部11と演算部12とを有する。
記憶部11は、複数のセルが、矩形内に縦横方向並べて配置された表1を記憶する。表1内には、行ヘッダ領域、列ヘッダ領域、および主に数値が設定される数値管理領域が設けられている。ただし、表1が記憶部11に格納された時点では、各領域が、表1内のどの範囲の領域なのかが不明であるものとする。
行ヘッダ領域内の少なくとも一部のセルに文字列が設定されている。列ヘッダ領域内の少なくとも一部のセルに文字列が設定されている。数値管理領域内の少なくとも一部のセルに、同一行のセルに設定された文字列と同一列のセルに設定された文字列との組に関連する数値が設定されている。例えば表1が、店舗ごとの毎日の売り上げを表しており、行ヘッダ領域内のセルに店舗名が設定され、列ヘッダ領域のセルに日付が設定されているものとする。この場合、数値管理領域内のセルには、同一行に示される店舗における、同一列に示される日の売り上げを示す数値が設定される。
演算部12は、表1を解析し、表1の行ヘッダ領域、列ヘッダ領域、および数値管理領域を抽出する。例えば演算部12は、表1が入力されると、表1内の数値を第1定数値に置き換え、表1内の文字列を、第1定数値とは符号が逆の第2定数値に置き換える。このとき、演算部12は、値が設定されていない(空値)のセルに対して、第3定数値を設定してもよい。例えば、演算部12は、セル内の数値を第1定数値「2」に置き換え、セル内の文字列を第2定数値「−2」に置き換え、空値のセルに「0」を設定する。
次に演算部12は、表1内に、任意の長さの上辺と左辺を有する第1の矩形領域(領域「C」)、第1の矩形領域の左辺を右辺として有する第2の矩形領域(領域「A」)、および第1の矩形領域の上辺を下辺として有する第3の矩形領域(領域「B」)を含む領域群を、第1の矩形領域の範囲を変えて複数生成する。
演算部12は、生成された複数の領域群それぞれについて、第1の矩形領域内のセルに設定された第1定数値及び第2定数値の合計(第1の合計)と、第2の矩形領域内のセルと第3の矩形領域内のセルとに設定された第1定数値及び第2定数値の合計(第2の合計)とを比較する。例えば演算部12は、第1の合計と第2の合計との差を計算する。演算部12は、算出された差を、その領域群のスコアとする。
例えば、第1の矩形領域内のセルに設定された第1定数値及び第2定数値の合計をsum(C)とする。同様に、第2の矩形領域内のセルに設定された第1定数値及び第2定数値の合計をsum(A)とし、第3の矩形領域内のセルに設定された第1定数値及び第2定数値の合計をsum(B)とする。第2の矩形領域内のセルと第3の矩形領域内のセルとに設定された第1定数値及び第2定数値の合計は、sum(A)+sum(B)となる。この場合、スコアは「スコア=sum(C)−sum(A)−sum(B)」という式で表される。
演算部12は、領域群ごとの第1の合計と第2の合計との比較結果に基づいて、複数の領域群のうちに、少なくとも1つの領域群を出力する。例えば演算部12は、すべての領域群についてのスコアを計算後、複数の領域群のうち、計算された差が最大となる領域群を出力する。例えば演算部12は、該当する領域群を表す矩形を、表1に重ねて表示する。出力された領域群に含まれる第1の矩形領域が、表1内の数値管理領域2を示している。出力された領域群に含まれる第2の矩形領域が、表1内の行ヘッダ領域3を示している。出力された領域群に含まれる第3の矩形領域が、表1内の列ヘッダ領域4を示している。
このような領域抽出装置10によれば、文字列が設定されたセルに比べ、数値が設定されたセルをより多く含む領域が、数値管理領域として特定される。また数値管理領域の左側に隣接し、数値が設定されたセルに比べ、文字列が設定されたセルをより多く含む領域が、行ヘッダ領域として特定される。そして、数値管理領域の上に隣接し、数値が設定されたセルに比べ、文字列設定されたセルをより多く含む領域が、列ヘッダ領域として特定される。その結果、数値管理領域、行ヘッダ領域、および列ヘッダ領域それぞれ内のセルに、数値と文字列とが混在していても、数値管理領域、行ヘッダ領域、および列ヘッダ領域を、適格に判別することができる。
なお、演算部12は、領域群を生成する際、セル内の定数値を考慮に入れることで、無駄な領域群の生成を抑制することもできる。例えば演算部12は、第1の矩形領域の左辺を右辺として有する複数の矩形領域を、該第1の矩形領域と同じ領域群に属する第2の矩形領域の候補とする。そして演算部12は、第2の矩形領域の候補のうち、内包するセルに設定された第1定数値及び第2定数値の合計が、第2定数値と同一符号で絶対値が最大となる矩形領域を、該第1の矩形領域と同じ領域群に属する第2の矩形領域とする。
同様に演算部12は、第1の矩形領域の上辺を下辺として有する複数の矩形領域を、該第1の矩形領域と同じ領域群に属する第3の矩形領域の候補とする。そして演算部12は、第3の矩形領域の候補のうち、内包するセルに設定された第1定数値及び第2定数値の合計が、第2定数値と同一符号で絶対値が最大となる矩形領域を、該第1の矩形領域と同じ領域群に属する第3の矩形領域とする。
このようにして、第1の矩形領域の左辺に応じて、同じ領域群に属する第2の矩形領域を決定し、第1の矩形領域の上辺に応じて、同じ領域群に属する第3の矩形領域を決定することができる。その結果、生成される領域群の数が削減され、以後のスコア計算の計算量が減り、全体の処理効率が向上する。
また、表1内の値が設定されていないセルに対して設定する第3定数値の値を調整することで、判定結果として得られる領域の信頼性を向上させることができる。例えば、数値管理領域内の、設定する数値が未取得のセルが空欄になっている場合がある。この場合、第3の定数値を、第1の定数値と同一符号で、絶対値が「0」より大きい値(例えば「1」)とする。これにより、数値管理領域に空値のセルを多く含んでいても、スコアが高くなり、領域の抽出精度が向上する。また、数値管理領域の数値が、上下の2段で1組の情報になっている場合がある。例えば、上段に1ヶ月の売上額、下段に当該売上額の前年同月比が設定される場合である。このような場合、行ヘッダ領域には、連続する2つの行の内の1行にのみ月を示す文字列が設定されることがある。このような記載の表であれば、第3の定数値を、第2の設定値と同一符号で、絶対値が「0」より大きい値(例えば「−1」)とする。これにより、領域の抽出精度が向上する。
なお、第1の実施の形態における演算部12は、例えば領域抽出装置10が有するプロセッサにより実現することができる。また、記憶部11は、例えば領域抽出装置10が有するメモリまたはストレージ装置により実現することができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、行ヘッダ領域、列ヘッダ領域、および数値管理領域との領域の抽出を、より効率的に実施できるようにしたものである。以下の説明では、ヘッダ領域と呼んだ場合、行ヘッダ領域と列ヘッダ領域とを含むものとする。
図2は、第2の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。コンピュータ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、コンピュータ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
ストレージ装置103は、内蔵した記憶媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、コンピュータ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した領域抽出装置10も、図2に示したコンピュータ100と同様のハードウェアにより実現することができる。
コンピュータ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。コンピュータ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またコンピュータ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、数値表内のヘッダ領域と数値管理領域とを特定するために、コンピュータ100が有する機能について説明する。
図3は、コンピュータの機能を示すブロック図である。コンピュータ100は、記憶部110と演算部120とを有する。記憶部110は、数値表111を記憶する。記憶部110は、例えばメモリ102またはストレージ装置103の記憶領域の一部である。
演算部120は、数値表111内のヘッダ領域や数値管理領域を判定し、ヘッダ領域と数値管理領域を示す情報を出力する。演算部120は、例えばプロセッサ101が、プログラムを実行することで実現される機能である。
次に、記憶部110に格納されている数値表111について説明する。
図4は、数値表の一例を示す図である。記憶部110に格納されている数値表111は、格子状の線で区切られた複数のセルを有している。なお、図4では、格子状の線は省略されている。複数のセルのうちの少なくとも一部のセルに、文字列または数値が設定されている。
数値表111には、行ヘッダ領域111a、列ヘッダ領域111b、数値管理領域111cが設定されている。行ヘッダ領域111a、列ヘッダ領域111b、数値管理領域111cは、複数のセルを含む矩形の領域である。行ヘッダ領域111a内のセルには、数値管理領域111cにおける各行の種別を示す情報が設定される。列ヘッダ領域111b内のセルには、数値管理領域111cにおける各列の種別を示す情報が設定される。数値管理領域111c内のセルには、対応する行および列のそれぞれに示される種別の組み合わせに応じた数値などの情報が設定される。
なお、行ヘッダ領域111aと列ヘッダ領域111bとは、数値管理領域111cとの間で、以下の条件を満たしている。
[条件1]行ヘッダ領域111aの右辺は、数値管理領域111cの左辺と接しており、双方の接する辺の長さは同じである。
[条件2]列ヘッダ領域111bの下辺は、数値管理領域111cの上辺と接しており、双方の接する辺の長さは同じである。
以下、これらの条件を出力条件と呼ぶ。
このような数値表111が大量にあるとき、行ヘッダ領域111a、列ヘッダ領域111b、および数値管理領域111cの各領域を、ユーザが手入力で指定したのでは手間がかかりすぎる。そこで、第2の実施の形態では、コンピュータ100により各領域の自動判定を行う。
なお、行ヘッダ領域111a内のセルと、列ヘッダ領域111b内のセルには文字列しか設定されていないのであれば、文字列が設定されたセルのみを含む矩形領域を行ヘッダ領域111a、列ヘッダ領域111bとすることができる。また数値管理領域111c内のセルには数値しか設定されていないのであれば、数値が設定されたセルのみを含む最大の矩形領域を数値管理領域111cとすることができる。しかし現実には、ヘッダ領域内のセルに数値が設定されていたり、数値管理領域内のセルに文字列が設定されていたりするような数値表が存在する。そのような数値表の場合、文字列が設定されたセルのみを含む領域をヘッダ領域としたり、数値が設定されたセルのみを含む領域を数値管理領域としたりしたのでは、行ヘッダ領域、列ヘッダ領域、および数値管理領域の各領域を正しく判定することができない。
また、セル内の情報に対して、インデントやフォント指定などの属性が付与されている数値表であれば、そのような属性を利用して行ヘッダ領域、列ヘッダ領域、および数値管理領域の各領域を判定することもできる。しかし、数値表には、セル内の情報に属性が付与されていないものもあり、属性に頼った領域の識別を実施できないことも多い。
そこで第2の実施の形態では、コンピュータ100により、数値、文字列、空値セルをそれぞれ与えられた定数値(数値は正、文字列は負、空値はどちらでも可)に置き換える。そしてコンピュータ100は、可能なすべての行ヘッダ領域を示す矩形A、列ヘッダ領域を示す矩形B、数値管理領域を示す矩形Cの中で、g(A,B,C)=sum(C)−sum(A)−sum(B)が最大となる行ヘッダ領域を示す矩形A、列ヘッダ領域を示す矩形B、数値管理領域を示す矩形Cを出力する。
これにより、数値管理領域に数値を、ヘッダ領域に文字列を多く含む性質を利用し、両者のバランスが取れた矩形を出力することで、ヘッダ領域に数値が、数値管理領域に文字列が含まれる場合であっても、適切な領域を判定できる。また各セルに設定された情報が文字列、数値、空値のいずれに属するかといった極めてシンプルな特徴を用いるため、ヘッダ領域にフォントやインデントなどの特徴がないような様々なタイプの数値表に対しても適用可能である。
以下、具体的な領域判定例について説明する。
図5は、領域判定対象の数値表の例を示す図である。図5に示す数値表112が、領域判定対象として指定されると、演算部120が、記憶部110から該当する数値表112を取得する。そして演算部120は、数値表112の各セル内の情報を、文字列なのか、数値なのか、空値なのかに応じて、定数値に置き換える。置き換える定数値は、ユーザにより予め設定されている。
図6は、置き換え後の数値表の例を示す図である。図6の例では、文字列を定数値「−2」に置き換え、数値を定数値「2」に置き換え、空値を定数値「0」に置き換えている。なお、図6に示す数値表112aでは、定数値「0」のセルにおける「0」の表記は省略されている。
このような置き換えが行われた数値表112aに基づいて、演算部120は、出力条件を満たす行ヘッダ領域を示す矩形A、列ヘッダ領域を示す矩形B、数値管理領域を示す矩形Cの組み合わせを、すべて列挙する。そして演算部120は、列挙する過程で、各矩形からスコア「g(A,B,C)=sum(C)−sum(A)−sum(B)」を計算し、最大のスコアと、そのときの矩形A,B,Cを示す情報を保存する。なお、「sum()」は、指定された領域内のセルに設定されている定数値の合計である。
図7は、矩形の組み合わせの第1の例を示す図である。図7の例では、行ヘッダ領域を示す矩形A1、列ヘッダ領域を示す矩形B1、および数値管理領域を示す矩形C1が設定されている。これらの矩形A1,B1,C1の組み合わせが、列挙された最初の組み合わせであるものとする。
行ヘッダ領域を示す矩形A1には2つのセルが含まれており、各セルの定数値は共に「0」である。列ヘッダ領域を示す矩形B1には4つのセルが含まれており、各セルの定数値はすべて「0」である。数値管理領域を示す矩形C1には、4つのセルが含まれており、2つのセルの定数値は「−2」であり、残りの2つのセルの定数値は「0」である。
このような矩形A1,B1,C1の組み合わせのスコアは、「g(A1,B1,C1)=sum(C1)−sum(A1)−sum(B1)=−4+0+0=−4」となる。図7に示す矩形A1,B1,C1が、最初に列挙されたものであるため、最大スコア「−4」となり、最大スコアの矩形「A1,B1,C1」となる。
図8は、矩形の組み合わせの第2の例を示す図である。図8の例では、行ヘッダ領域を示す矩形A2、列ヘッダ領域を示す矩形B2、および数値管理領域を示す矩形C2が設定されている。これらの矩形A2,B2,C2の組み合わせが、図7に示した矩形A1,B1,C1の組み合わせに続けて列挙されたものとする。
行ヘッダ領域を示す矩形A2は、面積が「0」であり、セルを1つも含んでいない。列ヘッダ領域を示す矩形B2には10個のセルが含まれており、4個のセルの定数値は「−2」であり、6個のセルの定数値は「0」である。数値管理領域を示す矩形C2には、18個のセルが含まれており、15個のセルの定数値は「2」であり、3つのセルの定数値は「0」である。
このような矩形A2,B2,C2の組み合わせのスコアは、「g(A2,B2,C2)=sum(C2)−sum(A2)−sum(B2)=30+0+8=38」となる。このスコア「38」は、図7に示す矩形A1,B1,C1の組み合わせのスコア「−4」より大きい。従って、最大スコアが「38」に更新され、最大スコアの矩形は「A2,B2,C2」に更新される。
図9は、矩形の組み合わせの第3の例を示す図である。図9の例では、行ヘッダ領域を示す矩形A3、列ヘッダ領域を示す矩形B3、および数値管理領域を示す矩形C3が設定されている。これらの矩形A3,B3,C3の組み合わせが、図8に示した矩形A2,B2,C2の組み合わせに続けて列挙されたものとする。
行ヘッダ領域を示す矩形A3には72個のセルが含まれており、45個のセルの定数値は「−2」であり、27個のセルの定数値は「0」である。列ヘッダ領域を示す矩形B3には20個のセルが含まれており、5個のセルの定数値は「−2」であり、15個のセルの定数値は「0」である。数値管理領域を示す矩形C3には、36個のセルが含まれており、12個のセルの定数値は「2」であり、16個のセルの定数値は「−2」であり、8個のセルの定数値は「0」である。
このような矩形A3,B3,C3の組み合わせのスコアは、「g(A3,B3,C3)=sum(C3)−sum(A3)−sum(B3)=−8+90+10=92」となる。このスコア「92」は、それまでの最大スコア「38」より大きい。従って、最大スコアが「92」に更新され、最大スコアの矩形は「A3,B3,C3」に更新される。
演算部120は、以後、出力条件を満たす矩形の組み合わせすべてを列挙して、スコアを計算する。そして、すべての矩形の組み合わせのうち、スコアが最大値となったときの矩形の組み合わせ(最大スコアの矩形)が、出力される。
図7〜図9に示した例では、最終的に図9に示した矩形A3,B3,C3の組み合わせが出力される。演算部120は、例えば、矩形A3,B3,C3を、元の数値表112に重ね合わせてモニタ21に表示する。
図10は、スコアが最大となる矩形の表示例を示す図である。図10に示すように、数値表112と矩形A3,B3,C3とを重ねて表示することで、行ヘッダ領域、列ヘッダ領域、および数値管理領域が、視覚的に容易に認識できる。
ここで、最大スコアの矩形の判定に要する計算時間について考察する。
図11は、矩形を特定するための変数を示す図である。数値表30内の矩形の位置および形状を特定するには、その矩形の上辺の位置(行番号)、下辺の位置(行番号)、左辺の位置(列番号)、および右辺の位置(列番号)が特定できればよい。また、3つの矩形の間には、前記の出力条件に示す関係がある。そのため、3つの矩形の組み合わせは、行方向の三箇所(row_top_begin,row_center_begin,row_center_end)と、列方向の三箇所(col_left_begin,col_center_begin,col_center_end)の、計6箇所の位置によって特定できる。「row_top_begin」は、列ヘッダ領域の上辺の位置を示す変数である。「row_center_begin」は、数値管理領域の上辺の位置を示す変数である。「row_center_end」は、数値管理領域の下辺の位置を示す変数である。「col_left_begin」は、行ヘッダ領域の左辺の位置を示す変数である。「col_center_begin」は、数値管理領域の左辺の位置を示す変数である。「col_center_end」は、数値管理領域の右辺の位置を示す変数である。
最大スコアの矩形の判定処理時間は、数値表30の大きさに依存する。そこで、数値表30の行数n,列数n(nは1以上の整数)とする。この場合、最大スコアの矩形の判定処理を特別な工夫をせずに実施すると、行ヘッダ領域、列ヘッダ領域、および数値管理領域のすべての組み合わせ(オー記法でO(n6))それぞれについて、コストをO(n2)の時間で計算することになる。その結果、最大スコアの矩形の判定処理全体では、O(n8)の時間が費やされる。
このように、数値表30のサイズが大きくなると、計算量が非常に多くなり、計算に時間がかかる。そこで、計算量の削減について検討する。
3つの矩形の間には、数値管理領域の矩形が、列ヘッダ領域と行ヘッダ領域それぞれの矩形に対して、同一長の辺で接するという条件がある。この条件を用いると、数値管理領域が決まれば、スコアを最大化させる列ヘッダ領域、行ヘッダ領域の矩形を一意に決定することができる。このような性質を利用すれば、生成する矩形の組み合わせ数を減らすことができ、計算量を削減できる。なお、列ヘッダ領域の矩形がスコアを最大化させるのは、矩形内の定数値の合計が最小となる場合である。同様に、行ヘッダ領域の矩形がスコアを最大化させるのは、矩形内の定数値の合計が最小となる場合である。
図12は、計算量の削減方法を示す図である。数値管理領域を示す矩形Cは、4つの変数「row_center_begin,row_center_end,col_center_begin,col_center_end」によって特定できる。
行ヘッダ領域を示す矩形は、数値管理領域を示す矩形Cの左辺を右辺として持つ。これにより、数値管理領域を示す矩形Cが決まると、行ヘッダ領域を示す矩形Aを特定するための4つの変数のうちの3つの変数「row_center_begin,row_center_end,col_center_begin」が決まる。そして、行ヘッダ領域を示す矩形に含まれる定数値の総和を最小とするような位置を、行ヘッダ領域の左辺の位置とすることで、残りの1つの変数「col_left_begin」の値が決まる。すなわち、数値管理領域を示す矩形Cが決まれば、行ヘッダ領域を示す矩形Aが一意に決まる。そこで、行ヘッダ領域を示す矩形Aを、row_area(C)とする。
列ヘッダ領域を示す矩形Bは、数値管理領域を示す矩形Cの上辺を下辺として持つ。これにより、数値管理領域を示す矩形Cが決まると、列ヘッダ領域を示す矩形Bを特定するための4つの変数のうちの3つの変数「row_center_begin,col_center_begin,col_center_end」が決まる。そして、列ヘッダ領域を示す矩形Bに含まれる定数値の総和を最小とするような位置を、ヘッダ領域の上辺の位置とすることで、残りの1つの変数「row_top_begin」の値が決まる。すなわち、数値管理領域を示す矩形Cが決まれば、列ヘッダ領域を示す矩形Bが一意に決まる。そこで、列ヘッダ領域を示す矩形Bを、col_area(C)とする。
この場合、コスト「g(A,B,C)=sum(C)−(sum(A)+sum(B))」は、「g’(C)=sum(C)−(sum(row_area(C))+sum(col_area(C)))」と置き換えることができる。この場合、g’(C)を最大にする矩形Cを求めることで、g(A,B,C)を最大にする矩形A,B,Cが求まる。
g’(C)が最大となるCを用いて、g(A,B,C)を最大にする矩形A,B,Cを求める場合、以下のような手順によりO(n4)の計算量で計算することができる。
[手順1]演算部120は、数値表の各セルを置き換え定数で置き換える。
[手順2]演算部120は、任意の矩形Cについてsum(C),col_area(C),row_area(C)をO(1)で計算するための前処理を行う。前処理の計算量は、O(n3)である。
[手順3]演算部120は、数値管理領域を示す矩形Cを全列挙する。例えば演算部120は、数値管理領域を示す矩形Cの開始行および列、終了行および列を全列挙する。全列挙の計算量は、O(n4)である。
[手順4]演算部120は、列挙する過程で、各矩形から「g’(C)=sum(C)−(sum(row_area(C))+sum(col_area(C)))」を計算し、最大のスコアと、そのときの矩形Cを保存する。このうち、sum(C)、row_area(C)、(sum(row_area(C))、col_area(C)、sum(col_area(C))それぞれを求める計算量は、いずれもO(1)である。
[手順5]演算部120は、スコアが最大となる矩形row_area(C),col_area(C),Cを出力する。row_area(C),col_area(C)それぞれを求める計算量は、いずれもO(1)である。
以上の計算において最も計算量が多いのは、矩形Cの全列挙の計算量O(n4)である。従って、全体としても、O(n4)の計算量で計算できる。次に、以下の2つの計算についての計算方法を詳細に説明する。
・col_area(C)、row_area(C)をO(n3)の前処理時間、O(1)のクエリ時間で計算する方法
・任意の矩形の総和をO(n3)の前処理時間、O(1)のクエリ時間で計算する方法
まず、col_area(C)、row_area(C)をO(n3)の前処理時間、O(1)のクエリ時間で計算する方法について説明する。この計算は以下のような、1次元配列の総和が最大となる領域を求める手法と、2次元配列の総和が最小となる領域を求める手法とを利用する。なお、1次元配列の総和が最大となる領域を求める手法を「定理1」と、2次元配列の総和が最小となる領域を求める手法を「定理2」と呼ぶこととする。
図13は、1次元配列の総和が最大となる領域を求める手法(定理1)を説明する図である。配列A[i](iは1以上の整数)を考える。図13には、i=1,2,3,・・・,8のときの、配列A[i]の値が示されている。ここで、配列A[2]〜配列A[e]の値の総和が最大となるeを求めるものとする(eは整数)。eが取り得る範囲は、「2〜8」であり、総和が最大となるeは「6」である。
このような1次元配列の総和が最大となる領域を求める計算は、非特許文献2に示した論文で開示されている手法を用いることができる。当該論文には、1次元配列A[1..n]について、任意の位置sについてA[s..e]を最大化するeをO(n)時間の前処理、O(1)クエリ時間で計算可能であることが示されている。
次に、2次元配列の総和が最小となる領域を求める手法について説明する。
図14は、2次元配列の総和が最小となる領域を求める手法(定理2)を説明する図である。行数n,列数nの数値表内の領域の上辺の位置を示す行をrs、下辺の位置を示す行をre、左辺の位置を示す列をcs、右辺の位置を示す列をceとする。このとき、r行c列のセルの定数値を、2次元配列A[r][c]で表す。そして、(rs,cs)−(re,cs)を左辺とし、内包する定数値の総和が最小となる領域の右辺(rs,ce)−(re,ce)を計算するものとする。
まず、以下の3次元配列Dを考える。
D[rs][re][c]=−Σrs≦r≦reA[r][c] ・・・(1)
三次元配列Dは、列cの行rsから行reまでの定数値の総和の符号を反転した値を保存した配列である。
定理2では、前処理として、rs,re,cのすべての組み合わせに対して、三次元配列Dの値が計算される。すなわちrs、reのすべての組み合わせについて、D[rs][re][1],D[rs][re][2],・・・,D[rs][re][n]が計算される。この前処理の計算方法の詳細は以下の通りである。
まず、2次元配列Cを考える。2次元配列Cは、ある列cの行1〜rまでの累積和配列である。2次元配列Cは、以下の式で表される。
C[r][c]=−Σ1≦i≦rA[i][c] ・・・(2)
2次元配列Cでは、C[r][c]=−A[r][c]+C[r−1][c]が成り立つ。なお、C[0][c]=0とする。すべてのcについてr=1からnまで順に、C[r][c]を計算することで、2次元配列Cの値が得られる。この計算の計算量は、O(n2)である。
この2次元配列Cの値を用いて、3次元配列Dを以下のように計算できる。
D[rs][re][c]=−Σrs≦r≦reA[r][c]=C[re][c]−C[rs−1][c] ・・・(3)
そこで定理2では、すべてのrs,reについて、c=1からnまで、D[rs][re][c]=C[re][c]−C[rs−1][c]が計算される。そして、計算したD[rs][re][1],D[rs][re][2],・・・,D[rs][re][n]を、長さnの1次元配列とみなし、定理1における前処理が実施される。
以上が、定理2の前処理である。この前処理は、O(n2)個の1次元配列について、O(n)の定理1の前処理を実施するものであり、計算量はO(n3)である。
そして、クエリが入力されたとき、前処理の計算結果を用いて、2次元配列の総和が最小となる領域を求めるための、残りの計算が行われる。クエリとしては、rs,re,csの値が入力される。入力されたクエリに応じて、3次元配列D[rs][re][cs..ce]の総和を最大化するceが、計算量O(1)で計算できる。詳細は以下の通りである。
3次元配列Dは、すべての列について行rsからreまでの符号を反転させた値の総和を持っている。そのため、領域の内の定数値の総和を最小化する右辺は、3次元配列D[rs][re][cs..ce]の総和が最大となる領域を求めることで解ける。このような総和が最大となる領域の右辺を示すceは、D[rs][re][1],D[rs][re][2],・・・,D[rs][re][n]からなる1次元配列に対する定理1の前処理の結果を用いて、定理1により計算量O(1)で計算できる。このようにして求められたceが、内包する定数値の総和が最小となる領域のceである。
以上の定理2を利用することで、図12に示す行ヘッダ領域row_area(C)と列ヘッダ領域col_area(C)を効率的に計算できる。以下、row_area(C)の計算方法を「定理3」と呼び、col_area(C)の計算方法を「定理4」と呼ぶ。
まず、row_area(C)の計算方法(定理3)について説明する。
図15は、row_area(C)の計算方法(定理3)を説明する図である。行数n,列数nの2次元配列Aについて、(rs,ce)−(re,ce)を右辺とし、内包する定数値の総和が最小となる領域の左辺(rs,cs)−(re,cs)を計算するものとする。この計算が、O(n3)の前処理時間、O(1)の実行時間で計算可能であることを以下に示す。
前処理として、rs,re,cのすべての組み合わせに対して、式(1)に示した三次元配列Dの値が計算される。この前処理の計算方法は、定理2と同様である。三次元配列Dは、定理2と同様に1次配列とみなされる。ただし、定理2では、前処理で計算したD[rs][re][1],D[rs][re][2],・・・,D[rs][re][n]を長さnの1次元配列とみなしていたが、定理3では配列の順番が入れ替えられる。すなわち、D[rs][re][n],D[rs][re][n−1],・・・,D[rs][re][1]が、長さnの1次元配列とみなされ、定理1における前処理が施される。
そして、クエリが入力されたとき、前処理の計算結果を用いて、2次元配列の総和が最小となる領域を求めるための残りの計算が行われる。クエリとしては、rs,re,ceの値が入力される。入力されたクエリに応じて、領域内の定数値の総和を最小化する左辺は、3次元配列D[rs][re][n−ce+1],D[rs][re][n−ce]…D[rs][re][n−cs+1]の総和が最大となる領域を求めることで解ける。このような総和が最大となる領域の左辺を示すcsは、D[rs][re][n],D[rs][re][n−1],・・・,D[rs][re][1]からなる1次元配列に対する定理1の前処理の結果を用いて、定理1により計算量O(1)で計算できる。このようにして求められたcsが、内包する定数値の総和が最小となる領域のcsである。
次に、col_area(C)の計算方法(定理4)について説明する。
図16は、col_area(C)の計算方法(定理4)を説明する図である。行数n,列数nの2次元配列Aについて(re,cs)−(re,ce)を下辺とし、総和が最小となる領域の上辺(rs,cs)−(rs,ce)を計算するものとする。この計算が、O(n3)の前処理時間、O(1)の実行時間で計算可能であることを以下に示す。
以下の3次元配列Dを考える。
2[cs][ce][r]=−Σcs≦c≦ceA[r][c] ・・・(4)
三次元配列D2は、行rの列csから列ceまでの定数値の総和の符号を反転した値を保存した配列である。
定理4では、前処理として、cs,ce,rのすべての組み合わせに対して、三次元配列D2の値を計算する。すなわちcsceのすべての組み合わせについて、 2 [cs][ce][n],D2[cs][ce][n−1]…D2[cs][ce][1]が計算される。そして、計算したD2[cs][ce][n],D2[cs][ce][n−1]…D2[cs][ce][1]を、長さnの1次元配列とみなし、定理1における前処理が実施される。
以上が、定理4の前処理である。この前処理は、O(n2)個の1次元配列について、O(n)の定理1の前処理を実施するものであり、計算量はO(n3)である。
そして、クエリが入力されたとき、前処理の計算結果を用いて、2次元配列の総和が最小となる領域を求めるための、残りの計算が行われる。クエリとしては、cs,ce,reの値が入力される。入力されたクエリに応じて、3次元配列D2[cs][ce][n−re+1],D2[cs][ce][n−re]…D2[cs][ce][n−rs+1]の総和を最大化するrsが、計算量O(1)で計算できる。詳細は以下の通りである。
3次元配列D2は、すべての行について列csからceまでの符号を反転させた値の総和を持っている。そのため、領域の内の定数値の総和を最小化する上辺は、3次元配列D2[cs][ce][rs..re]の総和が最大となる領域を求めることで解ける。総和が最大となる領域のrsは、D2[cs][ce][n−re+1],D2[cs][ce][n−re]…D2[cs][ce][n−rs+1]からなる1次元配列に対する定理1の前処理の結果を用い、定理1により計算量O(1)で計算できる。このようにして求められたrsが、内包する定数値の総和が最小となる領域のrsである。
以上がcol_area(C)、row_area(C)をO(n3)の前処理時間、O(1)のクエリ時間で計算する方法の説明である。
次に、任意の矩形の総和をO(n3)で計算する方法について説明する。以後、この計算方法を「定理5」と呼ぶ。
図17は、任意の矩形の総和を計算する方法(定理5)を説明する図である。行数n,列数nの2次元配列Aについて矩形(rs,re,cs,ce)の総和をO(n3)の前処理時間、O(1)の実行時間で計算する方法について説明する。
まず、前処理として、式(1)に示した3次元配列Dの累積和配列Eを計算する。累積和配列Eは、以下の式で表される。
E[rs][re][c]=Σ1≦i≦cD[rs][re][i] ・・・(5)
累積和配列Eは、矩形(rs,re,1,c)内の定数値の総和の符号を逆転した値を示している。ここで、累積和配列Eについて、E[rs][re][c]=D[rs][re][c]+E[rs][re][c−1]が成り立つ。なお、E[rs][re][0]=0とする。この性質を利用し、累積和配列Eの計算では、O(n3)の計算量で3次元配列Dが計算される。そして、rs,reのすべての組み合わせについて、c=1からnまで順にE[rs][re][c]が計算される。この計算の計算量はO(n3)である。従って、前処理は、O(n3)の計算量で計算できる。
このようにして計算された累積和配列Eを用いて、矩形(rs,re,cs,ce)内の定数値の総和を、以下の式で計算することができる。
Σrs≦r≦re,cs≦c≦ceA[r][c]
=−Σcs≦c≦ceD[rs][re][c]
=−(E[rs][re][ce]−E[rs][re][cs−1]) ・・・(6)
この計算は、矩形(rs,re,cs,ce)の総和が、(rs,re,1,ce)の総和から(rs,re,1,cs−1)を減算した値と一致することを利用している。前処理で累積和配列Eが求められているため、式(6)を用いれば、任意の矩形が与えられたときの矩形内の定数値の総和は、O(1)の計算量で計算できる。
演算部120は、以上の定理1〜5を用いて、数値表における行ヘッダ領域、列ヘッダ領域、および数値管理領域それぞれの領域を示す矩形を、効率的に求めることができる。以下、高速に各領域を特定するための、演算部120の機能について詳細に説明する。
図18は、演算部の機能の詳細を示すブロック図である。演算部120は、情報取得部121、領域判定部122、および出力部123を有する。
情報取得部121は、数値表の領域判定に用いる情報を取得する。例えば情報取得部121は、数値表取得部121aと置換パラメータ入力受け付け部121bとを有する。数値表取得部121aは、記憶部110から数値表111,112,・・・を取得する。置換パラメータ入力受け付け部121bは、数値表111,112,・・・内の各セルの内容の置換に用いるパラメータの入力を受け付ける。例えば置換パラメータ入力受け付け部121bは、文字列が設定されたセルの置換先の値、数値が設定セルの置換先の値、および空値が設定されたセルの置換先の値の入力を受け付ける。
領域判定部122は、数値表内の行ヘッダ領域、列ヘッダ領域、および数値管理領域を判定する。例えば領域判定部122は、数値表置換部122a、前処理部122b、領域候補生成部122c、および最適解探索部122dを有する。
数値表置換部122aは、数値表111,112,・・・内の各セルに設定されている情報を、置換パラメータで指定された値に置換する。
前処理部122bは、定理3,4,5をO(1)の処理量で計算するための前処理を行う。
領域候補生成部122cは、数値表111,112,・・・内の数値管理領域の候補となるすべて領域(数値管理領域候補)を生成する。また領域候補生成部122cは、数値管理領域候補に対応する行ヘッダ領域と列ヘッダ領域との候補となる領域を、定理3,4に基づいて生成する。
最適解探索部122dは、生成された数値管理領域候補すべてについてスコアを計算し、最もスコアの高い数値管理領域候補を、対象の数値表の数値管理領域と決定する。最適解探索部122dは、決定された数値管理領域に応じて、行ヘッダ領域と列ヘッダ領域とを決定する。そして、最適解探索部112dは、決定した領域を、最適解とする。
出力部123は、領域の判定結果を出力する。例えば出力部123は、最適解出力部123aと最適解画面出力部123bとを有する。最適解出力部123aは、最適解として決定された行ヘッダ領域、列ヘッダ領域、および数値管理領域それぞれを示す情報を出力する。最適解画面出力部123bは、図10に示したように、数値表に重ねて、最適解として決定された各領域を示す矩形をモニタ21に表示する。
なお、図18に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図18に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に、領域判定処理の手順について詳細に説明する。
図19は、数値表置換処理の手順の一例を示すブロック図である。以下、図19に示す処理をステップ番号に沿って説明する。なお、数値表置換処理の入力情報は、table(数値表)、c_str(文字列置換値)、c_num(数値置換値)、およびc_empty(空値置換値)である。例えば、c_str=−2、c_num=2、c_empty=0である。
[ステップS101]数値表置換部122aは、行番号を示す変数iの取り得る範囲を、1からtableの行数までの整数とし、列番号を示す変数jの取り得る範囲を1からtableの列数までの整数とする。そして数値表置換部122aは、iとjとのすべての値の組み合わせそれぞれに対して、ステップS102〜S106の処理を実行する。
[ステップS102]数値表置換部122aは、数値表のi行j列のセルの値(table[i][j])が空値か否かを判断する。空値であれば、処理がステップS103に進められる。空値でなければ、処理がステップS104に進められる。
[ステップS103]数値表置換部122aは、数値表のi行j列のセル(table[i][j])に、c_emptyの値を設定する。その後、処理がステップS107に進められる。
[ステップS104]数値表置換部122aは、数値表のi行j列のセルの値(table[i][j])が数値か否かを判断する。数値であれば、処理がステップS106に進められる。数値でなければ、処理がステップS105に進められる。
[ステップS105]数値表置換部122aは、数値表のi行j列のセル(table[i][j])に、c_strの値を設定する。その後、処理がステップS107に進められる。
[ステップS106]数値表置換部122aは、数値表のi行j列のセル(table[i][j])に、c_numの値を設定する。その後、処理がステップS107に進められる。
[ステップS107]数値表置換部122aは、iとjとのすべての値の組み合わせそれぞれに対して、ステップS102〜S106の処理の実行が完了したら、数値表置換処理を終了する。
この数値表置換処理により、図5に示した数値表112の各セルの値が、図6に示す数値表112aのように変更される。その後、前処理部122bが、定理3,4,5の前処理を実施し、前処理の結果をメモリに格納する。そして、領域候補生成部122cにより、候補領域生成処理が行われる。
図20は、候補領域生成処理の手順の一例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。なお、数値表置換処理の入力情報は、変換後のtable(数値表)である。
[ステップS121]領域候補生成部122cは、変数row_center_beginの取り得る範囲を、1からtableの行数までの整数とし、変数row_center_endの取り得る範囲をrow_center_beginからtableの数までの整数とする。そして数値表置換部122aは、row_center_beginとrow_center_endとのすべての値の組み合わせそれぞれに対して、ステップS122〜S126の処理を実行する。
[ステップS122]領域候補生成部122cは、変数col_center_beginの取り得る範囲を、1からtableの列数までの整数とし、変数col_center_endの取り得る範囲をcol_center_beginからtableの列数までの整数とする。そして数値表置換部122aは、col_center_beginとcol_center_endとのすべての値の組み合わせそれぞれに対して、ステップS123〜S125の処理を実行する。
[ステップS123]領域候補生成部122cは、数値管理領域候補num_areaに、(row_center_begin,row_center_end-1,col_center_begin,col_center_end-1)を設定する。
[ステップS124]領域候補生成部122cは、ステップS123で設定した数値管理領域候補num_areaを用いて、図15に示した定理3の計算row_area(num_area)を行う。そして領域候補生成部122cは、計算結果を、行ヘッダ領域候補row_areaに設定する。計算で得られる行ヘッダ領域候補row_areaは、数値管理領域候補num_areaの左辺を右辺として持ち、内包するセルの値の総和が最小となる矩形領域である。
また、領域候補生成部122cは、ステップS123で設定した数値管理領域候補num_areaを用いて、図16に示した定理4の計算col_area(num_area)を行う。そして領域候補生成部122cは、計算結果を、列ヘッダ領域候補col_areaに設定する。計算で得られる列ヘッダ領域候補col_areaは、数値管理領域候補num_areaの上辺を下辺として持ち、内包するセルの値の総和が最小となる矩形領域である。
[ステップS125]領域候補生成部122cは、ステップS123〜S124で得られた数値管理領域候補num_area、行ヘッダ領域候補row_area、および列ヘッダ領域候補col_areaの組を、候補領域セットとして出力する。
[ステップS126]領域候補生成部122cは、col_center_beginとcol_center_endとのすべての値の組み合わせそれぞれに対して、ステップS123〜S125の処理が完了したら、処理をステップS127に進める。
[ステップS127]領域候補生成部122cは、row_center_beginとrow_center_endとのすべての値の組み合わせそれぞれに対して、ステップS122〜S126の処理が完了したら、候補領域生成処理を終了する。
このようにして、生成可能な数値管理領域候補の数分の領域候補セットが生成される。例えば、数値表tableに対応する候補領域セットの集合は、関数allarea(table)で呼び出せるものとする。その後、最適解探索部112dにより、最適解探索処理が実行される。
図21は、最適解探索処理の手順の一例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。なお最適解探索処理の入力情報は、変換後のtable(数値表)である。
[ステップS131]最適解探索部112dは、変数max_scoreに「0」を設定する。また最適解探索部112dは、変数max_argsに、空値を示すemptyを設定する。
[ステップS132]最適解探索部112dは、数値表tableに対応する候補領域セットそれぞれに対して、ステップS133〜S134の処理を実行する。処理対象の候補領域セットのうち、row_areaを行ヘッダ領域を示す矩形Aに設定し、col_areaを列ヘッダ領域を示す矩形Bに設定し、num_areaを数値管理領域を示す矩形Cに設定する。
[ステップS133]最適解探索部112dは、候補領域セットで示される矩形のスコア(sum(C)−sum(A)sum(B))を計算し、スコアがmax_scoreより大きいか否かを判断する。なお、各矩形内の定数値の総和は、定理5の前処理を実施しておくことで、それぞれO(1)の処理量で計算できる。スコアがmax_scoreより大きい場合、処理がステップS134に進められる。スコアがmax_score以下の場合、処理がステップS135に進められる。
[ステップS134]最適解探索部112dは、算出したスコアをmax_scoreに設定する。また最適解探索部112dは、max_argsに、現在処理対象となっている候補領域セットに示される矩形を設定する。
[ステップS135]最適解探索部112dは、すべての候補領域セットに対してステップS133〜S134の処理が完了した場合、処理をステップS136に進める。
[ステップS136]最適解探索部112dは、探索結果としてmax_argsを出力する。
このようにして、スコアが最大となるような、行ヘッダ領域、列ヘッダ領域、および数値管理領域が得られる。
以上説明した第2の実施の形態では、ヘッダ領域にフォントやインデントなどの特徴がないような様々なタイプの数値表であっても、ヘッダ領域や数値管理領域を適切に判定することが可能となる。すなわち、数値管理領域には数値がより多く含まれ、ヘッダ領域内には文字列がより多く含まれるような、両者のバランスが取れた矩形が、各領域として出力される。その結果、ヘッダ領域に数値が、数値管理領域に文字列が含まれる場合であっても、適切な領域判定となる。
また、定理1〜5を有効に利用してスコアの計算を高速に実施するようにしたため、数値表からのヘッダ領域や数値管理領域の抽出を、短時間で実施することができる。例えば、n行n列の数値表からのヘッダ領域と数値管理領域との抽出処理が、定理1〜5を利用しなければO(n8)の計算量となるところ、定理1〜5を利用することで、O(n4)の計算量で済んでいる。
[その他の実施の形態]
数値と文字列との置換の際の定数値は、ユーザが任意に設定可能である。例えば、数値と文字列とを、互いに絶対値の異なる定数値に置換してもよい。例えば数値を「3」の定数値に置換し、文字列を「−1」の定数値に置換するようにしてもよい。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 表
2 数値管理領域
3 行ヘッダ領域
4 列ヘッダ領域
10 領域抽出装置
11 記憶部
12 演算部

Claims (6)

  1. コンピュータに、
    複数のセルが矩形に配置され、少なくとも一部の前記セルに数値または文字列が設定された表を取得し、
    前記表内の前記数値を第1定数値に置き換え、前記表内の前記文字列を、前記第1定数値とは符号が逆の第2定数値に置き換え、
    前記表内に、
    任意の長さの上辺と左辺を有する第1の矩形領域、
    前記第1の矩形領域の左辺を右辺として有する第2の矩形領域、および
    前記第1の矩形領域の上辺を下辺として有する第3の矩形領域
    を含む領域群を、前記第1の矩形領域の範囲を変えて複数生成し、
    生成された複数の前記領域群それぞれについて、
    前記第1の矩形領域内の前記セルに設定された前記第1定数値および前記第2定数値の合計と、
    前記第2の矩形領域内の前記セルと前記第3の矩形領域内の前記セルとに設定された前記第1定数値および前記第2定数値の合計と
    の差を計算し
    記複数の領域群のうち、計算した差の大きさに基づいて決定した少なくとも1つの領域群を出力する、
    処理を実行させる領域抽出プログラム。
  2. 記出力では、少なくとも、差が最大となる領域群を出力する、
    請求項1記載の領域抽出プログラム。
  3. 前記生成では、
    前記第1の矩形領域の左辺を右辺として有する複数の第2の矩形領域候補のうち、内包するセルに設定された前記第1定数値及び前記第2定数値の合計が、前記第2定数値と同一符号で絶対値が最大となる第2の矩形領域候補を、前記第1の矩形領域と同じ領域群に属する前記第2の矩形領域とし、
    前記第1の矩形領域の上辺を下辺として有する複数の第3の矩形領域候補のうち、内包するセルに設定された前記第1定数値及び前記第2定数値の合計が、前記第2定数値と同一符号で絶対値が最大となる第3の矩形領域候補を、前記第1の矩形領域と同じ領域群に属する前記第3の矩形領域とする、
    請求項1または2記載の領域抽出プログラム。
  4. 前記置き換えでは、前記表内の値が設定されていないセルに対して、第3定数値を設定し、
    差の計算では、前記第1の矩形領域内の前記セルに設定された前記第1定数値、前記第2定数値、および前記第3定数値の合計と、前記第2の矩形領域内の前記セルと前記第3の矩形領域内の前記セルとに設定された前記第1定数値、前記第2定数値、および前記第3定数値の合計との差を計算する、
    請求項1乃至3のいずれかに記載の領域抽出プログラム。
  5. コンピュータが、
    複数のセルが矩形に配置され、少なくとも一部の前記セルに数値または文字列が設定された表を取得し、
    前記表内の前記数値を第1定数値に置き換え、前記表内の前記文字列を、前記第1定数値とは符号が逆の第2定数値に置き換え、
    前記表内に、
    任意の長さの上辺と左辺を有する第1の矩形領域、
    前記第1の矩形領域の左辺を右辺として有する第2の矩形領域、および
    前記第1の矩形領域の上辺を下辺として有する第3の矩形領域
    を含む領域群を、前記第1の矩形領域の範囲を変えて複数生成し、
    生成された複数の前記領域群それぞれについて、
    前記第1の矩形領域内の前記セルに設定された前記第1定数値および前記第2定数値の合計と、
    前記第2の矩形領域内の前記セルと前記第3の矩形領域内の前記セルとに設定された前記第1定数値および前記第2定数値の合計と
    の差を計算し
    記複数の領域群のうち、計算した差の大きさに基づいて決定した少なくとも1つの領域群を出力する、
    領域抽出方法。
  6. 複数のセルが矩形に配置され、少なくとも一部の前記セルに数値または文字列が設定された表を記憶する記憶部と、
    前記表を取得し、前記表内の前記数値を第1定数値に置き換え、前記表内の前記文字列を、前記第1定数値とは符号が逆の第2定数値に置き換え、前記表内に、任意の長さの上辺と左辺を有する第1の矩形領域、前記第1の矩形領域の左辺を右辺として有する第2の矩形領域、および前記第1の矩形領域の上辺を下辺として有する第3の矩形領域を含む領域群を、前記第1の矩形領域の範囲を変えて複数生成し、生成された複数の前記領域群それぞれについて、前記第1の矩形領域内の前記セルに設定された前記第1定数値および前記第2定数値の合計と、前記第2の矩形領域内の前記セルと前記第3の矩形領域内の前記セルとに設定された前記第1定数値および前記第2定数値の合計との差を計算し、前記複数の領域群のうち、計算した差の大きさに基づいて決定した少なくとも1つの領域群を出力する演算部と、
    を有する領域抽出装置。
JP2016070011A 2016-03-31 2016-03-31 領域抽出プログラム、領域抽出方法、および領域抽出装置 Active JP6674094B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016070011A JP6674094B2 (ja) 2016-03-31 2016-03-31 領域抽出プログラム、領域抽出方法、および領域抽出装置
US15/424,495 US10255261B2 (en) 2016-03-31 2017-02-03 Method and apparatus for extracting areas

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016070011A JP6674094B2 (ja) 2016-03-31 2016-03-31 領域抽出プログラム、領域抽出方法、および領域抽出装置

Publications (2)

Publication Number Publication Date
JP2017182526A JP2017182526A (ja) 2017-10-05
JP6674094B2 true JP6674094B2 (ja) 2020-04-01

Family

ID=59958830

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016070011A Active JP6674094B2 (ja) 2016-03-31 2016-03-31 領域抽出プログラム、領域抽出方法、および領域抽出装置

Country Status (2)

Country Link
US (1) US10255261B2 (ja)
JP (1) JP6674094B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10545942B2 (en) * 2016-06-13 2020-01-28 International Business Machines Corporation Querying and projecting values within sets in a table dataset
US11436407B2 (en) * 2020-07-28 2022-09-06 Intuit Inc. Generating machine renderable representations of forms using machine learning
WO2022102825A1 (ko) * 2020-11-16 2022-05-19 주식회사 솔트룩스 표로부터 지식 데이터를 추출하기 위한 시스템 및 방법
KR102621758B1 (ko) * 2020-11-16 2024-01-09 주식회사 솔트룩스 표로부터 지식 데이터를 추출하기 위한 시스템 및 방법
US11537785B1 (en) * 2021-07-14 2022-12-27 Sap Se Spreadsheet flat data extractor

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09128466A (ja) * 1995-10-26 1997-05-16 Casio Comput Co Ltd 表処理方法及び表処理装置
JPH11175641A (ja) 1997-12-10 1999-07-02 Toshiba Corp 帳票作成方法および帳票作成装置
JP2005216203A (ja) 2004-02-02 2005-08-11 Mantaro Yajima 表フォーマットデータ処理方法並びに表フォーマットデータ処理装置
JP4985993B2 (ja) * 2006-08-10 2012-07-25 日本電気株式会社 オブジェクト領域抽出装置
JP5315890B2 (ja) 2008-09-24 2013-10-16 日本電気株式会社 評価システムおよび評価方法
JP5144789B2 (ja) * 2011-06-24 2013-02-13 楽天株式会社 画像提供装置、画像処理方法、画像処理プログラム及び記録媒体
JP5113929B1 (ja) * 2011-06-24 2013-01-09 楽天株式会社 画像提供装置、画像処理方法、画像処理プログラム及び記録媒体
JP5983368B2 (ja) * 2012-12-05 2016-08-31 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
JP6020161B2 (ja) * 2012-12-28 2016-11-02 富士通株式会社 グラフ作成プログラム、情報処理装置、およびグラフ作成方法
JP6397284B2 (ja) * 2014-09-16 2018-09-26 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム

Also Published As

Publication number Publication date
US20170286386A1 (en) 2017-10-05
JP2017182526A (ja) 2017-10-05
US10255261B2 (en) 2019-04-09

Similar Documents

Publication Publication Date Title
JP6674094B2 (ja) 領域抽出プログラム、領域抽出方法、および領域抽出装置
US11244208B2 (en) Two-dimensional document processing
RU2540843C2 (ru) Отображение множества областей заголовков строк и столбцов в сводной таблице
US9495347B2 (en) Systems and methods for extracting table information from documents
US20150032708A1 (en) Database analysis apparatus and method
CN114155543A (zh) 神经网络训练方法、文档图像理解方法、装置和设备
CN111406262A (zh) 认知文档图像数字化
KR101773574B1 (ko) 데이터 테이블의 차트 시각화 방법
WO2011090519A1 (en) Accessing large collection object tables in a database
US20190141110A1 (en) Design Analysis for Framework Assessment
CN112395418B (zh) 网页中的目标对象提取方法、装置、电子设备
Asif et al. A comprehensive approach of exploring usability problems in enterprise resource planning systems
US8326812B2 (en) Data search device, data search method, and recording medium
JP4478579B2 (ja) データ・エンティティ及びリレーショナル・データベース構造のグラフィック表示を変更するシステム、方法、及びコンピュータ・プログラム製品
US10241899B2 (en) Test input information search device and method
US20200201584A1 (en) Method and apparatus for printing relational graph
US10839571B2 (en) Displaying large data sets in a heat map
JP6252296B2 (ja) データ識別方法、データ識別プログラム及びデータ識別装置
US20180322108A1 (en) Item name association processing method, computer-readable recording medium, and information processing apparatus
JP2010102440A (ja) 情報管理装置、情報管理方法、及び情報管理プログラム
WO2018100700A1 (ja) データ変換装置とデータ変換方法
Odegua et al. DataSist: A Python-based library for easy data analysis, visualization and modeling
US11600028B1 (en) Semantic resizing of line charts
US20240233223A1 (en) Image table generation
Xiao et al. UI Semantic Group Detection: Grouping UI Elements with Similar Semantics in Mobile Graphical User Interface

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190909

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190909

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190909

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200217

R150 Certificate of patent or registration of utility model

Ref document number: 6674094

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150