以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態および実施例を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
以下の実施形態および実施例においては、電子メールを特定の文書として説明しているが、本発明で対象とする特定の文書は電子メールに限定されない。本発明で対象とする特定の文書とは、本文に含有される引用文に何らかの引用記号を付加し、その引用記号によって引用文を判別できる形式を含む文書であればよい。
また、以下の実施形態および実施例において、改行データとは、メールデータ中に付与される改行位置を示すデータであって、引用記号が挿入される位置の基準となる。改行データは、通常はメール本文を表示した際に記号として表示されるものではないが、設定によっては何らかの記号として表示することもできる。
(構成)
まず、本発明の実施形態の構成について図面を参照して詳細に説明する。図1は、本実施形態に係る文書解析装置1の機能構成を示すブロック図である。
文書解析装置1は、メール抽出部10、メール保存部20、メール整形処理部30、メール表示用整形部40、メール表示部50を備える。メール整形処理部30は、引用メール抽出部31、引用メール解析部32、メール整形部33を含む。
メール抽出部10は、任意のメールを画面に表示する指示を受け、メール保存部20に格納されている最新メール(表示対象メール)のヘッダー情報(属性情報)と本文情報とを抽出するメール抽出手段である。メール抽出部10は、例えば、ユーザーインターフェース上の入力手段等を介して、特定のメールを画面に表示させる指示を受ける。なお、メール抽出手段は、メールを含む任意の文書を抽出する文書抽出手段の下位概念である。
なお、最新メールとは、表示部(図示しない)に表示しようとする表示対象メールが引用する引用メールに対して最新であることを意味する。そして、その最新メールを含む一連のメールのやり取りの中で、最新メールが引用する過去のメールを表示対象メールとするときは、その過去のメールがそれ以前の引用メールに対する最新メール(表示対象メール)として処理されることになる。
メール保存部20は、過去に送受信されたメールを保存する文書保存手段である。メール保存部20には、過去に送受信されたメールが全て格納されており、指定された条件のもとで条件に合致するメールを高速に検索でき、かつ、それらのメールに対する各種処理も高速に行えるビッグデータ環境を想定している。なお、メール保存手段は、メールを含む任意の文書を保存する文書保存手段の下位概念である。
メール保存部20には様々な形態が考えられる。例えば、ハードディスクなどの補助記憶装置、磁気ディスクや光ディスクなどの記録媒体などのローカルディスクで構成してもよいし、ネットワーク上のネットワークストレージで構成してもよい。また、ローカルディスクやネットワークストレージを複合した記憶装置で構成してもよい。
メール整形処理部30は、メール抽出部10で得られた最新メールのヘッダー情報と本文情報を元に、最新メールの判読性を向上するための一連の処理を行う文書整形処理手段である。メール整形処理部30における処理は、引用メール抽出部31、引用メール解析部32、メール整形部33によって実行される。なお、メール整形処理手段は、メールを含む任意の文書を整形処理する文書整形処理手段の下位概念である。
引用メール抽出部31は、メール抽出部10で得られた最新メール(表示対象文書)のヘッダー情報(属性情報)を元に、過去の全ての引用メールの本文情報(文書情報)を、メール保存部20から抽出する引用メール抽出手段である。ここで、引用メールとは、引用メール抽出部31によって抽出された、最新メールに引用されているメールである。引用メール抽出部31は、最新メールに至るまでにやりとりされてきた過去の全ての引用メールの本文情報(文書情報)を、時系列順に抽出する。なお、引用メール抽出手段は、メールを含む任意の引用文書を抽出する引用文書抽出手段の下位概念である。
引用メール抽出部31は、最新メールに引用された全ての引用メールを抽出することが望ましい。しかしながら、既に削除されているなどの理由によってメール保存部20から抽出できない引用メールがあったとしても、本実施形態に係る文書解析装置1によれば、抽出された範囲内で最大限有効な引用階層ずれの整形を行うことができる。
引用メール解析部32は、「最新メールの本文情報」をメール抽出部10から受け取り、「抽出できた全ての引用メールの本文情報」を引用メール抽出部31から受け取る。そして、引用メール解析部32は、受け取ったメール本文中で引用階層ずれが発生している部分の判定と整形を行う引用メール解析手段である。
引用メール解析部32は、まず、受け取ったメールの中から最も古いメールと二番目に古いメールの本文の文字列を行単位で比較し、二番目に古いメール上に発生している引用階層ずれを検出する。引用階層ずれを検出されたら、次に、メール整形部33は、二番目に古いメール上でその整形を行う。次に、整形を行った二番目に古いメールと三番目に古いメールの本文の文字列を比較し、同様の検出と整形を行う。この一連の処理を、最新メールでの検出と整形を行うまで繰り返す。
メール整形部33は、最新メールのヘッダー情報をメール抽出部10から取得し、整形後の最新メールの本文情報を引用メール解析部32から取得し、メール保存部20に格納されている実際の最新メールに整形後の本文情報を反映するメール整形手段である。
メール表示用整形部40は、最新メールのヘッダー情報と、整形済みの最新メールの本文情報を基に、メール表示用のレイアウトを行い、そのレイアウト結果をメール表示部50に渡すメール表示用整形手段である。
メール表示部50は、メール表示用整形部40によってレイアウトされたレイアウト結果を基に、メールを表示装置(図示しない)に出力して表示させるメール表示手段である。
以上が、本実施形態に係る文書解析装置1の構成に関する説明である。
(動作)
次に、図2〜図4のフローチャートを用いて、本発明の実施形態に係る文書解析装置1の動作(文書解析方法)について詳細に説明する。
図2は、本実施形態に係る文書解析装置1のメール整形処理部30によって実行される処理の概要を示したフローチャートである。
まず、図2において、引用メール抽出部31は、メール抽出部10によって取得された最新メールのヘッダー情報を参照し、最新メールに至るまでにやりとりされてきた全ての引用メールの本文情報をメール保存部20から抽出する(ステップS1)。引用メール抽出部31は、ヘッダーに記録されている引用メールのMessage−IDを用いることによって全ての引用メールを抽出することができる(ID:Identification)。
次に、引用メール抽出部31は、各メールの本文情報に呼称を設定する(ステップS2)。具体的には、引用メール抽出部31は、最新メールの本文情報についてはmail(1)と設定し、引用メールの本文情報についてはメールの作成順番が新しい順にmail(2)、mail(3)、・・・、mail(N)と設定する。すなわち、引用メールに関しては、括弧内の引数が大きいほど古いメールとなる。
ここで、ループ変数iの初期値としてNを格納する(ステップS3)。
次に、ループ変数iにNが格納されていることを受け、引用メール解析部32は、mail(N)とmail(N−1)とを比較し、mail(N−1)上に発生した引用階層ずれの発生箇所を判定する引用階層ずれ判定処理を実行する(ステップS4)。
次に、ステップS4の引用階層ずれ判定処理において得られた情報を元に、引用メール解析部32は、mail(N−1)の引用階層ずれを整形する(ステップS5)。
次に、ループ変数iを1減じる(ステップS6)。
ここで、iが1でなければ(ステップS7でNo)、ステップS4に戻る。そして、引用メール解析部32は、mail(N−1)とmail(N−2)を比較してmail(N−2)上に発生した引用階層ずれの発生箇所の判定し(ステップS4)、mail(N−2)の整形を行う(ステップS5)。引用メール解析部32は、以上のステップS3〜S7の処理をiが1になるまで繰り返す。
以上のように、メールの本文情報中に引用階層ずれの発生を検出したら、検出したメール上ですぐに引用階層ずれを整形し、以降の判定処理ではこの整形後の本文情報を使用する。そのため、引用階層ずれが複雑化する前に、メールの本文情報を整形することが可能になる。そして、最終的には、最新メールmail(1)上の引用階層ずれも高い精度で整形できるようになる。
最新メールに対応するmail(1)の整形が完了し、ステップS7でループ変数iは1になる(ステップS7でYes)。
ステップS7でループ変数iが1になると(ステップS7でYes)、最後に、メール整形部33は、mail(1)の整形済み本文情報を、メール保存部20に存在する実際の指定メール上に反映する(ステップS8)。
以上が、本実施形態に係る文書解析装置1によって実行される処理の概要に関する説明である。
(引用階層ずれ判定処理)
次に、図3および図4を用いて、図2のステップS4の引用階層ずれ判定処理の詳細について説明する。引用階層ずれ判定処理では、mail(i)とmail(i−1)の本文を行単位で比較することによって、mail(i−1)の各行の改行データが、引用階層ずれを発生させる自動改行データか、それ以外の改行データかを判定する。
まず、図3のフローチャートにおいて、mail(i−1)の各行を確認するためのループ変数jに初期値1を代入する(ステップS411)。
図3および図4のフローチャートの処理においては、jの値を1ずつ増じていくことによって、mail(i−1)の1行目から最終行の一つ手前の行(最終行−1行目)までの判定を行っていく。なお、最終行の判定を行わないのは、最終行に自動改行データは存在し得ないからである。
ここで、引用メール解析部32は、mail(i−1)のj行目の引用階層が1以上であるか否かを判定する(ステップS412)。
mail(i−1)のj行目の引用階層が1以上である場合(ステップS412でYes)、引用メール解析部32は、mail(i−1)のj行目の引用階層をqに設定する(ステップS413)。
次に、引用メール解析部32は、mail(i−1)のj+1行目の引用階層がq未満であるか否かを判定する(ステップS414)。
mail(i−1)のj+1行目の引用階層がq未満である場合(ステップS414でYes)、引用メール解析部32は、mail(i−1)のj行目に、引用記号と改行データ以外のデータが存在するか否かを判定する(ステップS415)。
mail(i−1)のj行目に、引用記号と改行データ以外のデータが存在する場合(ステップS415でYes)、図4のステップS418に進む(図4のA)。
ところで、ステップS412、ステップS414およびステップS415のいずれかにおいて判定がNoであった場合、jの値を1増じる(ステップS416)。
そして、jの値がmail(i−1)の行数と等しくなければ(ステップS417でNo)、ステップS412に戻って次の行の判定に進む。一方、jの値がmail(i−1)の行数と等しければ(ステップS417でYes)、図3のフローを終了とする。ここで、後述する図4のフローチャートを経て削除予約された改行データと引用記号が見つかった場合は、図2のステップS5において引用階層ずれを整形することになる。
このように、jループの最初のステップS412〜S415では、mail(i−1)の各行の改行データが、引用階層ずれを発生させる自動改行データの前提条件を満たすかどうかを判定する。ステップS412〜S415の条件をどれか一つでも満たさない場合は、その行の判定を終了し、jを1増じてmail(i−1)の次の行の判定に移ることになる。
続いて、図3のステップS412〜S415の条件を全て満たした場合について、図4のステップS418に進んで説明する。
図3のステップS415でYesであった場合、mail(i)の各行を確認するためのループ変数kに初期値1を代入する(図4のステップS418)。
図4のフローチャートの処理においては、kの値を1ずつ増じていくことによって、mail(i−1)のj行目の文字列と、mail(i)の各行の文字列とを比較・判定していく(ステップS419〜S429)。
次に、kループの最初の処理として、引用メール解析部32は、mail(i−1)のj行目から行頭の引用記号群を削除した文字列を文字列A(第1の文字列)に設定する。そして、引用メール解析部32は、mail(i)のk行目から行頭の引用記号群を削除した文字列を文字列B(第2の文字列)に設定する(ステップS419)。なお、行頭に引用記号が存在しない場合は、その行の文字列がそのまま文字列Aや文字列Bになる。また、メールのやりとりが続いて行頭に複数の引用記号が存在する場合は、それらの引用記号を全て削除したものが文字列Aや文字列Bになる。
次に、引用メール解析部32は、文字列Bの前半に文字列Aが含まれるかどうか(前方一致するかどうか)を判定する(ステップS420)。
ここで、ステップS420における前方一致の判定について、図5および図6の例で説明する。図5において、文字列A「従来は紙でお知らせしていた中古市場価」は、文字列B「従来は紙でお知らせしていた中古市場価格レポートですが、」の前半部分に含まれる(前方一致する)。それに対し、図6の例では、文字列A「紙でお知らせしていた中古市場価」は、文字列B「従来は紙でお知らせしていた中古市場価格レポートですが、」に含まれるものの、文字列Bの前半部分に含まれているわけではない(前方一致しない)。すなわち、ステップS420について、図5の例は前方一致の条件を満たすが、図6の例では前方一致の条件を満たさないことになる。
さて、文字列Bの前半に文字列Aが含まれない場合(ステップS420でNo)、文字列Bの行(mail(i)のk行目)に自動改行データが挿入されて、文字列Aの行(mail(i−1)のj行目)になった可能性は無い。この場合、kを1増じる(ステップS422)。
そして、kがmail(i−1)の行数よりも大きくない場合は(ステップS423でNo)、mail(i)の次の行の確認に移る(ステップS419に戻る)。一方、kがmail(i−1)の行数よりも大きい場合は(ステップS423でYes)、mail(i)の全行を確認したことになるため、図3のステップS416に戻り、mail(i−1)の次の行の確認に進む(図3のB)
一方、文字列Bの前半に文字列Aが含まれる場合は(ステップS420でYes)、文字列Bの行(mail(i)のk行目)に自動改行データが挿入されて、文字列Aの行(mail(i−1)のj行目)になった可能性が考えられる。そこで、ステップS420でYesである場合、ステップS421〜S427において、mail(i−1)のj+1行目以降の複数の行が、mail(i)のk行目に自動改行データが挿入されることによって作られた行であるかどうかを判定する。
まず、引用メール解析部32は、文字列Bから文字列Aを削除した文字列を新たな文字列Bとする(ステップS421)。図5の例では、「格レポートですが、」が新たな文字列B(以下、文字列Bと記載)となる。
次に、引用メール解析部32は、文字列Bに改行データ以外のデータが無いかどうかを判定する(ステップS424)。
文字列Bに改行データ以外のデータがある場合(ステップS424でNo)、引用メール解析部32は、mail(i−1)のj+1行目の引用階層がq以上であるか否かを判定する(ステップS425)。なお、S413において、確認したmail(i−1)のj行目の引用階層がqに設定されている。
ここで、mail(i−1)のj+1行目の引用階層がq以上でない場合(ステップS425でNo)について説明する。ステップS425でNoである場合、引用メール解析部32は、mail(i−1)のj+1行目の文字列から引用記号を削除した文字列を新たな文字列A(以下、文字列Aと記載)とする(ステップS426)。
次に、引用メール解析部32は、文字列Bの前半に文字列Aが含まれるか否か(前方一致するか否か)を判定する(ステップS427)。
ここで、文字列Bの前半に文字列Aが含まれる場合(ステップS427でYes)、mail(i−1)のj行目の改行データは引用階層ずれを発生させる自動改行データと考えられる。そのため、引用メール解析部32は、mail(i−1)のj行目の改行データと、mail(i−1)のj+1行目のデータの行頭の引用記号群との削除予約を行う(ステップS428)。
ステップS428で削除予約されると、jを1増じ(ステップS429)、ステップS421に戻る。以降、条件を満たす限り、ステップS421、S424〜S429の処理を繰り返す。処理が繰り返されるのは、mail(i)のk行目のデータが自動改行によってmail(i−1)上の複数行に分割されている場合である。
ところで、ステップS424およびS425で判定がYesであった場合、ならびにステップS427で判定がNoであった場合、mail(i−1)のj行目の改行データは引用階層ずれを発生させる自動改行データとは考えられない。そのため、図3のステップ416に進んでjを1増じ、mail(i−1)の次の行の確認に進む。
そして、jの値がmail(i−1)と等しくなければ(ステップS417でNo)、ステップS412に戻って次の行の判定に進む。
一方、jの値がmail(i−1)の行数と等しければ(ステップS417でYes)、ステップS426において削除予約された改行データと引用記号の情報を保持した状態で図3のフローを終了とする。そして、図2のステップS5に進み、mail(i−1)上で削除予約した箇所を全て削除する。
以上のように、本実施形態によれば、図2〜図4に示したフローチャートの処理により、mail(i−1)上の引用階層ずれを整形することができる。
すなわち、図3および図4において、引用メール解析部32は、最新メールと引用メールとを含む一連のメール群に対して、メールをやり取りした順番(メール交換順)が判別できるように各メールに名称を付ける。引用メール解析部32は、最も古いメールから順番に、メール交換順が連続する2つのメール間で引用階層ずれがあるか否かを判定する引用メール階層ずれ判定処理を実行する。引用階層ずれがあった場合、引用メール解析部32は、比較している2つのメールのうち新しい方のメールの本文情報において、引用階層ずれを整形する引用階層ずれ整形処理を実行する。引用メール解析部32は、この引用メール階層ずれ判定処理と引用階層ずれ整形処理とを、一連のメール群に含まれる全てのメールの全ての行について実行することによって、最新メールの引用階層ずれを解消させる。
以上のように、本発明の実施形態の文書解析装置は、受信した電子メールの本文中から、メールソフトの機能によって自動的に挿入された自動改行データを検出する。そして、自動改行データが検出された場合は、その改行データの削除とそれに伴う整形処理を行う手段を用意する。その結果、メールの判読性を高め、利用者の使いやすさを向上させるシステムが提供される。
ここで、本実施形態の文書解析装置による文書解析方法の特徴について簡単にまとめる。
本実施形態の文書解析方法では、引用階層ずれを判定するときに、引用階層ずれを整形したいメール(最新メール)だけでなく、その最新メールに至るまでにやりとりされてきた全ての過去メール(引用メール)の状態も考慮に入れるように処理する。
まず、これらのメールの中から最も古いメールと二番目に古いメールの本文の文字列を行単位で比較し、二番目に古いメール上に発生している引用階層ずれを検出する。引用階層ずれを検出したら、二番目に古いメール上でその整形を行う。次に、整形を行った二番目に古いメールと三番目に古いメールの本文の文字列を比較し、同様の検出と整形を行う。これを最新メールでの検出と整形を行うまで繰り返す。
このように、引用階層ずれの発生を検出したら、検出したメール上ですぐに引用階層ずれを整形し、以降の判定処理ではその整形済みの情報を使うため、引用階層ずれが複雑化する前に引用階層ずれを整形することが可能になる。その結果、最新メール上に存在する引用階層ずれを高い精度で整形できるようになる。
関連技術においては、メール作成者の意図した改行データを自動改行データとして誤判定することによって誤った引用階層ずれの整形を行い、メールの判読性が大きく低下したり、内容が意味不明になったりする問題が発生していた。
それに対し、本実施形態においては、メール作成者の意図した改行データを自動改行データとして誤判定することはなく、正しい判定がなされる。なぜならば、本実施形態においては、最新メールだけでなく、その最新メールに至るまでにやりとりされてきた全ての引用メールの状態も考慮し引用階層ずれを判定するためである。
また、関連技術においては、自動改行データをメール作成者の意図した改行データと誤判定することによって引用階層ずれが十分に整形されず、判読性が高くならない問題が発生していた。
それに対し、本実施形態においては、自動改行データをメール作成者の意図した改行データと誤判定することはなく、正しい判定がなされる。なぜならば、本実施形態においては、最新メールだけではなく、その最新メールに至るまでにやりとりされてきた全ての引用メールの状態も考慮し引用階層ずれを判定するためである。
また、本実施形態においては、万一、削除された等の理由で抽出できない引用メールがあったとしても、抽出できた範囲で最大限効果的な引用階層ずれの整形が行える。なぜならば、本実施形態においては、抽出できたいずれかの引用メール中に、整形したい引用階層ずれが発生する前(自動改行データ挿入前)の行の状態が分かるメールが一通でも含まれていれば、問題無く引用階層ずれの整形ができる判定条件にしているからである。
さらに、本実施形態においては、最新メールの画面表示用のレイアウトを正しく作成できる。なぜならば、本実施形態においては、レイアウトの元になるデータとして、引用階層ずれが整形済みの最新メールの本文データを使うためである。
ここで、本実施形態に係る文書解析装置1を実現するためのハードウェア構成の一例を図7に示す。図7の情報処理装置100は、プロセッサ101、主記憶装置102、補助記憶装置103、入力インターフェース104、表示制御装置105、リーダライタ106、通信インターフェース107を備える。これらの構成要素は、バス108を介してデータ授受可能に接続される。また、情報処理装置101には、入力装置114、表示装置115、記録媒体116が接続されるとともに、通信インターフェース107を介してネットワークと接続される。ネットワークとしては、インターネットなどの外部ネットワークであってもよいし、社内の業務システムにおけるイントラネットであってもよいし、複数の通信形態が混成されたネットワークであってもよい。情報処理装置100は、例えば一般的なコンピュータ、携帯電話、スマートフォン、タブレットPCなどとして実現される(PC:Personal Computer)。
プロセッサ101は、補助記憶装置103等に格納された本実施形態に係る文書解析プログラムを主記憶装置102に展開し、その文書解析プログラムを実行する。なお、本実施形態に係る文書解析プログラムは、情報処理装置100にインストールされたソフトウェアプログラムを用いる構成とすればよい。また、ネットワーク経由でアクセスできるストレージなどに格納されていたソフトウェアプログラムを文書解析プログラムとして用いる構成としてもよい。
主記憶装置102は、例えばDRAM等の揮発性メモリとすればよい(DRAM:Dynamic Random Access Memory)。また、MRAM等の不揮発性メモリを主記憶装置102として構成してもよい(MRAM:Magnetoresistive Random Access Memory)。主記憶装置102には、本実施形態の文書解析プログラムが展開される。
補助記憶装置103は、ハードディスク、フラッシュメモリ等のローカルディスクによって構成される。なお、補助記憶装置103は、情報処理装置100に接続された外部記憶装置としてもよいし、ネットワークを経由して接続されたネットワークストレージとしてもよい。
入力装置114は、キーボードやマウス、タッチパネルなどといった入力機器である。入力装置114は、メール文章の入力やメールソフトを操作するために使用される。なお、タッチパネルを入力装置114として用いる場合は、表示装置115が入力機器を兼ねる構成となる。入力インターフェース104は、プロセッサ101と入力装置114との間のデータ授受を仲介する。
表示制御装置105は、表示装置115に接続され、表示装置115の表示を制御する。本実施形態においては、メール表示部50(図1)によって、表示装置115の表示部にメール文等が表示される。リーダライタ106は、プロセッサ101と記録媒体116(プログラム記録媒体)との間のデータ授受を仲介し、記録媒体116からのデータ・プログラムの読み出し、情報処理装置100の処理結果の記録媒体116への書き込みを実行する。通信インターフェース107は、ネットワーク上の情報処理装置等とプロセッサ101との間のデータ授受を仲介する。
記録媒体116は、例えばSDカード等の半導体記録媒体などで実現できる(SD:Secure Digital)。また、記録媒体116は、フレキシブルディスク等の磁気記録媒体、CDやDVD等の光学記録媒体によって実現してもよい(CD:Compact Disk、DVD:Digital Versatile Disc)。
なお、図7のハードウェア構成は、本実施形態に係る文書解析装置1を実現するためハードウェア構成の一例であって、本発明の範囲を限定するものではない。また、本実施形態に係る文書解析装置の処理をコンピュータに実行させる文書解析プログラムも本発明の範囲に含まれ、その文書解析プログラムを記録したプログラム記録媒体も本発明の範囲に含まれる。
本実施形態の文書解析装置1は、図7のようなハードウェア構成を備えるコンピュータや携帯電話、スマートフォンなどの情報処理装置100のプロセッサ101において、本実施形態に係る文書解析プログラムを実行することによって実現される。
次に、本実施形態に係る文書解析装置によるメール文書の解析・整形処理について、実施例を挙げて詳細に説明する。なお、以下の例においては、図1の文書解析装置1の構成、図3〜図5のフローチャートの手順を基に説明する。
(実施例1)
図8〜図10には、引用階層ずれが含まれるmail(i−1)を整形した例について示す。図8のmail(i−1)は、1行目に自動改行データが挿入されたことにより、2行目の「大丈夫ですか。」が、あたかも1行目の引用文に対する返信文のように見えてしまう引用階層ずれが発生した例である。なお、本実施例においては、改行を受けた文となる1行目の末尾に改行データが付加され、折り返された文となる2行目の先頭に引用記号が付加されるものとする。
図3および図4のフローチャートに沿って、本実施形態の文書解析装置1による処理を説明する。
まず、図3のステップS411においてj=1とする。mail(i−1)の1行目の引用階層は3であるため、引用メール解析部32は、ステップS412においてYesと判定し、ステップS413でqを3に設定する。
mail(i−1)の2行目の引用階層は1であり、q未満(3未満)であるため、引用メール解析部32は、ステップ414においてYesと判定する。
次に、図4のステップ418においてkは1に設定される。引用メール解析部32は、mail(i−1)の1行目から3つの引用記号「>」を削除し、「質問A:前回の会議で検討したアーキテクチャの件」を文字列Aに設定する。そして、mail(i)の1行目から2つの引用記号「>」を削除し、「質問A:前回の会議で検討したアーキテクチャの件大丈夫ですか。」を文字列Bに設定する。なお、この段階では、mail(i)の各行は整形済みであるため、図9に示したメール本文となっている。
引用メール解析部32は、ステップS420において、文字列Aと文字列Bとが前方一致すると判定する。そして、引用メール解析部32は、文字列Bから文字列Aを削除した「大丈夫ですか。」を新たな文字列B(以下、文字列Bと記載)に設定する。
ここで、文字列Bに改行データ以外のデータが含まれるため、引用メール解析部32は、ステップS424においてNoと判定する。そして、mail(i−1)の2行目の引用回数は1であり、q以上(3以上)ではないため、引用メール解析部32は、ステップS425においてNoと判定する。
引用メール解析部32は、ステップS426において、mail(i−1)の2行目の「>大丈夫ですか。」から引用記号を削除した「大丈夫ですか。」を新たなる文字列Aに設定する(以下、文字列Aと記載)。
引用メール解析部32は、文字列Aと文字列Bとが前方一致すると判定し(ステップS427)、mail(i−1)の1行目の改行データと、2行目の引用記号とを削除予約する(ステップS428)。
さらに、引用メール解析部32は、mail(i)のk行目とmail(i−1)のj行目との比較・判定を繰り返す。なお、図8の例では、1行目と2行目の間以外については引用階層ずれが存在しないため、mail(i−1)の引用階層ずれの削除予約としては、1行目の改行データ削除予約と、2行目の引用記号削除予約とがなされる。
以上の削除予約を受けて、引用メール解析部32は、図10に示すようにmail(i−1)の引用解消ずれを整形する。
以上のように、図8のようなmail(i−1)の引用階層ずれは解消される。
(実施例2)
次に、図11〜図13を用いて、複雑化した引用階層ずれが解消される例を実施例2として説明する。実施例2は、過去のメールのやりとりにおいて、1行目の「・評価の階層見直しを・・・(中略)・・・多重障害レベルで)」という行に複数回自動改行データが挿入されたことにより発生した階段状の引用階層ずれ(複合的引用階層ずれ)を解消する例である。複合的引用階層ずれが発生すると、図11のように判読性が大きく低下することになる。なお、本実施例においては、改行を受けた文となる1〜3行目の末尾に改行データが付加され、折り返された文となる2〜4行目の先頭に引用記号が付加されるものとする。
実施例1と同様に、図3および図4のフローチャートに沿って、本実施形態の文書解析装置1による処理を説明する。
まず、図3のステップS411においてj=1とする。mail(i−1)の1行目の引用階層は8であるため、引用メール解析部32は、ステップS412においてYesと判定し、ステップS413でqを8に設定する。
mail(i−1)の2行目の引用階層は2であり、q未満(8未満)であるため、引用メール解析部32は、ステップ414においてYesと判定する。
次に、図4のステップ418においてkは1に設定される。引用メール解析部32は、mail(i−1)の1行目から8つの引用記号「>」を削除し、「・評価の階層見直しを再検討(障害A、障害B、障害Cの多重障害」を文字列Aに設定する。そして、mail(i)の1行目から7つの引用記号「>」を削除し、「・評価の階層見直しを再検討(障害A、障害B、障害Cの多重障害レベルで)」を文字列Bに設定する。なお、この段階では、mail(i)の各行は整形済みであるため、図12に示したメール本文となっている。
引用メール解析部32は、ステップS420において、文字列Aと文字列Bとが前方一致すると判定する。そして、引用メール解析部32は、文字列Bから文字列Aを削除した「レベルで)」を新たな文字列B(以下、文字列Bと記載)に設定する。
ここで、文字列Bに改行データ以外のデータが含まれるため、引用メール解析部32は、ステップS424においてNoと判定する。そして、mail(i−1)の2行目の引用回数は1であり、q以上(8以上)ではないため、引用メール解析部32は、ステップS425においてNoと判定する。
引用メール解析部32は、ステップS426において、mail(i−1)の2行目の「>>レ」から引用記号「>」を削除した「レ」を新たなる文字列A(以下、文字列Aと記載)に設定する。
引用メール解析部32は、文字列Aと文字列Bとが前方一致すると判定し(ステップS427)、mail(i−1)の1行目の改行データと、2行目の引用記号とを削除予約する(ステップS428)。
ここで、jを1増じて2に設定し(ステップS429)、ステップS421に戻ると、引用メール解析部32は、文字列Bから文字列Aを削除した「ベルで)」を新たなる文字列B(以下、文字列Bと記載)に設定する。引用メール解析部32は、ステップS424とS425ではNoと判定し、mail(i−1)の3行目の「>>>ベ」から引用記号「>」を削除した「ベ」を新たなる文字列A(以下、文字列Aと記載)に設定する。
引用メール解析部32は、文字列Aと文字列Bとが前方一致すると判定し(ステップS427)、mail(i−1)の2行目の改行データと、3行目の引用記号とを削除予約する(ステップS428)。
ここで、jを1増じて3に設定し(ステップS429)、ステップS421に戻ると、引用メール解析部32は、文字列Bから文字列Aを削除した「ルで)」を新たなる文字列B(以下、文字列Bと記載)に設定する。引用メール解析部32は、ステップS424とS425ではNoと判定し、mail(i−1)の3行目の「>>>>ルで)」から引用記号「>」を削除した「ルで)」を新たなる文字列A(以下、文字列Aと記載)に設定する。
引用メール解析部32は、文字列Aと文字列Bとが前方一致すると判定し(ステップS427)、mail(i−1)の3行目の改行データと、4行目の引用記号とを削除予約する(ステップS428)。
さらに、引用メール解析部32は、mail(i)のk行目とmail(i−1)のj行目との比較・判定を繰り返す。なお、図11の例では、1〜4行目の間以外については引用階層ずれが存在しないため、mail(i−1)の引用階層ずれの削除予約としては、1〜3行目の改行データ削除予約と、2〜4行目の引用記号削除予約とがなされる。
以上の削除予約を受けて、引用メール解析部32は、図13に示すようにmail(i−1)の引用解消ずれを整形する。
以上のように、実施例1と同様に、図11のようなmail(i−1)の複合的引用階層ずれも解消される。
さて、引用メール抽出部31が最新メールに関連する全ての引用メールを抽出できたと仮定すると、最も古い引用メールmail(N)には引用階層ずれが存在しない。このとき、mail(N−1)に引用階層ずれが発生していたとすると、その引用階層ずれはmail(N)を送信したタイミングにおいて、メールソフトが挿入した改行データによって発生したものである。このmail(N−1)に発生した引用階層ずれは、mail(N)側から改行データ挿入前の行の状態を参照できる。そのため、本発明の実施形態および実施例の判定・整形処理によって、mail(N−1)上に存在する全ての引用階層ずれを解消可能である。本発明の実施形態および実施例の判定・整形処理を繰り返すことによって、最終的に、最新メール上の全ての引用階層を解消可能である。なお、メールが削除された等の理由で抽出できない引用メールがあったとしても、抽出できたいずれかの引用メール中に、自動改行データが挿入される前の行の状態が分かるメールが含まれていれば、問題無く、最新メールの引用階層ずれを整形可能である。
ここで、整形されたメールをレイアウトする例について、実施例3および4を挙げて説明する。メールのレイアウトは、メール表示用整形部40によって実行される。メール表示用整形部40は、整形済みの最新メールの本文情報を元に、メール表示用のレイアウトを行い、結果をメール表示部50に渡す。メール表示部50は、メール表示用整形部40から取得したメールの内容を何らかの画面に表示する。
レイアウト方法に関しては様々な実装が考えられるが、最新メールの引用階層ずれはメール整形部33によって整形済みのため、どのようにレイアウト方法を実装したとしても、関連技術と比べれば判読しやすいレイアウトにできることが期待される。
(実施例3)
ここで、図14と図15を用いて、メール表示用整形部40による表示レイアウトの一例を実施例3として示す。
表示用のフォントサイズ、表示領域の大きさなどから一行に表示できる範囲は決まる。例えば、表示領域の端に到達した行は、その行の以降の文字列を次の行に折り返し表示し、画面端に到達した行の行頭の引用記号の連続数をMとし、折り返した行の冒頭にM個の引用記号を付加するという方法が表示レイアウトの一例として考えられる。
ある表示したいメールデータが図14であり、これをある表示領域内に表示した例を図15に示す。図15においては、四角の枠が表示領域を示している。
図14のメール本文において、5行目および25行目の「評価の階層見直しを再検・・・」と、7行目および27行目の「議事録の承認申請を・・・」とが、図15の表示領域の横幅に収まらない。
そのため、実施例3において、メール表示用整形部40は、図14のメール文の5行目、7行目、25行目、27行目のそれぞれの行について次の行に折り返しを実行し、図15に示したような折り返し表示を行う。図15においては、図14の折り返し元の行の引用階層が2であったために、折り返し先の行の冒頭にも2つの引用記号を付加している。すなわち、図14の5行目および25行目の末尾の「の多重障害レベルで)」という文字列は、図15ではそれぞれ6行目および28行目として折り返されるとともに、文頭に引用記号「>」が2つ付加されている。同様に、図14の7行目および27行目の末尾の「ること。」という文字列は、図15ではそれぞれ9行目および31行目として折り返されるとともに、文頭に引用記号「>」が2つ付加されている。
以上のように、実施例3においては、ある行において表示領域からはみ出る文字列の末尾を折り返し、折り返された行の文頭の引用記号の数と同じ数の引用記号を折り返された文字列の文頭に付加する。
すなわち、実施例3において、メール表示用整形部40は、最新メール(表示対象メール)に含まれるある行(第1の行)が表示画面の表示領域からはみ出る場合、表示領域からはみ出る部分を第1の行とは異なる別の行(第2の行)に改行する。そして、メール表示用整形部40は、第1の行に付された引用記号を第2の行に付加する。
その結果、メールの表示領域の制限を受けて、メール本文のある行が意図しない箇所で折り返さざるを得ない場合であっても、引用階層ずれ状態になることはない。そのため、メール本文の判読性を低下させずに引用階層ずれを解消することが可能となる。
(実施例4)
次に、メール表示用整形部40による「縮小表示レイアウト」の作成方法例を実施例4として説明する。実施例4として示した縮小表示レイアウトでは、メール整形処理部30によって作成された縮小管理テーブルによって引用メールの本文情報を管理する。
引用メール解析部32の処理を終えた段階で、引用階層ずれが整形されたメール群mail(1)、mail(2)・・・mail(N)が得られる。実施例4において、メール整形処理部30は、これらのメール群から最新メールmail(1)の縮小表示のために必要な情報を抽出して縮小管理テーブルを作成する。そして、メール整形処理部30は、最新メールのヘッダー情報と、整形済みの最新メールの本文情報とをメール表示用整形部40に渡すときに、縮小管理テーブルも合わせて渡す。メール表示用整形部40は、縮小管理テーブルを参照することによって、メール表示用整形部40は縮小表示レイアウトを作成する。
メール整形処理部30は、引用階層ずれが整形済みの一連のメール群mail(1)・・・mail(N)から、mail(1)の縮小管理テーブルを作成する。まず、メール整形処理部30は、mail(1)内に、mail(2)・・・mail(N)の文字列が含まれているかどうかを判定する。このとき、メール整形処理部30は、各行頭の引用記号群は無いものとして判定する。mail(1)に含まれている部分をもつメールは、便宜上、その部分を含有部と呼称する。含有部が存在した場合、メール整形処理部30は、mail(1)中における含有部の開始行数、含有部の終了行数、含有部の最低引用階層、含有部の引用元となるメールの等情報を縮小管理テーブルに記録する。
ここで、図16〜図21を用いて、実施例4の具体例について説明する。
図16〜図18はメールのやりとりの例である。図16のメールに対する返信メールが図17、図17のメールに対する返信メールが図18である。すなわち、図16はmail(3)、図17はmail(2)、図18はmail(1)となる。なお、実施例4の縮小表示レイアウトを行う対象のメールは、全て引用階層ずれが解消されているものとする。
まず、メール整形処理部30は、mail(1)の中にmail(2)が含まれるかどうかを判定する。
各行頭の引用記号を考慮しない場合、図18のmail(1)の9行目から36行目に、図17のmail(2)と同じ文字列が含まれている。そのため、mail(2)が含有部であり、含有部の最低引用階層は1となる。
同様に、メール整形処理部30は、mail(1)にmail(3)が含まれるかどうかを判定する。
各行頭の引用記号を考慮しない場合、図18のmail(1)の25行目から33行目に、図17のmail(3)と同じ文字列が含まれている。そのため、mail(3)が含有部であり、含有部の最低引用階層は2となる。
実施例4において、以上のメール整形処理部30による判定結果は、図19に示した縮小管理テーブル400によって管理する。縮小管理テーブル400には、含有部開始行数、含有部終了行数、最低引用階層および含有メールが記録される。
図20は、メール表示用整形部40によって作成された縮小表示レイアウトを、メール表示部50によって表示させた一例である。
メール表示用整形部40は、図19の縮小管理テーブル400を参照する。mail(2)はmail(1)の9行目から36行目に含まれているので、メール表示用整形部40は、mail(1)の9行目から36行目に文字列を表示する代わりに、縮小表示のためのボタンG1を表示するようにレイアウトする。メール表示用整形部40は、mail(2)の本文が含まれていることが把握できるように、mail(2)の基本的なヘッダー情報(受信日時や件名、送信者、宛先など)をG1上に表示するようにレイアウトする。また、メール表示用整形部40は、この含有部(mail(2))の最低引用階層は1であるため、G1の左側(最新メール本文中)に引用記号を1つずつ表示するようにレイアウトする。引用記号を付加することによって、各ボタンがどの引用階層のやりとりに属するものなのかを分かりやすくする。
同様に、メール表示用整形部40は、mail(3)についても縮小表示(G2)を行うようにレイアウトする。この含有部(mail(3))の引用階層は2であるため、メール表示用整形部40は、G2の左側(G1ボタン中)に引用記号を2つ表示するようにレイアウトする。
実施例4のように、複数の含有部が存在する場合、縮小管理テーブル400の開始行数と終了行数を参照すれば各含有部同士の包含関係が分かる。そのため、メール表示用整形部40は、その包含関係を考慮して縮小表示を行うレイアウトをする。実施例4の場合、図18のmail(1)において、mail(2)は9行目から36行目、mail(3)は25行目から33行目に含有され、mail(3)はmail(2)の一部であることが分かる。そのため、縮小表示でも、mail(3)のG2ボタンがmail(2)のG1ボタンに含まれるように表示を行っている。
図20の縮小表示レイアウトにおいては、ボタンに対して何らかのアクション(例えばクリック操作等)が行われたときに、縮小表示を解除し、元の文字列を表示するようにする。また、再度アクションを行うことによって縮小表示に戻せるようにする。図21には、G2に対してアクションを起こし、縮小表示を解除したときの表示例を示す。図21は、G2ボタンの枠内に、図16のmail(3)が表示される例である。
縮小管理テーブル400は、先述した通り、引用階層ずれが解消されたmail(1)・・・mail(N)を元にして作成する必要がある。なぜならば、未整形のmail(1)・・・mail(N)を使うと、改行データの挿入位置がメール毎に異なる可能性があるため、本来含有部として判定されるべき部分が含有部として判定されず、正しい縮小表示ができなくなる場合があるためである。つまり、本発明の実施形態・実施例の方法によってmail(1)・・・mail(N)の引用階層ずれの整形を行うからこそ、本縮小表示が実施可能であると言える。
縮小表示の方法としては、例えば、ボタンに対してアクションが起こされたときに、メール保存部20に格納されている対応メールを別ウインドウで開くようにする実装も考えられる。これを実現するには、縮小管理テーブル400の各行に、メール保存部20に格納されている対応メールへのリンク情報を追加すればよい。リンク情報としては、各メールのMessage−IDを使う方法が考えられる。
ボタンによる縮小表示を行う機能、および、利用者の必要に応じて縮小表示を解除してメールの原文を表示する機能により、メール本文中に含まれる様々な階層の引用文間の関係が把握しやすくなる。
表示領域が限られた画面にメールを表示する場合、縮小表示をしないとメールが縦に長く表示されて各引用文を固まりとして把握することが難しくなる。しかしながら、本実施例に係る方法を用いれば、縮小表示をすることによって判読性の低下を防止できる。
また、縮小表示部に対応するメールを別ウインドウで開く方法によれば、最新のmail(1)ではなく引用メールmail(2)・・・mail(N)に対して返信をしたい場合に、それらの引用メールを個別に探すことなく返信することができるようになる。
また、メールのヘッダー情報を元にして、最新メールと引用メール群とをリスト形式やツリー形式で一覧表示(スレッド表示)し、互いに関連があるメールであることを示す機能をもつメールソフトが存在する。これらのメールソフトと同様に、実施例4の縮小表示は、メール間の関連を分かりやすくすることを狙っているものの、メールのヘッダー情報だけでなく、メール本文の状態も考慮して表示レイアウトを行う。そのため、メール間の関連はより分かりやすいものになることが期待できる。
実施例4によれば、縮小表示により、メール本文中に含まれる様々な階層の引用文間の関係が把握しやすくなる。特に、携帯電話、スマートフォン、タブレットPCなどのように表示領域が限られる画面にメールを表示するときに効果が期待できる。実施例4によれば、メールのヘッダー情報だけでなく本文情報の状態も考慮して表示を行うため、様々な階層の引用文間の関係をより把握しやすくなる。
以上のように、本発明の実施形態および実施例の文書解析装置、文書解析方法および文書解析プログラムによれば、電子メールの本文に発生する引用階層ずれを高い精度で整形することが可能となる。
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。