(57)【特許請求の範囲】
【請求項１】
苗字を示す文字列を接頭辞として格納した氏名接頭辞辞書と、
個人名を抽出するための接尾辞を示す文字列を格納した氏名接尾辞辞書と、
電子文書に含まれる文字列が、前記氏名接頭辞辞書に格納されている苗字を示す文字列と一致するか否かを判定する氏名接頭辞判定手段と、
前記氏名接頭辞判定手段によって一致すると判定された場合に、前記苗字を示す文字列の後ろの所定の文字数の文字列の中に前記氏名接尾辞辞書に格納されている接尾辞を示す文字列と一致する文字列があるか否かを判定する氏名接尾辞判定手段と、
前記氏名接尾辞判定手段によって一致する文字列があると判定された場合に、前記電子文書の中の前記苗字を示す文字列、および前記苗字を示す文字列と前記接尾辞を示す文字列の間の文字列を伏字に置き換えるマスキング手段と、
を備えることを特徴とする電子文書マスキングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子文書に含まれる個人名に対してマスキングを行う電子文書マスキングシステムに関する。
【背景技術】
【０００２】
近年、個人情報保護が重要視されており、企業等で扱う電子文書データに関しても、必要に応じて個人情報の漏洩防止策が考慮されている。
例えば、電子文書データに関する個人情報漏洩防止策の一つとして、電子文書データ内に含まれる個人情報についてマスキングを行うことが考慮されている。
【０００３】
このような電子文書内の個人情報をマスキングするシステムとして、電子文書の構造解析を行うとともに、その解析結果に応じてＸＭＬタグを付加した構造化文書（ＸＭＬ文書）を生成し、ＸＭＬタグに対して予め設定された非公開レベルに応じてマスキングを行うシステムが知られている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−９５４５４２号公報
【特許文献２】特開２００７−５８３８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に記載のシステムは、文書作成者又は編集者により論理構造に応じた文書要素について予め属性情報が設定された電子文書に基づきＸＭＬタグの付加を行うものである。このため、このシステムでは、予め属性情報が設定されていない電子文書についてはマスキング処理を行うことができず、また、個人の氏名（個人名）については接頭語、接尾語がついている場合であってもどこまでが氏名の範囲であるのかを特定することができない。
【０００６】
本発明は、構造化されていない電子文書に含まれる個人名を適切にマスキングすることができる電子文書マスキングシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の電子文書マスキングシステムは、
個人名を抽出するための接頭辞を示す文字列を格納した氏名接頭辞辞書と、
個人名を抽出するための接尾辞を示す文字列を格納した氏名接尾辞辞書と、
電子文書に含まれる文字列が、前記氏名接頭辞辞書に格納されている接頭辞を示す文字列と一致するか否かを判定する氏名接頭辞判定手段と、
前記氏名接頭辞判定手段によって一致すると判定された場合に、前記接頭辞を示す文字列の後ろの所定の文字数の文字列の中に前記氏名接尾辞辞書に格納されている接尾辞を示す文字列と一致する文字列があるか否かを判定する氏名接尾辞判定手段と、
前記氏名接尾辞判定手段によって一致する文字列があると判定された場合に、前記電子文書の中の前記接頭辞を示す文字列、および前記接頭辞を示す文字列と前記接尾辞を示す文字列の間の文字列を伏字に置き換えるマスキング手段と、
を備える。
【発明の効果】
【０００８】
本発明によれば、構造化されていない電子文書に含まれる個人名を適切にマスキングすることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る電子文書マスキングシステムの構成の一例を示す図である。
【図２】マスキング処理部の構成の一例を示す図である。
【図３】氏名接頭辞辞書の一例を示す図である。
【図４】氏名接尾辞辞書の一例を示す図である。
【図５】企業名接頭辞辞書の一例を示す図である。
【図６】企業名接尾辞辞書の一例を示す図である。
【図７】地名接尾辞辞書の一例を示す図である。
【図８】地名辞書の一例を示す図である。
【図９】電話番号判定辞書の一例を示す図である。
【図１０】単位辞書の一例を示す図である。
【図１１】氏名接頭辞辞書と氏名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図１２】氏名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図１３】企業名接頭辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図１４】企業名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図１５】地名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図１６】地名マスキング処理の詳細な手順の一例を示すフローチャートである。
【図１７】郵便番号マスキング処理の詳細な手順の一例を示すフローチャートである。
【図１８】電子メールアドレスパターンに基づくマスキング処理手順の一例を示すフローチャートである。
【図１９】メールアドレスマスキング処理の詳細な手順の一例を示すフローチャートである。
【図２０】電話番号パターンに基づくマスキング処理手順の一例を示すフローチャートである。
【図２１】電話番号マスキング処理の詳細な手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態に係る電子文書マスキングシステムについて図面を参照しながら説明する。
【００１１】
上記課題を解決するために、本発明の電子文書マスキングシステムは、
苗字を示す文字列を接頭辞として格納した氏名接頭辞辞書と、
個人名を抽出するための接尾辞を示す文字列を格納した氏名接尾辞辞書と、
電子文書に含まれる文字列が、前記氏名接頭辞辞書に格納されている苗字を示す文字列と一致するか否かを判定する氏名接頭辞判定手段と、
前記氏名接頭辞判定手段によって一致すると判定された場合に、前記苗字を示す文字列の後ろの所定の文字数の文字列の中に前記氏名接尾辞辞書に格納されている接尾辞を示す文字列と一致する文字列があるか否かを判定する氏名接尾辞判定手段と、
前記氏名接尾辞判定手段によって一致する文字列があると判定された場合に、前記電子文書の中の前記苗字を示す文字列、および前記苗字を示す文字列と前記接尾辞を示す文字列の間の文字列を伏字に置き換えるマスキング手段と、
を備える。
【００１２】
個人情報ＤＢ１０３には、マスキング対象となる氏名等の個人情報が格納されている。顧客情報ＤＢ１０４には、マスキング対象となる顧客企業名等の顧客情報が格納されている。
マスキング処理部１０１は、個人情報ＤＢ１０２、顧客情報ＤＢ１０３、マスキング対象判定辞書１０４を参照してマスキング対象文字列を抽出し、個人情報や顧客情報等に対し、伏字等のマスキング処理を行う。
【００１３】
マスキング対象判定辞書１０４には、個人情報ＤＢ１０２と顧客情報ＤＢ１０３に格納された個人情報や顧客情報を抽出するための接頭辞・接尾辞を格納する他、住所等を示す地名，電話番号，メールアドレス等、一般的に個人情報等に該当すると考えられる文字列を抽出するための文字列又は配列パターン等が格納されている。
【００１４】
電子文書１１０は、構造化されていない電子文書であり、マスキング済電子文書１２０は、電子文書１１０にマスキング処理が施された電子文書である。
ＣＰＵ１０は、電子文書１１０をメモリ２０に読み込んで、電子文書１１０にマスキング処理を施し、マスキング済電子文書１２０として記憶装置３０に書き込む。
【００１５】
図２は、マスキング処理部１０１の構成の一例を示す。
マスキング処理部１０１は、文分割部２０１と、氏名判定部２０２と、企業名判定部２０３と、住所判定部２０４と、メールアドレス判定部２０５と、電話番号判定部２０６とを有する。
文分割部２０１は、マスキング対象となる電子文書１１０を句点、読点毎に分割する。
氏名判定部２０２は、分割された電子文書中から、接頭辞と接尾辞に基づき個人名を示す文字列を判定して、マスキング処理を行う。
企業名判定部２０３は、分割された電子文書中から、接頭辞と接尾辞に基づき企業名を示す文字列を判定して、マスキング処理を行う。
住所判定部２０４は、分割された電子文書中から、接尾辞に基づき地名を示す文字列を判定して、マスキング処理を行う。また、数字及び記号の配列パターンに基づき郵便番号を示す文字列を判定して、マスキング処理を行う。
メールアドレス判定部２０５は、分割された電子文書中から、英数字及び記号の配列パターンに基づき電子メールアドレスを示す文字列を判定して、マスキング処理を行う。
電話番号判定部２０６は、分割した電子文書中から、数字及び記号の配列パターンに基づき電話番号を示す文字列を判定して、マスキング処理を行う。
なお、上記各判定部２０２〜２０６は、互いに独立して動作することが可能なものとする。
【００１６】
図３は、マスキング対象判定辞書１０４を構成する氏名接頭辞辞書３００の一例を示す。
氏名接頭辞辞書３００は、分割された電子文書中から個人名を抽出するための接頭辞を示す文字列を格納したものであり、例えば、氏名の苗字として用いられる「鈴木」「佐藤」「田中」等が該当する。
【００１７】
図４は、マスキング対象判定辞書１０４を構成する氏名接尾辞辞書４００の一例を示す。
氏名接尾辞辞書４００は、分割された電子文書中から個人名を抽出するための接尾辞を示す文字列を格納したものであり、例えば、氏名の後に付く「様」「殿」「さん」等が該当する。
【００１８】
図５は、マスキング対象判定辞書１０４を構成する企業名接頭辞辞書５００の一例を示す。
企業名接頭辞辞書５００は、分割された電子文書中から企業名を抽出するための接頭辞を示す文字列を格納したものであり、企業名の前に付く「（株）」「株式会社」「（財）」「財団法人」等が該当する。
【００１９】
図６は、マスキング対象判定辞書１０４を構成する企業名接尾辞辞書６００の一例を示す。
企業名接尾辞辞書６００は、分割された電子文書中から企業名を抽出するための接尾辞を示す文字列を格納したものであり、例えば、企業名の後に付く「社」「（株）」「株式会社」等が該当する。
【００２０】
図７は、マスキング対象判定辞書１０４を構成する地名接尾辞辞書７００の一例を示す。
地名接尾辞辞書７００は、分割された電子文書中から住所を抽出するための接尾辞を示す文字列を格納したものであり、例えば、地名の後に付く「都」「道」「府」「県」等が該当する。
【００２１】
図８は、マスキング対象判定辞書１０４を構成する地名辞書８００の一例を示す。
地名辞書８００は、住所に関連してマスキング対象となる文字列（地名）を格納したものである。本例では、各地名について、図７に示す地名接尾辞辞書７００に格納した文字を除いた文字列としている。例えば、「北海道」をマスキング対象とした場合には、地名接尾辞辞書７００に「道」を格納し、地名辞書８００に「道」を除いた「北海」の文字列を格納する。
【００２２】
図９は、マスキング対象判定辞書１０４を構成する電話番号判定辞書９００の一例を示す。
電話番号判定辞書９００は、電話番号としてマスキング対象となる文字列（数字）を示す桁数９０１と、各桁数に対応した数字及びハイフンの配置パターンを示す正規表現９０２との各データ項目を有する。
例えば、７桁の数字に対する正規表現「￥ｄ｛７｝」と「￥ｄ｛２｝−￥ｄ｛４｝」は、それぞれ「○○○○○○○（７桁の数字）」と「○○−○○○○（２桁の数字，ハイフン，４桁の数字）」を定義している。
【００２３】
図１０は、マスキング対象判定辞書１０４を構成する単位辞書１０００の一例を示す。
単位辞書１０００は、複数桁数の数字の配列について、電話番号以外の文字列の場合にマスキング対象から除外するための接尾辞（単位）を格納したものである。
例えば、「ｍ」「ｋｍ」「円」等が該当し、単位辞書１０００に格納された文字列が数字の後ろに付加されている場合には、電話番号以外の文字列を示すものとしてマスキング対象から除外する。
【００２４】
以上の構成に基づき、本実施形態に係る電子文書マスキングシステム１００の行う処理を説明する。
【００２５】
図１１は、氏名判定部２０２が氏名接頭辞辞書３００と氏名接尾辞辞書４００に基づいて行うマスキング処理手順の一例を示すフローチャートである。
氏名判定部２０２は、文分割部２０１が分割した電子文書を取得して、その電子文書を構成する文字列を１文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す（Ｓ１１０１）。
次に、読み込んだ文字からｍ文字前までの文字列が個人名の接頭辞に該当するか否かを判定する（Ｓ１１０２、Ｓ１１０３）。具体的には、氏名接頭辞辞書３００に格納されている文字列と一致するか否かを判定する。ここで「ｍ」は、０からＭＡＸまでループするものとし、ＭＡＸは図３の氏名接頭辞辞書３００に格納された文字列の最大文字数とする。
判定の結果、一致した場合（Ｓ１１０３：Ｙｅｓ）には、接頭辞に該当すると判定された文字列の後ろの文字列について、個人名の接尾辞に該当するか否かの判定処理を繰り返す（Ｓ１１０４〜Ｓ１１０７）。一方、ステップＳ１１０３の判定の結果、一致しない場合（Ｓ１１０３：Ｎｏ）には次の文字列について処理を繰り返す。
【００２６】
個人名の接尾辞に該当するか否かの判定処理では、まず、接頭辞の後ろｎ文字を読み込み（Ｓ１１０５）、読み込んだ文字列が、氏名接尾辞辞書４００に格納された文字列と一致するか否かを判定する（Ｓ１１０６）。ここで「ｎ」は、１〜ＭＡＸまでループするものとし、ＭＡＸは例えば２０とする。
判定の結果、一致した場合（Ｓ１１０６：Ｙｅｓ）には、接頭辞と、接頭辞と接尾辞の間の文字列をマスキング対象に設定して、伏字（●●●等）に置き換える（Ｓ１１０７）。
一方、ステップＳ１１０６の判定の結果、一致しない場合（Ｓ１１０６：Ｎｏ）には次の文字列について処理を繰り返す。
以上の処理を、分割した電子文書に含まれる全ての文字について行った後、処理を終了する。
【００２７】
例えば、分割された電子文書中に「鈴木一郎様」という個人名が含まれていた場合、ステップＳ１１０３の処理で「鈴木」という文字列が氏名接頭辞に該当すると判定される。そして、ステップＳ１１０６の処理で「様」という文字が氏名接尾辞に該当すると判定される。その結果、ステップＳ１１０７の処理で「鈴木一郎様」が、たとえば「●●●●様」に置き換えられる。
【００２８】
図１２は、氏名判定部２０２が氏名接尾辞辞書４００に基づいて行うマスキング処理手順の一例を示すフローチャートである。
氏名判定部２０２は、図１１に示す処理と同様に、文分割部２０１が分割した電子文書を取得して、その電子文書を構成する文字列を１文字ずつ読み込み、分割された電子文書の最後の文字まで、以下の処理を繰り返す（Ｓ１２０１）。
次に、読み込んだ文字からｍ文字前までの文字列が個人名の接尾辞に該当するか否かを判定する（Ｓ１２０２、Ｓ１２０３）。具体的には、氏名接尾辞辞書４００に格納されている文字列と一致するか否かを判定する。ここで「ｍ」は、０からＭＡＸまでループするものとし、ＭＡＸは図４の氏名接尾辞辞書４００に格納された文字列の最大文字数とする。
判定の結果、一致した場合（Ｓ１２０３：Ｙｅｓ)には、接尾辞に該当すると判定された文字列の前の文字列について、個人名に該当するか否かの判定処理を繰り返す（Ｓ１２０４〜Ｓ１２０７）。一方、ステップＳ１２０３の判定の結果、一致しない場合（Ｓ１２０３：Ｎｏ）には次の文字列について処理を繰り返す。
【００２９】
個人名に該当するか否かの判定処理では、まず、接尾辞の前ｎ文字を読み込み（Ｓ１２０５）、読み込んだ文字列が、個人情報ＤＢ１０２に格納された文字列と一致するか否かを判定する（Ｓ１２０６）。ここで「ｎ」は、１〜ＭＡＸまでループするものとし、ＭＡＸは個人情報ＤＢ１０２に格納された文字列の最大文字数とする。
判定の結果、一致した場合（Ｓ１２０６：Ｙｅｓ)には、ステップＳ１２０５で読み込んだ文字列をマスキング対象に設定して、伏字（●●●等）に置き換える（Ｓ１２０７）。
一方、ステップＳ１２０６の判定の結果、一致しない場合（Ｓ１２０６：Ｎｏ)には次の文字列について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【００３０】
図１３は、企業名判定部２０３が企業名接頭辞辞書５００に基づいて行うマスキング処理手順の一例を示すフローチャートである。
企業名判定部２０３は、図１１に示す処理と同様に、文分割部２０１が分割した電子文書を取得して、その電子文書を構成する文字列を１文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す（Ｓ１３０１）。
次に、読み込んだ文字からｍ文字前までの文字列が企業名の接頭辞に該当するか否かを判定する（Ｓ１３０２、Ｓ１３０３）。具体的には、企業接頭辞辞書５００に格納されている文字列と一致するか否かを判定する。ここで「ｍ」は、０からＭＡＸまでループするものとし、ＭＡＸは図５の企業接頭辞辞書５００に格納された文字列の最大文字数とする。
判定の結果、一致した場合（Ｓ１３０３：Ｙｅｓ）には、接頭辞に該当すると判定された文字列の後ろの文字列について、企業名に該当するか否かの判定処理を繰り返す（Ｓ１３０４〜Ｓ１３０７）。一方、ステップＳ１３０３の判定の結果、一致しない場合（Ｓ１３０３：Ｎｏ）には次の文字列について処理を繰り返す。
【００３１】
企業名に該当するか否かの判定処理では、まず、接頭辞の後ろｎ文字を読み込み（Ｓ１３０５）、読み込んだ文字列が、顧客情報ＤＢ１０３のいずれかに格納された文字列と一致するか否かを判定する（Ｓ１３０６）。ここで「ｎ」は、１〜ＭＡＸまでループするものとし、ＭＡＸは顧客情報ＤＢ１０３に格納された文字列の最大文字数とする。
判定の結果、一致した場合（Ｓ１３０６：Ｙｅｓ）には、ステップＳ１３０５で読み込んだ文字列をマスキング対象に設定して、伏字（●●●等）に置き換える（Ｓ１３０７）。
一方、ステップＳ１３０６の判定の結果、一致しない場合（Ｓ１３０６：Ｎｏ）には次の文字列について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【００３２】
図１４は、企業名判定部２０３が企業名接尾辞辞書６００に基づいて行うマスキング処理手順の一例を示すフローチャートである。
企業名判定部２０３は、図１１に示す処理と同様に、文分割部２０１が分割した電子文書を取得して、その電子文書を構成する文字列を１文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す（Ｓ１４０１）。
次に、読み込んだ文字からｍ文字前までの文字列が企業名の接尾辞に該当するか否かを判定する（Ｓ１４０２、Ｓ１４０３）。具体的には、企業接尾辞辞書６００に格納されている文字列と一致するか否かを判定する。ここで「ｍ」は、０からＭＡＸまでループするものとし、ＭＡＸは図６の企業接尾辞辞書６００に格納された文字列の最大文字数とする。
判定の結果、一致した場合（Ｓ１４０３：Ｙｅｓ）には、接尾辞に該当すると判定された文字列の前の文字列について、企業名に該当するか否かの判定処理を繰り返す（Ｓ１４０４〜Ｓ１４０７）。一方、ステップＳ１４０３の判定の結果、一致しない場合（Ｓ１４０３：Ｎｏ）には次の文字列について処理を繰り返す。
【００３３】
企業名に該当するか否かの判定処理では、まず、接尾辞の前ｎ文字を読み込み（Ｓ１４０５）、読み込んだ文字列が、顧客情報ＤＢ１０３のいずれかに格納された文字列と一致するか否かを判定する（Ｓ１４０６）。ここで「ｎ」は、１〜ＭＡＸまでループするものとし、ＭＡＸは顧客情報ＤＢ１０３に格納された文字列の最大文字数とする。
判定の結果、一致した場合（Ｓ１４０６：Ｙｅｓ）には、ステップＳ１４０５で読み込んだ文字列をマスキング対象に設定して、伏字（●●●等）に置き換える（Ｓ１４０７）。
一方、ステップＳ１４０６の判定の結果、一致しない場合（Ｓ１４０６：Ｎｏ）には次の文字列について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【００３４】
図１５は、住所判定部２０４が地名接尾辞辞書７００に基づいて行うマスキング処理手順の一例を示すフローチャートである。
住所判定部２０４は、文分割部２０１が分割した電子文書を取得して、その電子文書を構成する文字列を１文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す（Ｓ５０１）。
次に、読み込んだ文字が地名に付く接尾辞であるか否かを判定する（Ｓ１５０２）。具体的には、地名接尾辞辞書７００に格納された文字列と一致するか否かを判定する。判定の結果、一致する場合（Ｓ１５０２：Ｙｅｓ）には、後述する地名マスキング処理により地名をマスキングする（Ｓ１５０３）。
一方、一致しない場合（Ｓ１５０２：Ｎｏ）には、読み込んだ文字列が郵便番号に付く接頭辞「〒」か否かを判定する（Ｓ１５０４）。判定の結果「〒」である場合（Ｓ１５０４：Ｙｅｓ）には、後述する郵便番号マスキング処理により郵便番号をマスキングする（Ｓ１５０５）。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【００３５】
図１６は、図１５のステップＳ１５０３に示す地名マスキング処理の詳細な手順の一例を示すフローチャートである
地名マスキング処理では、接尾辞の前ｎ文字を読み込み（Ｓ１６０１、Ｓ１６０２）、読み込んだ文字列が地名辞書８００に格納された文字列と一致するか否かを判定する（Ｓ１６０３）。ここで「ｎ」は、１〜ＭＡＸまでループするものとし、ＭＡＸは地名辞書８００に格納された文字列の最大文字数とする。
判定の結果、一致した場合（Ｓ１６０３：Ｙｅｓ）には、ステップＳ１６０２で読み込んだ文字列をマスキング対象に設定して、伏字（●●●等）に置き換え（Ｓ１６０４）、地名マスキング処理を終了する。この場合のマスキング対象には、接尾辞として設定された文字列（例えば、「都」「道」「府」「県」等）が含まれるものとする。
一方、ステップＳ１６０３の判定の結果、一致しない場合（Ｓ１６０３：Ｎｏ）には次の文字列について処理を繰り返す。
【００３６】
図１７は、図１５のステップＳ１５０５に示す郵便番号マスキング処理の詳細な手順の一例を示すフローチャートである。
郵便番号マスキング処理では、接頭辞の後ろ８文字を読み込み（Ｓ１７０１）、読み込んだ文字列が郵便番号を示す文字列の配列パターンに合致するか否かを判定する（Ｓ１７０２）。具体的には、８文字の文字列が郵便番号の形式（配列パターン）に合致するか否かで判定を行う。ここで郵便番号の形式（配列パターン）とは「数字３桁＋ハイフン＋数字４桁」の形式とする。
判定の結果、郵便番号の形式に合致した場合（Ｓ１７０２：Ｙｅｓ）には、ステップＳ１７０１で読み込んだ文字列をマスキング対象に設定して、伏字（●●●等）に置き換え（Ｓ１７０３）、郵便番号マスキング処理を終了する。
一方、ステップＳ１７０２の判定の結果、郵便番号の形式（配列パターン）に合致しない場合（Ｓ１７０２：Ｎｏ）には郵便番号マスキング処理を終了する。
【００３７】
図１８は、メールアドレス判定部２０５の行うマスキング処理手順の一例を示すフローチャートである。
メールアドレス判定部２０５は、まず、文分割部２０１が分割した電子文書を取得して、その電子文書を構成する文字列を１文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す（Ｓ１８０１）。
次に、読み込んだ文字が「＠」であるか否かを判定する（Ｓ１８０２）。
判定の結果、「＠」である場合（Ｓ１８０２：Ｙｅｓ）には、後述するメールアドレスマスキング処理を行う（Ｓ１８０３）。
一方、ステップ１８０２の判定の結果、「＠」以外の文字の場合（Ｓ１８０２：Ｎｏ）には、次の文字について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【００３８】
図１９は、図１８のステップＳ１８０３に示すメールアドレスマスキング処理の詳細な手順の一例を示すフローチャートである。
メールアドレスマスキング処理では、まず、「＠」から分割された電子文書の先頭まで１文字ずつ読み込み（Ｓ１９０１）、読み込んだ文字が英数字及び記号以外の文字であるか否かを判定する（Ｓ１９０２）。
判定の結果、英数字，記号以外の場合（Ｓ１９０２：Ｙｅｓ）には、それまでに読み込んだ文字列がメールアドレスの「＠」より前の部分を構成するものとしてマスキング対象に設定し、伏字（●●●等）に置き換える（Ｓ１９０３）。
一方、読み込んだ文字が英数字又は記号の場合（Ｓ１９０２：Ｎｏ）には、次の文字を読み込む。
次に、「＠」から分割された電子文書の末尾まで１文字ずつ読み込み（Ｓ１９０４）、読み込んだ文字が英数字及び記号以外の文字であるか否かを判定する（Ｓ１９０５）。
判定の結果、英数字，記号以外の場合（Ｓ１９０５：Ｙｅｓ）には、それまでに読み込んだ文字列がメールアドレスの「＠」より後の部分を構成するものとしてマスキング対象に設定し、伏字（●●●等）に置き換え（Ｓ１９０６）、メールアドレスマスキング処理を終了する。
一方、読み込んだ文字が英数字又は記号の場合（Ｓ１９０５：Ｎｏ）には、次の文字を読み込む。
【００３９】
図２０は、電話番号判定部２０６の行うマスキング処理手順の一例を示すフローチャートである。
電話番号判定部２０６は、まず、文分割部２０１が分割した電子文書を取得して、その電子文書を構成する文字列を１文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す（Ｓ２００１）。
次に、読み込んだ文字が数字であるか否かを判定する（Ｓ２００２）。
判定の結果、数字である場合（Ｓ２００２：Ｙｅｓ）には、読み込んだ文字（数字）から後ろにｎ文字目の文字を読み込み（Ｓ２００３、Ｓ２００４）、読み込んだ文字が数字及び記号（ハイフン）以外の文字であるか否かを判定する（Ｓ２００５）。この場合、ｎ＋１（ステップＳ２００１で読み込んだ文字を含む文字数）が、電話番号判定辞書９００の桁数９０１に設定された数字となるように、ｎが５〜１２に設定されている。
判定の結果、数字又は記号（ハイフン）以外の文字である場合（Ｓ２００５：Ｙｅｓ）には、後述する電話番号マスキング処理により電話番号をマスキングする（Ｓ２００６）。
一方、ステップＳ２００５の判定の結果、読み込んだ文字が数字又は記号の場合（Ｓ２００５：Ｎｏ）には、次の文字について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【００４０】
図２１は、図２０のステップＳ２００６に示す電話番号マスキング処理の詳細な手順の一例を示すフローチャートである。
電話番号マスキング処理では、読み込んだｎ文字目までの文字列が電話番号判定辞書９００の正規表現９０２と合致するか否かを判定する（Ｓ２１０１）。
具体的には、ｎ＋１の桁数９０１に対応する正規表現９０２の定義情報を取得して、文字列との比較を行う。
判定の結果、正規表現９０２の定義情報に合致する場合（Ｓ２１０１：Ｙｅｓ）には、文字列の接頭辞（ｍ文字）又は接尾辞（ｍ文字）が、単位辞書１０００に格納された文字列と一致するか否かを判定する（Ｓ２１０３）。ここで「ｍ」は、０〜ＭＡＸまでループするものとし、ＭＡＸは単位辞書１０００に格納された文字列の最大文字数とする。
判定の結果、一致した場合（Ｓ２１０３：Ｙｅｓ）には、その文字列は電話番号以外を示すものとして、マスキング対象から除外して電話番号マスキング処理を終了する。
一方、ステップＳ２１０３の判定の結果、一致しない場合（Ｓ２１０３：Ｎｏ）には、Ｓ２００４で読み込んだ文字列をマスキング対象に設定して、伏字（●●●等）に置き換えて電話番号マスキング処理を終了する（Ｓ２１０４）。
【００４１】
なお、本発明の構成は、上述した実施形態に示すものに限らず、各処理部の構成及び各データベース、マスキング対象判定辞書のデータ構造等を変更してもよい。例えば、上記実施形態では、個人情報データベース、顧客情報データベースと、マスキング対象判定辞書とを異なるものとして構成しているが、各データベースをマスキング対象判定辞書に含めることとしてもよい。また、各データベースは他のシステムに存在するものを用いることとしてもよい。
【００４２】
以上説明したように、本発明によれば、構造化されていない電子文書に含まれる個人名を適切にマスキングすることができる。
従って、電子文書の論理構造の解析等が不要となり、高速にマスキング処理を行うことが可能となる。
【符号の説明】
【００４３】
１０…ＣＰＵ、２０…メモリ、３０…記憶装置、４０…電子文書マスキングプログラム、１００…電子文書マスキングシステム、１０１…マスキング処理部、１０２…個人情報ＤＢ、１０３…顧客情報ＤＢ、１０４…マスキング対象判定辞書、１１０…電子文書、１２０…マスキング済電子文書、２０１…文分割部、２０２…氏名判定部、２０３…企業名判定部、２０４…住所判定部、２０５…メールアドレス判定部、２０６…電話番号判定部、３００…氏名接頭辞辞書、４００…氏名接尾辞辞書、５００…企業名接頭辞辞書、６００…企業名接尾辞辞書、７００…地名接尾辞辞書、８００…地名辞書、９００…電話番号判定辞書、１０００…単位辞書
【図１】
0005586435.tif 000002
【図２】
0005586435.tif 000003
【図３】
0005586435.tif 000004
【図４】
0005586435.tif 000005
【図５】
0005586435.tif 000006
【図６】
0005586435.tif 000007
【図７】
0005586435.tif 000008
【図８】
0005586435.tif 000009
【図９】
0005586435.tif 000010
【図１０】
0005586435.tif 000011
【図１１】
0005586435.tif 000012
【図１２】
0005586435.tif 000013
【図１３】
0005586435.tif 000014
【図１４】
0005586435.tif 000015
【図１５】
0005586435.tif 000016
【図１６】
0005586435.tif 000017
【図１７】
0005586435.tif 000018
【図１８】
0005586435.tif 000019
【図１９】
0005586435.tif 000020
【図２０】
0005586435.tif 000021
【図２１】
0005586435.tif 000022