説明

目次と見出しの対応付け方法、対応付け装置、及び対応付けプログラム

【課題】目次と本文中の見出し間の対応付けをコンピュータの演算処理により行う技術を提供する。
【解決手段】目次と見出しの対応付け装置300は、文書の目次項目単位の目次データCと、行単位の本文データDとを入力する入力部302と、目次と見出しの対応付けMの尤もらしさを示す、C、D及びMの関数であるスコア関数Sの最大値を探索する探索部304と、スコア関数Sを最大にする対応付けMを出力する出力部306とを含む。上記スコア関数Sは、各目次項目の見出し候補行への対応付けの尤もらしさを該対応付け単独で評価するユニグラムスコアuを全目次項目について足し合わせた第1の和と、目次項目ペアの見出し候補行への対応付けの尤もらしさを目次項目ペアのそれぞれの対応付けの共通度に基づき評価するバイグラムスコアbを全目次項目ペアについて足し合わせた第2の和との合計として求められる。

【発明の詳細な説明】
【技術分野】
【0001】
本願発明は、電子化された書籍において、目次と本文中の見出し間の対応付けをコンピュータの演算処理により行う技術に関する。
【背景技術】
【0002】
近年、国内外で書籍の電子化の勢いが増してきており、多くの書籍が電子化されつつある。書籍等の文書の電子化においては、光学式文字読取装置(Optical Character Reader :OCR)によってテキスト・データを取得した後にこれに適切な構造情報を付与し、電子化のメリットを最大限に享受することが望まれる。電子化文書の価値を増加させる構造情報の1つとして、目次と本文中の見出し間の対応関係がある。目次と見出し間の対応関係の情報の付与によって、例えば、目次から本文中の対応する見出しへのリンクを貼ったり、本文中の文章の読み上げ順序を決定したり、また、検索時において本文よりも見出しを重視した重み付けを行うことが可能となる。
【0003】
目次と本文中の見出し間の対応関係の情報は人手により付与することは不可能ではない。しかし、図書館等多くの書籍を所有する機関における電子化を考えると、人手による付与は現実的ではなく、コンピュータを利用した構造情報の自動付与が望まれる。
【0004】
目次と本文中の見出しを自動で対応付ける従来技術として、特許文献1が存在する。特許文献1は、目次を認識するための条件として、各目次内項目と、その項目に結び付けられリンクしている他のテキスト断片例えば見出しとが、テキスト内容的に同様のものでなければならない、というテキスト類似度条件を開示する。しかしながら、テキスト類似度条件だけでは、例えば、章見出し又はセクション見出しと同じ文章が本文に含まれている場合、目次内項目にリンクさせるべき見出しがそれらの文章のうちどれなのかが判然としないという問題がある。
【0005】
そこで特許文献1は、基準書式との照合によってテキスト断片を選択的に候補から除外した上で、目次内項目らしきテキスト断片、そのリンク先らしきテキスト断片又はその双方を認識する技術を開示する。より具体的には、特許文献1は、索引部分書式に合致しないテキスト断片や、見出しであることを示すキーワードを含んでいないテキスト断片、小文字の英文字を含むテキスト断片を見出し候補から除外する技法を開示する。
【0006】
また、特許文献1は、各テキスト断片に関連付けられているページ内位置に基づき候補を絞った上で、目次内項目のリンク先らしきテキスト断片を認識する技術を開示する。ページ内位置に基づく個数削減条件としては、そのページの先頭から所定距離内にあるテキスト断片だけを見出し候補にするという条件、そのページの最左端カラムを表すカラム番号に関連付けられているテキスト断片だけを見出し候補にするという条件が開示されている。
【0007】
また、特許文献2〜6は、タイトルを抽出することを目的とし、タイトル固有の特徴をポイントとして用いることにより、ポイント数の多い文字列領域をタイトルとして自動抽出する技術を開示する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2007−226792号公報
【特許文献2】特開2000−148788号公報
【特許文献3】特開平10−260993号公報
【特許文献4】特開2001−34763号公報
【特許文献5】特開2003−16076号公報
【特許文献6】特開2003−58556号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1の技術によって、基準書式との照合によってテキスト断片を選択的に候補から除外するとしても、処理対象の文書が用いると予測される基準書式を事前に全て網羅して設定することは不可能である。処理対象の文書ごと人手で基準書式を設定すればこのような問題は解決できるが、それでは手間がかかりすぎる。
【0010】
ページ内位置に基づく個数削減条件についても同様である。即ち、文書が採用するレイアウトに一定の傾向がみられるとしても具体的な位置条件は文書ごとに異なる。そのため位置条件を事前に設定しようとすると、全ての文書に適用可能な緩い条件を設定せざるをえなくなり、候補の絞込みを十分に行うことができなくなる。
【0011】
また、位置情報に関しては、目次に含まれるページ情報を利用して見出し候補を当該ページ内に含まれるものに限定することも考えられる。しかしながら、前書き等の本文以外のページの存在のために、目次におけるページ番号と実際のページ番号、即ち通し番号とにずれが生じることも多い。そのためページ情報を利用する場合でも事前に人手により差分情報を付与することが必要となる。
【0012】
なお、特許文献2〜6は、タイトル抽出のために利用可能なタイトル固有の特徴を開示する背景技術として挙げたものであり、目次と見出しの対応付けに関する技術を開示するものではない。
【0013】
この発明は、上記の問題点を解決するためになされたものであって、見出し候補の絞り込み条件を事前に網羅的に設定したり文書ごとに人手により設定したりする必要なしに、電子化された書籍において、目次と本文中の見出し間の適切な対応付けをコンピュータの演算処理により行うことのできる技術を提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成する本願発明は、次のような、文書の目次内の目次項目を前記文書の本文中の見出し行に対応付ける、コンピュータの演算処理による目次と見出しの対応付け方法によって実現される。そのような目次と見出しの対応付け方法は、前記コンピュータが、前記文書の目次項目単位の目次データCを受け取るステップと、前記コンピュータが、前記文書の行単位の本文データDを受け取るステップと、前記コンピュータが、前記目次データC内の全目次項目の前記本文データD内の見出し候補としての行である見出し候補行への対応付けMの尤もらしさを示す、C、D及びMの関数であるスコア関数Sの最大値を探索するステップと、前記コンピュータが、前記スコア関数Sを最大にする前記対応付けMを出力するステップとを含む。ここで、前記スコア関数Sは、各目次項目の見出し候補行への対応付けの尤もらしさを該対応付け単独で評価するユニグラムスコアuを全目次項目について足し合わせた第1の和と、一の目次項目と他の目次項目のペアである目次項目ペアの見出し候補行への対応付けの尤もらしさを前記目次項目ペアのそれぞれの見出し候補行への対応付けの共通度に基づき評価するバイグラムスコアbを全目次項目ペアについて足し合わせた第2の和との合計として求められる。
【0015】
好ましくは、前記目次はフラット構造を有し、前記ユニグラムスコアuは、前記目次項目の文字列と、該目次項目に対応付ける前記見出し候補行の文字列との類似度に基づき求められる。また、前記バイグラムスコアbは、前記目次項目ペアのそれぞれに対応付ける見出し候補行のフォーマットの共通度に基づき求められる。
【0016】
より好ましくは、前記バイグラムスコアbは更に、前記目次項目ペアのそれぞれの対応付けにおける、目次項目に含まれるページ番号と該目次項目に対応付ける見出し候補行が含まれるページの通し番号との差の共通度に基づいて求められる。
【0017】
また好ましくは、前記一の目次項目と前記他の目次項目とは隣接関係にある。
【0018】
より好ましくは、前記目次は木構造を有し、前記一の目次項目と隣接関係にある前記他の目次項目を、前記目次の木構造において前記一の目次項目と同一階層において隣り合う兄弟関係にある目次項目に限定する。
【0019】
更に好ましくは、前記ユニグラムスコアuは、前記目次項目の文字列と、該目次項目に対応付ける前記見出し候補行の文字列との類似度に基づき求められ、前記バイグラムスコアbは、前記目次項目ペアのそれぞれに対応付ける見出し候補行のフォーマットの共通度に基づき求められる。
【0020】
更により好ましくは、前記フォーマットの共通度は、前記目次項目ペアにそれぞれ対応付ける見出し候補行のフォントサイズの共通度と、前記目次項目ペアにそれぞれ対応付ける見出し候補行の最初の文字又は最初の文字と最後の文字との共通度と、前記目次項目ペアにそれぞれ対応付ける見出し候補行の文字列のうち、対応付ける目次項目の文字列に類似する部分である類似文字列の前後の所定数の文字の共通度のうちの少なくとも1つの共通度である。
【0021】
また、更に好ましくは、前記ユニグラムスコアuは、前記目次項目の文字列と、該目次項目に対応付ける前記見出し候補行の文字列の類似度に基づき求められ、前記バイグラムスコアbは、前記目次項目ペアのそれぞれの対応付けにおける、目次項目に含まれるページ番号と該目次項目に対応付ける見出し候補行が含まれるページの通し番号との差の共通度に基づいて求められる。
【0022】
更により好ましくは、前記バイグラムスコアbは、前記一の目次項目に対応付ける一の見出し候補行と、前記他の目次項目に対応付ける他の見出し候補行とが隣接している場合に値を減じられる。
【0023】
また、より好ましくは、前記一の目次項目に隣接する目次項目に、前記一の目次項目に所定の数以下の目次項目を挟んで隣接する目次項目を含める。
【0024】
また、より好ましくは、前記スコア関数Sの最大値は、Viterbiアルゴリズム又はダイクストラ法に従い探索される。
【0025】
また、より好ましくは、前記スコア関数Sの最大値の探索において、前記目次データCに含まれる各目次項目にそれぞれ対応付ける前記見出し候補行を、本文データD内の全行のうち、前記目次項目の文字列と一定以上の類似度を有する文字列の行に限定する。
【0026】
また、好ましくは、前記目次は木構造を有し、前記木構造において同一階層において隣り合う兄弟関係にある前記目次項目ペアに対しては、前記バイグラムスコアbとして、前記目次項目ペアのそれぞれに対応付ける見出し候補行のフォーマットの共通度が高いほど高いスコア値を返す兄弟バイグラムスコアb1を採用し、前記木構造において親子関係にある前記目次項目ペアに対しては、前記バイグラムスコアbとして、前記目次項目ペアのそれぞれに対応付ける見出し候補行のフォーマットの共通度が低いほど高いスコア値を返す親子バイグラムスコアb2を採用する。
【0027】
より好ましくは、前記親子バイグラムスコアb2は、親である目次項目に対応付ける見出し候補行のフォントサイズがと子である目次項目に対応付ける見出し候補行のフォントサイズの間に大小関係がある場合に高いスコア値を返す。
【0028】
また、より好ましくは、前記親子バイグラムスコアb2は、親である目次項目に対応付ける見出し候補行の索引部分と子である目次項目に対応付ける見出し候補行の索引部分のフォーマットが異なる場合に高いスコア値を返す。
【0029】
また、より好ましくは、前記スコア関数Sの最大値は、2nd order Eisnerを応用したアルゴリズムに従い探索される。
【0030】
また、より好ましくは、前記スコア関数Sの最大値の探索において、前記目次データCに含まれる各目次項目にそれぞれ対応付ける前記見出し候補行を、本文データD内の全行のうち、前記目次項目の文字列と一定以上の類似度を有する文字列を含む行に限定する。
【0031】
以上、目次と見出しの対応付け方法として本願発明を説明した。しかし、本願発明は、そのような目次と見出しの対応付け方法を実行する目次と見出しの対応付け装置、及びそのような目次と見出しの自動対応付け方法をコンピュータに実行させる目次と見出しの対応付けプログラムとして把握することもできる。
【発明の効果】
【0032】
本願発明では、目次項目の見出し候補行への対応付けの尤もらしさを、当該対応付け単独で評価するだけでなく、当該目次項目の見出し候補行への対応付けと他の目次項目の見出し候補行への対応付けとの共通度をも考慮して評価する。従って、本願発明によれば、見出しに共通する属性情報や目次におけるページ番号と通し番号との差分情報を、事前に網羅的に設定したり文書ごとに人手により設定したりする必要なしに、電子化された書籍において、目次と本文中の見出し間の適切な対応付けをコンピュータの演算処理により行うことができる。本願発明のその他の効果については、各実施の形態の記載から理解される。
【図面の簡単な説明】
【0033】
【図1】目次と見出しの対応付けの一例を示す図である。
【図2】目次と見出しの対応付けの他の一例を示す図である。
【図3】本願発明の実施の形態に係る自動対応付け装置300の機能構成の一例を示す図である。
【図4】スコア関数Sの最大値の探索するための探索対象のグラフの一例を示す図である。
【図5】第1のフィルタリング及び第2のフィルタリングを施した探索対象のグラフの一例を示す図である。
【図6】ページ抜けを示すエッジを追加した探索対象のグラフの一例を示す図である。
【図7】ページ抜けを示すノードを追加した探索対象のグラフの一例を示す図である。
【図8】自動対応付け装置300による処理の全体の流れの一例(実施例1)を示すフローチャートである。
【図9】DAGのノード作成処理の流れの一例を示すフローチャートである。
【図10】DAGのエッジ作成処理の流れの一例を示すフローチャートである。
【図11】スコア関数Sの最大値探索処理の流れの一例を示すフローチャートである。
【図12】スコア関数Sの最大値を与える対応付けMの出力処理の流れの一例を示すフローチャートである。
【図13】図13(a)は、木構造を有する目次の一例を示す図である。図13(b)は、対応付けMの配列の復元順序の一例を示す図である。
【図14】自動対応付け装置300による処理の全体の流れの一例(実施例2)を示すフローチャートである。
【図15】見出し候補行の決定処理の流れの一例を示すフローチャートである。
【図16】再帰関数comp(c, l, r)の計算処理の流れの一例を示すフローチャートである。
【図17】再帰関数incomp(c, l, r)の計算処理の流れの一例を示すフローチャートである。
【図18】再帰関数getcomp(c, l, r)処理の流れの一例を示すフローチャートである。
【図19】再帰関数getincomp(c, l, r)処理の流れの一例を示すフローチャートである。
【図20】本願発明の実施の形態に係る自動対応付け装置300を実現するのに好適な情報処理装置のハードウェア構成の一例を示した図である。
【発明を実施するための形態】
【0034】
以下、本願発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【0035】
図1は、目次と見出しの対応付けの一例を示す図である。図1において左側は目次ページ100を示し、右側は本文ページ102を示す。目次ページ100には目次項目が並び、各目次項目は、索引部分を有する文字列(目次項目104の例では「第六十九回」から始まる文字列106)とページ番号(目次項目104の例では「6」の数字108)とからなる。また、本文ページ102は、目次項目に対応する見出し110を含み、ページ左下に「6」のページ番号112を含む。
【0036】
本願発明は、図1に示す矢印のように、目次ページ100内の各目次項目を、本文ページ内の対応する見出し行に、コンピュータの演算処理により自動で適切に対応付けることを目的とする。目次項目の見出し行への対応付けの尤もらしさを評価するのに有効な基準の1つは、目次項目と見出し行の文字列の類似度である。
【0037】
しかしながら、OCR処理によって得られた目次データや本文データにはノイズ(誤字、脱字、ゴミ文字)が含まれることが予想される。また、図1に示す例では目次項目の文字列は索引部分が含んでいるが、このような索引部分は見出し行にのみ付与されることも少なくない。このような場合に目次項目の文字列と同じ文字列が本文中に複数含まれていると、文字列の類似度だけで対応付けの尤もらしさを正しく評価することはできない。
【0038】
上述のケースの一例を図2に示す。図1と同様、左側は目次ページ200を示し、右側は本文ページ202を示す。本文ページ202では全見出し行216、218、224に章番号が付与されているのに対し、目次ページ200では、大章番号のみが該当する目次項目204、212に付与されている。そのため文字列の類似度だけでは「隠れマルコフモデル」の目次項目206を、本文ページ202内の「第4章 隠れマルコフモデル」の行216と、「4.1隠れマルコフモデル」の行218と、「隠れマルコフモデル」の行220のいずれに対応付けるべきか判断できない。
【0039】
上記問題に対し、特許文献1の従来技術は、見出しには索引部分がある場合が多いことに注目し、基準書式との照合によって見出しの候補を絞り込む。また、上記従来技術は、見出しに関する文書ページ内レイアウトに関する種々のアプリオリな知識を利用し、ページ内位置関係に基づく条件によって見出しの候補を絞り込む。しかしながらそのためには、照合すべき基準書式やページ内位置関係に基づく条件を事前に設定しておく必要がある。事前設定にない基準書式が利用される場合、また、事前設定の条件が広すぎる場合には当該方法は有効に機能しない。
【0040】
そこで本願発明では、見出しには共通して見られる見出しとしての特徴があることを、一の目次項目の見出し候補としての行(以下、「見出し候補行」という)への対応付けと、他の目次項目の見出し候補行への対応付けとの共通度を評価することで利用する。これを先の図2のケースを例に説明する。
【0041】
上述したように、「隠れマルコフモデル」の目次項目206については、目次項目と見出し候補行の文字列の類似度から、本文ページ202内の「第4章 隠れマルコフモデル」の行216と、「4.1隠れマルコフモデル」の行218と、「隠れマルコフモデル」の行220の3つの行が見出し候補行として抽出される。ここで、目次項目206の見出し候補行への対応付けを、隣接する「マルコフ過程」の目次項目208の見出し候補行である「4.2マルコフ過程」の行224への対応づけとの共通度に基づき更に検討する。すると、対応付ける見出し候補行の索引部分の共通度の高さから、「4.1隠れマルコフモデル」の行218を正しく選択できる。
【0042】
なお、対応付けの共通度を評価するにあたり選択すべき他の目次項目は、目次が木構造を有するか否かによって異なる。目次が木構造を有さずフラット構造を有する場合、各目次項目に対応付けられる見出しのフォーマットは同一と考えられる。従って、全ての目次項目が同一レベルにある場合、他の目次項目は一の目次項目と異なる任意の目次項目でよく、共通度の評価では共通度が高いほど高い評価となる。但し、他の目次項目は目次項目ごと異なることが好ましいことから、以下に説明する実施例では、他の目次項目は一の目次項目に隣接する目次項目とする。
【0043】
一方、目次が木構造を有する場合、兄弟関係にある目次項目のペアにそれぞれ対応付けられる見出しのフォーマットは同一と考えられが、親子関係にある目次項目のペアにそれぞれ対応付けられる見出しのフォーマットは同一ではなく、例えばフォントサイズや章番号等、大小関係があると考えられる。従って目次が木構造を有する場合、選択すべき他の目次項目は、一の目次項目と兄弟関係にある目次項目であり、共通度の評価では共通度が高いほど高い評価となる。但し、共通度の評価を、共通度が低いほど高い評価を行うようにすれば、他の目次項目として、一の目次項目と親子関係にある目次項目を選択することも可能である。
【0044】
また、一の目次項目の見出し候補行への対応付けと、他の目次項目の見出し候補行への対応付けとの共通度を評価することによって、目次におけるページ情報の利用が可能となる。なぜならば、目次項目に含まれる目次のページ番号と実際のページ番号、即ち、文書の最初のページからの通し番号とにずれがあったとしても、ずれの程度は全ての対応付けにおいて同一であるからである。なお、通し番号から目次項目のページ番号を差し引いた差分の共通性に基づく対応付けの評価は、目次が木構造を有するか否かによらず、任意の目次項目ペアに対して適用可能であることに留意されたい。
【0045】
以下、目次項目と見出し候補行との対応付けの問題を定式化し、定式化した問題に対して本願発明を説明する。
【0046】
まず、本願発明の一実施形態に係る目次と見出しの自動対応付け装置への入力として、目次データCと、本文データDを次のように定義する。
C = {(s1,p1), …, (s|C|,p|C|)} ― (定義1)
ここで、|C|は目次に含まれる全目次項目数、siはi番目の目次項目の文字列、piはi番目の目次項目のページ番号を示す。
D = {L1, …, L|D|} ― (定義2)
ここで、|D|は本文に含まれる全行数、Lkは本文に含まれるk番目の行を示す。
【0047】
このような目次データCは、文書のスキャンデータから目次ページを推定して、各行を目次データとすることにより取得してよい。その際、各行の最後にある数字をページ番号piとし、両端の空白文字を除く残りを目次項目の文字列siとしてよい。かかる処理の詳細は、例えば以下の文献を参照されたい。
S. Mandal, S. P. Chowdhury, A. K. Das, B. Chanda, “AutomatedDetection and Segmentation of Table of Contents Page from Document Images.”, In proc. of ICDAR 2003.
なお、目次データCは書籍の所有者である出版社が所有していることも多く、その場合出版社から取得できる。
【0048】
一方、本文に含まれる各行Lkは、文字列と通し番号やフォントサイズ等の付加情報からなるものとする。一般的にOCRは認識した文字の情報だけでなく、該文字が占める矩形情報をも出力する。具体的には、ページ隅を原点としたページ内での矩形の位置座標(x,y)、矩形の幅width及び高さheightである。また、一般的なOCRは、閾値以下で隣接する文字を同じ行としてつなぎ合わせる等の処理をして行を認識し、行単位で文字単位のスキャン結果を出力することができる。そこで本実施例では、OCRの当該機能を利用し、同一行と認識された文字単位の認識結果の集合から、各行Lkの文字列(空白文字は含まない)を取得し、また、高さheightの中央値を求めてこれを各行Lkのフォントサイズとする。更にOCRは、横書きの場合ページごとに上から下へ順次スキャンを行うことから通し番号やページ内行番号を取得可能であり(縦書きの場合は通し番号とページ内の列番号)、本実施例では当該通し番号とページ内行番号を各行Lkに付与するものとする。
【0049】
次に、目次と見出しの自動対応付け装置からの出力として、出力データMを次のように定義する。
M = {m1, …, m|C|} ― (定義3)
ここで、|C|は目次に含まれる全目次項目数を示す。
出力データMは、各目次項目が何行目に対応しているかを表す正の整数の列であり、要素miは、i番目の目次項目がmi(正の整数値)行目に対応することを示す。そのため以下では出力データMを対応付けMともいう。
【0050】
ここで、目次データC内の全目次項目の本文データD内の見出し候補行への対応付けMの尤もらしさを示す、C、D及びMの関数であるスコア関数Sを考える。すると、目次項目の見出し候補行への対応付けの問題は、スコア関数Sを最大にする対応付けMを求める問題として定式化できる。
【0051】
本願発明では、上述したように、目次項目の見出し候補行への対応付けの尤もらしさを、当該対応付け単独で評価するだけでなく、他の目次項目の見出し候補行への対応付けとの共通度をも考慮して評価する。そこで、本願発明では、上記スコア関数Sを以下のように定義する。
S(C,D,M) = Σi u(i,mi,C,D)+ Σib(i, mi, mj, C,D) ― (定義4)
ここで、uは各目次項目の見出し候補行への対応付けの尤もらしさを該対応付け単独で評価するユニグラムスコアを示し、出力データMの要素miごとのスコアを示す。
また、bは一の目次項目と他の目次項目のペアである目次項目ペアの見出し候補行への対応付けの尤もらしさを目次項目ペアのそれぞれの見出し候補行への対応付けの共通度に基づき評価するバイグラムスコアを示し、出力データMの要素のペアmi, mjごとのスコアを示す。
【0052】
対応付けMの候補は入力長に対して指数個存在するため、全ての対応付けMを列挙してスコア関数Sの最大値を求めることは一般に、計算量的に困難である。しかし、スコア関数Sを上記のようにユニグラムスコアuを全目次項目について足し合わせた第1の和と、バイグラムスコアbを全目次項目ペアについて足し合わせた第2の和との合計として表すことで、多項式時間で計算することが可能である。例えば、Viterbiアルゴリズムを適用すれば、上記スコア関数Sを最大にする対応付けMの系列は、目次項目数|C|、本文行数|D|に対して、時間計算量O(|C||D|2)で求められることが知られている。なお、本文データDの要素、即ち見出し候補行をフィルタリングすることによって、時間計算量は更に少なくすることが可能である。
【0053】
以上のように定式化した問題に対し、本願発明の一実施形態に係る目次と見出しの自動対応付け装置300を説明する。図3は、本願発明の一実施形態に係る目次と見出しの自動対応付け装置300の機能構成を示す図である。目次と見出しの自動対応付け装置300は、入力部302と、探索部304と、出力部306とを備える。
【0054】
入力部302は、文書の目次項目単位の目次データCと、文書の行単位の本文データDとを、記憶装置から読み出して、またはネットワークを介して他のコンピュータから、入力する。探索部304は、目次データC内の全目次項目の本文データD内の見出し候補行への対応付けMの尤もらしさを示す、C、D及びMの関数であるスコア関数Sの最大値を探索する。出力部306は、スコア関数Sを最大にする前記対応付けMを出力する。
【0055】
ここで探索部304は、スコア関数Sを、定義4に関して説明したユニグラムスコアuを全目次項目について足し合わせた第1の和と、同じく定義4に関して説明したバイグラムスコアbを全目次項目ペアについて足し合わせた第2の和との合計として求める。
【0056】
ところでバイグラムスコアbは上述したように、目次が木構造を有するか否かによってその値を求めるべき目次項目のペアの組み方が異なる。そこで以下では、目次がフラット構造を有する場合を実施例1、目次が木構造を有する場合を実施例2としてそれぞれ順に説明する。
【実施例1】
【0057】
実施例1では、目次はフラット構造を有し、全ての目次項目が同一レベルにあるとする。この場合、バイグラムスコアbを求めるべき目次項目のペアは、任意の目次項目のペアであってよく、共通度の評価では共通度が高いほど高い評価となる。しかし、一の目次項目のペアとすべき他の目次項目は目次項目ごと異なることが好ましい。そこで本実施例では、目次項目のペアは隣接関係にある目次項目のペアとし、定義4を次のように書き直す。
S(C,D,M) =Σi u(i,mi,C,D) + Σib(i, mi,mi+1, C,D) ―(定義5)
以下ではまず定義5におけるユニグラムスコアuとバイグラムスコアbの設計方法を説明する。その後に、定義5で示されるスコア関数Sの最大値の探索方法を図4から図7を参照して説明する。
【0058】
既に説明したとおり、ユニグラムスコアu(i,mi,C,D)は、i番目の目次項目 (C[i])を文書のmi行目(D[mi])に対応付ける対応付けの尤もらしさを該対応付け単独で評価したスコアである。以下ではユニグラムスコアu (i,mi,C,D)を、簡略してu(i, mi)とも記載する。単独評価の第1の例は、文字列の類似度に基づく評価である。即ち、C[i]の文字列とD[mi]の文字列が互いに類似しているならば高いスコアを返すようにユニグラムスコアuを設計する。
【0059】
類似か否かの判断は、一例としてC[i]の文字列とD[mi]の文字列の編集距離や、C[i]の文字列とD[mi]の文字列に共通に含まれる隣接2文字対の数を利用してよい。前者の編集距離は、2つの文字列がどの程度異なっているかを示す数値であるため、編集距離が所定の閾値以下であれば類似と判断してよい。後者は、各文字列について隣接2文字対の集合をそれぞれ求め、2つの集合の積集合のサイズが所定の閾値以上であれば類似と判断してよい。便宜上、以下では類似であるか否かを判断する際の所定の閾値をMINSIMという。編集距離の詳細については、例えば以下の文献を参照されたい。
Gonzalo Navarro, Mathieu Raffinot, “FlexiblePattern Matching in Strings: Practical On-Line Search Algorithms for Texts andBiological Sequences”, Cambridge UniversityPress, 2007.
【0060】
単独評価の第2の例は、行の種類に基づく評価である。即ち、フォントサイズや位置等の情報から、D[mi]が見出しにみられる特徴を有すると判断できる場合、高いスコアを返すユニグラムスコアuを設計する。逆に、フォントサイズや位置等の情報から、D[mi]が柱や注釈、本文に見られる特徴を有すると判断される場合、低いスコアを返すユニグラムスコアuを設計する。なお、行の種類に基づく評価は複数考えられるため、例えば、見出しの可能性が高いと判断すればスコアを1増やし、見出しでない可能性が高いと判断すればスコアを1減らし、というように複数の判断を組み合わせて最終的なスコアを出力するよう設計してもよい。
【0061】
ここでフォントサイズの大小は、見出しや注釈以外の本文との比較によって判断されうるものである。そこで、本文のフォントサイズを文書内の全行のフォントサイズの中央値で代替し、D[mi]が該中央値より大きいフォントサイズを有する場合に見出しと判断し、D[mi]が上記中央値より小さいフォントサイズを有する場合に見出しでないと判断してよい。また、位置情報に関しては、例えば、見出しはページの最初につきやすいことから、D[mi]がページの最初の行である場合に見出しと判断してもよい。逆に、D[mi]がページの最後の行である場合には注釈である可能性が高いことから、見出しではないと判断してもよい。また、見出し行は中央寄せであったり、本文よりも左に飛び出すなど、本文と異なる傾向にあることから、例えば横書きの場合、全行の文字の始まり位置の中央値からD[mi]の文字の始まり位置を差し引いた値の絶対値が所定の閾値以上であれば見出しと判断し、そうでない場合見出しでないと判断してもよい。なおこれらは位置情報に基づく判断の一例として説明したものであり、他の位置情報に関する見出しの特徴の知識の利用を制限するものではないことに留意されたい。
【0062】
ユニグラムスコアuは、上述した文字列の類似度にのみ基づいて評価するものでもよく、または文字列の類似度に基づく評価(スコア)と行の種類に基づく評価(スコア)とを適宜重み付けをしつつ足し合わせて総合評価するのでもよい。このような総合評価を採用する場合、対応付けのいくつかについてフォントサイズや位置情報を取得できないため全部の評価(スコア)を取得できないとしても、いずれか1つの評価(スコア)を求めることができれば問題はない。また、重み付けは正解データから各スコアの重みを自動学習してもよい。
【0063】
次に、バイグラムスコアb(i, mi, mi+1, C,D)の設計方法について説明する。既に説明したとおり、バイグラムスコアb(i, mi, mi+1, C,D)は、一の目次項目(i番目の目次項目 (C[i]))と該一の目次項目に隣接する他の目次項目(i+1番目の目次項目 (C[i+1]))のペアである目次項目ペアの見出し候補行(mi行目(D[mi])とmi+1行目(D[mi+1]))への対応付けの尤もらしさを、当該隣接する目次項目ペアのそれぞれの見出し候補行への対応付けの共通度に基づき評価したスコアである。なお上述したように、実施例1における共通度の評価は、共通度が高いほど高い評価を行う評価である。また、以下ではバイグラムスコア b(i, mi, mi+1, C,D)を、単にb(i, i+1, mi,mi+1,)とも記載する。
【0064】
共通度に基づく評価の第1の例は、フォーマットの共通度に基づく評価である。即ち、C[i]を対応付けるD[mi]と、C[i+1]を対応付けるD[mi+1]のフォーマットの共通度が高い場合に高いスコアを返すようにバイグラムスコアbを設計してよい。より具体的には、フォーマットの共通度は、D[mi]とD[mi+1]のフォントサイズの共通度であってよく、D[mi]とD[mi+1]のフォントサイズが同一とみなせる場合にフォーマットの共通度が高いと判断してよい。これは、目次がフラット構造であれば見出しのフォントサイズは同じであるという知識に基づくものである。
【0065】
また、フォーマットの共通度は、D[mi]の文字列とD[mi+1]の文字列の最初の文字又は最初の文字と最後の文字の共通度であってよい。即ち、D[mi]の文字列とD[mi+1] の文字列が、共通の文字で始まる又は共通の文字で始まりかつ共通の文字で終わる場合にフォーマットの共通度が高いと判断してもよい。これは、見出しには、索引部分(例えば、“第X章”や“第X部”等)や見出しであることを示す記号(例えば、“§”や“○”等)が先頭において含まれることが多いこと、また、見出しであることを示す記号については、例えば“■リストの実現■”のように、見出しの最初と最後に含まれていることがあること、そして目次がフラット構造であればそのような書式は全見出しに共通であるという知識に基づくものである。
【0066】
また、C[i]の文字列と類似するD[mi]の文字列部分(以下、D[mi]の類似文字列という)と、C[i+1]の文字列と類似するD[mi+1]の文字列部分(以下、D[mi+1]の類似文字列という)の前後の所定数の文字の類似度が高い場合にフォーマットの共通度が高いと判断してもよい。かかる判断は、1つには、目次項目の文字列に索引部分や記号部分が含まれない場合に効果的である。なぜならばこの場合、D[mi]やD[mi+1]の類似文字列の前後の所定数の文字は、索引部分(例えば、“第X章”や“第X部”等)や記号部分(例えば、“§”や“■リストの実現■”の“■”等)を指すことになり、当該部分の類似度が高い場合にフォーマットの共通度が高いと判断することになるからである。またかかる判断は、スキャンデータ以外のデータであって位置情報を持たないデータを利用する場合に有効である。この場合、見出し候補行の文字列はフォーマット調整のための空白文字を含み、従ってD[mi]やD[mi+1]の類似文字列の前後の所定数の文字は、フォーマットに利用された空白文字を指すことになり、当該部分の類似度が高い場合にフォーマットの共通度が高いと判断することになるからである。
【0067】
共通度に基づく評価の第2の例は、目次におけるページ番号と実際のページ番号、即ち、最初のページからの通し番号との差分の共通度に基づく評価である。即ち、C[i]に含まれるページ番号とC[i]に対応付けるD[mi]を含むページの通し番号との差分と、C[i+1]に含まれるページ番号とC[i+1]を対応付けるD[mi+1] を含むページの通し番号との差分との共通度が高い場合に高いスコアを返すようにバイグラムスコアbを設計してよい。なお、差分の共通度の高さは、一例として差分が同一である場合に共通度が高いとしてよい。
【0068】
当該評価は、前書き等の本文以外のページの存在のため、目次におけるページ番号と通し番号にはずれが生じることが多いが、その差分は一定であるという知識にもとづくものである。例えば、目次に含まれる各目次項目のページ番号がそれぞれ、1、4、11、7(誤)、22、26であったとする。但し7のページ番号は読み取り誤りがあったため、間違ったページ番号であるとする。これに対し、対応する見出し候補行の通し番号がそれぞれ、2、5、12、18、23、27であったとする。するとその差分はそれぞれ、1、1、1、11、1、1であり、5つの隣接目次項目のペアのうち3つは差分の値が同一となる。このようにページ番号を差分で評価することにより、ページ番号のわずかな読み取り誤りによって評価が大きく影響を受けることはなくなる。
【0069】
上記差分の共通度に基づく評価に加えて、非隣接行制約に従うようバイグラムスコアbを設計してもよい。ここで非隣接行制約とは、隣接する目次項目ペアC[i] 、C[i+1]にそれぞれ対応付けられる見出し候補行D[mi] 、D[mi+1]は、隣接する行であってはいけないという制約である。この制約は、連続する見出しの間には必ず本文があるという知識に基づくものである。そこで、C[i] 、C[i+1]が隣接する行である場合、バイグラムスコアbの値を減じるように設計してもよい。
【0070】
バイグラムスコアbは、上述した3つのフォーマットの共通度に基づく評価(スコア)と、ページの差分の共通度に基づく評価(スコア)と、非隣接行制約に基づく評価(スコア)とのうち任意の数の評価(スコア)を、重み付けをしつつ組み合わせて評価するものであってもよい。複数の評価(スコア)を足し合わせて評価する場合、対応付けのいくつかについてフォントサイズやページ情報を取得できないため全部の評価(スコア)を取得できないとしても、いずれか1つの評価(スコア)を求めることができれば問題はない。また、重み付けは正解データから各スコアの重みを自動学習してもよい。
【0071】
次に定義5により表されるスコア関数Sの最大値の探索方法を説明する。図4は、スコア関数Sの最大値の探索するための探索対象のグラフ400を示す。グラフ400は、(目次項目数(|C|)402×本文の全行数(|D|)404)個の丸で示されるノードと、探索開始地点を示す仮想ノードであるBOS406と、探索終了地点を示す仮想ノードであるEOS410と、隣接するノード間を結ぶエッジとから構成される。なお、図4では一部のエッジのみ表示し、残りのエッジは省略していることに留意されたい。
【0072】
グラフ400の各ノードは、該ノードが属する列の列番号とノードに付けられた番号によって、何番目の目次項目を何行目に対応付けるかその対応付けを示す。例えばノード412は、1番目の列に属しノードに番号4が付けられていることから、1番目の目次項目を4行目に対応付ける対応付けを示す。従って、i番目の列に属するノードの集合は、対応付けMの要素miが示しうる全対応付けの集合とみることができる。なお、図4では、一部のノードのみ丸の中に対応付けた行番号を表示し、残りのノードについてはそのような行番号を表示していないことに留意されたい。
【0073】
また、グラフ400の各エッジは、エッジ両端のノードが示す対応付けのペア、即ち、隣接関係にある目次項目のペアの対応付けを示す。例えばエッジ414は、1番目の目次項目を3行目に対応付ける対応付けと、1番目の目次項目に隣接する2番目の目次項目を4行目に対応付ける対応付けのペアを示す。
【0074】
各ノードには該ノードが示す対応付けについてのユニグラムスコアuが付与されている。また、各エッジには該エッジが示す隣接する目次項目のペアの対応付けについてのバイグラムスコアbが付与されている。このようなグラフ400が与えられた場合に、スコア関数Sの最大値の探索は、BOS406を始点としEOS410を終点とするあらゆる経路の中で(経路408は一例)、その経路に含まれるノード及びエッジに付与されたスコアの合計を最大にする経路を選択する問題として捉えることができる。
【0075】
グラフ400は無閉路有向グラフ(DirectedAcyclic Graph: DAG)であることから、この経路探索の問題はViterbiアルゴリズムやダイクストラ法によりノード数に対して多項式時間で解くことができる。具体的には、目次項目数|C|、本文行数|D|に対して、時間計算量O(|C||D|2)で求めることができる。従って実際の計算時間は、本文データDの要素、即ち見出し候補行をフィルタリングすることによって、更に少なくすることができる。
【0076】
そこで、次に見出し候補行のフィルタリングについて説明する。第1のフィルタリングはページ番号の制約に基づくフィルタリングである。目次は見出しを順序立てて書いたものである。従って、目次項目C[i]に対応付ける見出し行の行番号miは、iが大きくなるにつれて大きくならなければならない。従って、図4に示すグラフ400においてmi > mi+1となるエッジは削除してよい。エッジの削除によって孤立するノードもまた削除してよい。
【0077】
第2のフィルタリングは、目次項目と該目次項目に対応付ける見出し候補行の文字列の類似度に基づくフィルタリングである。即ち、目次項目C[i]に対応付ける見出し候補行D[mi]を、本文データD内の全行のうち、C[i]の文字列と一定以上の類似度を有する文字列の行に限定してよい。ここで類似度の判断は、上述したユニグラムスコアuにおける類似度の判断と同様の方法を使用してよい。
【0078】
図5は、図4に示すグラフ400において、第1のフィルタリング及び第2のフィルタリングによりエッジとノードを削除した結果のグラフ500を示す。但し図5では、m1 とmの列以外は、ノードの行番号とエッジとを省略していることに留意されたい。m1の列508をみてみると、各ノードに付けられた行番号は、1、8、13、28、…と飛び飛びの値をとっている。これは、第2のフィルタリングにより1番目の目次項目C[1]に対応付ける見出し候補行が絞り込まれた結果である。また、例えばノード510をみると、当該ノードには、該ノードの行番号8よりも大きい行番号15、23をそれぞれ持つノード512、514へのエッジのみが引かれている。これは、第1のフィルタリングによりmi > mi+1となるエッジが削除された結果である。このようにフィルタリングによりエッジやノードを削除することにより、計算時間を少なくすることができる。
【0079】
ところで、本文データDはOCR処理により取得されるので、ページ抜けの可能性がある。そこで本実施例では図6および図7を参照して以下に説明する2つの方法によりページ抜けに対応する。
【0080】
ページ抜けに対応する第1の方法は、ページ抜けを示すエッジを追加する方法である。エッジによって隣接関係にある目次項目のペアの対応付けを示すためには、エッジは隣接するノード間でのみ引かなければならない。しかし、間に一定数(便宜上、以下ではこの数値をMAXSKIPという)以下のノードを挟んでエッジを引くことを許容することにより、ページ抜けに対応することが可能となる。これを図6に示すグラフを参照して説明する。
【0081】
図6は、図5に示すフィルタリング後のグラフ500において、間に1つのノードを挟んでエッジを引くことを許容してエッジを追加したものである。但し図6では、m1 の列608からm3の列610までの列を除いて、ノードの行番号とエッジとを省略していることに留意されたい。図6では、m1の列608のノードとm3の列610のノードとを結合するエッジが複数追加されている。この新たに追加された各エッジは、2番目の目次項目に対応付けるべき見出し候補行がないことを示す。従って、スコアの合計を最大とする経路がこの新たに追加したエッジを含む場合、2番目の目次項目に対応付けるべき見出し候補行を含むページが抜けていたということが示される。なお、新たに追加するエッジに対しても、第1のフィルタリングを適用可能であること、また、バイグラムスコアbを付与することに留意されたい。
【0082】
ページ抜けに対応する第2の方法は、ページ抜けを示すノードを追加する方法である。このページ抜けを示すノードは、抜けたページの行数を区別するために、全ノードの各々に対し1つ追加する。そして追加したノードには、直後のノードの行番号-0.5を付与する。これは、直後の行と直前の行の間に存在したはずだが、認識できなかった、あるいはページ抜けのために存在しなかったということを示すことになる。また、各ノードのユニグラムスコアとして、ページ抜けに対するペナルティーとして低い、あるいは負のスコアを与える。これは、ページ抜けと判断しづらくするためである。隣接見出し間のフォーマットの類似度は測ることができないので、バイグラムスコアbは0とする。
【0083】
図7は、図5に示すフィルタリング後のグラフ500において、全ノードの各々に対してノードを1つ追加したものである。なお、図7のグラフ700では、追加したノードは黒丸で示している。但し図7では、m1 とm2の列を除いて、ノードの行番号やエッジ、また追加ノードを省略していることに留意されたい。ここで例えばノード708は、12行目と13行目の間に対応する行があったがそのような行を見つけられなかったことを示す。従って、スコアの合計を最大とする経路がこの新たに追加したノード708を含む場合、1番目の目次項目に対応付けるべき見出し候補行を含むページが抜けていたということが示される。なお、新たに追加するノードを結合するエッジに対しても、第1のフィルタリングは適用可能である。
【0084】
次に図8から図12を参照して、実施例1に係る目次と見出しの自動対応付け装置300による処理の流れを説明する。なお、スコア関数Sの最大値の探索は、Viterbiアルゴリズムを利用するものとする。
【0085】
図8は、自動対応付け装置300による処理の全体の流れの一例を示すフローチャートである。図9は、図8に示すフローチャートのステップ804のDAGのノード作成処理の流れの一例を示すフローチャートである。図10は、図8に示すフローチャートのステップ806のDAGのエッジ作成処理の流れの一例を示すフローチャートである。図11は、図8に示すフローチャートのステップ808のスコア関数Sの最大値探索処理の流れの一例を示すフローチャートである。図12は、図8に示すフローチャートのステップ810のスコア関数Sの最大値を与える対応付けMの出力処理の流れの一例を示すフローチャートである。
【0086】
まず、図8を参照して目次と見出しの自動対応付けの全体処理の流れを説明する。図8に示す自動対応付けの全体処理はステップ800から開始し、自動対応付け装置300は、記憶装置またはネットワークを介して他のコンピュータから、目次項目単位の目次データCと行単位の本文データDを入力する(ステップ800、ステップ802)。続いて自動対応付け装置300は、入力した目次データCと本文データDとを使用して、図4、図5を参照して説明した、定義5により表されるスコア関数S(C,D,M)の最大値を探索するためのグラフ(以下、DAGという)のノードを作成する(ステップ804)。ノード作成処理の詳細は、図9を参照して後述する。
【0087】
続いて自動対応付け装置300は、前のステップで作成したDAGのノード情報に基づいてDAGのエッジを作成する(ステップ806)。エッジ作成処理の詳細は、図10を参照して後述する。続いて自動対応付け装置300は、作成したDAGを使用して、スコア関数S(C,D,M)の最大値を探索する(ステップ808)。探索処理の詳細は、図11を参照して後述する。最後に自動対応付け装置300は、ステップ808で求めたスコア関数S(C,D,M)の最大値を与える対応付けMを出力する。対応付けMの出力処理の詳細は、図12を参照して後述する。そして処理は終了する。
【0088】
次に図9を参照して、DAGのノード作成処理の詳細を説明する。ここでは上述した文字列の類似度に基づく第2フィルタリングを採用する。図9に示すDAGのノード作成処理はステップ900から開始し、自動対応付け装置300はまずDAGのノード情報を表す2次元配列dagを用意する。2次元配列dagの各要素への値の設定は続く処理において行うが、2次元配列dagの要素rはノードを表す抽象データ型とし、toc(r)番目の目次項目を行番号line(r)の見出し候補行に対応付ける対応付けを示すものとする。但し、関数tocと関数lineは、要素rに対しそれぞれ対応付けの目次項目の番号と見出し候補行の行番号を返す関数とする。また、目次項目のc番目に対し、dag[c]はc番目の目次項目に対応するノードの配列を表すものとする。
【0089】
2次元配列dagを用意すると続いて自動対応付け装置300は、2次元配列dag[0]に探索開始地点を示す仮想ノードBOSを追加する(ステップ902)。なお、関数tocと関数lineは仮想ノードBOSに対し共に0を返すものとする。続いて自動対応付け装置300は、ステップ904及び該当する場合はステップ906の処理を、第1のループ及び第2のループにより繰り返す。第1のループは、変数cを1から目次項目数|C|まで1つずつ増やし繰り返すループである。第2のループは、変数cの値に対し変数dを1から本文の全行数|D|まで1つずつ増やしながら繰り返すループである。
【0090】
ステップ904において、自動対応付け装置300は、c番目の目次項目C[c]の文字列とd番目の行D[d]の文字列との類似度が許容できる最小の類似度MINSIMより大きいか否かを判定する。類似度の判定は、既に説明した通り編集距離等の既存技術を利用してよい。類似度がMINSIMより大きい場合(ステップ904:YES)、自動対応付け装置300は、dag[c]にc番目の目次項目をd行目に対応付ける対応付け(c,d)を示すノードを追加する(ステップ906)。類似度がMINSIM以下の場合(ステップ904:NO)、またはステップ906の処理の後、自動対応付け装置300は、第1及び第2の全てのループを抜け出すまで一連の処理を繰り返す。
【0091】
上記繰り返し処理が終了すると、自動対応付け装置300は、2次元配列dag[|D|+1]に、探索終了地点を示す仮想ノードEOSを追加する(ステップ908)。なお、関数tocと関数lineは仮想ノードEOSに対し、それぞれ|C|+1、|D|+1を返す。そして処理は終了する。
【0092】
続いて図10を参照して、DAGのエッジ作成処理の詳細を説明する。ここでは上述したページ番号の制約に基づく第1フィルタリングを採用する。また、ページ抜けに対応すべく上述した第1の方法、即ち、ページ抜けを示すエッジを追加する方法を採用する。図10に示すDAGのエッジ作成処理はステップ1000から開始し、自動対応付け装置300は、DAGのエッジ情報を表す2次元配列leftを用意する。2次元配列leftの各要素への値の設定は続く処理において行うが、2次元配列dagの各要素nに対し、2次元配列left[n]は、要素nが示すノード(以下、単にノードnという)の列の左隣(仮想ノードBOS側)の列にあるノードであって、ノードnとの間にエッジを引くべきノードの配列を表すものとする。
【0093】
2次元配列leftを用意すると自動対応付け装置300は、ステップ1004及び該当する場合はステップ1006の処理を、入れ子になった4つのループにより繰り返す。第1のループは、変数cを1から目次項目数|C|まで1つずつ増やし繰り返すループである。第2のループは、各変数cの値に対してdag[c]が示すノードの配列から順に1のノードrを取り出して繰り返すループである。第3のループは、各ノードrに対して変数sを0から許容できる最大のページ抜け数MAXSKIPまで1つずつ増やし繰り返すループである。第4のループは、変数c、変数sのそれぞれの値に対してdag[c-s-1]が示すノードの配列から順に1のノードlを取り出して繰り返すループである。
【0094】
ステップ1002において自動対応付け装置300は、ノードrの行番号line(r)の値がノードlの行番号line(l)の値より大きいか否かを判定する。line(r)>line(l)の場合(ステップ1002:YES)、自動対応付け装置300は、left[r]にノードlを追加する(ステップ1004)。line(r)≦line(l)の場合(ステップ1002:NO)、またはステップ1006の処理の後、自動対応付け装置300は、4つのループ全てを抜け出すまで一連の処理を繰り返す。そして処理は終了する。
【0095】
続いて図11を参照して、スコア関数Sの最大値探索処理の詳細を説明する。図11に示すスコア関数Sの最大値探索処理はステップ1100から開始し、自動対応付け装置300は、生成したDAGのノード数に等しい要素をそれぞれ有する配列Sと配列Bを用意する。配列Sと配列Bのそれぞれの要素への値の設定は続く処理において行うが、S[n]は、仮想ノードBOSを始点としノードnを終点とする経路のスコアのうち最大のスコアを格納するものとする。ここで、経路のスコアとは該経路に含まれるノード及びエッジにそれぞれ付与されるユニグラムスコアu、バイグラムスコアbの合計をいう。また、B[n]は、S[n]に設定される最大のスコアを与える経路に含まれる最後のエッジの情報(ノードnに至る1つ前のノード情報)を格納するものとする。なお、配列Sの0番目の要素S[0]はnullで初期化しておく。
【0096】
既に説明したとおり、ノードrに付与されるユニグラムスコアuとは、該ノードrが示す対応付けについてのユニグラムスコアu(toc(r), line(r)) である。また、ノードrとノードlを結合するエッジに付与されるバイグラムスコアbとは、該エッジが示す隣接する目次項目のペアの対応付けについてのバイグラムスコアb(toc(r), toc(l), line(r), line(l))である。各ノード、各エッジにそれぞれ付与されるユニグラムスコアuとバイグラムスコアbは、スコア関数Sの最大値探索処理の前に予め求めておいてもよく、或いは以下のステップ1104、1110において必要に応じて求めてもよい。
【0097】
上記のように配列Sを定義すると、求めるべきスコア関数Sの最大値はS[EOS]として求められる。ところで仮想ノードBOSを始点としノードrを終点とする経路の最大スコアS[r]は、ノードrに至る1つ前のノードlについての配列Sの値S[l]と、ノードlとノードrを結合するエッジのバイグラムスコアbとを足した値の最大値(以下では、部分最大値という)に、ノードrのユニグラムスコアuを足したものとして求めることができる。従って、S[EOS]の値を求めるには、仮想ノードBOSから仮想ノードEOSへ向う順序で、DAGのノード各々について配列S及び配列Bの値を求める必要がある。なお配列Bは、詳細は図12を参照して後述するが、スコア関数Sの最大値を与える経路を特定する際に利用される。
【0098】
そこで自動対応付け装置300は、仮想ノードBOSから仮想ノードEOSへ向う順序で、DAGのノード各々について配列Sと配列Bの値を求めるべく、ステップ1102からステップ1110の処理(但しステップ1008は該当する場合のみ)を第1ループと第2ループにより繰り返す。第1のループは、変数cを1から目次項目数に1加えた(|C|+1)まで1つずつ増やし繰り返すループである。第2のループは、各変数cの値に対してdag[c]が示すノードの配列から順に1のノードrを取り出して繰り返すループである。
【0099】
ステップ1102において、自動対応付け装置300は、ノードrについて上記部分最大値を求めるための変数maxを用意しこれを−∞で初期化する。自動対応付け装置300はまた、変数maxに部分最大値の値が設定される際の最後のエッジ情報を保持しておくための変数bestを用意し、これをnullで初期化する。そして自動対応付け装置は、ノードrについて上記部分最大値を求めるために、続くステップ1104からステップ1108の処理(但しステップ1108の処理は該当する場合のみ)を第3ループにより繰り返す。第3のループは、各ノードrに対してleft[r]が示すノードの配列から順に1のノードlを取り出して繰り返すループである。
【0100】
ステップ1104において、自動対応付け装置300は、一時変数sにノードlとノードrを結合するエッジに付与されたバイグラムスコアb(toc(l),c,line(l),line(r))とS[l]とを足し合わせた値を設定する。続いて自動対応付け装置300は、一時変数sが変数maxより大きいか否かを判定する(ステップ1106)。s>maxの場合(ステップ1106:YES)、自動対応付け装置300は、変数maxに一時変数sの値を、変数bestにノードlを設定する(ステップ1108)。s≦maxの場合(ステップ1106:NO)、またはステップ1108の処理の後、自動対応付け装置300は、第3のループを抜け出すまで一連の処理を繰り返す。
【0101】
第3のループを抜け出すと、続いて自動対応付け装置300は、S[r]に変数maxとユニグラムスコアu(c, line(r))とを足し合わせた値を設定し、またB[r]に変数bestの値を設定する(ステップ1110)。続いて自動対応付け装置300は、第1のループを抜け出すまで上記一連の処理を繰り返す。そして処理は終了する。
【0102】
続いて図12を参照して、スコア関数Sの最大値を与える対応付けMの出力処理の詳細を説明する。図11に示すスコア関数Sの最大値探索処理において求められた配列Bの各要素B[n]には、上述したように、配列S[n]に設定される最大のスコアを与える経路に含まれる最後のエッジの情報(ノードnに至る1つ前のノード情報)が格納されている。また、スコア関数Sの最大値はS[EOS]により与えられる。従って、スコア関数Sの最大値を与える対応付けMは、B[EOS] を出発点としてB[BOS]までエッジ情報を順次繋ぎ合わせることにより求められる。そこで処理の開始において、自動対応付け装置300はまず、定義3として説明した対応付けMの配列を用意する(ステップ1200)。
【0103】
続いて自動対応付け装置300は、ノードを表す変数nに、探索終点を示す仮想ノードEOSを設定する(ステップ1202)。続いて自動対応付け装置300はnにB[n]を設定する(ステップ1204)。続いて自動対応付け装置300は、現在の変数nの値がBOSに等しいか否かを判定する(ステップ1206)。変数nの値がBOSに等しくない場合(ステップ1206:NO)、自動対応付け装置300はステップ1208の処理へ進み、M[toc(n)]にline(n)の値を設定する。その後自動対応付け装置300はステップ1204の処理に戻る。
【0104】
一方、変数nの値がBOSに等しい場合(ステップ1206:YES)、自動対応付け装置300はステップ1210の処理へ進み、配列Mを出力する。そして処理は終了する。
【実施例2】
【0105】
実施例2では、目次は木構造を有するものとする。図13(a)に、木構造を有する目次の例を示す。図13(a)において、目次は矩形内の数字によりその索引部分のみが示されている。また、図中矢印は目次項目の親子関係を示し、矩形下に表示された1段目の数字は目次項目番号を、2段目の数字はルートの階層レベルを0とした階層のレベルを示している。矢印の先が同一の兄弟関係にある目次項目の任意のペア(例えば、「1.1」と「1.2」)は、階層のレベルが同一でありフォーマットも共通している。一方、矢印元と矢印先という親子関係にある目次項目の任意ペア(例えば、「1」と「1.1」)は、階層のレベルが一段階異なりフォーマットも異なっている。
【0106】
このように目次の木構造において兄弟関係にある目次項目のペアにそれぞれ対応付けられる見出しのフォーマットは同一と考えられる。一方、目次の木構造において親子関係にある目次項目のペアにそれぞれ対応付けられる見出しのフォーマットは同一ではなく、例えばフォントサイズや章番号等、大小関係があると考えられる。従って目次が木構造を有する場合、バイグラムスコアbを求めるべき目次項目のペアは、目次の木構造において同一階層で隣り合う兄弟関係にある目次項目のペア(以下、兄弟関係にある隣接目次項目ペアという)であり、共通度の評価では共通度が高いほど高い評価となる。但し、共通度の評価を、共通度が低いほど高い評価を行うようにすれば、親子関係にある目次項目のペアを選択することも可能である。なお、目次の木構造のデータは、一例としてその階層レベルを示す数値を目次項目順に並べたリストとして記憶して利用してよい。
【0107】
そこで実施例2においては、兄弟関係にある隣接目次項目ペアに対しては、バイグラムスコアbとして、目次項目ペアのそれぞれの見出し候補行への対応付けの共通度が高いほど高いスコア値を返す兄弟バイグラムスコアb1を採用する。また、親子関係にある目次項目ペアに対しては、バイグラムスコアbとして、目次項目ペアのそれぞれの見出し候補行への対応付けの共通度が低いほど高いスコア値を返す親子バイグラムスコアb2を採用する。なお、バイグラムスコアbとして兄弟バイグラムスコアb1または親子バイグラムスコアb2いずれか一方のみを採用することも可能であることはいうまでもない。
【0108】
従って、実施例2において定義4は次のように書き直される。
S(C,D,M) =Σi u(i,mi,C,D)+ Σib1(i, mi, msib(i), C,D) + Σib2(i, mi, mpar(i), C,D)―(定義6)
ここで、sib(i)は、i番目の目次項目に同一階層において隣接する1つ前の兄ノードの目次項目番号を返す関数である。図13(a)の目次の例では、例えばsib (4)=3、sib (11)=5である。また、par(i)は、i番目の目次項目の親ノードの目次項目番号を返す関数である。図13(a)の目次の例では、例えばpar (4)=1、cpar (5)=0である。上記2つの関数に加えて、i番目の目次項目の最後の子ノードの目次項目番号を返す関数chd(i)を導入する。図13(a)の目次の例では、例えばchd(0)=11、chd(1)=4である。新たに導入した3つの関数の擬似コードを以下に記載しておく。
【0109】
par(n): // nより前で、階層がnより小さい最初の項目
for i in {n-1, n-2, ..., 0}:
ifL[i] < L[n]:
returni
return-1
sib(n): // nより前、par(n)よりあとで、階層がnと同じ最初の項目
for i in {n-1, n-2, ..., par(n) + 1}:
ifL[i] == L[n]:
returni
return-1
chd(n):// nより後ろ、nと同じ階層の項目より前で、階層がnより1つ大きい最後の項目
c =-1
for i in {n+1, ..., |L|}:
ifL[i] == L[n]:
returnc
elseif L[i] == L[n]+1:
c = i
return c
【0110】
また、定義6の右辺において、第1項のユニグラムスコアuについての和は、全目次項目についての和である。第2項の兄弟バイグラムスコアb1についての和は、兄弟関係にある隣接目次項目のペア全てについての和である。第3項の親子バイグラムスコアb2についての和は、親子関係にある目次項目のペア全てについての和である。各スコアの設計方法は、ユニグラムスコアuと兄弟バイグラムスコアb1については、それぞれ実施例1に関して説明したユニグラムスコアu、バイグラムスコアbと同じであるためここでは説明を省略する。そこで以下では、親子バイグラムスコアb2についてその設計方法を説明する。その後で、定義6で示されるスコア関数Sの最大値の探索方法を説明する。
【0111】
親子バイグラムスコアb2(i, mi, mpar(i), C,D)は、一の目次項目(i番目の目次項目 (C[i]))と該一の目次項目の親となる目次項目(par(i)番目の目次項目 (C[par(i)]))のペア、即ち親子関係にある目次項目ペアの見出し候補行(mi行目(D[mi])とmpar(i)行目(D[mpar(i)]))への対応付けの尤もらしさを、親子関係にある目次項目ペアのそれぞれの見出し候補行への対応付けの共通度に基づき評価したスコアである。なお上述したように、親子バイグラムスコアb2の共通度の評価は、共通度が低いほど高い評価となる。
【0112】
共通度に基づく評価の第1の例は、フォーマットの共通度に基づく評価である。即ち、子の目次項目C[i]を対応付けるD[mi]と、親の目次項目C[par(i)]を対応付けるD[mpar(i)]のフォーマットの共通度が低い場合に高いスコアを返すように親子バイグラムスコアb2を設計する。より具体的には、子の目次項目C[i]に対応するD[mi]のフォントサイズと、親の目次項目C[par(i)]に対応するD[mpar(i)]のフォントサイズとの間に大小関係がある場合に高いスコアを返すように親子バイグラムスコアb2を設計する。これは一般に親見出しの方が子見出しよりもフォントサイズが大きいとの知識に基づくものである。
【0113】
上記フォントサイズに代えてまたは加えて、子の目次項目C[i]に対応するD[mi]の索引部分が、親の目次項目C[par(i)]に対応するD[mpar(i)]の索引部分とフォーマットが異なる場合に高いスコアを返すように親子バイグラムスコアb2を設計してもよい。索引部分のフォーマットが異なる例を以下に挙げる。親の索引部分―子の索引部分とすると、第1部―第1章、第1章―1.1、1.1―1.1.1、1―(1)、(1)−(a)等があるがこれに限定されない。索引部分のフォーマットの判定は、一例として事前に索引部分のフォーマットの正規表現を用意してこれとマッチングさせ、一致したフォーマットが異なれば互いに異なるフォーマットであると判定してよい。例えば「第1章」や「1.1」に対してはそれぞれ次のような正規表現を用意できる。
/第([0-9]+)章/
/([0-9+])\.([0-9]+)/
バリエーションとして、「第二章」のように漢数字であるならば、
/第([一二三四五六七八九]+)章/
また、「1−1」のように「.」でなく「−」であるならば
/([0-9+])−([0-9]+)/
となる。他のフォーマットについても同様にして正規表現を用意できる。
【0114】
共通度に基づく評価の第2の例は、目次におけるページ番号と実際のページ番号、即ち、最初のページからの通し番号との差分の共通度に基づく評価である。但し第2の例については、共通度が高いほど高いスコアを返すように親子バイグラムスコアb2を設計する。即ち、C[i]に含まれるページ番号とC[i]に対応付けるD[mi]を含むページの通し番号との差分と、C[par(i)]に含まれるページ番号とC[par(i)]を対応付けるD[mpar(i)]を含むページの通し番号との差分との共通度が高い場合に高いスコアを返すように親子バイグラムスコアb2を設計する。なお、差分の共通度の高さは、一例として差分が同一である場合に共通度が高いとしてよい。
【0115】
親子バイグラムスコアb2は、上述した3つの共通度に基づく評価(スコア)のうち任意の数の評価(スコア)を、重み付けをしつつ組み合わせて評価するものであってもよい。複数の評価(スコア)を足し合わせて評価する場合、対応付けのいくつかについてフォントサイズやページ情報を取得できないため全部の評価(スコア)を取得できないとしても、いずれか1つの評価(スコア)を求めることができれば問題はない。また、重み付けは正解データから各スコアの重みを自動学習してもよい。
【0116】
次に定義6により表されるスコア関数Sの最大値の算出方法を説明する。定義6により表されるスコア関数Sを最大にする対応付けMの系列は、2nd order Eisnerアルゴリズムを応用して、時間計算量O(|C||D|3)で求めることができる。従って、本文データDの要素、即ち見出し候補行をフィルタリングすることによって、実際の計算時間は更に少なくすることが可能である。フィルタリングは、一例として、実施例1に関して説明した目次項目と該目次項目に対応付ける見出し候補行の文字列の類似度に基づくフィルタリングを適用可能である。以下、2nd order Eisnerアルゴリズムを応用したスコア関数Sの最大値の探索方法を説明する。
【0117】
まず、説明を容易にするため、ユニグラムスコアuとバイグラムスコアbの表記を次のように単純化する。なお、以下ではi、l、rはそれぞれ文書中の位置、即ち行番号を示す整数とする。ユニグラムスコアu(c,i)は、c番目の目次項目をi行目の見出し候補行に対応付けたときのユニグラムスコアuを表す。兄弟バググラムスコアb1(c, sib(c), i, l) は、c番目の目次項目をi行目の見出し候補行に、かつ、兄弟関係にあるsib(c)番目の目次項目をl行目の見出し候補行に対応付けたときの兄弟バググラムスコアb1を表す。親子バググラムスコアb2(c,par(c), i, l) は、c番目の目次項目をi行目の見出し候補行に、かつ、親子関係にあるpar(c)番目の目次項目をl行目の見出し候補行に対応付けたときの親子バググラムスコアb2を表す。
【0118】
次に新たに2種類の再帰関数を導入する。再帰関数comp(c, l, r)は、c番目の目次項目をルートとする目次のサブツリーが、行番号が{l,…, r-1}の文書中の範囲に対応付けられるときの最大のスコアを返す関数とする。但し、c番目の目次項目はl行目に対応するものとする。また、再帰関数incomp(c, l, r)は、c番目の目次項目の兄に該当する目次項目をルートとする目次のサブツリーを全兄の目次項目について集めた集合が、行番号が{l+1,…, r-1}の文書中の範囲に対応付けられるときの最大のスコアを返す関数とする。但し、c番目の目次項目はr行目に、また、par(c)番目の目次項目はl行目に対応するものとする。
【0119】
すると再帰関数comp(c, l, r)とincomp(c, l, r)は、次の2つの再帰式により計算できる。但し、記号maxi{G}は、Gの値がiに依存する場合において最大のGの値を示すものとする。
再帰式1:
comp(c, l, r) = maxi{ incomp(chd(c), l, i) + comp(chd(c), i, r) + u(chd(c), i) + b2(c, chd(c), l, i)}
再帰式2:
incomp(c, l, r) = maxi{incomp(sib(c), l, i) + comp(sib(c),i, r) + u(sib(c), i) + b2(par(c),sib(c), l, i) + b1(sib(c), c, i,r) } ―(再帰式2)
【0120】
再帰式1は、chd(c)番目の目次項目がi行目に対応づけられると仮定して、記号maxiを利用してcomp(c, l, r)を書き換えたものである。即ち、上記仮定において、chd(c)番目の目次項目の兄に該当する目次項目をルートとする目次のサブツリーを全兄の目次項目について集めた集合は、行番号が{l+1,…, i-1}の範囲に対応付けられる。また、chd(c)番目の目次項目をルートとする目次のサブツリーは、行番号が{i,…, r-1}の範囲に対応付けられる。なお、comp(c, l, r)の定義から、c番目の目次項目はl行目に対応付けられることに留意されたい。
【0121】
また、再帰式2は、sib(c) 番目の目次項目がi行目に対応づけられると仮定して、記号maxiを利用してincomp(c, l, r)を書き換えたものである。即ち、上記仮定において、sib(c)番目の目次項目の兄に該当する目次項目をルートとする目次のサブツリーを全兄の目次項目について集めた集合は、行番号が{l+1,…, i-1}の範囲に対応付けられる。また、sib(c)番目の目次項目をルートとする目次のサブツリーは、行番号が{i,…, r-1}の範囲に対応付けられる。なお、incomp(c,l, r)の定義から、c番目の目次項目はr行目に、また、par(c)番目の目次項目はl行目に対応対応付けられることに留意されたい。
【0122】
スコア関数Sの最大値の探索は、再帰関数comp(c, l, r)において目次のツリー全体の最大スコアを求めることに等しい。即ち、スコア関数Sの最大値は、上記再帰関数を利用して、comp(0, 0, |D|+1)として求められる。そして、スコア関数Sを最大とする目次と本文見出しの対応付けMは、comp(0, 0, |D|+1)を求める際に再帰的に呼び出されるcomp(c,l, r)の各々の計算において最大値を与えるchd(c)番目の目次項目についての対応付けと、同じく再帰的に呼び出されるincomp(c,l, r)の各々の計算において最大値を与えるsib(c) 番目の目次項目についての対応付けの集合として求められる。
【0123】
なお、本実施例では、上記対応付けの集合を対応付けMとして出力するために更に2つの再帰関数を用意する。第1の再帰関数getcomp(c,l, r)は、comp(c, l, r)の計算において最大値を与えるchd(c)番目の目次項目の対応付けをM[chd(c)]に設定した後、後述する第2の再帰関数と自分自身とを呼び出す再帰関数である。第2の再帰関数getincomp(c,l, r)は、incomp(c,l, r)の計算において最大値を与えるsib(c)番目の目次項目の対応付けをM[sib (c)]に設定した後、自分自身と第1の再帰関数とを呼び出す再帰関数である。これら2つの再帰関数を計算方法の詳細は、図18及び図19に示すフローチャートを参照して後述する。
【0124】
次に図14から19を参照して、実施例2に係る目次と見出しの自動対応付け装置300による処理の流れを説明する。図14は、自動対応付け装置300による処理の全体の流れの一例を示すフローチャートである。図15は、図14に示すフローチャートのステップ1404の見出し候補行の決定処理の流れの一例を示すフローチャートである。図16は、再帰関数comp(c, l, r)の計算処理の流れの一例を示すフローチャートである。図17は、再帰関数incomp(c, l, r)の計算処理の流れの一例を示すフローチャートである。図18は、再帰関数getcomp(c, l, r)処理の流れの一例を示すフローチャートである。図19は、再帰関数getincomp(c, l, r)処理の流れの一例を示すフローチャートである。
【0125】
まず、図14を参照して目次と見出しの自動対応付けの全体処理の流れを説明する。図14に示す自動対応付けの全体処理はステップ1400から開始し、自動対応付け装置300は、記憶装置からまたはネットワークを介して他のコンピュータから、目次項目単位の目次データCと行単位の本文データDを入力する(ステップ1400、ステップ1402)。続いて自動対応付け装置300は、入力した目次データCと本文データDとを使用して、目次項目ごと、対応付けを検討すべき見出し候補行を決定する(ステップ1404)。見出し候補行決定処理の詳細は、図15を参照して後述する。
【0126】
続いて自動対応付け装置300は、整数の3つ組みを取るハッシュテーブルcmax、imax、cbest、ibestを用意し、それぞれ−∞で初期化する(ステップ1406)。ここでcmaxは、(c, l, r)をキーとして再帰関数comp(c,l, r)の最大値を返すハッシュテーブルである。imaxは、(c, l, r)をキーとして再帰関数incomp(c, l, r)の最大値を返すハッシュテーブルである。cbestは、(c, l, r)をキーとして再帰関数comp(c,l, r)の計算において最大値を与えたchd(c)番目の目次項目の対応付け結果を返すハッシュテーブルである。ibestは、(c, l, r)をキーとして再帰関数incomp(c, l, r)の計算において最大値を与えたsib(c)番目の目次項目の対応付け結果を返すハッシュテーブルである。
【0127】
続いて自動対応付け装置300は、comp(0, 0, | D|+1)を呼び出して、スコア関数Sの最大値を求める(ステップ1408)。comp(0, 0, | D|+1)の呼び出し処理の詳細は、再帰関数comp(c, l, r)の計算処理の詳細に代えて図16を参照して後述する。続いて自動対応付け装置300は、対応付けMの配列mを用意する(ステップ1410)。続いて自動対応付け装置300は、getcomp(0,0,|D|+1)を呼び出してスコア関数Sを最大にする対応付けを配列mに設定する(ステップ1412)。getcomp(0,0,|D|+1)の呼び出し処理の詳細は、再帰関数getcomp (c, l, r)の計算処理の詳細に代えて図18を参照して後述する。最後に自動対応付け装置300は、配列mを求めるべき目次と見出しの対応付けとして出力する(ステップ1414)。そして処理は終了する。
【0128】
次に図15を参照して、見出し候補行の決定処理の詳細を説明する。ここでは実施例1に関して説明した文字列の類似度に基づく第2フィルタリングを利用して見出し候補行の絞り込みを行う。図15に示す見出し候補決定処理はステップ1500から開始し、自動対応付け装置300はまず2次元配列candsを用意する。2次元配列candsの各要素への値の設定は続く処理において行うが、目次項目のc番目に対しcands[c]は、c番目の目次項目との対応付けを検討すべき見出し候補行の配列を表すものとする。
【0129】
2次元配列candsを用意すると続いて自動対応付け装置300は、2次元配列cands [0]に0を設定する(ステップ1502)。続いて自動対応付け装置300は、ステップ1504及び該当する場合はステップ1506の処理を、第1のループ及び第2のループにより繰り返す。第1のループは、変数cを1から目次項目数|C|まで1つずつ増やし繰り返すループである。第2のループは、変数cの値に対し変数dを1から本文の全行数|D|まで1つずつ増やしながら繰り返すループである。
【0130】
ステップ1504において、自動対応付け装置300は、c番目の目次項目C[c]の文字列とd番目の行D[d]の文字列との類似度が許容できる最小の類似度MINSIMより大きいか否かを判定する。類似度の判定は、既に説明した通り、編集距離等の既存技術を利用してよい。類似度がMINSIMより大きい場合(ステップ1504:YES)、自動対応付け装置300は、cands[c]に見出し候補行としてd番目の行を追加する(ステップ1506)。類似度がMINSIM以下の場合(ステップ1504:NO)、またはステップ1506の処理の後、自動対応付け装置300は、第1及び第2の全てのループを抜け出すまで上記一連の処理を繰り返す。そして処理は終了する。
【0131】
次に図16を参照して、再帰関数comp(c, l, r)の計算処理の詳細を説明する。図16に示す再帰関数comp(c, l, r)の計算処理はステップ1600から開始し、自動対応付け装置300は、cmax(c, l, r)が−∞に等しいか否かを判定する。これはcompが再帰関数であることから、同じ引数について対してcompが既に計算済みであるならばその結果を再利用するためである。cmax(c, l, r)≠-∞である場合(ステップ1600:NO)、即ち、現在の引数に対しcompの値が既に算出されている場合、自動対応付け装置300はステップ1624へ進み、変数maxにcmax[c, l, r]の値を設定する。一方、cmax(c, l, r)の値が-∞である場合(ステップ1600:YES)、即ち、現在の引数に対して未だcompの値が算出されていない場合、自動対応付け装置300はchd(c)の値を変数c’に設定する(ステップ1602)。
【0132】
続いて自動対応付け装置300は変数c’の値がnullであるか否かを判定する(ステップ1604)。変数c’の値がnullの場合(ステップ1604:YES)、即ち、c番目の目次項目に対して子の関係にある目次項目が存在しない場合、自動対応付け装置300はステップ1622へ進み、変数maxに0を設定する。一方、変数c’の値がnullでない場合(ステップ1604:NO)、自動対応付け装置300は、上述した再帰式1の右辺の最大値を求めるための変数maxを用意し、これを−∞で初期化する(ステップ1606)。自動対応付け装置300はまた、上記右辺の最大値を与えるchd(c)番目の目次項目の対応付けを保持しておくための変数bestを用意し、これを0で初期化する。
【0133】
続いて自動対応付け装置300は、再帰式1の右辺の最大値を求めるために、続くステップ1608からステップ1614までの処理をループにより繰り返す。ここでループは、c’番目の目次項目についての見出し候補行の配列から順に1の見出し候補行(i番目の行)を取り出して繰り返すループである。ステップ1608において、自動対応付け装置300は、l < i < r であるか否かを判定する。これは、c’番目の目次項目に対応する見出し候補行(i番目の行)が、行番号が{l+1, …, r-1}の範囲にあることを確認するためである。l < i < rである場合(ステップ1608:YES)、自動対応付け装置300は変数sを用意して、これにincomp(c’, l, i) + comp(c’, i,r) + u(c’, i) + b2(c, c’, l, i)の値を設定する(ステップ1610)。なお、再帰関数incompの計算処理の詳細は図17を参照して後述する。
【0134】
続いて自動対応付け装置300は、max< sであるか否かを判定する(ステップ1612)。max< sである場合(ステップ1612:YES)、自動対応付け装置300は、変数maxに変数sの値を、また、変数bestに変数iの値を設定する(ステップ1614)。ステップ1608においてl < i < r でない場合、また、ステップ1612においてmax < sでない場合、またはステップ1614の後、自動対応付け装置300は上記ループを抜け出すまで一連の処理を繰り返す。
【0135】
ループを抜けると続いて自動対応付け装置300は、変数maxの値をハッシュテーブルcmax[c,l, r]の値として、また、変数bestの値をハッシュテーブルcbest[c,l, r]の値として設定する(ステップ1616、ステップ1618)。ステップ1622、ステップ1624、またはステップ1618から、自動対応付け装置300はステップ1620へ進み、変数maxの値を返す。そして処理は終了する。
【0136】
次に図17を参照して、再帰関数incomp(c, l, r)の計算処理の詳細を説明する。図17に示す再帰関数incomp(c, l, r)の計算処理はステップ1700から開始し、自動対応付け装置300は、imax(c, l, r)が−∞に等しいか否かを判定する。これはincompが再帰関数であることから、同じ引数に対してincompが既に計算済みであるならばその結果を再利用するためである。imax(c, l, r)≠-∞である場合(ステップ1700:NO)、即ち、現在の引数に対しincompの値が既に算出されている場合、自動対応付け装置300はステップ1724へ進み、変数maxにimax[c, l, r]の値を設定する。一方、imax(c, l, r)の値が-∞である場合(ステップ1600:YES)、即ち、現在の引数に対して未だincompの値が算出されていない場合、自動対応付け装置300はsib(c)の値を変数c’に設定する(ステップ1702)。
【0137】
続いて自動対応付け装置300は変数c’の値がnullであるか否かを判定する(ステップ1704)。変数c’の値がnullの場合(ステップ1704:YES)、即ち、c番目の目次項目に対して兄の関係にある目次項目が存在しない場合、自動対応付け装置300はステップ1722へ進み、変数maxに0を設定する。一方、変数c’の値がnullでない場合(ステップ1704:NO)、自動対応付け装置300は、上述した再帰式2の右辺の最大値を求めるための変数maxを用意し、これを−∞で初期化する(ステップ1706)。自動対応付け装置300はまた、上記右辺の最大値を与えるsib(c)番目の目次項目の対応付けを保持しておくための変数bestを用意し、これを0で初期化する。
【0138】
続いて自動対応付け装置300は、再帰式2の右辺の最大値を求めるために、続くステップ1708からステップ1714までの処理をループにより繰り返す。ここでループは、c’番目の目次項目についての見出し候補行の配列から順に1の見出し候補行(i番目の行)を取り出して繰り返すループである。ステップ1708において、自動対応付け装置300は、l < i < r であるか否かを判定する。これは、c’番目の目次項目に対応する見出し候補行(i番目の行)が、行番号が{l+1, …, r-1}の範囲にあることを確認するためである。l < i < rである場合(ステップ1708:YES)、自動対応付け装置300は変数sを用意して、これにincomp(c’, l, i) + comp(c’, i,r) + u(c’, i) + b2(par(c’), c’, l, i) + b1(c’ c, i, r)の値を設定する(ステップ1710)。
【0139】
続いて自動対応付け装置300は、max< sであるか否かを判定する(ステップ1712)。max< sである場合(ステップ1712:YES)、自動対応付け装置300は、変数maxに変数sの値を、また、変数bestに変数iの値を設定する(ステップ1714)。ステップ1708においてl < i < r でない場合、また、ステップ1612においてmax < sでない場合、またはステップ1614の後、自動対応付け装置300は上記ループを抜け出すまで一連の処理を繰り返す。
【0140】
ループを抜けると続いて自動対応付け装置300は、変数maxの値をハッシュ関数imax[c, l, r]の値として、また、変数bestの値をハッシュ関数ibest[c, l, r]の値として設定する(ステップ1716、ステップ1718)。ステップ1722、ステップ1724、またはステップ1718から、自動対応付け装置300はステップ1720へ進み、変数maxの値を返す。そして処理は終了する。
【0141】
次に、再帰関数getcomp、getincompの計算処理の流れを説明する前に、図13(b)を参照して対応付けMの配列の復元順序を説明する。なお、図13(b)に示す復元順序は、13(a)に示す目次を例にしており、矩形で示す目次項目の下の数字は復元順序を示している。数字を見ると分かるように、復元順序は、階層レベルの低い順、同階層であるならば右優先である。
【0142】
次に図18を参照して、再帰関数getcomp(c, l, r)の計算処理の詳細を説明する。図18に示す再帰関数getcomp(c, l, r)の計算処理はステップ1800から開始し、自動対応付け装置300は、chd(c)の値を変数c’に設定し、変数c’の値がnullであるか否かを判定する(ステップ1802)。変数c’の値がnullの場合(ステップ1804:YES)、即ち、c番目の目次項目に対して子の関係にある目次項目が存在しない場合処理は終了する。
【0143】
一方、変数c’の値がnullでない場合(ステップ1802:NO)、自動対応付け装置300は、ハッシュ関数cbest[c, l, r]の値を変数iに設定する(ステップ1804)。続いて自動対応付け装置300は、変数iの値を対応付けMの配列要素m[c’]に設定する(ステップ1806)。続いて、自動対応付け装置300は、再帰関数getincomp(c’, l, i)を呼び出す。再帰関数getincompの計算処理の詳細は図19を参照して後述する。続いて自動対応付け装置300は、getcomp(c’, i, r)を呼び出す。そして処理は終了する。
【0144】
次に図19を参照して、再帰関数getincomp(c, l, r)の計算処理の詳細を説明する。図18に示す再帰関数getincomp(c, l, r)の計算処理はステップ1900から開始し、自動対応付け装置300は、sib(c)の値を変数c’に設定し、変数c’の値がnullであるか否かを判定する(ステップ1902)。変数c’の値がnullの場合(ステップ1904:YES)、即ち、c番目の目次項目に対して兄の関係にある目次項目が存在しない場合処理は終了する。
【0145】
一方、変数c’の値がnullでない場合(ステップ1902:NO)、自動対応付け装置300は、ハッシュ関数ibest[c, l, r]の値を変数iに設定する(ステップ1904)。続いて自動対応付け装置300は、変数iの値を対応付けMの配列要素m[c’]に設定する(ステップ1906)。続いて、自動対応付け装置300は、再帰関数getincomp(c’, l, i)を呼び出す。続いて自動対応付け装置300は、getcomp(c’, i, r)を呼び出す。そして処理は終了する。
【0146】
図20は、本実施形態に係るコンピュータ50のハードウェア構成の一例を示した図である。コンピュータ50は、バス2に接続されたメインCPU(中央処理装置)1とメインメモリ4を含んでいる。ハードディスク装置13、30、及びCD−ROM装置26、29、フレキシブル・ディスク装置20、MO装置28、DVD装置31のようなリムーバブル・ストレージ(記録メディアを交換可能な外部記憶システム)がフレキシブル・ディスクコントローラ19、IDEコントローラ25、SCSIコントローラ27などを経由してバス2へ接続されている。
【0147】
フレキシブル・ディスク、MO、CD−ROM、DVD−ROMのような記憶メディアが、リムーバブル・ストレージに挿入される。これらの記憶メディアやハードディスク装置13、30、ROM14には、オペレーティング・システムと協働してCPU1に命令を与え、本願発明を実施するためのコンピュータ・プログラムのコードを記録することができる。即ち、上記説明した数々の記憶装置には、コンピュータ50にインストールされ、コンピュータ50を自動対応付け装置300として機能させる目次および見出しの自動対応付けプログラムや目次データC、本文データD等のデータ、更には、自動対応付けの結果である出力データMを記録することができる。
【0148】
上記自動対応付けプログラムは、入力モジュールと、探索モジュールと、出力モジュールとを含む。これらモジュールは、CPU1に働きかけて、コンピュータ50を、入力部302、探索部304と、出力部306としてそれぞれ機能させる。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【0149】
コンピュータ50は、キーボード/マウス・コントローラ5を経由して、キーボード6やマウス7のような入力デバイスからの入力を受ける。コンピュータ50は、オーディオコントローラ21を経由して、マイク24からの入力を受け、またスピーカー23から音声を出力する。コンピュータ50は、視覚データをユーザに提示するための表示装置11に、グラフィックスコントローラ10を経由して接続される。コンピュータ50は、ネットワーク・アダプタ18(イーサネット(登録商標)・カードやトークンリング・カード)等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。
【0150】
以上の説明により、本実施形態に係るコンピュータ50は、通常のパーソナルコンピュータ、ワークステーション、メインフレームなどの情報処理装置、又は、これらの組み合わせによって実現されることが容易に理解されるであろう。なお、上記説明した構成要素は例示であり、そのすべての構成要素が本願発明の必須構成要素となるわけではない。
【0151】
以上、実施形態を用いて本願発明の説明をしたが、本願発明の技術範囲は上記実施形態に記載の範囲には限定されない。上記の実施形態に、種々の変更又は改良を加えることが可能であることが当業者に明らかである。従って、そのような変更又は改良を加えた形態も当然に本願発明の技術的範囲に含まれる。
【0152】
なお、特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り任意の順序で実現しうることに留意すべきである。また、前の処理の出力を後の処理で用いる場合でも、前の処理と後の処理の間に他の処理が入ることは可能である場合があること、又は間に他の処理が入るように記載されていても前の処理を後の処理の直前に行うよう変更することも可能である場合があることも留意されたい。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」、「続いて、」等を用いて説明したとしても、この順で実施することが必須であることを必ずしも意味するとは限らない。

【特許請求の範囲】
【請求項1】
コンピュータの演算処理により、文書の目次内の目次項目を前記文書の本文中の見出し行に対応付ける、目次と見出しの対応付け方法であって、
前記コンピュータが、前記文書の目次項目単位の目次データCを受け取るステップと、
前記コンピュータが、前記文書の行単位の本文データDを受け取るステップと、
前記コンピュータが、前記目次データC内の全目次項目の前記本文データD内の見出し候補としての行である見出し候補行への対応付けMの尤もらしさを示す、C、D及びMの関数であるスコア関数Sの最大値を探索するステップと、
前記コンピュータが、前記スコア関数Sを最大にする前記対応付けMを出力するステップとを含み、
前記スコア関数Sは、各目次項目の見出し候補行への対応付けの尤もらしさを該対応付け単独で評価するユニグラムスコアuを全目次項目について足し合わせた第1の和と、一の目次項目と他の目次項目のペアである目次項目ペアの見出し候補行への対応付けの尤もらしさを前記目次項目ペアのそれぞれの見出し候補行への対応付けの共通度に基づき評価するバイグラムスコアbを全目次項目ペアについて足し合わせた第2の和との合計として求められる、
目次と見出しの対応付け方法。
【請求項2】
前記目次はフラット構造を有し、前記ユニグラムスコアuは、前記目次項目の文字列と、該目次項目に対応付ける前記見出し候補行の文字列との類似度に基づき求められ、前記バイグラムスコアbは、前記目次項目ペアのそれぞれに対応付ける見出し候補行のフォーマットの共通度に基づき求められる、請求項1に記載の目次と見出しの対応付け方法。
【請求項3】
前記バイグラムスコアbは更に、前記目次項目ペアのそれぞれの対応付けにおける、目次項目に含まれるページ番号と該目次項目に対応付ける見出し候補行が含まれるページの通し番号との差の共通度に基づいて求められる、請求項2に記載の目次と見出しの対応付け方法。
【請求項4】
前記一の目次項目と前記他の目次項目とは隣接関係にある、請求項1に記載の目次と見出しの対応付け方法。
【請求項5】
前記目次は木構造を有し、前記一の目次項目と隣接関係にある前記他の目次項目を、前記目次の木構造において前記一の目次項目と同一階層において隣り合う兄弟関係にある目次項目に限定する、請求項4に記載の目次と見出しの対応付け方法。
【請求項6】
前記ユニグラムスコアuは、前記目次項目の文字列と、該目次項目に対応付ける前記見出し候補行の文字列との類似度に基づき求められ、前記バイグラムスコアbは、前記目次項目ペアのそれぞれに対応付ける見出し候補行のフォーマットの共通度に基づき求められる、請求項5に記載の目次と見出しの対応付け方法。
【請求項7】
前記フォーマットの共通度は、前記目次項目ペアのそれぞれに対応付ける見出し候補行のフォントサイズの共通度と、前記目次項目ペアのそれぞれに対応付ける見出し候補行の文字列の最初の文字又は最初の文字と最後の文字との共通度と、前記目次項目ペアにそれぞれ対応付ける見出し候補行の文字列のうち、対応付ける目次項目の文字列に類似する部分である類似文字列の前後の所定数の文字の共通度のうちの少なくとも1つの共通度である、請求項6に記載の目次と見出しの対応付け方法。
【請求項8】
前記ユニグラムスコアuは、前記目次項目の文字列と、該目次項目に対応付ける前記見出し候補行の文字列の類似度に基づき求められ、前記バイグラムスコアbは更に、前記目次項目ペアのそれぞれの対応付けにおける、目次項目に含まれるページ番号と該目次項目に対応付ける見出し候補行が含まれるページの通し番号との差の共通度に基づいて求められる、請求項6に記載の目次と見出しの対応付け方法。
【請求項9】
前記バイグラムスコアbは、前記一の目次項目に対応付ける一の見出し候補行と、前記他の目次項目に対応付ける他の見出し候補行とが隣接している場合に値を減じられる、請求項8に記載の目次と見出しの対応付け方法。
【請求項10】
前記一の目次項目に隣接する目次項目に、前記一の目次項目に所定の数以下の目次項目を挟んで隣接する目次項目を含める、請求項4に記載の目次と見出しの対応付け方法。
【請求項11】
前記スコア関数Sの最大値は、Viterbiアルゴリズムに従い探索される、請求項4に記載の目次と見出しの対応付け方法。
【請求項12】
前記スコア関数Sの最大値は、ダイクストラ法に従い探索される、請求項4に記載の目次と見出しの対応付け方法。
【請求項13】
前記スコア関数Sの最大値の探索において、前記目次データCに含まれる各目次項目にそれぞれ対応付ける前記見出し候補行を、本文データD内の全行のうち、前記目次項目の文字列と一定以上の類似度を有する文字列の行に限定する、請求項4に記載の目次と見出しの対応付け方法。
【請求項14】
前記目次は木構造を有し、前記木構造において同一階層において隣り合う兄弟関係にある前記目次項目ペアに対しては、前記バイグラムスコアbとして、前記目次項目ペアのそれぞれに対応付ける見出し候補行のフォーマットの共通度が高いほど高いスコア値を返す兄弟バイグラムスコアb1を採用し、前記木構造において親子関係にある前記目次項目ペアに対しては、前記バイグラムスコアbとして、前記目次項目ペアのそれぞれに対応付ける見出し候補行のフォーマットの共通度が低いほど高いスコア値を返す親子バイグラムスコアb2を採用する、請求項1に記載の目次と見出しの対応付け方法。
【請求項15】
前記親子バイグラムスコアb2は、親である目次項目に対応付ける見出し候補行のフォントサイズと、子である目次項目に対応付ける見出し候補行のフォントサイズの間に大小関係がある場合に高いスコア値を返す、請求項14に記載の目次と見出しの対応付け方法。
【請求項16】
前記親子バイグラムスコアb2は、親である目次項目に対応付ける見出し候補行の索引部分と子である目次項目に対応付ける見出し候補行の索引部分のフォーマットが異なる場合に高いスコア値を返す、請求項14に記載の目次と見出しの対応付け方法。
【請求項17】
前記スコア関数Sの最大値は、2nd order Eisnerを応用したアルゴリズムに従い探索される、請求項14に記載の目次と見出しの対応付け方法。
【請求項18】
前記スコア関数Sの最大値の探索において、前記目次データCに含まれる各目次項目にそれぞれ対応付ける前記見出し候補行を、本文データD内の全行のうち、前記目次項目の文字列と一定以上の類似度を有する文字列を含む行に限定する、請求項17に記載の目次と見出しの対応付け方法。
【請求項19】
請求項1乃至18に記載の方法をコンピュータに実行させる、目次と見出しの対応付けプログラム。
【請求項20】
文書の目次内の目次項目を前記文書の本文中の見出し行に対応付ける、目次と見出しの対応付け装置であって、
前記文書の目次項目単位の目次データCと、前記文書の行単位の本文データDとを入力する入力部と、
前記目次データC内の全目次項目の前記本文データD内の見出し候補としての行である見出し候補行への対応付けMの尤もらしさを示す、C、D及びMの関数であるスコア関数Sの最大値を探索する探索部と、
前記スコア関数Sを最大にする前記対応付けMを出力する出力部とを含み、
前記探索部は、前記スコア関数Sを、各目次項目の見出し候補行への対応付けの尤もらしさを該対応付け単独で評価するユニグラムスコアuを全目次項目について足し合わせた第1の和と、一の目次項目と他の目次項目のペアである目次項目ペアの見出し候補行への対応付けの尤もらしさを前記目次項目ペアのそれぞれの見出し候補行への対応付けの共通度に基づき評価するバイグラムスコアbを全目次項目ペアについて足し合わせた第2の和との合計として求める、
目次と見出しの対応付け装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2012−160000(P2012−160000A)
【公開日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願番号】特願2011−18978(P2011−18978)
【出願日】平成23年1月31日(2011.1.31)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】