Skip to content

Latest commit

 

History

History
70 lines (51 loc) · 7.16 KB

AddressDictionayforEDM2.md

File metadata and controls

70 lines (51 loc) · 7.16 KB

キーワード辞書でワード マッチにおけるワードブレークのずれに対処する

キーワード辞書に先のページで作成したキーワード辞書を登録しても、本文中から検知しない住所が存在します。これは、住所において町域等の後に数字で丁番号が続くことが一般的に想定されますが、これらの丁番号が続くか続かないかによって、ワードブレークの位置がずれてしまうケースがあるためです。

丁番号有無によるワードブレークのずれ

例キーワード辞書に登録した文字列
Ⓐ愛知県一宮市川田町

本文中の住所例
Ⓑ愛知県一宮市川田町1
Ⓒ愛知県一宮市川田町1-2-3
Ⓓ愛知県一宮市川田町であるが

これらは、それぞれ以下のようなワードブレークが実施されます。
Ⓐ’愛知 県 一宮 市川 田 町
Ⓑ'愛知 県 一宮 市 川田 町 1
Ⓒ'愛知 県 一宮 市川 田町 1 2 3
Ⓓ'愛知 県 一宮 市 川 田 町 で ある が

上記のケースでは、Ⓐ'Ⓑ'Ⓒ'Ⓓ'それぞれで、異なるワード ブレークがなされており、ワード マッチの動作となるキーワード辞書においては、 Ⓐの文字列をキーワード辞書登録しても、本文中のⒷ,Ⓒ,Ⓓからは、Ⓐのワードを検出できないという現象が発生します。

カスタムのアプリによるワードブレーク動作の結果
(ワード ブレークを検証するためにはアプリを作成する必要があり、またワードブレークの呼び出しは簡単ではない。)
image

郵便番号で識別される住所のワード ブレークのずれの総計

先のページで作成した郵便番号で識別される住所で、 どれくらいのワード ブレークのぶれが発生するかについて、Microsoft 365 のワード ブレーカーを利用したカスタムのアプリによる分析結果では、以下の通りとなります。特に丁番号の有無によらずぶれないものが 85.65% あるものの、残り 15% 弱の住所では、先の丁番号がないⒷ~Ⓓのパターンの中で、ワードブレークが異なるものが存在します。以下の 4 桁の判定結果では、左の数字から順番にⒶ、Ⓑ、Ⓒ、Ⓓのワードブレークに対応していて、Ⓐのパターンを 0 として、以降ⒷからⒹのワードブレークを相互に比較し、共通するワードブレークのパターンが現れる場合には同じ数字を付与し、新しいワードブレークのパターンには新しい +1 の数字を振っています。そのため、Ⓐ~Ⓓでのワードブレークがすべて一致する場合には、「0000」、Ⓑでのみワードブレークが異なる場合には、「0100」、ⒶとⒷのパターンが同じで、それとは異なり、ⒸとⒹが同じパターンの場合、「0011」、Ⓐ~Ⓓが全部異なる場合、「0123」といった表現になります。先の愛知県一宮市川田町は、全国 12 万の郵便番号で識別される住所のうち 35 個しかない「0123」のパターンの一つとなります。

参考: 分析結果のExcel

image

キーワード辞書での対処

15% 弱の住所では、丁番号等の有無によりワード ブレーク位置が異なるバリエーションが存在することになりますが、そういったワード ブレークの位置が異なる バリエーションも含めて検知をしたい場合、キーワード辞書に、あらかじめワード ブレークを想定したキーワード登録をします。 その一つの方法は、検知したいワード単位にキーワードを分割し、前・後ろも含めて"_"で連携したものを登録しておくことです。 先の例では、通常の Ⓐ のパターンのフラットな住所の記述に加えて、Ⓑ および Ⓒ を想定した以下の文字列を合わせて登録することになります。

愛知県一宮市川田町
_愛知_県_一宮_市_川田_町_
_愛知_県_一宮_市川_田町_
_愛知_県_一宮_市_川_田_町_

なお、上記の文字列は、Word マッチのためにワードブレーク処理がされると"_"が除去され、想定した通りのワードブレークがなされます。

カスタムのアプリによるワード ブレーク動作の結果
image

Microsoft 365 のワード ブレークのずれを反映させた住所辞書

先のページで生成した住所辞書を元に、"_" を挿入する手法で、ワードブレーク位置が異なる住所を追加した日本の住所の辞書がこちらです。 この住所辞書は、UTF-16 のエンコードで、3.68MB のサイズとなっていますが、PowerShell で取り込むことで、圧縮後 1MB のキーワード辞書のサイズ制限に収まるものとなります。

UI を通じたキーワード辞書の更新について

上記の"_"で区切る手法を用いて、新規に UI や PowerShell でキーワード辞書を定義する際は問題がないですが、UI で、キーワード辞書を更新することはできません。これは、既存で登録されたキーワードを読み込む際、UI 上では、先の "_" を削除した文字列が読み込まれて表示されるためで、そのまま更新して保存すると、"_" で分けたもののも、分けなかったものも、すべて同じ文字列として保存され、ワード ブレークの明示的な指定が失われてしまいます。そのため、こういった辞書を管理する場合には、PowerShell を通じて、辞書全体を更新するような運用が必要となります。

PowerShell を通じた住所辞書の取り込み

Exchange Online PowerShell を用いることで、住所の辞書を以下のような PowerShell のコマンドで取り込むことができます。

Connect-IPPSSession   
$fileData = [System.IO.File]::ReadAllBytes("C:\WB\JPAddressDicwithVariations.txt")

#新規作成の場合
New-DlpKeywordDictionary -Name "JPAddress"  -Description "郵便番号ベースの日本の住所" -FileData $fileData

#更新の場合
Set-DlpKeywordDictionary -Identity "JPAddress" -FileData $fileData