電子文書マスキングシステム
【課題】構造化されていない電子文書に含まれる個人名を適切にマスキングする。
【解決手段】電子文書マスキングシステム100は、個人情報のマスキング処理を行うマスキング処理部101と、マスキング対象となる個人情報を格納した個人情報データベース102,顧客情報データベース103と、電子文書中からマスキング対象となる文字列を抽出するためのマスキング対象判定辞書104とを備える。マスキング処理部101は、電子文書に含まれる文字列を読み込み、マスキング対象判定辞書104に定義された接頭辞,接尾辞に応じて個人名を示すマスキング対象文字列に該当するか否かを判定し、当該判定結果に応じて伏字等のマスキング処理を行う。
【解決手段】電子文書マスキングシステム100は、個人情報のマスキング処理を行うマスキング処理部101と、マスキング対象となる個人情報を格納した個人情報データベース102,顧客情報データベース103と、電子文書中からマスキング対象となる文字列を抽出するためのマスキング対象判定辞書104とを備える。マスキング処理部101は、電子文書に含まれる文字列を読み込み、マスキング対象判定辞書104に定義された接頭辞,接尾辞に応じて個人名を示すマスキング対象文字列に該当するか否かを判定し、当該判定結果に応じて伏字等のマスキング処理を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子文書に含まれる個人名に対してマスキングを行う電子文書マスキングシステムに関する。
【背景技術】
【0002】
近年、個人情報保護が重要視されており、企業等で扱う電子文書データに関しても、必要に応じて個人情報の漏洩防止策が考慮されている。
例えば、電子文書データに関する個人情報漏洩防止策の一つとして、電子文書データ内に含まれる個人情報についてマスキングを行うことが考慮されている。
【0003】
このような電子文書内の個人情報をマスキングするシステムとして、電子文書の構造解析を行うとともに、その解析結果に応じてXMLタグを付加した構造化文書(XML文書)を生成し、XMLタグに対して予め設定された非公開レベルに応じてマスキングを行うシステムが知られている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−954542号公報
【特許文献2】特開2007−58380号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1に記載のシステムは、文書作成者又は編集者により論理構造に応じた文書要素について予め属性情報が設定された電子文書に基づきXMLタグの付加を行うものである。このため、このシステムでは、予め属性情報が設定されていない電子文書についてはマスキング処理を行うことができず、また、個人の氏名(個人名)については接頭語、接尾語がついている場合であってもどこまでが氏名の範囲であるのかを特定することができない。
【0006】
本発明は、構造化されていない電子文書に含まれる個人名を適切にマスキングすることができる電子文書マスキングシステムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明の電子文書マスキングシステムは、
個人名を抽出するための接頭辞を示す文字列を格納した氏名接頭辞辞書と、
個人名を抽出するための接尾辞を示す文字列を格納した氏名接尾辞辞書と、
電子文書に含まれる文字列が、前記氏名接頭辞辞書に格納されている接頭辞を示す文字列と一致するか否かを判定する氏名接頭辞判定手段と、
前記氏名接頭辞判定手段によって一致すると判定された場合に、前記接頭辞を示す文字列の後ろの所定の文字数の文字列の中に前記氏名接尾辞辞書に格納されている接尾辞を示す文字列と一致する文字列があるか否かを判定する氏名接尾辞判定手段と、
前記氏名接尾辞判定手段によって一致する文字列があると判定された場合に、前記電子文書の中の前記接頭辞を示す文字列、および前記接頭辞を示す文字列と前記接尾辞を示す文字列の間の文字列を伏字に置き換えるマスキング手段と、
を備える。
【発明の効果】
【0008】
本発明によれば、構造化されていない電子文書に含まれる個人名を適切にマスキングすることができる。
【図面の簡単な説明】
【0009】
【図1】本発明の実施形態に係る電子文書マスキングシステムの構成の一例を示す図である。
【図2】マスキング処理部の構成の一例を示す図である。
【図3】氏名接頭辞辞書の一例を示す図である。
【図4】氏名接尾辞辞書の一例を示す図である。
【図5】企業名接頭辞辞書の一例を示す図である。
【図6】企業名接尾辞辞書の一例を示す図である。
【図7】地名接尾辞辞書の一例を示す図である。
【図8】地名辞書の一例を示す図である。
【図9】電話番号判定辞書の一例を示す図である。
【図10】単位辞書の一例を示す図である。
【図11】氏名接頭辞辞書と氏名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図12】氏名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図13】企業名接頭辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図14】企業名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図15】地名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図16】地名マスキング処理の詳細な手順の一例を示すフローチャートである。
【図17】郵便番号マスキング処理の詳細な手順の一例を示すフローチャートである。
【図18】電子メールアドレスパターンに基づくマスキング処理手順の一例を示すフローチャートである。
【図19】メールアドレスマスキング処理の詳細な手順の一例を示すフローチャートである。
【図20】電話番号パターンに基づくマスキング処理手順の一例を示すフローチャートである。
【図21】電話番号マスキング処理の詳細な手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態に係る電子文書マスキングシステムについて図面を参照しながら説明する。
【0011】
図1は、本発明の実施形態に係る電子文書マスキングシステム100の構成の一例を示す。
本実施形態に係る電子文書マスキングシステム100は、CPU(Central Processing Unit)10と、メモリ20と、記憶装置30とを有している。
メモリ20は、RAM(Random Access Memory)やROM(Read Only Memory)等を含む。メモリ20は電子文書マスキングプログラム40を記憶している。
CPU10が電子文書マスキングプログラム40を実行することにより、マスキング処理部101の機能が実現される。
記憶装置30は、ハードディスク装置や光ディスク装置等を含む。記憶装置30は、個人情報データベース(DB)102と、顧客情報データベース(DB)103と、マスキング対象判定辞書104と、電子文書110と、マスキング済電子文書120とを記憶している。
【0012】
個人情報DB103には、マスキング対象となる氏名等の個人情報が格納されている。顧客情報DB104には、マスキング対象となる顧客企業名等の顧客情報が格納されている。
マスキング処理部101は、個人情報DB102、顧客情報DB103、マスキング対象判定辞書104を参照してマスキング対象文字列を抽出し、個人情報や顧客情報等に対し、伏字等のマスキング処理を行う。
【0013】
マスキング対象判定辞書104には、個人情報DB102と顧客情報DB103に格納された個人情報や顧客情報を抽出するための接頭辞・接尾辞を格納する他、住所等を示す地名,電話番号,メールアドレス等、一般的に個人情報等に該当すると考えられる文字列を抽出するための文字列又は配列パターン等が格納されている。
【0014】
電子文書110は、構造化されていない電子文書であり、マスキング済電子文書120は、電子文書110にマスキング処理が施された電子文書である。
CPU10は、電子文書110をメモリ20に読み込んで、電子文書110にマスキング処理を施し、マスキング済電子文書120として記憶装置30に書き込む。
【0015】
図2は、マスキング処理部101の構成の一例を示す。
マスキング処理部101は、文分割部201と、氏名判定部202と、企業名判定部203と、住所判定部204と、メールアドレス判定部205と、電話番号判定部206とを有する。
文分割部201は、マスキング対象となる電子文書110を句点、読点毎に分割する。
氏名判定部202は、分割された電子文書中から、接頭辞と接尾辞に基づき個人名を示す文字列を判定して、マスキング処理を行う。
企業名判定部203は、分割された電子文書中から、接頭辞と接尾辞に基づき企業名を示す文字列を判定して、マスキング処理を行う。
住所判定部204は、分割された電子文書中から、接尾辞に基づき地名を示す文字列を判定して、マスキング処理を行う。また、数字及び記号の配列パターンに基づき郵便番号を示す文字列を判定して、マスキング処理を行う。
メールアドレス判定部205は、分割された電子文書中から、英数字及び記号の配列パターンに基づき電子メールアドレスを示す文字列を判定して、マスキング処理を行う。
電話番号判定部206は、分割した電子文書中から、数字及び記号の配列パターンに基づき電話番号を示す文字列を判定して、マスキング処理を行う。
なお、上記各判定部202〜206は、互いに独立して動作することが可能なものとする。
【0016】
図3は、マスキング対象判定辞書104を構成する氏名接頭辞辞書300の一例を示す。
氏名接頭辞辞書300は、分割された電子文書中から個人名を抽出するための接頭辞を示す文字列を格納したものであり、例えば、氏名の苗字として用いられる「鈴木」「佐藤」「田中」等が該当する。
【0017】
図4は、マスキング対象判定辞書104を構成する氏名接尾辞辞書400の一例を示す。
氏名接尾辞辞書400は、分割された電子文書中から個人名を抽出するための接尾辞を示す文字列を格納したものであり、例えば、氏名の後に付く「様」「殿」「さん」等が該当する。
【0018】
図5は、マスキング対象判定辞書104を構成する企業名接頭辞辞書500の一例を示す。
企業名接頭辞辞書500は、分割された電子文書中から企業名を抽出するための接頭辞を示す文字列を格納したものであり、企業名の前に付く「(株)」「株式会社」「(財)」「財団法人」等が該当する。
【0019】
図6は、マスキング対象判定辞書104を構成する企業名接尾辞辞書600の一例を示す。
企業名接尾辞辞書600は、分割された電子文書中から個人名,企業名を抽出するための接尾辞を示す文字列を格納したものであり、例えば、企業名の後に付く「社」「(株)」「株式会社」等が該当する。
【0020】
図7は、マスキング対象判定辞書104を構成する地名接尾辞辞書700の一例を示す。
地名接尾辞辞書700は、分割された電子文書中から住所を抽出するための接尾辞を示す文字列を格納したものであり、例えば、地名の後に付く「都」「道」「府」「県」等が該当する。
【0021】
図8は、マスキング対象判定辞書104を構成する地名辞書800の一例を示す。
地名辞書800は、住所に関連してマスキング対象となる文字列(地名)を格納したものである。本例では、各地名について、図7に示す地名接尾辞辞書700に格納した文字を除いた文字列としている。例えば、「北海道」をマスキング対象とした場合には、地名接尾辞辞書700に「道」を格納し、地名辞書800に「道」を除いた「北海」の文字列を格納する。
【0022】
図9は、マスキング対象判定辞書104を構成する電話番号判定辞書900の一例を示す。
電話番号判定辞書900は、電話番号としてマスキング対象となる文字列(数字)を示す桁数901と、各桁数に対応した数字及びハイフンの配置パターンを示す正規表現902との各データ項目を有する。
例えば、7桁の数字に対する正規表現「¥d{7}」と「¥d{2}−¥d{4}」は、それぞれ「○○○○○○○(7桁の数字)」と「○○−○○○○(2桁の数字,ハイフン,4桁の数字)」を定義している。
【0023】
図10は、マスキング対象判定辞書104を構成する単位辞書1000の一例を示す。
単位辞書1000は、複数桁数の数字の配列について、電話番号以外の文字列の場合にマスキング対象から除外するための接尾辞(単位)を格納したものである。
例えば、「m」「km」「円」等が該当し、単位辞書1000に格納された文字列が数字の後ろに付加されている場合には、電話番号以外の文字列を示すものとしてマスキング対象から除外する。
【0024】
以上の構成に基づき、本実施形態に係る電子文書マスキングシステム100の行う処理を説明する。
【0025】
図11は、氏名判定部202が氏名接頭辞辞書300と氏名接尾辞辞書400に基づいて行うマスキング処理手順の一例を示すフローチャートである。
氏名判定部202は、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S1101)。
次に、読み込んだ文字からm文字前までの文字列が個人名の接頭辞に該当するか否かを判定する(S1102、S1103)。具体的には、氏名接頭辞辞書300に格納されている文字列と一致するか否かを判定する。ここで「m」は、0からMAXまでループするものとし、MAXは図3の氏名接頭辞辞書300に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1103:Yes)には、接頭辞に該当すると判定された文字列の後ろの文字列について、個人名の接尾辞に該当するか否かの判定処理を繰り返す(S1104〜S1107)。一方、ステップS1103の判定の結果、一致しない場合(S1103:No)には次の文字列について処理を繰り返す。
【0026】
個人名の接尾辞に該当するか否かの判定処理では、まず、接頭辞の後ろn文字を読み込み(S1105)、読み込んだ文字列が、氏名接尾辞辞書400に格納された文字列と一致するか否かを判定する(S1106)。ここで「n」は、1〜MAXまでループするものとし、MAXは例えば20とする。
判定の結果、一致した場合(S1106:Yes)には、接頭辞と、接頭辞と接尾辞の間の文字列をマスキング対象に設定して、伏字(●●●等)に置き換える(S1107)。
一方、ステップS1106の判定の結果、一致しない場合(S1106:No)には次の文字列について処理を繰り返す。
以上の処理を、分割した電子文書に含まれる全ての文字について行った後、処理を終了する。
【0027】
例えば、分割された電子文書中に「鈴木一郎様」という個人名が含まれていた場合、ステップS1103の処理で「鈴木」という文字列が氏名接頭辞に該当すると判定される。そして、ステップS1106の処理で「様」という文字が氏名接尾辞に該当すると判定される。その結果、ステップS1107の処理で「鈴木一郎様」が、たとえば「●●●●様」に置き換えられる。
【0028】
図12は、氏名判定部202が氏名接尾辞辞書400に基づいて行うマスキング処理手順の一例を示すフローチャートである。
氏名判定部202は、図11に示す処理と同様に、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割された電子文書の最後の文字まで、以下の処理を繰り返す(S1201)。
次に、読み込んだ文字からm文字前までの文字列が個人名の接尾辞に該当するか否かを判定する(S1202、S1203)。具体的には、氏名接尾辞辞書400に格納されている文字列と一致するか否かを判定する。ここで「m」は、0からMAXまでループするものとし、MAXは図4の氏名接尾辞辞書400に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1203:Yes)には、接尾辞に該当すると判定された文字列の前の文字列について、個人名に該当するか否かの判定処理を繰り返す(S1204〜S1207)。一方、ステップS1203の判定の結果、一致しない場合(S1203:No)には次の文字列について処理を繰り返す。
【0029】
個人名に該当するか否かの判定処理では、まず、接尾辞の前n文字を読み込み(S1205)、読み込んだ文字列が、個人情報DB102に格納された文字列と一致するか否かを判定する(S1206)。ここで「n」は、1〜MAXまでループするものとし、MAXは個人情報DB102に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1206:Yes)には、ステップS1205で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換える(S1207)。
一方、ステップS1206の判定の結果、一致しない場合(S1206:No)には次の文字列について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0030】
図13は、企業名判定部203が企業名接頭辞辞書500に基づいて行うマスキング処理手順の一例を示すフローチャートである。
企業名判定部203は、図11に示す処理と同様に、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S1301)。
次に、読み込んだ文字からm文字前までの文字列が企業名の接頭辞に該当するか否かを判定する(S1302、S1303)。具体的には、企業接頭辞辞書500に格納されている文字列と一致するか否かを判定する。ここで「m」は、0からMAXまでループするものとし、MAXは図5の企業接頭辞辞書500に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1303:Yes)には、接頭辞に該当すると判定された文字列の後ろの文字列について、企業名に該当するか否かの判定処理を繰り返す(S1304〜S1307)。一方、ステップS1303の判定の結果、一致しない場合(S1303:No)には次の文字列について処理を繰り返す。
【0031】
企業名に該当するか否かの判定処理では、まず、接頭辞の後ろn文字を読み込み(S1305)、読み込んだ文字列が、顧客情報DB103のいずれかに格納された文字列と一致するか否かを判定する(S1306)。ここで「n」は、1〜MAXまでループするものとし、MAXは顧客情報DB103に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1306:Yes)には、ステップS1305で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換える(S1307)。
一方、ステップS1306の判定の結果、一致しない場合(S1306:No)には次の文字列について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0032】
図14は、企業名判定部203が企業名接尾辞辞書600に基づいて行うマスキング処理手順の一例を示すフローチャートである。
企業名判定部203は、図11に示す処理と同様に、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S1401)。
次に、読み込んだ文字からm文字前までの文字列が企業名の接尾辞に該当するか否かを判定する(S1402、S1403)。具体的には、企業接尾辞辞書600に格納されている文字列と一致するか否かを判定する。ここで「m」は、0からMAXまでループするものとし、MAXは図6の企業接尾辞辞書600に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1403:Yes)には、接尾辞に該当すると判定された文字列の前の文字列について、企業名に該当するか否かの判定処理を繰り返す(S1404〜S1407)。一方、ステップS1403の判定の結果、一致しない場合(S1403:No)には次の文字列について処理を繰り返す。
【0033】
企業名に該当するか否かの判定処理では、まず、接尾辞の前n文字を読み込み(S1405)、読み込んだ文字列が、顧客情報DB103のいずれかに格納された文字列と一致するか否かを判定する(S1406)。ここで「n」は、1〜MAXまでループするものとし、MAXは顧客情報DB103に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1406:Yes)には、ステップS1405で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換える(S1407)。
一方、ステップS1406の判定の結果、一致しない場合(S1406:No)には次の文字列について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0034】
図15は、住所判定部204が地名接尾辞辞書700に基づいて行うマスキング処理手順の一例を示すフローチャートである。
住所判定部204は、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S501)。
次に、読み込んだ文字が地名に付く接尾辞であるか否かを判定する(S1502)。具体的には、地名接尾辞辞書700に格納された文字列と一致するか否かを判定する。判定の結果、一致する場合(S1502:Yes)には、後述する地名マスキング処理により地名をマスキングする(S1503)。
一方、一致しない場合(S1502:No)には、読み込んだ文字列が郵便番号に付く接頭辞「〒」か否かを判定する(S1504)。判定の結果「〒」である場合(S1504:Yes)には、後述する郵便番号マスキング処理により郵便番号をマスキングする(S1505)。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0035】
図16は、図15のステップS1503に示す地名マスキング処理の詳細な手順の一例を示すフローチャートである
地名マスキング処理では、接尾辞の前n文字を読み込み(S1601、S1602)、読み込んだ文字列が地名辞書800に格納された文字列と一致するか否かを判定する(S1603)。ここで「n」は、1〜MAXまでループするものとし、MAXは地名辞書800に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1603:Yes)には、ステップS1602で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換え(S1604)、地名マスキング処理を終了する。この場合のマスキング対象には、接尾辞として設定された文字列(例えば、「都」「道」「府」「県」等)が含まれるものとする。
一方、ステップS1603の判定の結果、一致しない場合(S1603:No)には次の文字列について処理を繰り返す。
【0036】
図17は、図15のステップS1505に示す郵便番号マスキング処理の詳細な手順の一例を示すフローチャートである。
郵便番号マスキング処理では、接頭辞の後ろ8文字を読み込み(S1701)、読み込んだ文字列が郵便番号を示す文字列の配列パターンに合致するか否かを判定する(S1702)。具体的には、8文字の文字列が郵便番号の形式(配列パターン)に合致するか否かで判定を行う。ここで郵便番号の形式(配列パターン)とは「数字3桁+ハイフン+数字4桁」の形式とする。
判定の結果、郵便番号の形式に合致した場合(S1702:Yes)には、ステップS1701で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換え(S1703)、郵便番号マスキング処理を終了する。
一方、ステップS1702の判定の結果、郵便番号の形式(配列パターン)に合致しない場合(S1702:No)には郵便番号マスキング処理を終了する。
【0037】
図18は、メールアドレス判定部205の行うマスキング処理手順の一例を示すフローチャートである。
メールアドレス判定部205は、まず、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S1801)。
次に、読み込んだ文字が「@」であるか否かを判定する(S1802)。
判定の結果、「@」である場合(S1802:Yes)には、後述するメールアドレスマスキング処理を行う(S1803)。
一方、ステップ1802の判定の結果、「@」以外の文字の場合(S1802:No)には、次の文字について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0038】
図19は、図18のステップS1803に示すメールアドレスマスキング処理の詳細な手順の一例を示すフローチャートである。
メールアドレスマスキング処理では、まず、「@」から分割された電子文書の先頭まで1文字ずつ読み込み(S1901)、読み込んだ文字が英数字及び記号以外の文字であるか否かを判定する(S1902)。
判定の結果、英数字,記号以外の場合(S1902:Yes)には、それまでに読み込んだ文字列がメールアドレスの「@」より前の部分を構成するものとしてマスキング対象に設定し、伏字(●●●等)に置き換える(S1903)。
一方、読み込んだ文字が英数字又は記号の場合(S1902:No)には、次の文字を読み込む。
次に、「@」から分割された電子文書の末尾まで1文字ずつ読み込み(S1904)、読み込んだ文字が英数字及び記号以外の文字であるか否かを判定する(S1905)。
判定の結果、英数字,記号以外の場合(S1905:Yes)には、それまでに読み込んだ文字列がメールアドレスの「@」より後の部分を構成するものとしてマスキング対象に設定し、伏字(●●●等)に置き換え(S1906)、メールアドレスマスキング処理を終了する。
一方、読み込んだ文字が英数字又は記号の場合(S1905:No)には、次の文字を読み込む。
【0039】
図20は、電話番号判定部206の行うマスキング処理手順の一例を示すフローチャートである。
電話番号判定部206は、まず、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S2001)。
次に、読み込んだ文字が数字であるか否かを判定する(S2002)。
判定の結果、数字である場合(S2002:Yes)には、読み込んだ文字(数字)から後ろにn文字目の文字を読み込み(S2003、S2004)、読み込んだ文字が数字及び記号(ハイフン)以外の文字であるか否かを判定する(S2005)。この場合、n+1(ステップS2001で読み込んだ文字を含む文字数)が、電話番号判定辞書900の桁数901に設定された数字となるように、nが5〜12に設定されている。
判定の結果、数字又は記号(ハイフン)以外の文字である場合(S2005:Yes)には、後述する電話番号マスキング処理により電話番号をマスキングする(S2006)。
一方、ステップS2005の判定の結果、読み込んだ文字が数字又は記号の場合(S2005:No)には、次の文字について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0040】
図21は、図20のステップS2005に示す電話番号マスキング処理の詳細な手順の一例を示すフローチャートである。
電話番号マスキング処理では、読み込んだn文字目までの文字列が電話番号判定辞書900の正規表現902と合致するか否かを判定する(S2101)。
具体的には、n+1の桁数901に対応する正規表現902の定義情報を取得して、文字列との比較を行う。
判定の結果、正規表現902の定義情報に合致する場合(S2101:Yes)には、文字列の接頭辞(m文字)又は接尾辞(m文字)が、単位辞書1000に格納された文字列と一致するか否かを判定する(S2103)。ここで「m」は、0〜MAXまでループするものとし、MAXは単位辞書1000に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S2103:Yes)には、その文字列は電話番号以外を示すものとして、マスキング対象から除外して電話番号マスキング処理を終了する。
一方、ステップS2103の判定の結果、一致しない場合(S2103:No)には、S2004で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換えて電話番号マスキング処理を終了する(S2104)。
【0041】
なお、本発明の構成は、上述した実施形態に示すものに限らず、各処理部の構成及び各データベース、マスキング対象判定辞書のデータ構造等を変更してもよい。例えば、上記実施形態では、個人情報データベース、顧客情報データベースと、マスキング対象判定辞書とを異なるものとして構成しているが、各データベースをマスキング対象判定辞書に含めることとしてもよい。また、各データベースは他のシステムに存在するものを用いることとしてもよい。
【0042】
以上説明したように、本発明によれば、構造化されていない電子文書に含まれる個人名を適切にマスキングすることができる。
従って、電子文書の論理構造の解析等が不要となり、高速にマスキング処理を行うことが可能となる。
【符号の説明】
【0043】
10…CPU、20…メモリ、30…記憶装置、40…電子文書マスキングプログラム、100…電子文書マスキングシステム、101…マスキング処理部、102…個人情報DB、103…顧客情報DB、104…マスキング対象判定辞書、110…電子文書、120…マスキング済電子文書、201…文分割部、202…氏名判定部、203…企業名判定部、204…住所判定部、205…メールアドレス判定部、206…電話番号判定部、300…氏名接頭辞辞書、400…氏名接尾辞辞書、500…企業名接頭辞辞書、600…企業名接尾辞辞書、700…地名接尾辞辞書、800…地名辞書、900…電話番号判定辞書、1000…単位辞書
【技術分野】
【0001】
本発明は、電子文書に含まれる個人名に対してマスキングを行う電子文書マスキングシステムに関する。
【背景技術】
【0002】
近年、個人情報保護が重要視されており、企業等で扱う電子文書データに関しても、必要に応じて個人情報の漏洩防止策が考慮されている。
例えば、電子文書データに関する個人情報漏洩防止策の一つとして、電子文書データ内に含まれる個人情報についてマスキングを行うことが考慮されている。
【0003】
このような電子文書内の個人情報をマスキングするシステムとして、電子文書の構造解析を行うとともに、その解析結果に応じてXMLタグを付加した構造化文書(XML文書)を生成し、XMLタグに対して予め設定された非公開レベルに応じてマスキングを行うシステムが知られている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−954542号公報
【特許文献2】特開2007−58380号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかし、特許文献1に記載のシステムは、文書作成者又は編集者により論理構造に応じた文書要素について予め属性情報が設定された電子文書に基づきXMLタグの付加を行うものである。このため、このシステムでは、予め属性情報が設定されていない電子文書についてはマスキング処理を行うことができず、また、個人の氏名(個人名)については接頭語、接尾語がついている場合であってもどこまでが氏名の範囲であるのかを特定することができない。
【0006】
本発明は、構造化されていない電子文書に含まれる個人名を適切にマスキングすることができる電子文書マスキングシステムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明の電子文書マスキングシステムは、
個人名を抽出するための接頭辞を示す文字列を格納した氏名接頭辞辞書と、
個人名を抽出するための接尾辞を示す文字列を格納した氏名接尾辞辞書と、
電子文書に含まれる文字列が、前記氏名接頭辞辞書に格納されている接頭辞を示す文字列と一致するか否かを判定する氏名接頭辞判定手段と、
前記氏名接頭辞判定手段によって一致すると判定された場合に、前記接頭辞を示す文字列の後ろの所定の文字数の文字列の中に前記氏名接尾辞辞書に格納されている接尾辞を示す文字列と一致する文字列があるか否かを判定する氏名接尾辞判定手段と、
前記氏名接尾辞判定手段によって一致する文字列があると判定された場合に、前記電子文書の中の前記接頭辞を示す文字列、および前記接頭辞を示す文字列と前記接尾辞を示す文字列の間の文字列を伏字に置き換えるマスキング手段と、
を備える。
【発明の効果】
【0008】
本発明によれば、構造化されていない電子文書に含まれる個人名を適切にマスキングすることができる。
【図面の簡単な説明】
【0009】
【図1】本発明の実施形態に係る電子文書マスキングシステムの構成の一例を示す図である。
【図2】マスキング処理部の構成の一例を示す図である。
【図3】氏名接頭辞辞書の一例を示す図である。
【図4】氏名接尾辞辞書の一例を示す図である。
【図5】企業名接頭辞辞書の一例を示す図である。
【図6】企業名接尾辞辞書の一例を示す図である。
【図7】地名接尾辞辞書の一例を示す図である。
【図8】地名辞書の一例を示す図である。
【図9】電話番号判定辞書の一例を示す図である。
【図10】単位辞書の一例を示す図である。
【図11】氏名接頭辞辞書と氏名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図12】氏名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図13】企業名接頭辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図14】企業名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図15】地名接尾辞辞書に基づくマスキング処理手順の一例を示すフローチャートである。
【図16】地名マスキング処理の詳細な手順の一例を示すフローチャートである。
【図17】郵便番号マスキング処理の詳細な手順の一例を示すフローチャートである。
【図18】電子メールアドレスパターンに基づくマスキング処理手順の一例を示すフローチャートである。
【図19】メールアドレスマスキング処理の詳細な手順の一例を示すフローチャートである。
【図20】電話番号パターンに基づくマスキング処理手順の一例を示すフローチャートである。
【図21】電話番号マスキング処理の詳細な手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態に係る電子文書マスキングシステムについて図面を参照しながら説明する。
【0011】
図1は、本発明の実施形態に係る電子文書マスキングシステム100の構成の一例を示す。
本実施形態に係る電子文書マスキングシステム100は、CPU(Central Processing Unit)10と、メモリ20と、記憶装置30とを有している。
メモリ20は、RAM(Random Access Memory)やROM(Read Only Memory)等を含む。メモリ20は電子文書マスキングプログラム40を記憶している。
CPU10が電子文書マスキングプログラム40を実行することにより、マスキング処理部101の機能が実現される。
記憶装置30は、ハードディスク装置や光ディスク装置等を含む。記憶装置30は、個人情報データベース(DB)102と、顧客情報データベース(DB)103と、マスキング対象判定辞書104と、電子文書110と、マスキング済電子文書120とを記憶している。
【0012】
個人情報DB103には、マスキング対象となる氏名等の個人情報が格納されている。顧客情報DB104には、マスキング対象となる顧客企業名等の顧客情報が格納されている。
マスキング処理部101は、個人情報DB102、顧客情報DB103、マスキング対象判定辞書104を参照してマスキング対象文字列を抽出し、個人情報や顧客情報等に対し、伏字等のマスキング処理を行う。
【0013】
マスキング対象判定辞書104には、個人情報DB102と顧客情報DB103に格納された個人情報や顧客情報を抽出するための接頭辞・接尾辞を格納する他、住所等を示す地名,電話番号,メールアドレス等、一般的に個人情報等に該当すると考えられる文字列を抽出するための文字列又は配列パターン等が格納されている。
【0014】
電子文書110は、構造化されていない電子文書であり、マスキング済電子文書120は、電子文書110にマスキング処理が施された電子文書である。
CPU10は、電子文書110をメモリ20に読み込んで、電子文書110にマスキング処理を施し、マスキング済電子文書120として記憶装置30に書き込む。
【0015】
図2は、マスキング処理部101の構成の一例を示す。
マスキング処理部101は、文分割部201と、氏名判定部202と、企業名判定部203と、住所判定部204と、メールアドレス判定部205と、電話番号判定部206とを有する。
文分割部201は、マスキング対象となる電子文書110を句点、読点毎に分割する。
氏名判定部202は、分割された電子文書中から、接頭辞と接尾辞に基づき個人名を示す文字列を判定して、マスキング処理を行う。
企業名判定部203は、分割された電子文書中から、接頭辞と接尾辞に基づき企業名を示す文字列を判定して、マスキング処理を行う。
住所判定部204は、分割された電子文書中から、接尾辞に基づき地名を示す文字列を判定して、マスキング処理を行う。また、数字及び記号の配列パターンに基づき郵便番号を示す文字列を判定して、マスキング処理を行う。
メールアドレス判定部205は、分割された電子文書中から、英数字及び記号の配列パターンに基づき電子メールアドレスを示す文字列を判定して、マスキング処理を行う。
電話番号判定部206は、分割した電子文書中から、数字及び記号の配列パターンに基づき電話番号を示す文字列を判定して、マスキング処理を行う。
なお、上記各判定部202〜206は、互いに独立して動作することが可能なものとする。
【0016】
図3は、マスキング対象判定辞書104を構成する氏名接頭辞辞書300の一例を示す。
氏名接頭辞辞書300は、分割された電子文書中から個人名を抽出するための接頭辞を示す文字列を格納したものであり、例えば、氏名の苗字として用いられる「鈴木」「佐藤」「田中」等が該当する。
【0017】
図4は、マスキング対象判定辞書104を構成する氏名接尾辞辞書400の一例を示す。
氏名接尾辞辞書400は、分割された電子文書中から個人名を抽出するための接尾辞を示す文字列を格納したものであり、例えば、氏名の後に付く「様」「殿」「さん」等が該当する。
【0018】
図5は、マスキング対象判定辞書104を構成する企業名接頭辞辞書500の一例を示す。
企業名接頭辞辞書500は、分割された電子文書中から企業名を抽出するための接頭辞を示す文字列を格納したものであり、企業名の前に付く「(株)」「株式会社」「(財)」「財団法人」等が該当する。
【0019】
図6は、マスキング対象判定辞書104を構成する企業名接尾辞辞書600の一例を示す。
企業名接尾辞辞書600は、分割された電子文書中から個人名,企業名を抽出するための接尾辞を示す文字列を格納したものであり、例えば、企業名の後に付く「社」「(株)」「株式会社」等が該当する。
【0020】
図7は、マスキング対象判定辞書104を構成する地名接尾辞辞書700の一例を示す。
地名接尾辞辞書700は、分割された電子文書中から住所を抽出するための接尾辞を示す文字列を格納したものであり、例えば、地名の後に付く「都」「道」「府」「県」等が該当する。
【0021】
図8は、マスキング対象判定辞書104を構成する地名辞書800の一例を示す。
地名辞書800は、住所に関連してマスキング対象となる文字列(地名)を格納したものである。本例では、各地名について、図7に示す地名接尾辞辞書700に格納した文字を除いた文字列としている。例えば、「北海道」をマスキング対象とした場合には、地名接尾辞辞書700に「道」を格納し、地名辞書800に「道」を除いた「北海」の文字列を格納する。
【0022】
図9は、マスキング対象判定辞書104を構成する電話番号判定辞書900の一例を示す。
電話番号判定辞書900は、電話番号としてマスキング対象となる文字列(数字)を示す桁数901と、各桁数に対応した数字及びハイフンの配置パターンを示す正規表現902との各データ項目を有する。
例えば、7桁の数字に対する正規表現「¥d{7}」と「¥d{2}−¥d{4}」は、それぞれ「○○○○○○○(7桁の数字)」と「○○−○○○○(2桁の数字,ハイフン,4桁の数字)」を定義している。
【0023】
図10は、マスキング対象判定辞書104を構成する単位辞書1000の一例を示す。
単位辞書1000は、複数桁数の数字の配列について、電話番号以外の文字列の場合にマスキング対象から除外するための接尾辞(単位)を格納したものである。
例えば、「m」「km」「円」等が該当し、単位辞書1000に格納された文字列が数字の後ろに付加されている場合には、電話番号以外の文字列を示すものとしてマスキング対象から除外する。
【0024】
以上の構成に基づき、本実施形態に係る電子文書マスキングシステム100の行う処理を説明する。
【0025】
図11は、氏名判定部202が氏名接頭辞辞書300と氏名接尾辞辞書400に基づいて行うマスキング処理手順の一例を示すフローチャートである。
氏名判定部202は、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S1101)。
次に、読み込んだ文字からm文字前までの文字列が個人名の接頭辞に該当するか否かを判定する(S1102、S1103)。具体的には、氏名接頭辞辞書300に格納されている文字列と一致するか否かを判定する。ここで「m」は、0からMAXまでループするものとし、MAXは図3の氏名接頭辞辞書300に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1103:Yes)には、接頭辞に該当すると判定された文字列の後ろの文字列について、個人名の接尾辞に該当するか否かの判定処理を繰り返す(S1104〜S1107)。一方、ステップS1103の判定の結果、一致しない場合(S1103:No)には次の文字列について処理を繰り返す。
【0026】
個人名の接尾辞に該当するか否かの判定処理では、まず、接頭辞の後ろn文字を読み込み(S1105)、読み込んだ文字列が、氏名接尾辞辞書400に格納された文字列と一致するか否かを判定する(S1106)。ここで「n」は、1〜MAXまでループするものとし、MAXは例えば20とする。
判定の結果、一致した場合(S1106:Yes)には、接頭辞と、接頭辞と接尾辞の間の文字列をマスキング対象に設定して、伏字(●●●等)に置き換える(S1107)。
一方、ステップS1106の判定の結果、一致しない場合(S1106:No)には次の文字列について処理を繰り返す。
以上の処理を、分割した電子文書に含まれる全ての文字について行った後、処理を終了する。
【0027】
例えば、分割された電子文書中に「鈴木一郎様」という個人名が含まれていた場合、ステップS1103の処理で「鈴木」という文字列が氏名接頭辞に該当すると判定される。そして、ステップS1106の処理で「様」という文字が氏名接尾辞に該当すると判定される。その結果、ステップS1107の処理で「鈴木一郎様」が、たとえば「●●●●様」に置き換えられる。
【0028】
図12は、氏名判定部202が氏名接尾辞辞書400に基づいて行うマスキング処理手順の一例を示すフローチャートである。
氏名判定部202は、図11に示す処理と同様に、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割された電子文書の最後の文字まで、以下の処理を繰り返す(S1201)。
次に、読み込んだ文字からm文字前までの文字列が個人名の接尾辞に該当するか否かを判定する(S1202、S1203)。具体的には、氏名接尾辞辞書400に格納されている文字列と一致するか否かを判定する。ここで「m」は、0からMAXまでループするものとし、MAXは図4の氏名接尾辞辞書400に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1203:Yes)には、接尾辞に該当すると判定された文字列の前の文字列について、個人名に該当するか否かの判定処理を繰り返す(S1204〜S1207)。一方、ステップS1203の判定の結果、一致しない場合(S1203:No)には次の文字列について処理を繰り返す。
【0029】
個人名に該当するか否かの判定処理では、まず、接尾辞の前n文字を読み込み(S1205)、読み込んだ文字列が、個人情報DB102に格納された文字列と一致するか否かを判定する(S1206)。ここで「n」は、1〜MAXまでループするものとし、MAXは個人情報DB102に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1206:Yes)には、ステップS1205で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換える(S1207)。
一方、ステップS1206の判定の結果、一致しない場合(S1206:No)には次の文字列について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0030】
図13は、企業名判定部203が企業名接頭辞辞書500に基づいて行うマスキング処理手順の一例を示すフローチャートである。
企業名判定部203は、図11に示す処理と同様に、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S1301)。
次に、読み込んだ文字からm文字前までの文字列が企業名の接頭辞に該当するか否かを判定する(S1302、S1303)。具体的には、企業接頭辞辞書500に格納されている文字列と一致するか否かを判定する。ここで「m」は、0からMAXまでループするものとし、MAXは図5の企業接頭辞辞書500に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1303:Yes)には、接頭辞に該当すると判定された文字列の後ろの文字列について、企業名に該当するか否かの判定処理を繰り返す(S1304〜S1307)。一方、ステップS1303の判定の結果、一致しない場合(S1303:No)には次の文字列について処理を繰り返す。
【0031】
企業名に該当するか否かの判定処理では、まず、接頭辞の後ろn文字を読み込み(S1305)、読み込んだ文字列が、顧客情報DB103のいずれかに格納された文字列と一致するか否かを判定する(S1306)。ここで「n」は、1〜MAXまでループするものとし、MAXは顧客情報DB103に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1306:Yes)には、ステップS1305で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換える(S1307)。
一方、ステップS1306の判定の結果、一致しない場合(S1306:No)には次の文字列について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0032】
図14は、企業名判定部203が企業名接尾辞辞書600に基づいて行うマスキング処理手順の一例を示すフローチャートである。
企業名判定部203は、図11に示す処理と同様に、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S1401)。
次に、読み込んだ文字からm文字前までの文字列が企業名の接尾辞に該当するか否かを判定する(S1402、S1403)。具体的には、企業接尾辞辞書600に格納されている文字列と一致するか否かを判定する。ここで「m」は、0からMAXまでループするものとし、MAXは図6の企業接尾辞辞書600に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1403:Yes)には、接尾辞に該当すると判定された文字列の前の文字列について、企業名に該当するか否かの判定処理を繰り返す(S1404〜S1407)。一方、ステップS1403の判定の結果、一致しない場合(S1403:No)には次の文字列について処理を繰り返す。
【0033】
企業名に該当するか否かの判定処理では、まず、接尾辞の前n文字を読み込み(S1405)、読み込んだ文字列が、顧客情報DB103のいずれかに格納された文字列と一致するか否かを判定する(S1406)。ここで「n」は、1〜MAXまでループするものとし、MAXは顧客情報DB103に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1406:Yes)には、ステップS1405で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換える(S1407)。
一方、ステップS1406の判定の結果、一致しない場合(S1406:No)には次の文字列について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0034】
図15は、住所判定部204が地名接尾辞辞書700に基づいて行うマスキング処理手順の一例を示すフローチャートである。
住所判定部204は、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S501)。
次に、読み込んだ文字が地名に付く接尾辞であるか否かを判定する(S1502)。具体的には、地名接尾辞辞書700に格納された文字列と一致するか否かを判定する。判定の結果、一致する場合(S1502:Yes)には、後述する地名マスキング処理により地名をマスキングする(S1503)。
一方、一致しない場合(S1502:No)には、読み込んだ文字列が郵便番号に付く接頭辞「〒」か否かを判定する(S1504)。判定の結果「〒」である場合(S1504:Yes)には、後述する郵便番号マスキング処理により郵便番号をマスキングする(S1505)。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0035】
図16は、図15のステップS1503に示す地名マスキング処理の詳細な手順の一例を示すフローチャートである
地名マスキング処理では、接尾辞の前n文字を読み込み(S1601、S1602)、読み込んだ文字列が地名辞書800に格納された文字列と一致するか否かを判定する(S1603)。ここで「n」は、1〜MAXまでループするものとし、MAXは地名辞書800に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S1603:Yes)には、ステップS1602で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換え(S1604)、地名マスキング処理を終了する。この場合のマスキング対象には、接尾辞として設定された文字列(例えば、「都」「道」「府」「県」等)が含まれるものとする。
一方、ステップS1603の判定の結果、一致しない場合(S1603:No)には次の文字列について処理を繰り返す。
【0036】
図17は、図15のステップS1505に示す郵便番号マスキング処理の詳細な手順の一例を示すフローチャートである。
郵便番号マスキング処理では、接頭辞の後ろ8文字を読み込み(S1701)、読み込んだ文字列が郵便番号を示す文字列の配列パターンに合致するか否かを判定する(S1702)。具体的には、8文字の文字列が郵便番号の形式(配列パターン)に合致するか否かで判定を行う。ここで郵便番号の形式(配列パターン)とは「数字3桁+ハイフン+数字4桁」の形式とする。
判定の結果、郵便番号の形式に合致した場合(S1702:Yes)には、ステップS1701で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換え(S1703)、郵便番号マスキング処理を終了する。
一方、ステップS1702の判定の結果、郵便番号の形式(配列パターン)に合致しない場合(S1702:No)には郵便番号マスキング処理を終了する。
【0037】
図18は、メールアドレス判定部205の行うマスキング処理手順の一例を示すフローチャートである。
メールアドレス判定部205は、まず、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S1801)。
次に、読み込んだ文字が「@」であるか否かを判定する(S1802)。
判定の結果、「@」である場合(S1802:Yes)には、後述するメールアドレスマスキング処理を行う(S1803)。
一方、ステップ1802の判定の結果、「@」以外の文字の場合(S1802:No)には、次の文字について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0038】
図19は、図18のステップS1803に示すメールアドレスマスキング処理の詳細な手順の一例を示すフローチャートである。
メールアドレスマスキング処理では、まず、「@」から分割された電子文書の先頭まで1文字ずつ読み込み(S1901)、読み込んだ文字が英数字及び記号以外の文字であるか否かを判定する(S1902)。
判定の結果、英数字,記号以外の場合(S1902:Yes)には、それまでに読み込んだ文字列がメールアドレスの「@」より前の部分を構成するものとしてマスキング対象に設定し、伏字(●●●等)に置き換える(S1903)。
一方、読み込んだ文字が英数字又は記号の場合(S1902:No)には、次の文字を読み込む。
次に、「@」から分割された電子文書の末尾まで1文字ずつ読み込み(S1904)、読み込んだ文字が英数字及び記号以外の文字であるか否かを判定する(S1905)。
判定の結果、英数字,記号以外の場合(S1905:Yes)には、それまでに読み込んだ文字列がメールアドレスの「@」より後の部分を構成するものとしてマスキング対象に設定し、伏字(●●●等)に置き換え(S1906)、メールアドレスマスキング処理を終了する。
一方、読み込んだ文字が英数字又は記号の場合(S1905:No)には、次の文字を読み込む。
【0039】
図20は、電話番号判定部206の行うマスキング処理手順の一例を示すフローチャートである。
電話番号判定部206は、まず、文分割部201が分割した電子文書を取得して、その電子文書を構成する文字列を1文字ずつ読み込み、分割した電子文書の最後の文字まで、以下の処理を繰り返す(S2001)。
次に、読み込んだ文字が数字であるか否かを判定する(S2002)。
判定の結果、数字である場合(S2002:Yes)には、読み込んだ文字(数字)から後ろにn文字目の文字を読み込み(S2003、S2004)、読み込んだ文字が数字及び記号(ハイフン)以外の文字であるか否かを判定する(S2005)。この場合、n+1(ステップS2001で読み込んだ文字を含む文字数)が、電話番号判定辞書900の桁数901に設定された数字となるように、nが5〜12に設定されている。
判定の結果、数字又は記号(ハイフン)以外の文字である場合(S2005:Yes)には、後述する電話番号マスキング処理により電話番号をマスキングする(S2006)。
一方、ステップS2005の判定の結果、読み込んだ文字が数字又は記号の場合(S2005:No)には、次の文字について処理を繰り返す。
以上の処理を、分割された電子文書に含まれる全ての文字について行った後、処理を終了する。
【0040】
図21は、図20のステップS2005に示す電話番号マスキング処理の詳細な手順の一例を示すフローチャートである。
電話番号マスキング処理では、読み込んだn文字目までの文字列が電話番号判定辞書900の正規表現902と合致するか否かを判定する(S2101)。
具体的には、n+1の桁数901に対応する正規表現902の定義情報を取得して、文字列との比較を行う。
判定の結果、正規表現902の定義情報に合致する場合(S2101:Yes)には、文字列の接頭辞(m文字)又は接尾辞(m文字)が、単位辞書1000に格納された文字列と一致するか否かを判定する(S2103)。ここで「m」は、0〜MAXまでループするものとし、MAXは単位辞書1000に格納された文字列の最大文字数とする。
判定の結果、一致した場合(S2103:Yes)には、その文字列は電話番号以外を示すものとして、マスキング対象から除外して電話番号マスキング処理を終了する。
一方、ステップS2103の判定の結果、一致しない場合(S2103:No)には、S2004で読み込んだ文字列をマスキング対象に設定して、伏字(●●●等)に置き換えて電話番号マスキング処理を終了する(S2104)。
【0041】
なお、本発明の構成は、上述した実施形態に示すものに限らず、各処理部の構成及び各データベース、マスキング対象判定辞書のデータ構造等を変更してもよい。例えば、上記実施形態では、個人情報データベース、顧客情報データベースと、マスキング対象判定辞書とを異なるものとして構成しているが、各データベースをマスキング対象判定辞書に含めることとしてもよい。また、各データベースは他のシステムに存在するものを用いることとしてもよい。
【0042】
以上説明したように、本発明によれば、構造化されていない電子文書に含まれる個人名を適切にマスキングすることができる。
従って、電子文書の論理構造の解析等が不要となり、高速にマスキング処理を行うことが可能となる。
【符号の説明】
【0043】
10…CPU、20…メモリ、30…記憶装置、40…電子文書マスキングプログラム、100…電子文書マスキングシステム、101…マスキング処理部、102…個人情報DB、103…顧客情報DB、104…マスキング対象判定辞書、110…電子文書、120…マスキング済電子文書、201…文分割部、202…氏名判定部、203…企業名判定部、204…住所判定部、205…メールアドレス判定部、206…電話番号判定部、300…氏名接頭辞辞書、400…氏名接尾辞辞書、500…企業名接頭辞辞書、600…企業名接尾辞辞書、700…地名接尾辞辞書、800…地名辞書、900…電話番号判定辞書、1000…単位辞書
【特許請求の範囲】
【請求項1】
個人名を抽出するための接頭辞を示す文字列を格納した氏名接頭辞辞書と、
個人名を抽出するための接尾辞を示す文字列を格納した氏名接尾辞辞書と、
電子文書に含まれる文字列が、前記氏名接頭辞辞書に格納されている接頭辞を示す文字列と一致するか否かを判定する氏名接頭辞判定手段と、
前記氏名接頭辞判定手段によって一致すると判定された場合に、前記接頭辞を示す文字列の後ろの所定の文字数の文字列の中に前記氏名接尾辞辞書に格納されている接尾辞を示す文字列と一致する文字列があるか否かを判定する氏名接尾辞判定手段と、
前記氏名接尾辞判定手段によって一致する文字列があると判定された場合に、前記電子文書の中の前記接頭辞を示す文字列、および前記接頭辞を示す文字列と前記接尾辞を示す文字列の間の文字列を伏字に置き換えるマスキング手段と、
を備えることを特徴とする電子文書マスキングシステム。
【請求項1】
個人名を抽出するための接頭辞を示す文字列を格納した氏名接頭辞辞書と、
個人名を抽出するための接尾辞を示す文字列を格納した氏名接尾辞辞書と、
電子文書に含まれる文字列が、前記氏名接頭辞辞書に格納されている接頭辞を示す文字列と一致するか否かを判定する氏名接頭辞判定手段と、
前記氏名接頭辞判定手段によって一致すると判定された場合に、前記接頭辞を示す文字列の後ろの所定の文字数の文字列の中に前記氏名接尾辞辞書に格納されている接尾辞を示す文字列と一致する文字列があるか否かを判定する氏名接尾辞判定手段と、
前記氏名接尾辞判定手段によって一致する文字列があると判定された場合に、前記電子文書の中の前記接頭辞を示す文字列、および前記接頭辞を示す文字列と前記接尾辞を示す文字列の間の文字列を伏字に置き換えるマスキング手段と、
を備えることを特徴とする電子文書マスキングシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2012−113530(P2012−113530A)
【公開日】平成24年6月14日(2012.6.14)
【国際特許分類】
【出願番号】特願2010−262282(P2010−262282)
【出願日】平成22年11月25日(2010.11.25)
【出願人】(000233055)株式会社日立ソリューションズ (1,610)
【Fターム(参考)】
【公開日】平成24年6月14日(2012.6.14)
【国際特許分類】
【出願日】平成22年11月25日(2010.11.25)
【出願人】(000233055)株式会社日立ソリューションズ (1,610)
【Fターム(参考)】
[ Back to top ]