以下に添付図面を参照して、この発明にかかる文書構造化処理装置、及び方法を適用した文書処理装置の最良な実施の形態を詳細に説明する。
(第1の実施の形態)
図1に示すように、文書処理装置100は、見出し文字列記憶部101と、文書モデル記憶部102と、汎用構造定義記憶部103と、用途別構造定義記憶部104と、中間構造化文書データ記憶部105と、マッピング条件記憶部116と、文書解析部106と、行単位抽出部107と、特徴抽出部108と、スコア算出部109と、判断部110と、格納部111と、中間生成部112と、用途別構造化文書生成部113と、修正部114と、利用者操作受付部115と、行属性特定部117と、表示部118と、を備える。
本実施の形態にかかる文書処理装置100は、文書データに用途別の論理構造を付与して、用途別構造化文書データを生成する。用途別構造化文書データとは、社内規定やプレゼンテーション用などの利用用途に応じて適切な論理構造(例えばXMLのタグ)が付与された文書データとする。そして、利用用途に応じた論理構造を用途別論理構造とする。つまり、文書処理装置100は、用途別構造化文書データとして、社内規定やプレゼンテーション用の用途別論理構造が付与された文書データを生成する。
本実施の形態にかかる文書処理装置100においては、入力文書データに対して汎用的な論理構造を割り当てることで、用途別構造化文書データを生成する過程での中間結果となる中間構造化文書データを生成する。そして、生成した中間構造化文書データの汎用的な論理構造を、利用者の利用用途に適した論理構造に変換することで、用途別構造化文書データを生成する。
本実施の形態にかかる汎用的な論理構造とは、入力文書データを構造化するために用いられる論理構造とする。この汎用的な論理構造は、文書データに含まれる見出し文字列に対を用いて階層化構造を生成するための論理構造を含むものとする。また、汎用的な論理構造とは、階層化構造を生成する論理構造以外に、文書データに含まれる文字列や段落に対して割り当てる論理構造も含まれる。そして、この汎用的な論理構造は、用途別構造化文書データの論理構造に変換する元となる。このため、汎用的な論理構造には、用途別構造化文書データの論理構造に変換するために必要な情報が欠落なく含まれているものとする。
本実施の形態においては、入力文書データは、プレーンテキストや、文書作成アプリケーションで作成された文書データ等とする。中間構造化文書データは、文書の利用用途に依存しない汎用的な論理構造が割り当てられた文書データとする。また、文書データの利用用途の例としては、社内規程やプレゼンテーション用などが考えられる。つまり、利用用途に依存しないとは、複数種類の用途別構造化文書データのどの論理構造にも変換可能であることを示している。
見出し文字列記憶部101は、複数の文書データから抽出した、見出しの候補となる文字列を記憶する。また、見出し文字列記憶部101は、利用者が定義した見出しの候補となる文字列も記憶する。以下、見出しの候補となる文字列を見出し候補文字列とする。
図2に示すように、見出し文字列記憶部101は、‘,’を区切りとして、複数の見出し候補文字列を記憶する。なお、当該見出し候補文字列は、後述するスコア算出部109による、文書データの構造の解析に用いる。
文書モデル記憶部102は、今までに入力された文書データから抽出された行毎に、詳細な情報を記憶する。記憶する情報の例としては、行内の文字数、空白を除く文字数、インデントの数、島数、見出し記号の有無、行内空白の有無、見出し候補文字列の有無、見出し候補文字列、特定キーワードの有無、前の行の論理構造名、後ろの行の論理構造名、前の行の構造深さ、該当行の構造深さ、該当行の論理構造名を、行を識別するための属性情報として記憶する。図3に示す例では、行毎にこれら属性情報が順に格納されている。
本実施の形態に係る島とは、空白で区切られた文字列とする。そして、島数とは、空白で区切られた文字列の数とする。
見出し記号の有無、行内空白の有無、見出し候補文字列の有無、特定キーワードの有無は、“true”又は“false”として保持する。
見出し候補文字列は、各行から抽出された見出しの候補となる文字列とする。図3に示す例においては、5行目の“(開発部)”が該当する。
論理構造名とは、予め定義された各行の論理構造の名称とする。本実施の形態では、見出し候補文字列(hd)、箇条書き候補(item)、空行(ws)、境界行(b)、パラグラフ(para)の5種類が定義されているものとする。
そして、本実施の形態にかかる文書モデルでは、各行毎に、前の行の論理構造名と、後ろの行の論理構造名と、当行の論理構造名と、を保持している。
行の構造深さとは、文書データのルート深さを‘0’とした場合の相対値とする。文書モデルにおいては、前の行の構造深さと、該当行の構造深さとを保持する。
また、文書モデル記憶部102に記憶される属性情報は、上述した情報に限るものではなく、例えば、入力文書データのページ情報、フォント情報、ファイル情報、また外部から与えられた文書管理情報(文書ジャンルや対応部署名など)を付加しても良い。
汎用構造定義記憶部103は、入力文書データに対して、汎用的な論理構造と、当該汎用的な論理構造を割り当てるための定義と、を記憶する。当該定義を用いることで、入力文書データの行毎に、当該行に含まれている文字列に対して汎用的な論理構造を付与し、中間結果となる中間構造化文書データを生成することができる。
図4に示すように、汎用構造定義記憶部103では、行毎に、汎用的な論理構造と、汎用的な論理構造を割り当てるための定義と、が記憶している。なお、汎用的な論理構造を割り当てるための定義の記載手法は、図4に示した手法に限らず、さまざまな定義の記載手法を用いて良い。
用途別構造定義記憶部104は、汎用的な論理構造を、用途別構造化文書データの用途に適した用途別論理構造に変換するための対応関係の定義を記憶する。図5に示すように、用途別構造定義記憶部104は、用途別構造化文書種別と、汎用構造(汎用的な論理構造)と、用途別文書構造(利用用途に適した用途別論理構造)と、設定条件とを対応付けている。
用途別構造化文書種別は、用途別論理構造の種別とする。汎用構造には、汎用的な論理構造で用いられているタグが設定されている。用途別文書構造には、用途別構造化文書データの利用用途に適した用途別論理構造で用いられるタグが設定されている。そして、設定条件は、汎用構造のタグを、用途別文書構造のタグに変換するための条件が設定されている。
用途別構造定義記憶部104が上述した情報を保持することで、中間構造化文書データに付与されたタグを、用途別構造化文書データの種別に応じて適切なタグに変換することが可能になる。
中間構造化文書データ記憶部105は、汎用的な論理構造が割り当てられた中間構造化文書データを記憶する。
マッピング条件記憶部116は、中間構造化文書データから変換する場合に、用途別構造化文書データの種別を特定するための条件を記憶する。
文書解析部106は、入力文書データに対して解析処理を行う。本実施の形態にかかる文書解析部106は、解析処理を行う際に、入力文書データの書誌情報として、テキスト情報、フォーマット依存で利用されているフォントやページ番号、スタイル情報などのテキスト属性、の組み合わせを抽出する。
ところで、本実施の形態においては、図6に示す入力文書データに対して処理を行う場合について説明する。文書解析部106は、図6に示す入力文書データから、テキスト属性として"プレーンテキスト"、エンコーディング情報、"ページ番号1/1"、さらにファイルシステムから得られる"ファイル名"、"タイムスタンプ"等の情報を抽出する。これらの情報は、必要に応じて構造化要素や属性として、中間構造化文書データ、用途別構造化文書データに埋め込まれる。
行単位抽出部107は、入力文書データを行単位で抽出する。本実施の形態にかかる行とは、改行コードにより区切られた文字列とする。なお、本実施の形態は、行を改行コードにより区切られた文字列に制限するものではなく、例えば、入力文書データを表示した場合の1行などでもよい。
特徴抽出部108は、行単位抽出部107により抽出された単位毎に、当該行に含まれる見出し候補文字列などの、文字列の特徴を抽出する。この抽出される単位毎の特徴としては、例えば、冒頭や行全体に出現する文字種の特徴や、特定記号の有無、各島のサイズや数、括弧対応の有無、文字列長などとする。
また、特徴抽出部108は、文書モデルを生成するために、各行から属性情報を抽出する。抽出する属性情報は、行内に含まれる文字数、空白を除いた文字数、インデントされている場合の空白の数、島の数、行の冒頭付近に見出し記号が出現しているか否か、行の冒頭付近に数値が出現しているか否か、見出し候補文字列の有無、見出し候補文字列、特定のキーワードが含まれているか否かとする。
例えば、特徴抽出部108は、図6に示す入力文書データから、図7に示す行毎の属性情報を抽出する。
図7に示す例の各行は、それぞれ図6の入力文書データの行に対応している。例えば、特徴抽出部108は、入力文書データの8行目の『(1)監査の目的について』から、解析結果として属性情報『12,12,0,1,false,false,true,(1),false』を抽出する。この属性情報のそれぞれのパラメータにおいて、最初の“12”は行内の文字数を、次の“12”は空白を除く文字数を、次の“0”はインデントの数を、次の“1”は島数を、次の“false”は見出し記号の有無の結果を、次の“false”は行内空白の有無の結果を、次の“true”は見出し候補文字列の有無の結果を、次の“(1)”は見出し候補文字列を、最後の“false”は特定キーワードの有無の結果を示している。そして、各行の属性情報では、これらパラメータが、それぞれ","によって連結され、枚挙されているものとする。
なお、見出し候補文字列は、見出し文字列記憶部101に格納されている見出し文字列と一致した文字列を抽出しても良いし、既存の処理手順に従い見出しと考えられる文字列を抽出しても良い。
行属性特定部117は、特徴抽出部108が抽出した各行の特徴、及び入力文書データ全体における行特徴の出現分布を学習し、文書モデルとして格納する各行の属性情報を生成する。
また、行属性特定部117は、見出し文字列記憶部101に記憶された見出し文字列及び文書モデル記憶部102に記憶された文書モデルの各属性情報を適用した場合の暫定的な文書構造を生成する。まず、行属性特定部117は、入力文書データから抽出された見出し候補文字列及び文書モデル記憶部102に記憶された文書モデルの各属性情報による構造が表された初期論理構造を生成する。換言すれば、行属性特定部117は、構造生成部としての役割を果たす。
初期論理構造とは、既存の学習手法を適用し、現在の入力文書に対して暫定的に付与する論理構造を示す構造化パターンとする。以降、行属性特定部117は、見出し候補文字列及び文書モデル記憶部102に記憶された文書モデルの各属性情報で表された、上記の初期論理構造とは異なる初期論理構造に従った初期論理構造を複数生成する。
なお、文書モデル記憶部102に文書モデルが記憶されていない場合には、トレーニングサンプルとして予め読み込まれた文書モデルを利用し、テストサンプルとして入力された入力文書データを処理することとする。
そして、スコア算出部109が、初期論理構造毎に、当該初期論理構造による中間構造化文書データを構成する特徴(例えば、見出し候補文字列)間の関連度を示すスコアを算出する。
判断部110は、複数の初期論理構造から、前記汎用的な論理構造の付与に用いる初期論理構造を判断する。本実施の形態にかかる判断部110は、スコア算出部109により算出されたスコアにより、入力文書データに対して適用する初期論理構造を判断する。このような処理を行うことで、生成された初期論理構造から、不適切な初期論理構造を棄却して、構造化の手がかりとなる見出し候補文字列や箇条書き候補の致命的な誤判定結果を削除する。これにより、初期論理構造のうち、相対的に精度の良い論理構造を入力文書データに対して付与することが可能となる。
まず、行属性特定部117は、特徴抽出部108により抽出された見出し候補文字列群から、階層構造を備える初期論理構造(Hx)を生成する。図8に示すように、行属性特定部117は、各階層に適用する見出し候補文字列群に応じて、複数の初期論理構造(Hx)を生成する。そして、行属性特定部117が生成する初期論理構造(Hx)は、階層ごとの見出し候補文字列の集合(hx)で構成される。
図8に示す例では、行属性特定部117は、階層深さ“0”の見出し候補文字列の組み合わせを見出し候補文字列h0と、階層深さ“1”の見出し候補文字列の組み合わせを見出し候補文字列h1と、階層深さ“2”の見出し候補文字列の組み合わせを見出し候補文字列h2として設定する。以降の階層深さについても同様に、文書データの部分的な論理構造を定義するための見出し候補文字列の組み合わせを設定する。
次に、行属性特定部117は、任意の階層構造の見出し候補文字列群を一つ抽出(例えば、図8のH0)し、この見出し候補文字列によって階層深さ“0”に限った上で、入力文書データの暫定的な部分の論理構造を生成する。
行属性特定部117が、図8に示した見出し候補文字列群H0に含まれる見出し候補文字列h0に基づいて、入力文書データについて部分的な構造化処理を行った場合、図9に示すような文書領域群が作成される。
具体的には、図9に示す例においては、見出し候補文字列h0における、見出し候補文字列の組み合わせが、数値を含む見出し文字列『1.』、『2.』、『3.』となる。そして、当該見出し候補文字列と一致する文字列は、入力文書データの、破線の矩形で囲まれた第3行及び第18行の冒頭と一致する。そこで、行属性特定部117は、これら各行を階層深さ“0”における見出しと仮定する。
そして、行属性特定部117は、これら各行(第3行及び第18行)を見出しと仮定した上で、当該見出し候補文字列に基づく初期論理構造に従って分割される部分的な文書領域(1章の内容に該当する文書領域や2章の内容に該当する文書領域)を特定する。図9に示す例においては、行属性特定部117は、各文書領域の始点を見出し文字列、各文書領域の終点を次の見出し文字列又は文書データの終端末とすることで、大括弧で示した範囲を文書領域として特定できる。これにより、見出し候補文字列に対応した部分的な文書領域を特定できる。この文書領域の特定は、初期論理構造H0に限らず、例えば初期論理構造Heなど様々な階層構造についても行うこととする。そして、特定した各階層の文書領域に対して、スコア算出部109が、初期論理構造毎に、各初期論理構造に従って生成された中間構造化文書データを構成する特徴間の関連度を示すスコアを算出する。
本実施の形態にかかる初期論理構造は、見出し候補文字列による階層構造で表される構造化パターンとするが、見出し候補文字列による階層構造で表される構造化パターンに制限するものではなく、入力文書データを構造化可能な構造化パターンであればよい。
スコア算出部109は、見出し文字列記憶部101に記憶された各見出し文字列と、文書モデル記憶部に記憶された文書モデルとを含む属性情報と、に基づいて前記汎用的な論理構造の付与に用いる複数通りの初期論理構造毎に、各初期論理構造に従って生成された中間構造化文書データを構成する属性情報(例えば、見出し候補文字列)間の関連の度合いを示す関連度を算出する。
本実施の形態にかかるスコア算出部109は、中間構造化文書データを生成するための適用する初期論理構造を選定する際に、行属性特定部117により生成される、見出し文字列記憶部101に記憶された見出し文字列及び文書モデル記憶部102に記憶された文書モデルの各属性情報に基づく初期論理構造を適用した場合の暫定的な文書構造に対して、予め設定された評価基準を用いてスコアを算出する。
より詳細の例として、スコア算出部109は、見出し文字列記憶部101に記憶される見出し候補文字列、及び箇条書きのうちいずれか一つ以上の階層的に組み合わせた初期論理構造に基づいて、入力文書データ全体に対して汎用的な論理構造(見出し候補文字列、箇条書き領域、章節構造)を付与した場合における当該論理構造のスコアを算出する。
スコア算出部109は、生成した文書構造において、見出し文字列記憶部101に記憶された見出し文字列(例えば、章又は節)を組み合わせた入れ子構造による複数の階層構造が存在する場合、当該階層構造の階層毎及び上位階層から順にスコアを算出する。そして、後述する判断部110が階層ごとに当該文書構造を用いるか否か判断する。
次に、スコア算出部109における、スコアの算出手法について説明する。このスコア算出では、行属性特定部117により暫定的に生成された部分的な文書領域における関連度を評価する。
本実施の形態にかかるスコア算出部109によるスコアの算出手法は、以下の式(1)を用いる。
スコア = 入力文書データの全行数(空白行を除く) * 現在行の順序制約値 / (部分的な文書領域のt_iの行数 + 部分的な文書領域t_i内の部分構造生成候補可能数)……(1)
式(1)で用いる、現在行の順序制約値は、見出しとして特定されている行において、当該行の指し示す見出しの表記が、部分的な文書領域t_i内の見出しとして初期値から順に出現している数値であれば“1”を、初期値ではない値が出現する場合には初期値との差分+1の値を設定する。また、該当行が見出し以外の要素である場合には、“1”を設定する。
例えば、部分的な文書領域において、見出しとなる表記“(1)”から順に含まれている場合には、各行に対して“1”を設定し、部分的な文書領域において、見出しとなる表記“5”が突然出現する場合には、“5−1=4”を差分として、当該行の制約値を設定する。
図10に示すように、スコア算出部109は、当該定義に従って、入力文書データの各行のスコアを算出する。図10に示す例では、初期論理構造H0の見出し候補文字列h0に基づいて、部分的な文書領域に分割されている。つまり、“1.”、“2.”……で分割された部分的な文書領域の各行についてスコアSを算出する。
そして、1行目のスコアを算出する場合、空白行を除く全行数が“21”で、順序制約値が“1”で、部分的な文書領域t_iの行数が“1”で、部分構造生成候補可能数が“0”となる。そこで、スコア算出部109は、スコアS=21*1/(1+0)を計算し、スコアSとして“21”を得る。
次に、3行目のスコアを算出する場合、3行目を含む部分的な文書領域t_2が、3行目から16行目の合計14行で構成されている。そして、当該部分的な文書領域t_2において、含まれている見出し候補は、“(1)”、“(2)”、“・”×3の5個となる。そこで、スコア算出部109が、3行目のスコアSとして、S=21*1/(14+5)を計算し、スコアSとして1.1(小数第二位以下は四捨五入)を得る。
スコア算出部109は、上述した処理を各行毎に行うことで、図10に示すスコアを各行毎に得られる。
そして、スコア算出部109は、算出された行毎のスコアの総和を計算することで、初期論理構造H0のスコアを得られる。このスコアSH0を得る式(2)を示す。
SH0=21*1+1.1*20=43……(2)
図11に示すように、スコア算出部109は、当該定義に従って、入力文書データの各行のスコアを算出する。図10に示す例では、初期論理構造Heの見出し候補文字列h0に基づいて、部分的な文書領域に分割されている。つまり、“(1)”、“(2)”……で分割された部分的な文書領域の各行についてスコアSを算出する。
そして、1〜6行目のスコアを算出する場合、空白行を除く全行数が“21”で、順序制約値が“1”で、部分的な文書領域t_iの行数が“1”で、部分構造生成候補可能数が“0”となる。そこで、スコア算出部109は、スコアS=21*1/(1+0)を計算し、スコアSとして“21”を得る。これら図11に示すように、文書領域t_1〜t_4のスコアは、上述した処理により算出される。
次に、8行目のスコアを算出する場合、8行目を含む部分的な文書領域t_5が、8行目と9行目の合計2行で構成されている。そして、当該部分的な文書領域t_5において、含まれている見出し候補は特にない。そこで、スコア算出部109が、8行目のスコアSとして、S=21*1/(2+0)を計算し、スコアSとして10.5を得る。なお、9行目についても同様の値となる。
次に、11行目〜20行目(ただし18行目を除く)のスコアを算出する場合、部分的な文書領域t_6が、合計10行で構成されている。そして、当該部分的な文書領域t_6において、含まれている見出し候補は“・”×3の3個となる。そこで、スコア算出部109が、11行目〜20行目のスコアSとして、S=21*1/(10+3)を計算し、スコアSとして1.6を得る。
また、18行目については、部分的な文書領域t_6内で、『1.』が出現することなく『2.』が出現していることから、順序制約値が、初期値“1”から見出し表記に含まれている数値“2”の差分“1”に、“1”を加えた“2”となる。そして、スコア算出部109が、18行目のスコアSとして、S=21*2/(10+3)を計算し、スコアSとして3.2を得る。
同様に、22行目及び23行目のスコアを算出する場合、文書領域t_7の全行数“2”等に基づいて、スコア算出部109は、スコアSとして、S=21*1/(2+0)を計算し、スコアSとして10.5を得る。
同様に、25行目〜32行目のスコアを算出する場合、文書領域t_8の全行数“8”等に基づいて、スコア算出部109は、スコアSとして、S=21*1/(8+3)を計算し、スコアSとして1.9を得る。
これにより、スコア算出部109は、初期論理構造Heについて、行毎に、図11に示すスコアを得られる。
そして、スコア算出部109は、算出された行毎のスコアの総和を計算することで、初期論理構造Heのスコアを得られる。このスコアSH0を得る式(3)を示す。
SHe=21*4+10.5*4+3.2*1+1.9*6+1.6*6=150.2……(3)
また、スコア算出部109は、他の初期論理構造Hxについても同様に、他の初期論理構造Hx毎に、必要に応じてスコアを算出する。
なお、スコア算出部109は、上記の階層においては出現しなかったが、上述した見出し文字列、章又は節を示す数値による階層構造に限らず、例えば“・”で示す箇条書きや、パラグラフに基づいて設定された部分的な文書領域の各行についてもスコアを算出する。
そして、判断部110による判断結果に基づいて、行属性特定部117は、入力文書データに出現するパターンや傾向、及び文書モデル記憶部102に記憶されている文書モデルを利用して、各行の属性情報(見出し候補文字列とその順序および階層関係、本文候補、箇条書き候補、その他パラグラフ)を特定し、付与する。なお、詳細な処理手順については後述する。
判断部110は、スコア算出部109により算出されたスコアに基づいて、汎用的な論理構造の付与に用いる初期論理構造を判断する。
本実施の形態にかかる判断部110は、算出されたスコアに基づいて、不適切な初期論理構造とそれと類似する初期論理構造の適用を棄却する。そして、棄却されていない初期論理構造を用いて、行属性特定部117が、各行の属性情報を特定する。属性情報の例としては、見出し文字列の表記、当該行の階層とし、これら属性情報を対応付けて、各行に属性情報として付与する。
本実施の形態にかかる判断部110は、スコア算出部109により算出されたスコアにより、部分的な文書領域を設定する初期論理構造の見出し候補文字列hx(例えば章又は節による見出し候補文字列の組み合わせ)が適切か否か判断する。そして、判断部110は、当該初期論理構造が不適切と判断した場合に、当該見出し候補文字列hxを含む全ての初期論理構造を、入力文書データに付与する汎用的な論理構造として不適当と判断する。つまり、見出し候補文字列h0(例えば、(1)、(2)……)で不適切と判断された場合、当該見出し候補文字列h0を含む初期論理構造Hx全てを不適切と判断する。
例えば、判断部110は、初期論理構造H1の見出し候補文字列h0のスコア43と、初期論理構造Heの見出し候補文字列h0のスコア150.2を比較し、初期論理構造Heを、不適合候補の棄却処理の対象とし、汎用的な論理構造としてではないと判断する。
その際、判断部110は、Heの見出し候補文字列h0で不適合候補と判断したため、見出し候補文字列h0が“(1)”、“(2)”となる初期論理構造Hx全てを、汎用的な論理構造ではないと判断する。
つまり、判断部110は、図8に示す例において、Heの見出し候補文字列h0のスコアを算出した時点で、当該Heの見出し候補文字列h0と同様の構成を備える初期論理構造Hxを候補から除外し、H0に類似する初期論理構造H11、H2、H3を候補と残した上で、スコア算出部109が、初期論理構造H0と他の初期論理構造Hxとについて次の階層のスコアを算出し、スコアの低い初期論理構造を候補として残すという処理を階層ごとに行うことで、最終的な初期論理構造が決定される。なお、図8の分岐は、H0以降とHeのみ表示しているが、これは説明を容易にするためであり、実際は見出し候補文字列の組み合わせの数に応じた分岐が存在している。
そして、適切と判断された初期論理構造については、さらに下の階層について行属性特定部117による暫定的な階層構造の生成、及びスコア算出部109のスコア算出を行った後、判断部110が、さらに当該階層毎に、汎用的な論理構造として適切か否か判断していくことになる。
上述した処理を行うことで、見出し候補文字列を含む初期論理構造から、不適切なものを除去し、適切な初期論理構造を特定することができる。
また、本実施の形態においては、見出し文字列の出現制約に基づく論理構造の関連度を示すスコアの算出例を示したが、見出し文字列の順序情報以外の属性情報を用いてスコアを算出しても良い。さらに見出し文字列の順序と他の属性情報を複合的に組み合わせてスコアを算出しても良い。
変形例としては、入力文書データから暫定的に作成された部分の文書領域において、当該文書領域に連続する空行や、境界表現("------")行が存在する場合に、これら行が出現する毎に、上述した評価式の分子に適当な係数(1より大きい値)を乗ずることで、算出されるスコアを高くし、不適切さの度合いを高めても良い。
他の変形例としては、島数が2以上の行などが一定数以上連続したり、ある行属性の出現が周期的に出現している場合には、テーブル表記などが暫定的に作成された部分の文書領域に包含されているとみなし、評価式に適当な係数(1より小さい正の数)を乗ずることで、算出されるスコアを低くし、適切さの度合いを高めても良い。
なお、部分的な文書領域を特定するために適用する学習手法は、SVMや決定木、NeuralNet、K*など、入力文書データに対して特定された属性情報によって行の論理構造を分類・判定できるものであれば、種類や性質を問わないものとする。
格納部111は、判断部110により適切と判断された、初期論理構造を構成する各行の属性情報を、文書モデル記憶部102に格納する。つまり、適切と判断された初期論理構造を構成する属性情報の組み合わせと、ユーザ目的に特化された論理構造名(議事録であれば、参加者、議事タイトル、配布先など)とを対応付けて、文書モデル記憶部102に記憶させることで、正解データとして学習させることになる。
これにより、例えば、文書モデル記憶部102は、図12に示すような文書モデルを、上述した入力文書データから抽出された属性情報を追加した後の文書モデルとして記憶する。図12に示す例では、文書モデルは、入力文書データに対する見出し候補文字列とその階層関係(heading_hypo)、及び入力文書データにおける行情報(data)からなる。次に、格納部111は、入力文書データから上述した処理によって得られたファイル形式などのファイル情報、行単位による各種属性情報を、入力文書データの属性情報として対応付けて、文書モデルとして保持しておく。例えば、行情報(data)には、行属性特定部117により生成された各行の属性情報が格納される。
また、格納部111は、入力文書データから抽出された見出し候補文字列を、見出し文字列記憶部101に対して格納する。これにより、次以降に入力された入力文書データに対する適切な論理構造の解析精度が向上する。
中間生成部112は、判断部110により適切と判断された初期論理構造と、行属性特定部117により生成された各行の属性情報とに基づいて、入力文書データから、汎用的な論理構造が付与された中間構造化文書データを生成する。
中間生成部112は、これまでに行われた行毎の解析結果に対して、図4に示す汎用構造定義記憶部103に記憶されている汎用的な論理構造の定義を適用し、当該行に含まれる文字列に対して汎用的な論理構造を付与することで、図13に示すような中間構造化文書データを生成する。この汎用的な論理構造が付与される文字列としては見出し文字列や、箇条書きを示す記号などがある。図13に示す汎用的な論理構造においては、第一階層をchapter、第二階層をsection、箇条書きをlistitemとして定義されているため、図13に示す中間構造化文書データにおいても、これら名称が定義されたタグが階層ごとに付与される。そして、タグ等が付与された中間構造化文書データは、中間構造化文書データ記憶部105に格納される。
また、修正部114により、属性情報に対して修正が行われた場合、中間生成部112は、当該修正された属性情報等を用いて、中間構造化文書データを生成し、再び、中間構造化文書データ記憶部105に格納する。次に属性情報を修正するための構成について説明する。
利用者操作受付部115は、入力装置に接続され、入力装置に対して入力された操作情報を受け付ける。
修正部114は、利用者操作受付部115が受け付けた操作情報に従って、行属性特定部117により生成された各行の属性情報に対して修正を行う。また、修正部114は、利用者操作受付部115が受け付けた操作情報に従って、中間生成部112が生成した中間構造化文書データに対して修正を行う。修正の対象となる属性情報としては、例えば、見出し候補文字列がある。また、修正部114は、中間構造化文書データに対して、タグを埋め込むなどの修正も行う。
表示部118は、利用者に対して、様々な情報の表示を行う。例えば、表示部118は、属性情報等を修正するための修正インターフェースの表示を行う。
図14に示す修正用インターフェースにおいては、入力文書データと、見出し文字列群と、中間構造化文書データと、中間構造化文書データの階層構造が表示される。当該修正用インターフェースにおいて、見出し文字列の追記や、削除などを行うことができる。
また、利用者が、見出し候補文字列を追加した場合、表示部118は、当該追加処理に従って、修正用インターフェース上の中間構造化文書データ及び階層構造の表示を更新する。これに従い、格納部111は、見出し文字列記憶部に対しても見出し文字列や箇条書きを示す記号を追加する。また、中間生成部112も、追加された見出し文字列や箇条書きを示す記号を使用した上で、中間構造化文書データの再生成を行う。また、見出し候補文字列や箇条書きを示す記号を削除した場合についても同様に、修正用インターフェースの中間構造化文書データ及び階層構造、並びに見出し文字列記憶部101の更新が行われる。
表示部118は、図14に示す修正用インターフェースで表示されている入力文書データにおいて、見出し候補である文字列をハイライト表示したり、入力文書データの行頭の文字列で、見出し候補文字列群として未登録の文字列の中から、数値のみを含む文字列や、特定記号を含む文字列等をハイライト表示してもよい。これにより、見出し文字列の追加等を促すことができるので、生成される中間構造化文書データのより適切なものとなる。
また、表示部118が、修正用インターフェースにおいて、修正部114が見出し候補文字列群の修正を行う前後における中間構造化文書データの階層構造を表示しても良い。その際に、構造が変化した差分をハイライト表示してもよい。これにより、利用者は対応関係を認識することが可能となり、修正作業における利便性が向上する。
修正用インターフェースは利用用途に応じて、様々な種類のインターフェースが提供される。図15に示す例では、見出し候補文字列の修正に特化したインターフェースであり、見出し文字列群と、修正前の中間構造化文書データと、修正後の中間構造化文書データとを表示するインターフェースである。
図15に示す例においては、利用者操作受付部115において、見出し文字列“(1)”を追加する操作情報を受け付け、修正部114が見出し文字列を追加する際に、表示部118が、修正用インターフェースから、利用者に対して確認を要求している。この画面においては、見出し文字列“(1)”を追加する前後の中間構造化文書データの例が画面下部に表示されている。利用者は、当該修正結果例を閲覧することで、変更内容を確定するか、キャンセルするかを選択することができる。そして、当該確定を行うことで、見出し文字列記憶部101及び中間構造化文書データを編集することができる。
他の例としては、図16に示す修正用インターフェースが考えられる。図16に示す修正用インターフェースにおいても、見出し文字列“(1)”が追加された例について示している。図16に示す例では、見出し文字列に対する修正履歴が『改訂ログ』として表示されている。この『改訂ログ』においては、過去の修正履歴1,2が存在し、今回の見出し文字列の追加が、修正履歴3として追加されている。
図16に示す例では、修正後の見出し文字列として、修正用インターフェース画面左下に、見出し文字列“(1)”が新たに追加されている。当該追加処理に従って、表示部118は、画面中央の上段に修正前の中間構造化文書データと、下段に修正後の中間構造化文書データとを表示する。これら中間構造化文書データは、それぞれ構造化処理が行われている。これにより、利用者は、自己の修正結果を参考にして、修正を確定するか取りやめるかを判断することができる。
また、図16に示す例では、修正用インターフェースの右端に、見出し文字列の修正結果に従う、中間構造化文書データの階層構造の変化が表示されている。当該階層構造で変化したノードは、削除や追加、移動等の変化内容に応じて、色分けして表示されても良い。これにより、利用者は、修正した場合に変更される箇所を確認しながら、属性情報を修正することができる。また、属性情報の修正対象は、見出し候補文字列に制限するものではなく、各行の属性情報などさまざまな属性情報が修正の対象となる。
このようにして、格納部111は、修正部114による修正結果に従った、各行及び各行に含まれる文字列の属性情報を、見出し文字列記憶部101及び文書モデル記憶部102に格納する。
用途別構造化文書生成部113は、用途別構造定義記憶部104に基づいて、上述した処理によって生成又は修正された中間構造化文書データから、中間構造化文書データに付与された汎用的な論理構造のうち必要な部分の論理構造を、利用用途毎に定義された論理構造を示す用途別論理構造に変換し、用途別構造化文書データを生成する。
用途別論理構造は、利用用途毎に定義された論理構造を示し、本実施の形態においては利用用途別に提議されたDTDに対応する。
本実施の形態にかかる用途別構造化文書生成部113は、用途別構造化文書データのタグ種別を特定するために、マッピング条件記憶部116を参照し、用途別構造定義記憶部104に定義された当該種別の用途別構造の定義に従って、中間構造化文書データから、用途別論理構造で構成される用途別構造化文書データを生成する。また、マッピング条件に該当する用途別構造化文書データのタグ種別が複数存在する場合、利用者がタグ種別を選択しても良いし、タグ種別毎に用途別構造化文書データを生成しても良い。また、マッピング条件記憶部116に設定されたマッピング条件と関係なく利用者が、選択したタグ種別に従って、中間構造化文書データから用途別構造化文書データを生成しても良い。つまり、中間構造化文書データから、用途別構造化文書データを生成する際に、利用者の要求する利用用途に応じて適宜、中間構造化文書データを用途別構造化文書データに変換することができる。
図17に示すように、本実施の形態にかかる用途別構造化文書生成部113は、マッピング条件記憶部116に記憶されたマッピング条件(例えば条件A1801、条件B1802)に一致した場合に、用途別構造化文書データの種別が特定される。その後は、図5に示す用途別構造定義記憶部104で用途別構造化文書種別が特定されたことで、変換元のタグ(汎用構造)に対応する変換先のタグ(用途別文書構造)及び変換するための条件(設定条件)が特定されたことになる。
そして、用途別構造化文書生成部113が、特定された設定条件に一致した場合に、汎用構造のタグを、用途別構造化文書データとして適したタグに変換し、用途別構造化文書データを生成する。なお、設定条件が設定されていない場合、単純に汎用構造のタグを、用途別構造化文書データとして適したタグに変換していく。これにより、図17において、条件A1801に一致した場合には、中間構造化文書データから、社内規程文書に適用される用途別論理構造が付与された用途別構造化文書データが生成され、条件B1802に一致した場合には、議事メモに適用される用途別論理構造が付与された用途別構造化文書データが生成される。
その後、図18に示すように、表示部118が、変換前の中間構造化文書データと、変換後の用途別構造化文書データとを表示する。これにより、利用者は、適切な用途別構造化文書データが得られるか否かを確認することができる。また、当該インターフェースにおいても、ウィンドウ1701の対応関係を修正することで、ウィンドウ1703に表示される用途別構造化文書データの論理構造を修正することができる。また、各文書データを修正する場合、ウィンドウ1702及びウィンドウ1703のそれぞれに対して直接修正することもできる。図18に示すインターフェースから、要素の変更や削除等を可能としたことで、最終的に利用者が所望する構造の用途別構造化文書データを生成することが可能となる。
また、用途別構造化文書生成部113は、タグの変換の他に、利用用途に適した属性情報をメタ情報として、用途別構造化文書データに対して付与する。
次に、本実施の形態にかかる文書処理装置100において、中間構造化文書データを介した上で、入力文書データから用途別構造化文書データを生成する利点について説明する。当該説明では、入力文書データを利用者の利用用途に応じて、様々な用途別構造化文書データを生成する場合を想定している。
この場合、図19に示すように、従来通り中間構造化文書データを生成しない場合においては、入力文書データから、ある特定のDTD(Document Type Definition、例えばDTD(1))に変換し、その変換後の構造を付与した用途別構造化文書データを格納したと仮定する。
その後、さらに異なるDTD(例えば、DTD(2)又はDTD(3))への変換要求が生じた場合、DTD(1)から、DTD(2)又はDTD(3)への対応(マッピング)定義が必要となる。同様に、入力文書データから最初にDTD(2)やDTD(3)に変換していた場合についても、同様に他のDTDとの対応定義が必要となる。つまり、用途別構造化文書データが3種類の場合、図19で示した矢印の数である‘9’通りの対応定義が必要となる。
さらに、DTDに応じて入力文書データに対する解析手法や、対応するタグ属性が存在しているとは限らない以上、DTDから他のDTDに変換する際に解析手法やタグ属性の違いに応じた欠落が生じる。例えば、あるDTDで、“番号あり”と“番号なし”箇条書きの区別をつけずに構造化した用途別構造化文書データを生成した場合、他のDTDの用途別構造化文書データを生成する際に、これらを区別する情報が欠落するため、最初の解析結果を有効に活用した構造化が不可能になる。
また、逐次、入力文書データから、任意のDTDに変換することも考えられるが、このような変換で修正部による修正が必要な場合、入力文書データから任意のDTDに変換する毎に、適切な構造化が行われるよう、利用者の修正が必要となり、作業負担が増大する。
これに対して本実施の形態にかかる文書処理装置100では、図20に示すように、入力文書データから中間構造化文書データを生成してから、各DTDに対応する用途別構造化文書データに変換している。この場合、必要となる対応定義の数は、それぞれ出力DTDの種別数に1追加した数となるため、図19に示す従来の手法と比べて必要な対応定義数を減少させることができる。また、入力文書データから中間構造化文書データを生成する際に、利用者が修正を行った場合、各DTDに対応する用途別構造化文書データに対して修正結果を反映させることができる。これにより、利用者の作業負担を減少させると共に、用途別構造化文書データに対して適切な用途別論理構造を付与することが可能となる。
次に、本実施の形態にかかる文書処理装置100の全体的な処理手順について、図21を用いて説明する。
まず、文書解析部106が、入力文書データに対して解析処理を行う(ステップS2101)。
次に、行単位抽出部107が、解析後の入力文書データの情報を、行単位で抽出する(ステップS2102)。
そして、特徴抽出部108が、行単位抽出部107により抽出された単位毎に、当該行に含まれる文字列の特徴を抽出する(ステップS2103)。
その後、行属性特定部117、スコア算出部109及び判断部110などの構成が、各行毎の特徴に基づいて、汎用的な論理構造による中間構造化文書データを生成する(ステップS2104)。
次に、中間生成部112が、生成された中間構造化文書データを、中間構造化文書データ記憶部105に登録する(ステップS2105)。
その後、用途別構造化文書生成部113が、マッピング条件記憶部116及び用途別構造定義記憶部104を参照した上で、中間構造化文書データから、用途別構造化文書データを生成する(ステップS2106)。
次に、本実施の形態にかかる図21のステップS2104における中間構造化文書データの生成手順について、図22を用いて説明する。
まず、行属性特定部117は、行特徴の抽出結果を読み込む(ステップS2201)。次に、行属性特定部117は、見出し文字列記憶部101に記憶された見出し文字列を、見出し候補文字列として読み込む(ステップS2202)。さらに、行属性特定部117は、現在入力文書データから、特徴抽出部108により抽出された各行毎の特徴から抽出された見出しの候補となる文字列も、見出し候補文字列として追加する。
また、行属性特定部117は、文書モデル記憶部102から文書モデルを読み込む(ステップS2203)。
次に、行属性特定部117は、読み込んだ見出し候補文字列及び文書モデルを参照した上で、各行の特徴等に基づいて、文書モデルとして格納する各行の属性情報を生成する(ステップS2204)。なお、この生成された属性情報は、文書モデルに対して追加される。
そして、行属性特定部117は、入力文書データに対応する、初期論理構造Hxを生成する(ステップS2205)。当該初期論理構造Hxは、各行の属性情報の組み合わせに応じて複数生成される。なお、この初期論理構造Hxの生成手法には、既存の学習手法を適用する。
その後、行属性特定部117は、初期論理構造を一つ選択する(ステップS2206)。そして、選択した初期論理構造の所定の階層で見出し候補文字列の組み合わせを用いて、部分的な文書領域を生成する(ステップS2207)。なお、最初の階層は、最も上位の階層となる。
そして、スコア算出部109が、生成された部分的な文書領域に応じて、スコアを算出する(ステップS2208)。
そして、判断部110が、現在保持している初期論理構造のスコアより、算出したスコアの方が大きいか否か判断する(ステップS2209)。なお、最初に選択された初期論理構造が、保持している初期論理構造として設定される。
そして、判断部110が、算出したスコアの方が小さいと判断した場合には、特に処理を行わず、ステップS2212に進む。一方、判断部110が、算出したスコアの方が大きいと判断した場合には、今まで保持していた初期論理構造を削除し(ステップS2210)、今回の初期論理構造を汎用的な論理構造の候補として保持する(ステップS2211)。これにより、初期論理構造から、不適切な候補を棄却することで、見出し候補文字列や箇条書き候補についての誤判定結果が削除されていくことになる。この結果、相対的に精度の良い汎用的な論理構造が付与された中間構造化文書データを生成することが可能となる。
そして、判断部110は、全ての初期論理構造について検証を行ったか否か判断する(ステップS2212)。行っていないと判断した場合(ステップS2212:No)、再びステップS2206から処理を開始する。
なお、上述したステップS2206〜S2212までの処理は、初期論理構造の上位の階層から順に階層ごとに全ての階層について行うものとする。
一方、判断部110が、全ての初期論理構造について検証を終了したと判断した場合(ステップS2212:Yes)、中間生成部112は、保持している初期論理構造に従って、中間構造化文書データを生成する(ステップS2213)。
その後、中間生成部112は、生成した中間構造化文書データを、中間構造化文書データ記憶部105と、用途別構造化文書生成部113に対して出力する(ステップS2214)。
上述した処理手順により、汎用的な論理構造が適切に付与された中間構造化文書データを生成することができる。
次に、本実施の形態にかかる図22のステップS2208における、スコア算出部109によるスコア算出手順について、図23を用いて説明する。
まず、スコア算出部109は、階層Tの初期設定を行う(ステップS2301)。最上位の階層の場合、階層Tに初期値として‘0’が設定される。また、それ以下の階層の場合、階層の数に応じた初期値が階層Tに設定される。この場合、見出し候補文字列のh0が適用される。初期論理構造の場合、h0の候補には、文字列『1.』『2.』『3.』等が含まれる。
そして、スコア算出部109は、階層Tにおける部分的な文書領域を、行属性特定部117から取得する(ステップS2302)。階層T=0の場合、部分的な文書領域は、図9の大括弧で示した3つの要素からなる。これら要素をそれぞれt_1,t_2,t_3とする。最初に処理対象となる部分的な文書領域t_1とし、t_2,t_3の順に処理を行っていくものとする。なお、t_1は1行で構成されており、当該行の文字列は『タイトル』である。
次に、スコア算出部109は、全ての見出し候補文字列を、行属性特定部117から取得する(ステップS2303)。
そして、スコア算出部109は、取得した見出し候補文字列と一致する行が存在するか否か判断する(ステップS2304)。一致する場合には(ステップS2304:Yes)、当該行を見出し候補文字列と特定する(ステップS2305)。これにより、例えば、各行に“(1)”、“(2)”、“(3)”が含まれている場合、当該行が見出し候補文字列を含んでいると特定される。当該処理により、スコアの算出に必要な、部分的な文書領域t_i内の部分構造生成候補可能数が特定できる。
また、スコア算出部109は、当該行の順序制約値を設定する(ステップS2306)。文書領域t_iにおいて初期値から出現しているのであれば“1”を設定し、初期値でない値が出現した場合には、初期値と差分+1の値を設定する。
そして、スコア算出部109が、処理対象となる行を次の行に移動する(ステップS2307)。
その後、スコア算出部109が、それ以降の行で、見出し候補文字列と一致する行が存在するか否か判断する(ステップS2304)。
そして、スコア算出部109が、一致する行が存在しないと判断した場合(ステップS2304:No)、部分的な文書領域t_iに含まれる各行のスコアを算出する(ステップS2308)。
次に、スコア算出部109は、変数iに“1”追加する(ステップS2309)。そして、スコア算出部109は、全ての部分的な文書領域t_iについてスコアの算出が終了したか否か判断する(ステップS2310)。算出が終了していないと判断した場合(ステップS2310:No)、ステップS2302から再び処理を開始する。
一方、スコア算出部109は、スコアの算出が終了したと判断した場合(ステップS2310:Yes)、全ての部分的な文書領域t_iの各行のスコアの総和を出力し(ステップS2311)、処理を終了する。
上述した処理手順により、各見出し候補文字列を適用した場合のスコアを算出することができる。
本実施の形態にかかる文書処理装置100においては、上述した処理手順により、利用者が所望する構造化文書を生成することが可能となる。
本実施の形態にかかる文書処理装置100においては、入力文書データの解析結果から用途別構造化文書データに依存しない汎用的な論理構造が付与された中間構造化文書データを生成した後、当該中間構造化文書データから用途別構造化文書データを生成することとした。このため、利用者の要求に応じて異なる種類の用途別構造化文書データを中間構造化文書データから容易に生成することが可能となり、用途別構造化文書データを生成する際の作業負担を軽減させる。
換言すれば、本実施の形態にかかる文書処理装置100は、用途別構造化文書データ間で詳細なルールや辞書を生成することなく、汎用的な論理構造と、利用者が利用する論理構造との対応付を行うことで、利用者が所望とする構造化がなされた用途別構造化文書データを生成できる。
そして、文書処理装置100においては、入力文書データの形式変更が生じた場合、汎用的な論理構造の定義のみ変更すればよく、各用途別構造化文書データとの対応関係の変更は生じない。このため、入力文書データの形式変更に対する、作業負担を軽減できる。
また、用途別構造化文書データの構造変更要求に対しても、汎用的な論理構造と、構造を変更する論理構造との間の修正のみ行えばよく、利用者が他の用途別構造化文書データや入力文書データに対する既存のルールとの整合性や無矛盾性の検証の必要が生じない。このため、作業負担を軽減できる。
図24に示すように、本実施の形態にかかる文書処理装置100は、CPU2401などの制御装置と、ROM(Read Only Memory)2402やRAM2403などの記憶装置と、HDD2406と、ディスプレイ装置などの表示装置2405と、通信I/F2404と、キーボードやマウスなどの入力装置2407と、バス2408とを備えており、通常のコンピュータを利用したハードウェア構成となっている。
本実施の形態にかかる文書処理装置100で実行される文書処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、本実施の形態にかかる文書処理装置100で実行される文書処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態にかかる文書処理装置100で実行される文書処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
また、本実施の形態にかかる文書処理プログラムを、ROM2402等に予め組み込んで提供するように構成してもよい。
これらの場合、文書処理プログラムは、文書処理装置100において上記記録媒体又はROM2402から読み出して実行することによりRAM2403上にロードされ、上記ソフトウェア構成で説明した各部がRAM2403上に生成されるようになっている。
以上、本発明を実施の形態を用いて説明したが、上記実施の形態の構成を組み合わせたり、上記実施の形態に多様な変更または改良を加えることができる。