(57)【要約】      （修正有）【課題】引用文を含む文書に発生する引用階層ずれを高い精度で整形することができる文書解析装置を提供する。【解決手段】表示対象文書の属性情報を基に表示対象文書によって引用される引用対象文書の本文情報を抽出する引用文書抽出手段３１と、表示対象文書の本文情報と引用対象文書の本文情報とを比較して表示対象文書の本文情報中の引用階層ずれを検出し、引用階層ずれが検出された場合には表示対象文書の本文情報中の引用階層ずれを整形する引用文書解析手段３２と、表示対象文書の属性情報と引用階層ずれを整形した本文情報とを取得し、引用階層ずれを整形した本文情報を元の表示対象文書の本文情報に反映させる文書整形手段３３とを備える。【選択図】図１
2015106337.tif 000002
【特許請求の範囲】
【請求項１】
表示対象文書の属性情報を基に前記表示対象文書によって引用される引用対象文書の本文情報を抽出する引用文書抽出手段と、
前記表示対象文書の本文情報と前記引用対象文書の本文情報とを比較して前記表示対象文書の本文情報中の引用階層ずれを検出し、引用階層ずれが検出された場合には前記表示対象文書の本文情報中の引用階層ずれを整形する引用文書解析手段と、
前記表示対象文書の属性情報と引用階層ずれを整形した本文情報とを取得し、前記引用階層ずれを整形した本文情報を元の前記表示対象文書の本文情報に反映させる文書整形手段とを備える文書解析装置。
【請求項２】
表示対象メールの属性情報を基に前記表示対象メールによって引用される引用メールの本文情報を抽出する引用メール抽出手段と、
前記表示対象メールの本文情報と前記引用メールの本文情報とを比較して前記表示対象メールの本文情報中の引用階層ずれを検出し、引用階層ずれが検出された場合には前記表示対象メールの本文情報中の引用階層ずれを整形する引用メール解析手段と、
前記表示対象メールの属性情報と引用階層ずれを整形した本文情報とを取得し、前記引用階層ずれを整形した本文情報を元の前記表示対象メールの本文情報に反映させるメール整形手段とを備える文書解析装置。
【請求項３】
過去に送受信されたメールを保存するメール保存手段と、
前記表示対象メールを表示させる指示に応じて前記表示対象メールの前記属性情報と前記本文情報とを前記メール保存手段から抽出するメール抽出手段と、
前記メール整形手段によって反映された前記表示対象メールの本文情報と前記属性情報とを基にメール表示用のレイアウトを行うメール表示用整形手段と、
前記メール表示用整形手段によってレイアウトされたレイアウト結果を基に前記表示対象メールを出力するメール表示手段とをさらに備える請求項２に記載の文書解析装置。
【請求項４】
前記引用メール解析手段は、
前記表示対象メールと前記引用メールとを含む一連のメール群に対して、最も古いメールから順番にメール交換順が連続する２つのメール間で引用階層ずれがあるか否かを判定し、引用階層ずれがあった場合、比較している前記２つのメールのうち新しい方のメールの本文情報の引用階層ずれを整形する手順を、前記一連のメール群に含まれる全てのメールの全ての行に対して繰り返し、前記表示対象メールの本文情報中の引用階層ずれを解消させる請求項２または３に記載の文書解析装置。
【請求項５】
前記引用メール解析手段は、
前記２つのメールのうち新しい方のメールの本文情報に含まれる一つの行において引用記号を削除した文字列を第１の文字列に設定し、前記２つのメールのうち古い方のメールの本文情報に含まれる一つの行において引用記号を削除した文字列を第２の文字列に設定し、前記第１の文字列と前記第２の文字列とが前方一致するか否かの判定を前記２つのメールのうち新しい方のメールの全ての行について検証する請求項４に記載の文書解析装置。
【請求項６】
前記メール表示用整形手段は、
前記表示対象メールに含まれる第１の行が表示領域からはみ出る場合、前記表示領域からはみ出る部分を前記第１の行とは異なる第２の行に改行するとともに、前記第１の行に付された引用記号を前記第２の行に付加する請求項３乃至５のいずれか一項に記載の文書解析装置。
【請求項７】
前記メール整形手段は、
既に引用階層ずれが整形された前記表示対象メールの本文情報中における前記引用メールの含有部に関して、
前記含有部の開始行数、終了行数、引用階層、引用元となる引用メールの名称を含む縮小管理テーブルを作成する請求項３乃至６のいずれか一項に記載の文書解析装置。
【請求項８】
前記メール表示用整形手段は、
前記縮小管理テーブルを基に、前記表示対象メールに引用された前記引用メールの属性情報を表示させたボタンとして前記引用メールを縮小表示させる縮小表示レイアウトを作成する請求項７に記載の文書解析装置。
【請求項９】
表示対象文書の属性情報を基に前記表示対象文書によって引用される引用対象文書の本文情報を抽出し、
前記表示対象文書の本文情報と前記引用対象文書の本文情報とを比較して前記表示対象文書の本文情報中の引用階層ずれを検出し、引用階層ずれが検出された場合には前記表示対象文書の本文情報中の引用階層ずれを整形し、
前記表示対象文書の属性情報と引用階層ずれを整形した本文情報とを取得し、
前記引用階層ずれを整形した本文情報を元の前記表示対象文書の本文情報に反映させる文書解析方法。
【請求項１０】
表示対象文書の属性情報を基に前記表示対象文書によって引用される引用対象文書の本文情報を抽出する処理と、
前記表示対象文書の本文情報と前記引用対象文書の本文情報とを比較して前記表示対象文書の本文情報中の引用階層ずれを検出し、引用階層ずれが検出された場合には前記表示対象文書の本文情報中の引用階層ずれを整形する処理と、
前記表示対象文書の属性情報と引用階層ずれを整形した本文情報とを取得し、前記引用階層ずれを整形した本文情報を元の前記表示対象文書の本文情報に反映させる処理とをコンピュータに実行させる文書解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特定の文書を解析・整形する文書解析装置、文書解析方法および文書解析プログラムに関する。特に、電子メールの本文を解析・整形する文書解析装置、文書解析方法および文書解析プログラムに関する。
【背景技術】
【０００２】
近年、電子メールの利用はますます拡大しており、大量に受信したメールを効率的に処理することが必要になっている。大量に受信したメールを利用者が読み進めていく際には、個々のメールの判読性を確保することが求められる。
【０００３】
メールの本文中には、メール本文に新たに加える通常の文である平文と、過去のメール文を引用した文である引用文とを含む。平文と引用文とを区別するためには、引用文の行頭に「＞」や「｜」などの引用記号を付与することが一般的である。
【０００４】
引用記号は、電子メールの作成や送受信、送受信メールの保存・管理を行うためのソフトウェア（以下、メールソフト）によって自動的に付与される場合が多い。例えば、メールの送信時に一行のデータ長がある閾値（例えば、文字数や桁数）を超えた場合に、データ長が閾値を超えた箇所に自動的に改行データを付与する自動改行機能を持つメールソフトがある。引用記号は、改行データの前または後に自動的に付与されることになる。引用記号の自動付加機能は、メールの過去のやりとりを把握しやすくするとともに、メール作成作業を効率化する機能となる。
【０００５】
あるメールに返信を行う場合、メールソフトが返信元メールの本文の各行頭に引用記号を付加したものが返信メールの初期状態となる。メール作成者は、その初期状態のメールに返信文を作成していくことになる。例えば、メール最上部に平文だけで返信文を記載することもあれば（図２２）、引用文の一部をメール上部にコピーし、この直後の行にその引用文に対する返信文を記載することもあれば（図２３）、メール下部の引用文の間に直接返信文を記載する場合もある（図２４）。なお、図２２〜図２４などのメール文を含む図面において、枠内の文はメール文を示し、枠外左側に記した数字はメール文の行数を示す。
【０００６】
ところで、引用文が自動改行されると、自動改行直後の行頭には引用記号が付与されず、自動改行データが挿入された行と、その直後の行とで行頭の引用記号の数（引用階層）が変わってしまうことがある。その場合、元々は一つの引用文であるにも関わらず、自動改行後の文が別の文のように見えてしまう。このように、自動改行機能によって文の途中で改行され、改行された行頭に意図しない引用記号が挿入されてしまう現象を引用階層ずれと呼称する。引用階層ずれが発生すると、メール送信者の意図していない箇所で改行が行われるため、メールの判読性が低下するという問題がある。
【０００７】
引用階層ずれの例を図２５と図２６に示す。図２５は、２行目と７行目に自動改行データが挿入され、それぞれ３行目と８行目との間に引用階層ずれが発生した例である。図２６は、メールのやりとりが繰り返されるうちに同一箇所（１行目）で自動改行が複数回発生し、階段状の引用階層ずれ（複合的引用階層ずれ）が発生した例である。メール送信者が意識して修正しない限り、一度発生した引用階層ずれは解消されない。そのため、何度もやりとりが続いているメールは、図２６のような状態になって判読性が大きく低下する。
【０００８】
引用階層ずれの問題に対処する技術が、特許文献１および２に開示されている。
【０００９】
特許文献１のデータ処理装置は、まず、メール本文を先頭から順に読み出し、改行データを検出したときに、改行データの前後の文字の種類から、メールソフトによって自動的に挿入された自動改行データであるか否かを判別する。そして、自動改行データであると判定された改行データを削除し、直後の行を同じ引用文の一部として整形する。一方、改行データがメール送信者によって意図的に挿入されたものであると判断したときは、改行データの削除・整形を行わない。
【００１０】
特許文献１のデータ処理装置では、改行データの直後の文字（行頭文字）が、「  」（スペース）、「（」（開き括弧）、「？」（疑問符）、「数字」、「・」（中黒）のいずれでもない場合、その改行データは自動的に挿入された改行データであると判断される。また、改行データの直前の文字が、「句読点」、「）」（閉じ括弧）のいずれでもない場合も、その改行データは自動的に挿入された改行データであると判断される。一方、改行データの前後の文字が、上述のいずれかの文字に該当する場合、その改行データは意図的に挿入されたものと判断される。
【００１１】
しかしながら、上述の文字が前後に存在する箇所で自動改行が発生することもあり得る。その場合、自動改行データを意図的改行データと誤判定することになり、引用階層ずれが整形されないという問題が発生する。逆に、メール作成者が意図的に挿入した改行データの前後に、上述の文字が存在しない場合もあり得る。この場合、意図した改行データを自動改行データと誤判定し、誤った改行データの削除と整形が行われ、メールの判読性が大きく低下したり、内容が意味不明になったりするという問題がある。
【００１２】
特許文献２の文書解析装置は、改行データ前後の文字の種類ではなく、各行の文字数に注目して引用階層ずれを整形することによって、上述の特許文献１の問題点を解決する。
【００１３】
特許文献２の文書解析装置は、まず、メール本文における各行の引用階層と各行のデータ長を計算し、引用階層の最大値をｎ、データ長の最大値をＭＡＸとする。次に、文書解析装置は、各行のデータを一行単位で読み込んでいき、読み込んだ「ｉ行目の文字列Ｓｉのデータ長」が「データ長最大値ＭＡＸの近似範囲」に入っているかどうかを判定する。このとき、文書解析装置は、補正値を±２（変更可能）に設定し、「Ｓｉの長さ」が「ＭＡＸ−補正値」よりも大きい場合、「ｉ行目の文字列Ｓｉのデータ長」が「データ長最大値ＭＡＸの近似範囲」に入っていると判定する。「ｉ行目の文字列Ｓｉのデータ長」が「データ長最大値ＭＡＸの近似範囲」に入っている場合、文書解析装置は、ｉ＋１行目の文字列Ｓｉ＋１と引用階層Ｌｉ＋１を取得する。
【００１４】
次に、特許文献２の文書解析装置は、以下の２つの判定条件によって自動改行データであるか否かを判定する。一つは、「Ｓｉの引用階層Ｌｉ」が「Ｓｉ＋１の引用階層Ｌｉ＋１」よりも大きいか否かである。もう一つは、「データＳｉから引用記号部分を取り除いた部分のデータ長」と「データＳｉ＋１から引用記号部分を取り除いた部分のデータ長」とを足したものが、データ長最大値ＭＡＸの近似範囲に入っているか否かである。この２つの判定条件を満たした場合、文書解析装置は、ｉ行目の改行データは自動改行データであるとみなし、改行データの削除・整形を行う。以上の処理を各行に対して行っていき、メール本文の最終行まで処理を行ったら、一行目に戻って同様の処理をｎ回繰り返す。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平１１−１８４７７５号公報
【特許文献２】特開２０１１−１５９３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
上述した特許文献２の文書解析装置では、ｉ行目のデータＳｉのデータ長がデータ長最大値ＭＡＸの近似範囲に入っていることが、ｉ行目の改行データを自動改行データとして判定するための前提条件になっている。つまり、データ長最大値ＭＡＸの近似範囲に入らないようなデータ長の小さい行における自動改行データは意図的改行データと誤判定されるため、引用階層ずれの整形が十分に行われない場合があるという問題点があった。
【００１７】
また、データＳｉのデータ長がデータ長最大値ＭＡＸの近似範囲に含まれていて、かつ、ｉ行目に意図的な改行が行われ、ｉ＋１行目に空行や短い返信文が挿入された場合、ｉ行目の改行データが自動改行データと誤判定されてしまう。そうなると、誤った引用階層ずれの整形が行われるため、メールの判読性が大きく低下したり、内容が意味不明になったりするという問題点があった。
【００１８】
また、メールのやりとりが繰り返される過程において、複数種類のメールソフトを経由したメールを処理する可能性がある。メールソフトの自動改行機能の有無、自動改行するデータ長はメールソフト毎に様々であるため、仮に特許文献２の文書解析装置において近似範囲の補正値を変更しても、上述の問題には対処できない。
【００１９】
以上のように、特許文献１および２を含む関連技術では、引用階層ずれを整形したいメールの本文に注目し、各行の引用階層や文字列長、文字種別などを元に改行データの判定を行い、自動改行データと判定された場合に改行データの削除と整形を行っていた。しかしながら、いずれの方法であっても、判定条件が不十分で正しい整形ができないという問題点があった。判定条件が不十分だったのは、過去のメールのやりとりで引用階層が発生したときの状況を考慮せずに、整形したいメール本文にだけ注目して、引用階層ずれを判定しようとしたためである。
【００２０】
本発明の目的は、上述した課題を解決する文書解析装置、文書解析方法および文書解析プログラムを提供することにある。
【課題を解決するための手段】
【００２１】
本発明の文書解析装置は、表示対象文書の属性情報を基に表示対象文書によって引用される引用対象文書の本文情報を抽出する引用文書抽出手段と、表示対象文書の本文情報と引用対象文書の本文情報とを比較して表示対象文書の本文情報中の引用階層ずれを検出し、引用階層ずれが検出された場合には表示対象文書の本文情報中の引用階層ずれを整形する引用文書解析手段と、表示対象文書の属性情報と引用階層ずれを整形した本文情報とを取得し、引用階層ずれを整形した本文情報を元の表示対象文書の本文情報に反映させる文書整形手段とを備える。
【００２２】
本発明の文書解析方法においては、表示対象文書の属性情報を基に表示対象文書によって引用される引用対象文書の本文情報を抽出し、表示対象文書の本文情報と引用対象文書の本文情報とを比較して表示対象文書の本文情報中の引用階層ずれを検出し、引用階層ずれが検出された場合には表示対象文書の本文情報中の引用階層ずれを整形し、表示対象文書の属性情報と引用階層ずれを整形した本文情報とを取得し、引用階層ずれを整形した本文情報を元の表示対象文書の本文情報に反映させる。
【００２３】
本発明の文書解析プログラムは、表示対象文書の属性情報を基に表示対象文書によって引用される引用対象文書の本文情報を抽出する処理と、表示対象文書の本文情報と引用対象文書の本文情報とを比較して表示対象文書の本文情報中の引用階層ずれを検出し、引用階層ずれが検出された場合には表示対象文書の本文情報中の引用階層ずれを整形する処理と、表示対象文書の属性情報と引用階層ずれを整形した本文情報とを取得し、引用階層ずれを整形した本文情報を元の表示対象文書の本文情報に反映させる処理とをコンピュータに実行させる。
【発明の効果】
【００２４】
本発明の文書解析装置、文書解析方法および文書解析プログラムによれば、引用文を含む文書に発生する引用階層ずれを高い精度で整形することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態に係る文書解析装置の機能構成を示すブロック図である。
【図２】本発明の実施形態に係る文書解析装置のメール整形処理部によるメール整形処理に関するフローチャートである。
【図３】本発明の実施形態に係る文書解析装置のメール整形処理部によるメール整形処理に含まれる引用階層ずれ判定処理に関するフローチャートの一部である。
【図４】本発明の実施形態に係る文書解析装置のメール整形処理部によるメール整形処理に含まれる引用階層ずれ判定処理に関するフローチャートの一部である。
【図５】本発明の実施形態に係る文書解析装置で処理するメール文中における前方一致の例を示す図である。
【図６】本発明の実施形態に係る文書解析装置で処理するメール文中における部分一致の例を示す図である。
【図７】本発明の実施形態に係る文書解析装置を実現するためのハードウェア構成の一例を示す機能ブロック図である。
【図８】引用階層ずれが発生したメール文の一例である。
【図９】引用階層ずれを解消させたメール文の一例である。
【図１０】引用階層ずれを解消させた後に引用記号を整えたメール文の一例である。
【図１１】複合的引用階層ずれが発生したメール文の一例である。
【図１２】複合的引用階層ずれを解消させたメール文の一例である。
【図１３】複合的引用階層ずれを解消させた後に引用記号を整えたメール文の一例である。
【図１４】引用階層ずれが発生していないメール文の一例である。
【図１５】引用階層ずれを解消させたメール文の一例である。
【図１６】実施例における最も古いメール（ｍａｉｌ（３））の一例である。
【図１７】実施例における２番目に古いメール（ｍａｉｌ（２））の一例である。
【図１８】実施例における最新メール（ｍａｉｌ（１））の一例である。
【図１９】実施例において最新メール（ｍａｉｌ（１））を管理する縮小管理テーブルの一例である。
【図２０】実施例１において引用メールの文面を縮小表示した一例である。
【図２１】実施例１において引用メールの縮小表示された文面のうち一つを展開した一例である。
【図２２】一般的な電子メールの返信文の作成例である。
【図２３】一般的な電子メールの返信文の作成例である。
【図２４】一般的な電子メールの返信文の作成例である。
【図２５】一般的な電子メールにおいて起こる引用階層ずれの発生例である。
【図２６】一般的な電子メールにおいて起こる複合的引用階層ずれの発生例である。
【発明を実施するための形態】
【００２６】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態および実施例を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【００２７】
以下の実施形態および実施例においては、電子メールを特定の文書として説明しているが、本発明で対象とする特定の文書は電子メールに限定されない。本発明で対象とする特定の文書とは、本文に含有される引用文に何らかの引用記号を付加し、その引用記号によって引用文を判別できる形式を含む文書であればよい。
【００２８】
また、以下の実施形態および実施例において、改行データとは、メールデータ中に付与される改行位置を示すデータであって、引用記号が挿入される位置の基準となる。改行データは、通常はメール本文を表示した際に記号として表示されるものではないが、設定によっては何らかの記号として表示することもできる。
【００２９】
（構成）
まず、本発明の実施形態の構成について図面を参照して詳細に説明する。図１は、本実施形態に係る文書解析装置１の機能構成を示すブロック図である。
【００３０】
文書解析装置１は、メール抽出部１０、メール保存部２０、メール整形処理部３０、メール表示用整形部４０、メール表示部５０を備える。メール整形処理部３０は、引用メール抽出部３１、引用メール解析部３２、メール整形部３３を含む。
【００３１】
メール抽出部１０は、任意のメールを画面に表示する指示を受け、メール保存部２０に格納されている最新メール（表示対象メール）のヘッダー情報（属性情報）と本文情報とを抽出するメール抽出手段である。メール抽出部１０は、例えば、ユーザーインターフェース上の入力手段等を介して、特定のメールを画面に表示させる指示を受ける。なお、メール抽出手段は、メールを含む任意の文書を抽出する文書抽出手段の下位概念である。
【００３２】
なお、最新メールとは、表示部（図示しない）に表示しようとする表示対象メールが引用する引用メールに対して最新であることを意味する。そして、その最新メールを含む一連のメールのやり取りの中で、最新メールが引用する過去のメールを表示対象メールとするときは、その過去のメールがそれ以前の引用メールに対する最新メール（表示対象メール）として処理されることになる。
【００３３】
メール保存部２０は、過去に送受信されたメールを保存する文書保存手段である。メール保存部２０には、過去に送受信されたメールが全て格納されており、指定された条件のもとで条件に合致するメールを高速に検索でき、かつ、それらのメールに対する各種処理も高速に行えるビッグデータ環境を想定している。なお、メール保存手段は、メールを含む任意の文書を保存する文書保存手段の下位概念である。
【００３４】
メール保存部２０には様々な形態が考えられる。例えば、ハードディスクなどの補助記憶装置、磁気ディスクや光ディスクなどの記録媒体などのローカルディスクで構成してもよいし、ネットワーク上のネットワークストレージで構成してもよい。また、ローカルディスクやネットワークストレージを複合した記憶装置で構成してもよい。
【００３５】
メール整形処理部３０は、メール抽出部１０で得られた最新メールのヘッダー情報と本文情報を元に、最新メールの判読性を向上するための一連の処理を行う文書整形処理手段である。メール整形処理部３０における処理は、引用メール抽出部３１、引用メール解析部３２、メール整形部３３によって実行される。なお、メール整形処理手段は、メールを含む任意の文書を整形処理する文書整形処理手段の下位概念である。
【００３６】
引用メール抽出部３１は、メール抽出部１０で得られた最新メール（表示対象文書）のヘッダー情報（属性情報）を元に、過去の全ての引用メールの本文情報（文書情報）を、メール保存部２０から抽出する引用メール抽出手段である。ここで、引用メールとは、引用メール抽出部３１によって抽出された、最新メールに引用されているメールである。引用メール抽出部３１は、最新メールに至るまでにやりとりされてきた過去の全ての引用メールの本文情報（文書情報）を、時系列順に抽出する。なお、引用メール抽出手段は、メールを含む任意の引用文書を抽出する引用文書抽出手段の下位概念である。
【００３７】
引用メール抽出部３１は、最新メールに引用された全ての引用メールを抽出することが望ましい。しかしながら、既に削除されているなどの理由によってメール保存部２０から抽出できない引用メールがあったとしても、本実施形態に係る文書解析装置１によれば、抽出された範囲内で最大限有効な引用階層ずれの整形を行うことができる。
【００３８】
引用メール解析部３２は、「最新メールの本文情報」をメール抽出部１０から受け取り、「抽出できた全ての引用メールの本文情報」を引用メール抽出部３１から受け取る。そして、引用メール解析部３２は、受け取ったメール本文中で引用階層ずれが発生している部分の判定と整形を行う引用メール解析手段である。
【００３９】
引用メール解析部３２は、まず、受け取ったメールの中から最も古いメールと二番目に古いメールの本文の文字列を行単位で比較し、二番目に古いメール上に発生している引用階層ずれを検出する。引用階層ずれを検出されたら、次に、メール整形部３３は、二番目に古いメール上でその整形を行う。次に、整形を行った二番目に古いメールと三番目に古いメールの本文の文字列を比較し、同様の検出と整形を行う。この一連の処理を、最新メールでの検出と整形を行うまで繰り返す。
【００４０】
メール整形部３３は、最新メールのヘッダー情報をメール抽出部１０から取得し、整形後の最新メールの本文情報を引用メール解析部３２から取得し、メール保存部２０に格納されている実際の最新メールに整形後の本文情報を反映するメール整形手段である。
【００４１】
メール表示用整形部４０は、最新メールのヘッダー情報と、整形済みの最新メールの本文情報を基に、メール表示用のレイアウトを行い、そのレイアウト結果をメール表示部５０に渡すメール表示用整形手段である。
【００４２】
メール表示部５０は、メール表示用整形部４０によってレイアウトされたレイアウト結果を基に、メールを表示装置（図示しない）に出力して表示させるメール表示手段である。
【００４３】
以上が、本実施形態に係る文書解析装置１の構成に関する説明である。
【００４４】
（動作）
次に、図２〜図４のフローチャートを用いて、本発明の実施形態に係る文書解析装置１の動作（文書解析方法）について詳細に説明する。
【００４５】
図２は、本実施形態に係る文書解析装置１のメール整形処理部３０によって実行される処理の概要を示したフローチャートである。
【００４６】
まず、図２において、引用メール抽出部３１は、メール抽出部１０によって取得された最新メールのヘッダー情報を参照し、最新メールに至るまでにやりとりされてきた全ての引用メールの本文情報をメール保存部２０から抽出する（ステップＳ１）。引用メール抽出部３１は、ヘッダーに記録されている引用メールのＭｅｓｓａｇｅ−ＩＤを用いることによって全ての引用メールを抽出することができる（ＩＤ：Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）。
【００４７】
次に、引用メール抽出部３１は、各メールの本文情報に呼称を設定する（ステップＳ２）。具体的には、引用メール抽出部３１は、最新メールの本文情報についてはｍａｉｌ（１）と設定し、引用メールの本文情報についてはメールの作成順番が新しい順にｍａｉｌ（２）、ｍａｉｌ（３）、・・・、ｍａｉｌ（Ｎ）と設定する。すなわち、引用メールに関しては、括弧内の引数が大きいほど古いメールとなる。
【００４８】
ここで、ループ変数ｉの初期値としてＮを格納する（ステップＳ３）。
【００４９】
次に、ループ変数ｉにＮが格納されていることを受け、引用メール解析部３２は、ｍａｉｌ（Ｎ）とｍａｉｌ（Ｎ−１）とを比較し、ｍａｉｌ（Ｎ−１）上に発生した引用階層ずれの発生箇所を判定する引用階層ずれ判定処理を実行する（ステップＳ４）。
【００５０】
次に、ステップＳ４の引用階層ずれ判定処理において得られた情報を元に、引用メール解析部３２は、ｍａｉｌ（Ｎ−１）の引用階層ずれを整形する（ステップＳ５）。
【００５１】
次に、ループ変数ｉを１減じる（ステップＳ６）。
【００５２】
ここで、ｉが１でなければ（ステップＳ７でＮｏ）、ステップＳ４に戻る。そして、引用メール解析部３２は、ｍａｉｌ（Ｎ−１）とｍａｉｌ（Ｎ−２）を比較してｍａｉｌ（Ｎ−２）上に発生した引用階層ずれの発生箇所の判定し（ステップＳ４）、ｍａｉｌ（Ｎ−２）の整形を行う（ステップＳ５）。引用メール解析部３２は、以上のステップＳ３〜Ｓ７の処理をｉが１になるまで繰り返す。
【００５３】
以上のように、メールの本文情報中に引用階層ずれの発生を検出したら、検出したメール上ですぐに引用階層ずれを整形し、以降の判定処理ではこの整形後の本文情報を使用する。そのため、引用階層ずれが複雑化する前に、メールの本文情報を整形することが可能になる。そして、最終的には、最新メールｍａｉｌ（１）上の引用階層ずれも高い精度で整形できるようになる。
【００５４】
最新メールに対応するｍａｉｌ（１）の整形が完了し、ステップＳ７でループ変数ｉは１になる（ステップＳ７でＹｅｓ）。
【００５５】
ステップＳ７でループ変数ｉが１になると（ステップＳ７でＹｅｓ）、最後に、メール整形部３３は、ｍａｉｌ（１）の整形済み本文情報を、メール保存部２０に存在する実際の指定メール上に反映する（ステップＳ８）。
【００５６】
以上が、本実施形態に係る文書解析装置１によって実行される処理の概要に関する説明である。
【００５７】
（引用階層ずれ判定処理）
次に、図３および図４を用いて、図２のステップＳ４の引用階層ずれ判定処理の詳細について説明する。引用階層ずれ判定処理では、ｍａｉｌ（ｉ）とｍａｉｌ（ｉ−１）の本文を行単位で比較することによって、ｍａｉｌ（ｉ−１）の各行の改行データが、引用階層ずれを発生させる自動改行データか、それ以外の改行データかを判定する。
【００５８】
まず、図３のフローチャートにおいて、ｍａｉｌ（ｉ−１）の各行を確認するためのループ変数ｊに初期値１を代入する（ステップＳ４１１）。
【００５９】
図３および図４のフローチャートの処理においては、ｊの値を１ずつ増じていくことによって、ｍａｉｌ（ｉ−１）の１行目から最終行の一つ手前の行（最終行−１行目）までの判定を行っていく。なお、最終行の判定を行わないのは、最終行に自動改行データは存在し得ないからである。
【００６０】
ここで、引用メール解析部３２は、ｍａｉｌ（ｉ−１）のｊ行目の引用階層が１以上であるか否かを判定する（ステップＳ４１２）。
【００６１】
ｍａｉｌ（ｉ−１）のｊ行目の引用階層が１以上である場合（ステップＳ４１２でＹｅｓ）、引用メール解析部３２は、ｍａｉｌ（ｉ−１）のｊ行目の引用階層をｑに設定する（ステップＳ４１３）。
【００６２】
次に、引用メール解析部３２は、ｍａｉｌ（ｉ−１）のｊ＋１行目の引用階層がｑ未満であるか否かを判定する（ステップＳ４１４）。
【００６３】
ｍａｉｌ（ｉ−１）のｊ＋１行目の引用階層がｑ未満である場合（ステップＳ４１４でＹｅｓ）、引用メール解析部３２は、ｍａｉｌ（ｉ−１）のｊ行目に、引用記号と改行データ以外のデータが存在するか否かを判定する（ステップＳ４１５）。
【００６４】
ｍａｉｌ（ｉ−１）のｊ行目に、引用記号と改行データ以外のデータが存在する場合（ステップＳ４１５でＹｅｓ）、図４のステップＳ４１８に進む（図４のＡ）。
【００６５】
ところで、ステップＳ４１２、ステップＳ４１４およびステップＳ４１５のいずれかにおいて判定がＮｏであった場合、ｊの値を１増じる（ステップＳ４１６）。
【００６６】
そして、ｊの値がｍａｉｌ（ｉ−１）の行数と等しくなければ（ステップＳ４１７でＮｏ）、ステップＳ４１２に戻って次の行の判定に進む。一方、ｊの値がｍａｉｌ（ｉ−１）の行数と等しければ（ステップＳ４１７でＹｅｓ）、図３のフローを終了とする。ここで、後述する図４のフローチャートを経て削除予約された改行データと引用記号が見つかった場合は、図２のステップＳ５において引用階層ずれを整形することになる。
【００６７】
このように、ｊループの最初のステップＳ４１２〜Ｓ４１５では、ｍａｉｌ（ｉ−１）の各行の改行データが、引用階層ずれを発生させる自動改行データの前提条件を満たすかどうかを判定する。ステップＳ４１２〜Ｓ４１５の条件をどれか一つでも満たさない場合は、その行の判定を終了し、ｊを１増じてｍａｉｌ（ｉ−１）の次の行の判定に移ることになる。
【００６８】
続いて、図３のステップＳ４１２〜Ｓ４１５の条件を全て満たした場合について、図４のステップＳ４１８に進んで説明する。
【００６９】
図３のステップＳ４１５でＹｅｓであった場合、ｍａｉｌ（ｉ）の各行を確認するためのループ変数ｋに初期値１を代入する（図４のステップＳ４１８）。
【００７０】
図４のフローチャートの処理においては、ｋの値を１ずつ増じていくことによって、ｍａｉｌ（ｉ−１）のｊ行目の文字列と、ｍａｉｌ（ｉ）の各行の文字列とを比較・判定していく（ステップＳ４１９〜Ｓ４２９）。
【００７１】
次に、ｋループの最初の処理として、引用メール解析部３２は、ｍａｉｌ（ｉ−１）のｊ行目から行頭の引用記号群を削除した文字列を文字列Ａ（第１の文字列）に設定する。そして、引用メール解析部３２は、ｍａｉｌ（ｉ）のｋ行目から行頭の引用記号群を削除した文字列を文字列Ｂ（第２の文字列）に設定する（ステップＳ４１９）。なお、行頭に引用記号が存在しない場合は、その行の文字列がそのまま文字列Ａや文字列Ｂになる。また、メールのやりとりが続いて行頭に複数の引用記号が存在する場合は、それらの引用記号を全て削除したものが文字列Ａや文字列Ｂになる。
【００７２】
次に、引用メール解析部３２は、文字列Ｂの前半に文字列Ａが含まれるかどうか（前方一致するかどうか）を判定する（ステップＳ４２０）。
【００７３】
ここで、ステップＳ４２０における前方一致の判定について、図５および図６の例で説明する。図５において、文字列Ａ「従来は紙でお知らせしていた中古市場価」は、文字列Ｂ「従来は紙でお知らせしていた中古市場価格レポートですが、」の前半部分に含まれる（前方一致する）。それに対し、図６の例では、文字列Ａ「紙でお知らせしていた中古市場価」は、文字列Ｂ「従来は紙でお知らせしていた中古市場価格レポートですが、」に含まれるものの、文字列Ｂの前半部分に含まれているわけではない（前方一致しない）。すなわち、ステップＳ４２０について、図５の例は前方一致の条件を満たすが、図６の例では前方一致の条件を満たさないことになる。
【００７４】
さて、文字列Ｂの前半に文字列Ａが含まれない場合（ステップＳ４２０でＮｏ）、文字列Ｂの行（ｍａｉｌ（ｉ）のｋ行目）に自動改行データが挿入されて、文字列Ａの行（ｍａｉｌ（ｉ−１）のｊ行目）になった可能性は無い。この場合、ｋを１増じる（ステップＳ４２２）。
【００７５】
そして、ｋがｍａｉｌ（ｉ−１）の行数よりも大きくない場合は（ステップＳ４２３でＮｏ）、ｍａｉｌ（ｉ）の次の行の確認に移る（ステップＳ４１９に戻る）。一方、ｋがｍａｉｌ（ｉ−１）の行数よりも大きい場合は（ステップＳ４２３でＹｅｓ）、ｍａｉｌ（ｉ）の全行を確認したことになるため、図３のステップＳ４１６に戻り、ｍａｉｌ（ｉ−１）の次の行の確認に進む（図３のＢ）
一方、文字列Ｂの前半に文字列Ａが含まれる場合は（ステップＳ４２０でＹｅｓ）、文字列Ｂの行（ｍａｉｌ（ｉ）のｋ行目）に自動改行データが挿入されて、文字列Ａの行（ｍａｉｌ（ｉ−１）のｊ行目）になった可能性が考えられる。そこで、ステップＳ４２０でＹｅｓである場合、ステップＳ４２１〜Ｓ４２７において、ｍａｉｌ（ｉ−１）のｊ＋１行目以降の複数の行が、ｍａｉｌ（ｉ）のｋ行目に自動改行データが挿入されることによって作られた行であるかどうかを判定する。
【００７６】
まず、引用メール解析部３２は、文字列Ｂから文字列Ａを削除した文字列を新たな文字列Ｂとする（ステップＳ４２１）。図５の例では、「格レポートですが、」が新たな文字列Ｂ（以下、文字列Ｂと記載）となる。
【００７７】
次に、引用メール解析部３２は、文字列Ｂに改行データ以外のデータが無いかどうかを判定する（ステップＳ４２４）。
【００７８】
文字列Ｂに改行データ以外のデータがある場合（ステップＳ４２４でＮｏ）、引用メール解析部３２は、ｍａｉｌ（ｉ−１）のｊ＋１行目の引用階層がｑ以上であるか否かを判定する（ステップＳ４２５）。なお、Ｓ４１３において、確認したｍａｉｌ（ｉ−１）のｊ行目の引用階層がｑに設定されている。
【００７９】
ここで、ｍａｉｌ（ｉ−１）のｊ＋１行目の引用階層がｑ以上でない場合（ステップＳ４２５でＮｏ）について説明する。ステップＳ４２５でＮｏである場合、引用メール解析部３２は、ｍａｉｌ（ｉ−１）のｊ＋１行目の文字列から引用記号を削除した文字列を新たな文字列Ａ（以下、文字列Ａと記載）とする（ステップＳ４２６）。
【００８０】
次に、引用メール解析部３２は、文字列Ｂの前半に文字列Ａが含まれるか否か（前方一致するか否か）を判定する（ステップＳ４２７）。
【００８１】
ここで、文字列Ｂの前半に文字列Ａが含まれる場合（ステップＳ４２７でＹｅｓ）、ｍａｉｌ（ｉ−１）のｊ行目の改行データは引用階層ずれを発生させる自動改行データと考えられる。そのため、引用メール解析部３２は、ｍａｉｌ（ｉ−１）のｊ行目の改行データと、ｍａｉｌ（ｉ−１）のｊ＋１行目のデータの行頭の引用記号群との削除予約を行う（ステップＳ４２８）。
【００８２】
ステップＳ４２８で削除予約されると、ｊを１増じ（ステップＳ４２９）、ステップＳ４２１に戻る。以降、条件を満たす限り、ステップＳ４２１、Ｓ４２４〜Ｓ４２９の処理を繰り返す。処理が繰り返されるのは、ｍａｉｌ（ｉ）のｋ行目のデータが自動改行によってｍａｉｌ（ｉ−１）上の複数行に分割されている場合である。
【００８３】
ところで、ステップＳ４２４およびＳ４２５で判定がＹｅｓであった場合、ならびにステップＳ４２７で判定がＮｏであった場合、ｍａｉｌ（ｉ−１）のｊ行目の改行データは引用階層ずれを発生させる自動改行データとは考えられない。そのため、図３のステップ４１６に進んでｊを１増じ、ｍａｉｌ（ｉ−１）の次の行の確認に進む。
【００８４】
そして、ｊの値がｍａｉｌ（ｉ−１）と等しくなければ（ステップＳ４１７でＮｏ）、ステップＳ４１２に戻って次の行の判定に進む。
【００８５】
一方、ｊの値がｍａｉｌ（ｉ−１）の行数と等しければ（ステップＳ４１７でＹｅｓ）、ステップＳ４２６において削除予約された改行データと引用記号の情報を保持した状態で図３のフローを終了とする。そして、図２のステップＳ５に進み、ｍａｉｌ（ｉ−１）上で削除予約した箇所を全て削除する。
【００８６】
以上のように、本実施形態によれば、図２〜図４に示したフローチャートの処理により、ｍａｉｌ（ｉ−１）上の引用階層ずれを整形することができる。
【００８７】
すなわち、図３および図４において、引用メール解析部３２は、最新メールと引用メールとを含む一連のメール群に対して、メールをやり取りした順番（メール交換順）が判別できるように各メールに名称を付ける。引用メール解析部３２は、最も古いメールから順番に、メール交換順が連続する２つのメール間で引用階層ずれがあるか否かを判定する引用メール階層ずれ判定処理を実行する。引用階層ずれがあった場合、引用メール解析部３２は、比較している２つのメールのうち新しい方のメールの本文情報において、引用階層ずれを整形する引用階層ずれ整形処理を実行する。引用メール解析部３２は、この引用メール階層ずれ判定処理と引用階層ずれ整形処理とを、一連のメール群に含まれる全てのメールの全ての行について実行することによって、最新メールの引用階層ずれを解消させる。
【００８８】
以上のように、本発明の実施形態の文書解析装置は、受信した電子メールの本文中から、メールソフトの機能によって自動的に挿入された自動改行データを検出する。そして、自動改行データが検出された場合は、その改行データの削除とそれに伴う整形処理を行う手段を用意する。その結果、メールの判読性を高め、利用者の使いやすさを向上させるシステムが提供される。
【００８９】
ここで、本実施形態の文書解析装置による文書解析方法の特徴について簡単にまとめる。
【００９０】
本実施形態の文書解析方法では、引用階層ずれを判定するときに、引用階層ずれを整形したいメール（最新メール）だけでなく、その最新メールに至るまでにやりとりされてきた全ての過去メール（引用メール）の状態も考慮に入れるように処理する。
【００９１】
まず、これらのメールの中から最も古いメールと二番目に古いメールの本文の文字列を行単位で比較し、二番目に古いメール上に発生している引用階層ずれを検出する。引用階層ずれを検出したら、二番目に古いメール上でその整形を行う。次に、整形を行った二番目に古いメールと三番目に古いメールの本文の文字列を比較し、同様の検出と整形を行う。これを最新メールでの検出と整形を行うまで繰り返す。
【００９２】
このように、引用階層ずれの発生を検出したら、検出したメール上ですぐに引用階層ずれを整形し、以降の判定処理ではその整形済みの情報を使うため、引用階層ずれが複雑化する前に引用階層ずれを整形することが可能になる。その結果、最新メール上に存在する引用階層ずれを高い精度で整形できるようになる。
【００９３】
関連技術においては、メール作成者の意図した改行データを自動改行データとして誤判定することによって誤った引用階層ずれの整形を行い、メールの判読性が大きく低下したり、内容が意味不明になったりする問題が発生していた。
【００９４】
それに対し、本実施形態においては、メール作成者の意図した改行データを自動改行データとして誤判定することはなく、正しい判定がなされる。なぜならば、本実施形態においては、最新メールだけでなく、その最新メールに至るまでにやりとりされてきた全ての引用メールの状態も考慮し引用階層ずれを判定するためである。
【００９５】
また、関連技術においては、自動改行データをメール作成者の意図した改行データと誤判定することによって引用階層ずれが十分に整形されず、判読性が高くならない問題が発生していた。
【００９６】
それに対し、本実施形態においては、自動改行データをメール作成者の意図した改行データと誤判定することはなく、正しい判定がなされる。なぜならば、本実施形態においては、最新メールだけではなく、その最新メールに至るまでにやりとりされてきた全ての引用メールの状態も考慮し引用階層ずれを判定するためである。
【００９７】
また、本実施形態においては、万一、削除された等の理由で抽出できない引用メールがあったとしても、抽出できた範囲で最大限効果的な引用階層ずれの整形が行える。なぜならば、本実施形態においては、抽出できたいずれかの引用メール中に、整形したい引用階層ずれが発生する前（自動改行データ挿入前）の行の状態が分かるメールが一通でも含まれていれば、問題無く引用階層ずれの整形ができる判定条件にしているからである。
【００９８】
さらに、本実施形態においては、最新メールの画面表示用のレイアウトを正しく作成できる。なぜならば、本実施形態においては、レイアウトの元になるデータとして、引用階層ずれが整形済みの最新メールの本文データを使うためである。
【００９９】
ここで、本実施形態に係る文書解析装置１を実現するためのハードウェア構成の一例を図７に示す。図７の情報処理装置１００は、プロセッサ１０１、主記憶装置１０２、補助記憶装置１０３、入力インターフェース１０４、表示制御装置１０５、リーダライタ１０６、通信インターフェース１０７を備える。これらの構成要素は、バス１０８を介してデータ授受可能に接続される。また、情報処理装置１０１には、入力装置１１４、表示装置１１５、記録媒体１１６が接続されるとともに、通信インターフェース１０７を介してネットワークと接続される。ネットワークとしては、インターネットなどの外部ネットワークであってもよいし、社内の業務システムにおけるイントラネットであってもよいし、複数の通信形態が混成されたネットワークであってもよい。情報処理装置１００は、例えば一般的なコンピュータ、携帯電話、スマートフォン、タブレットＰＣなどとして実現される（ＰＣ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）。
【０１００】
プロセッサ１０１は、補助記憶装置１０３等に格納された本実施形態に係る文書解析プログラムを主記憶装置１０２に展開し、その文書解析プログラムを実行する。なお、本実施形態に係る文書解析プログラムは、情報処理装置１００にインストールされたソフトウェアプログラムを用いる構成とすればよい。また、ネットワーク経由でアクセスできるストレージなどに格納されていたソフトウェアプログラムを文書解析プログラムとして用いる構成としてもよい。
【０１０１】
主記憶装置１０２は、例えばＤＲＡＭ等の揮発性メモリとすればよい（ＤＲＡＭ：Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）。また、ＭＲＡＭ等の不揮発性メモリを主記憶装置１０２として構成してもよい（ＭＲＡＭ：Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）。主記憶装置１０２には、本実施形態の文書解析プログラムが展開される。
【０１０２】
補助記憶装置１０３は、ハードディスク、フラッシュメモリ等のローカルディスクによって構成される。なお、補助記憶装置１０３は、情報処理装置１００に接続された外部記憶装置としてもよいし、ネットワークを経由して接続されたネットワークストレージとしてもよい。
【０１０３】
入力装置１１４は、キーボードやマウス、タッチパネルなどといった入力機器である。入力装置１１４は、メール文章の入力やメールソフトを操作するために使用される。なお、タッチパネルを入力装置１１４として用いる場合は、表示装置１１５が入力機器を兼ねる構成となる。入力インターフェース１０４は、プロセッサ１０１と入力装置１１４との間のデータ授受を仲介する。
【０１０４】
表示制御装置１０５は、表示装置１１５に接続され、表示装置１１５の表示を制御する。本実施形態においては、メール表示部５０（図１）によって、表示装置１１５の表示部にメール文等が表示される。リーダライタ１０６は、プロセッサ１０１と記録媒体１１６（プログラム記録媒体）との間のデータ授受を仲介し、記録媒体１１６からのデータ・プログラムの読み出し、情報処理装置１００の処理結果の記録媒体１１６への書き込みを実行する。通信インターフェース１０７は、ネットワーク上の情報処理装置等とプロセッサ１０１との間のデータ授受を仲介する。
【０１０５】
記録媒体１１６は、例えばＳＤカード等の半導体記録媒体などで実現できる（ＳＤ：Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）。また、記録媒体１１６は、フレキシブルディスク等の磁気記録媒体、ＣＤやＤＶＤ等の光学記録媒体によって実現してもよい（ＣＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ、ＤＶＤ：Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）。
【０１０６】
なお、図７のハードウェア構成は、本実施形態に係る文書解析装置１を実現するためハードウェア構成の一例であって、本発明の範囲を限定するものではない。また、本実施形態に係る文書解析装置の処理をコンピュータに実行させる文書解析プログラムも本発明の範囲に含まれ、その文書解析プログラムを記録したプログラム記録媒体も本発明の範囲に含まれる。
【０１０７】
本実施形態の文書解析装置１は、図７のようなハードウェア構成を備えるコンピュータや携帯電話、スマートフォンなどの情報処理装置１００のプロセッサ１０１において、本実施形態に係る文書解析プログラムを実行することによって実現される。
【０１０８】
次に、本実施形態に係る文書解析装置によるメール文書の解析・整形処理について、実施例を挙げて詳細に説明する。なお、以下の例においては、図１の文書解析装置１の構成、図３〜図５のフローチャートの手順を基に説明する。
【０１０９】
（実施例１）
図８〜図１０には、引用階層ずれが含まれるｍａｉｌ（ｉ−１）を整形した例について示す。図８のｍａｉｌ（ｉ−１）は、１行目に自動改行データが挿入されたことにより、２行目の「大丈夫ですか。」が、あたかも１行目の引用文に対する返信文のように見えてしまう引用階層ずれが発生した例である。なお、本実施例においては、改行を受けた文となる１行目の末尾に改行データが付加され、折り返された文となる２行目の先頭に引用記号が付加されるものとする。
【０１１０】
図３および図４のフローチャートに沿って、本実施形態の文書解析装置１による処理を説明する。
【０１１１】
まず、図３のステップＳ４１１においてｊ＝１とする。ｍａｉｌ（ｉ−１）の１行目の引用階層は３であるため、引用メール解析部３２は、ステップＳ４１２においてＹｅｓと判定し、ステップＳ４１３でｑを３に設定する。
【０１１２】
ｍａｉｌ（ｉ−１）の２行目の引用階層は１であり、ｑ未満（３未満）であるため、引用メール解析部３２は、ステップ４１４においてＹｅｓと判定する。
【０１１３】
次に、図４のステップ４１８においてｋは１に設定される。引用メール解析部３２は、ｍａｉｌ（ｉ−１）の１行目から３つの引用記号「＞」を削除し、「質問Ａ：前回の会議で検討したアーキテクチャの件」を文字列Ａに設定する。そして、ｍａｉｌ（ｉ）の１行目から２つの引用記号「＞」を削除し、「質問Ａ：前回の会議で検討したアーキテクチャの件大丈夫ですか。」を文字列Ｂに設定する。なお、この段階では、ｍａｉｌ（ｉ）の各行は整形済みであるため、図９に示したメール本文となっている。
【０１１４】
引用メール解析部３２は、ステップＳ４２０において、文字列Ａと文字列Ｂとが前方一致すると判定する。そして、引用メール解析部３２は、文字列Ｂから文字列Ａを削除した「大丈夫ですか。」を新たな文字列Ｂ（以下、文字列Ｂと記載）に設定する。
【０１１５】
ここで、文字列Ｂに改行データ以外のデータが含まれるため、引用メール解析部３２は、ステップＳ４２４においてＮｏと判定する。そして、ｍａｉｌ（ｉ−１）の２行目の引用回数は１であり、ｑ以上（３以上）ではないため、引用メール解析部３２は、ステップＳ４２５においてＮｏと判定する。
【０１１６】
引用メール解析部３２は、ステップＳ４２６において、ｍａｉｌ（ｉ−１）の２行目の「＞大丈夫ですか。」から引用記号を削除した「大丈夫ですか。」を新たなる文字列Ａに設定する（以下、文字列Ａと記載）。
【０１１７】
引用メール解析部３２は、文字列Ａと文字列Ｂとが前方一致すると判定し（ステップＳ４２７）、ｍａｉｌ（ｉ−１）の１行目の改行データと、２行目の引用記号とを削除予約する（ステップＳ４２８）。
【０１１８】
さらに、引用メール解析部３２は、ｍａｉｌ（ｉ）のｋ行目とｍａｉｌ（ｉ−１）のｊ行目との比較・判定を繰り返す。なお、図８の例では、１行目と２行目の間以外については引用階層ずれが存在しないため、ｍａｉｌ（ｉ−１）の引用階層ずれの削除予約としては、１行目の改行データ削除予約と、２行目の引用記号削除予約とがなされる。
【０１１９】
以上の削除予約を受けて、引用メール解析部３２は、図１０に示すようにｍａｉｌ（ｉ−１）の引用解消ずれを整形する。
【０１２０】
以上のように、図８のようなｍａｉｌ（ｉ−１）の引用階層ずれは解消される。
【０１２１】
（実施例２）
次に、図１１〜図１３を用いて、複雑化した引用階層ずれが解消される例を実施例２として説明する。実施例２は、過去のメールのやりとりにおいて、１行目の「・評価の階層見直しを・・・（中略）・・・多重障害レベルで）」という行に複数回自動改行データが挿入されたことにより発生した階段状の引用階層ずれ（複合的引用階層ずれ）を解消する例である。複合的引用階層ずれが発生すると、図１１のように判読性が大きく低下することになる。なお、本実施例においては、改行を受けた文となる１〜３行目の末尾に改行データが付加され、折り返された文となる２〜４行目の先頭に引用記号が付加されるものとする。
【０１２２】
実施例１と同様に、図３および図４のフローチャートに沿って、本実施形態の文書解析装置１による処理を説明する。
【０１２３】
まず、図３のステップＳ４１１においてｊ＝１とする。ｍａｉｌ（ｉ−１）の１行目の引用階層は８であるため、引用メール解析部３２は、ステップＳ４１２においてＹｅｓと判定し、ステップＳ４１３でｑを８に設定する。
【０１２４】
ｍａｉｌ（ｉ−１）の２行目の引用階層は２であり、ｑ未満（８未満）であるため、引用メール解析部３２は、ステップ４１４においてＹｅｓと判定する。
【０１２５】
次に、図４のステップ４１８においてｋは１に設定される。引用メール解析部３２は、ｍａｉｌ（ｉ−１）の１行目から８つの引用記号「＞」を削除し、「・評価の階層見直しを再検討（障害Ａ、障害Ｂ、障害Ｃの多重障害」を文字列Ａに設定する。そして、ｍａｉｌ（ｉ）の１行目から７つの引用記号「＞」を削除し、「・評価の階層見直しを再検討（障害Ａ、障害Ｂ、障害Ｃの多重障害レベルで）」を文字列Ｂに設定する。なお、この段階では、ｍａｉｌ（ｉ）の各行は整形済みであるため、図１２に示したメール本文となっている。
【０１２６】
引用メール解析部３２は、ステップＳ４２０において、文字列Ａと文字列Ｂとが前方一致すると判定する。そして、引用メール解析部３２は、文字列Ｂから文字列Ａを削除した「レベルで）」を新たな文字列Ｂ（以下、文字列Ｂと記載）に設定する。
【０１２７】
ここで、文字列Ｂに改行データ以外のデータが含まれるため、引用メール解析部３２は、ステップＳ４２４においてＮｏと判定する。そして、ｍａｉｌ（ｉ−１）の２行目の引用回数は１であり、ｑ以上（８以上）ではないため、引用メール解析部３２は、ステップＳ４２５においてＮｏと判定する。
【０１２８】
引用メール解析部３２は、ステップＳ４２６において、ｍａｉｌ（ｉ−１）の２行目の「＞＞レ」から引用記号「＞」を削除した「レ」を新たなる文字列Ａ（以下、文字列Ａと記載）に設定する。
【０１２９】
引用メール解析部３２は、文字列Ａと文字列Ｂとが前方一致すると判定し（ステップＳ４２７）、ｍａｉｌ（ｉ−１）の１行目の改行データと、２行目の引用記号とを削除予約する（ステップＳ４２８）。
【０１３０】
ここで、ｊを１増じて２に設定し（ステップＳ４２９）、ステップＳ４２１に戻ると、引用メール解析部３２は、文字列Ｂから文字列Ａを削除した「ベルで）」を新たなる文字列Ｂ（以下、文字列Ｂと記載）に設定する。引用メール解析部３２は、ステップＳ４２４とＳ４２５ではＮｏと判定し、ｍａｉｌ（ｉ−１）の３行目の「＞＞＞ベ」から引用記号「＞」を削除した「ベ」を新たなる文字列Ａ（以下、文字列Ａと記載）に設定する。
【０１３１】
引用メール解析部３２は、文字列Ａと文字列Ｂとが前方一致すると判定し（ステップＳ４２７）、ｍａｉｌ（ｉ−１）の２行目の改行データと、３行目の引用記号とを削除予約する（ステップＳ４２８）。
【０１３２】
ここで、ｊを１増じて３に設定し（ステップＳ４２９）、ステップＳ４２１に戻ると、引用メール解析部３２は、文字列Ｂから文字列Ａを削除した「ルで）」を新たなる文字列Ｂ（以下、文字列Ｂと記載）に設定する。引用メール解析部３２は、ステップＳ４２４とＳ４２５ではＮｏと判定し、ｍａｉｌ（ｉ−１）の３行目の「＞＞＞＞ルで）」から引用記号「＞」を削除した「ルで）」を新たなる文字列Ａ（以下、文字列Ａと記載）に設定する。
【０１３３】
引用メール解析部３２は、文字列Ａと文字列Ｂとが前方一致すると判定し（ステップＳ４２７）、ｍａｉｌ（ｉ−１）の３行目の改行データと、４行目の引用記号とを削除予約する（ステップＳ４２８）。
【０１３４】
さらに、引用メール解析部３２は、ｍａｉｌ（ｉ）のｋ行目とｍａｉｌ（ｉ−１）のｊ行目との比較・判定を繰り返す。なお、図１１の例では、１〜４行目の間以外については引用階層ずれが存在しないため、ｍａｉｌ（ｉ−１）の引用階層ずれの削除予約としては、１〜３行目の改行データ削除予約と、２〜４行目の引用記号削除予約とがなされる。
【０１３５】
以上の削除予約を受けて、引用メール解析部３２は、図１３に示すようにｍａｉｌ（ｉ−１）の引用解消ずれを整形する。
【０１３６】
以上のように、実施例１と同様に、図１１のようなｍａｉｌ（ｉ−１）の複合的引用階層ずれも解消される。
【０１３７】
さて、引用メール抽出部３１が最新メールに関連する全ての引用メールを抽出できたと仮定すると、最も古い引用メールｍａｉｌ（Ｎ）には引用階層ずれが存在しない。このとき、ｍａｉｌ（Ｎ−１）に引用階層ずれが発生していたとすると、その引用階層ずれはｍａｉｌ（Ｎ）を送信したタイミングにおいて、メールソフトが挿入した改行データによって発生したものである。このｍａｉｌ（Ｎ−１）に発生した引用階層ずれは、ｍａｉｌ（Ｎ）側から改行データ挿入前の行の状態を参照できる。そのため、本発明の実施形態および実施例の判定・整形処理によって、ｍａｉｌ（Ｎ−１）上に存在する全ての引用階層ずれを解消可能である。本発明の実施形態および実施例の判定・整形処理を繰り返すことによって、最終的に、最新メール上の全ての引用階層を解消可能である。なお、メールが削除された等の理由で抽出できない引用メールがあったとしても、抽出できたいずれかの引用メール中に、自動改行データが挿入される前の行の状態が分かるメールが含まれていれば、問題無く、最新メールの引用階層ずれを整形可能である。
【０１３８】
ここで、整形されたメールをレイアウトする例について、実施例３および４を挙げて説明する。メールのレイアウトは、メール表示用整形部４０によって実行される。メール表示用整形部４０は、整形済みの最新メールの本文情報を元に、メール表示用のレイアウトを行い、結果をメール表示部５０に渡す。メール表示部５０は、メール表示用整形部４０から取得したメールの内容を何らかの画面に表示する。
【０１３９】
レイアウト方法に関しては様々な実装が考えられるが、最新メールの引用階層ずれはメール整形部３３によって整形済みのため、どのようにレイアウト方法を実装したとしても、関連技術と比べれば判読しやすいレイアウトにできることが期待される。
【０１４０】
（実施例３）
ここで、図１４と図１５を用いて、メール表示用整形部４０による表示レイアウトの一例を実施例３として示す。
【０１４１】
表示用のフォントサイズ、表示領域の大きさなどから一行に表示できる範囲は決まる。例えば、表示領域の端に到達した行は、その行の以降の文字列を次の行に折り返し表示し、画面端に到達した行の行頭の引用記号の連続数をＭとし、折り返した行の冒頭にＭ個の引用記号を付加するという方法が表示レイアウトの一例として考えられる。
【０１４２】
ある表示したいメールデータが図１４であり、これをある表示領域内に表示した例を図１５に示す。図１５においては、四角の枠が表示領域を示している。
【０１４３】
図１４のメール本文において、５行目および２５行目の「評価の階層見直しを再検・・・」と、７行目および２７行目の「議事録の承認申請を・・・」とが、図１５の表示領域の横幅に収まらない。
【０１４４】
そのため、実施例３において、メール表示用整形部４０は、図１４のメール文の５行目、７行目、２５行目、２７行目のそれぞれの行について次の行に折り返しを実行し、図１５に示したような折り返し表示を行う。図１５においては、図１４の折り返し元の行の引用階層が２であったために、折り返し先の行の冒頭にも２つの引用記号を付加している。すなわち、図１４の５行目および２５行目の末尾の「の多重障害レベルで）」という文字列は、図１５ではそれぞれ６行目および２８行目として折り返されるとともに、文頭に引用記号「＞」が２つ付加されている。同様に、図１４の７行目および２７行目の末尾の「ること。」という文字列は、図１５ではそれぞれ９行目および３１行目として折り返されるとともに、文頭に引用記号「＞」が２つ付加されている。
【０１４５】
以上のように、実施例３においては、ある行において表示領域からはみ出る文字列の末尾を折り返し、折り返された行の文頭の引用記号の数と同じ数の引用記号を折り返された文字列の文頭に付加する。
【０１４６】
すなわち、実施例３において、メール表示用整形部４０は、最新メール（表示対象メール）に含まれるある行（第１の行）が表示画面の表示領域からはみ出る場合、表示領域からはみ出る部分を第１の行とは異なる別の行（第２の行）に改行する。そして、メール表示用整形部４０は、第１の行に付された引用記号を第２の行に付加する。
【０１４７】
その結果、メールの表示領域の制限を受けて、メール本文のある行が意図しない箇所で折り返さざるを得ない場合であっても、引用階層ずれ状態になることはない。そのため、メール本文の判読性を低下させずに引用階層ずれを解消することが可能となる。
【０１４８】
（実施例４）
次に、メール表示用整形部４０による「縮小表示レイアウト」の作成方法例を実施例４として説明する。実施例４として示した縮小表示レイアウトでは、メール整形処理部３０によって作成された縮小管理テーブルによって引用メールの本文情報を管理する。
【０１４９】
引用メール解析部３２の処理を終えた段階で、引用階層ずれが整形されたメール群ｍａｉｌ（１）、ｍａｉｌ（２）・・・ｍａｉｌ（Ｎ）が得られる。実施例４において、メール整形処理部３０は、これらのメール群から最新メールｍａｉｌ（１）の縮小表示のために必要な情報を抽出して縮小管理テーブルを作成する。そして、メール整形処理部３０は、最新メールのヘッダー情報と、整形済みの最新メールの本文情報とをメール表示用整形部４０に渡すときに、縮小管理テーブルも合わせて渡す。メール表示用整形部４０は、縮小管理テーブルを参照することによって、メール表示用整形部４０は縮小表示レイアウトを作成する。
【０１５０】
メール整形処理部３０は、引用階層ずれが整形済みの一連のメール群ｍａｉｌ（１）・・・ｍａｉｌ（Ｎ）から、ｍａｉｌ（１）の縮小管理テーブルを作成する。まず、メール整形処理部３０は、ｍａｉｌ（１）内に、ｍａｉｌ（２）・・・ｍａｉｌ（Ｎ）の文字列が含まれているかどうかを判定する。このとき、メール整形処理部３０は、各行頭の引用記号群は無いものとして判定する。ｍａｉｌ（１）に含まれている部分をもつメールは、便宜上、その部分を含有部と呼称する。含有部が存在した場合、メール整形処理部３０は、ｍａｉｌ（１）中における含有部の開始行数、含有部の終了行数、含有部の最低引用階層、含有部の引用元となるメールの等情報を縮小管理テーブルに記録する。
【０１５１】
ここで、図１６〜図２１を用いて、実施例４の具体例について説明する。
【０１５２】
図１６〜図１８はメールのやりとりの例である。図１６のメールに対する返信メールが図１７、図１７のメールに対する返信メールが図１８である。すなわち、図１６はｍａｉｌ（３）、図１７はｍａｉｌ（２）、図１８はｍａｉｌ（１）となる。なお、実施例４の縮小表示レイアウトを行う対象のメールは、全て引用階層ずれが解消されているものとする。
【０１５３】
まず、メール整形処理部３０は、ｍａｉｌ（１）の中にｍａｉｌ（２）が含まれるかどうかを判定する。
【０１５４】
各行頭の引用記号を考慮しない場合、図１８のｍａｉｌ（１）の９行目から３６行目に、図１７のｍａｉｌ（２）と同じ文字列が含まれている。そのため、ｍａｉｌ（２）が含有部であり、含有部の最低引用階層は１となる。
【０１５５】
同様に、メール整形処理部３０は、ｍａｉｌ（１）にｍａｉｌ（３）が含まれるかどうかを判定する。
【０１５６】
各行頭の引用記号を考慮しない場合、図１８のｍａｉｌ（１）の２５行目から３３行目に、図１７のｍａｉｌ（３）と同じ文字列が含まれている。そのため、ｍａｉｌ（３）が含有部であり、含有部の最低引用階層は２となる。
【０１５７】
実施例４において、以上のメール整形処理部３０による判定結果は、図１９に示した縮小管理テーブル４００によって管理する。縮小管理テーブル４００には、含有部開始行数、含有部終了行数、最低引用階層および含有メールが記録される。
【０１５８】
図２０は、メール表示用整形部４０によって作成された縮小表示レイアウトを、メール表示部５０によって表示させた一例である。
【０１５９】
メール表示用整形部４０は、図１９の縮小管理テーブル４００を参照する。ｍａｉｌ（２）はｍａｉｌ（１）の９行目から３６行目に含まれているので、メール表示用整形部４０は、ｍａｉｌ（１）の９行目から３６行目に文字列を表示する代わりに、縮小表示のためのボタンＧ１を表示するようにレイアウトする。メール表示用整形部４０は、ｍａｉｌ（２）の本文が含まれていることが把握できるように、ｍａｉｌ（２）の基本的なヘッダー情報（受信日時や件名、送信者、宛先など）をＧ１上に表示するようにレイアウトする。また、メール表示用整形部４０は、この含有部（ｍａｉｌ（２））の最低引用階層は１であるため、Ｇ１の左側（最新メール本文中）に引用記号を１つずつ表示するようにレイアウトする。引用記号を付加することによって、各ボタンがどの引用階層のやりとりに属するものなのかを分かりやすくする。
【０１６０】
同様に、メール表示用整形部４０は、ｍａｉｌ（３）についても縮小表示（Ｇ２）を行うようにレイアウトする。この含有部（ｍａｉｌ（３））の引用階層は２であるため、メール表示用整形部４０は、Ｇ２の左側（Ｇ１ボタン中）に引用記号を２つ表示するようにレイアウトする。
【０１６１】
実施例４のように、複数の含有部が存在する場合、縮小管理テーブル４００の開始行数と終了行数を参照すれば各含有部同士の包含関係が分かる。そのため、メール表示用整形部４０は、その包含関係を考慮して縮小表示を行うレイアウトをする。実施例４の場合、図１８のｍａｉｌ（１）において、ｍａｉｌ（２）は９行目から３６行目、ｍａｉｌ（３）は２５行目から３３行目に含有され、ｍａｉｌ（３）はｍａｉｌ（２）の一部であることが分かる。そのため、縮小表示でも、ｍａｉｌ（３）のＧ２ボタンがｍａｉｌ（２）のＧ１ボタンに含まれるように表示を行っている。
【０１６２】
図２０の縮小表示レイアウトにおいては、ボタンに対して何らかのアクション（例えばクリック操作等）が行われたときに、縮小表示を解除し、元の文字列を表示するようにする。また、再度アクションを行うことによって縮小表示に戻せるようにする。図２１には、Ｇ２に対してアクションを起こし、縮小表示を解除したときの表示例を示す。図２１は、Ｇ２ボタンの枠内に、図１６のｍａｉｌ（３）が表示される例である。
【０１６３】
縮小管理テーブル４００は、先述した通り、引用階層ずれが解消されたｍａｉｌ（１）・・・ｍａｉｌ（Ｎ）を元にして作成する必要がある。なぜならば、未整形のｍａｉｌ（１）・・・ｍａｉｌ（Ｎ）を使うと、改行データの挿入位置がメール毎に異なる可能性があるため、本来含有部として判定されるべき部分が含有部として判定されず、正しい縮小表示ができなくなる場合があるためである。つまり、本発明の実施形態・実施例の方法によってｍａｉｌ（１）・・・ｍａｉｌ（Ｎ）の引用階層ずれの整形を行うからこそ、本縮小表示が実施可能であると言える。
【０１６４】
縮小表示の方法としては、例えば、ボタンに対してアクションが起こされたときに、メール保存部２０に格納されている対応メールを別ウインドウで開くようにする実装も考えられる。これを実現するには、縮小管理テーブル４００の各行に、メール保存部２０に格納されている対応メールへのリンク情報を追加すればよい。リンク情報としては、各メールのＭｅｓｓａｇｅ−ＩＤを使う方法が考えられる。
【０１６５】
ボタンによる縮小表示を行う機能、および、利用者の必要に応じて縮小表示を解除してメールの原文を表示する機能により、メール本文中に含まれる様々な階層の引用文間の関係が把握しやすくなる。
【０１６６】
表示領域が限られた画面にメールを表示する場合、縮小表示をしないとメールが縦に長く表示されて各引用文を固まりとして把握することが難しくなる。しかしながら、本実施例に係る方法を用いれば、縮小表示をすることによって判読性の低下を防止できる。
【０１６７】
また、縮小表示部に対応するメールを別ウインドウで開く方法によれば、最新のｍａｉｌ（１）ではなく引用メールｍａｉｌ（２）・・・ｍａｉｌ（Ｎ）に対して返信をしたい場合に、それらの引用メールを個別に探すことなく返信することができるようになる。
【０１６８】
また、メールのヘッダー情報を元にして、最新メールと引用メール群とをリスト形式やツリー形式で一覧表示（スレッド表示）し、互いに関連があるメールであることを示す機能をもつメールソフトが存在する。これらのメールソフトと同様に、実施例４の縮小表示は、メール間の関連を分かりやすくすることを狙っているものの、メールのヘッダー情報だけでなく、メール本文の状態も考慮して表示レイアウトを行う。そのため、メール間の関連はより分かりやすいものになることが期待できる。
【０１６９】
実施例４によれば、縮小表示により、メール本文中に含まれる様々な階層の引用文間の関係が把握しやすくなる。特に、携帯電話、スマートフォン、タブレットＰＣなどのように表示領域が限られる画面にメールを表示するときに効果が期待できる。実施例４によれば、メールのヘッダー情報だけでなく本文情報の状態も考慮して表示を行うため、様々な階層の引用文間の関係をより把握しやすくなる。
【０１７０】
以上のように、本発明の実施形態および実施例の文書解析装置、文書解析方法および文書解析プログラムによれば、電子メールの本文に発生する引用階層ずれを高い精度で整形することが可能となる。
【０１７１】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１７２】
本発明の文書解析装置、文書解析方法および文書解析プログラムは、電子メールを扱う様々な端末上で利用可能である。また、本発明の文書解析装置、文書解析方法および文書解析プログラムは、電子メールのみならず、引用文に何らかの引用記号を付加し、その引用記号によって含有される引用文を明示するような書式を含む文書の全てを対象とすることができる。
【符号の説明】
【０１７３】
１０    メール抽出部
２０    メール保存部
３０    メール整形処理部
４０    メール表示用整形部
５０    メール表示部
３１    引用メール抽出部
３２    引用メール解析部
３３    メール整形部
１００    情報処理装置
１０１    プロセッサ
１０２    主記憶装置
１０３    補助記憶装置
１０４    入力インターフェース
１０５    表示制御装置
１０６    リーダライタ
１０７    通信インターフェース
１０８    バス
１１４    入力装置
１１５    表示装置
１１６    記録媒体
【図１】
2015106337.tif 000003
【図２】
2015106337.tif 000004
【図３】
2015106337.tif 000005
【図４】
2015106337.tif 000006
【図５】
2015106337.tif 000007
【図６】
2015106337.tif 000008
【図７】
2015106337.tif 000009
【図８】
2015106337.tif 000010
【図９】
2015106337.tif 000011
【図１０】
2015106337.tif 000012
【図１１】
2015106337.tif 000013
【図１２】
2015106337.tif 000014
【図１３】
2015106337.tif 000015
【図１４】
2015106337.tif 000016
【図１５】
2015106337.tif 000017
【図１６】
2015106337.tif 000018
【図１７】
2015106337.tif 000019
【図１８】
2015106337.tif 000020
【図１９】
2015106337.tif 000021
【図２０】
2015106337.tif 000022
【図２１】
2015106337.tif 000023
【図２２】
2015106337.tif 000024
【図２３】
2015106337.tif 000025
【図２４】
2015106337.tif 000026
【図２５】
2015106337.tif 000027
【図２６】
2015106337.tif 000028