データ変換支援(データマッチング)

デーや取り込み、ジオプレースメントなどで2つのテーブルのレコードを関連付ける(データマッチング)する際に、利用します。配置先テーブルと入力源テーブル、双方の項目データ(住所情報等)の表記がある程度異なっている場合でも、変換機能等を用いることにより、両者の一致(マッチング)を見いだすことができます。

変換表を利用することによって2つのテーブルのレコードの関連付けが完全なものになるものではありません。また変換は変換条件の設定が正しく記述されていなければなりません。

変換のルール
  
変換の考え方
この変換表では文脈依存による文字(文字列)の変換をおこなうことができます。
文脈依存とは、文字(文字列)の前後にどのような文字(文字列)が来るかを指定することを可能とする方式です。文脈自由とは前後の文字列に関わらず合致する文字(文字列)があれば無条件に対象としてしまう方式です。
原文
「中国の料理にはいろいろな料理があります。中国料理はその地域から東は酸味、西は辛く、南はあっさり、北部は塩味という風に味が区分されます。私が好きな中国料理は中国の東南から起源を発した福建料理です。」 といった文例で「中国」を「中華」に変換する場合で文脈依存と文脈自由による変換を比較してみます。
文脈自由の場合 (中華=中国)
全ての「中国」は「中華」に変換され次のようになります。
中華の料理にはいろいろな料理があります。中華料理はその地域から東は酸味、西は辛く、南はあっさり、北部は塩味という風に味が区分されます。私が好きな中華料理は中華の東南から起源を発した福建料理です。」
文脈依存の場合 (:中華:=:中国:料理;)
料理の前にくる「中国」を「中華」に変換するように文脈を指定すると次のように変換されます。
中国料理にはいろいろな料理があります。中華料理はその地域から東は酸味、西は辛く、南はあっさり、北部は塩味という風に味が区分されます。私が好きな中華料理中国の東南から起源を発した福建料理です。」
上の例は単純で特定な変換ですので、「中華←中国」を「中華料理←中国料理」とすれば文脈自由でも文脈依存と同じ変換結果を得ることが出来ます。
文脈依存による変換は「句読点の後の算用数字の前に「空白」を挿入する」など、汎用な文脈との関連で変換を実施したい場合には特に効果的です。ちなみに「句読点の後の算用数字の前に空白を挿入する」はこの変換表のルールでは「 :*:=[、。]:#:;」と記述します。
 
基本的なルール
A+t+B=C:s:D; として記述し右辺を左辺のように変換します。
C Sの前に置かれる条件の文字(文字列、左端指定)、省略の場合は無条件
s 変換される対象となる文字(文字列)
D s の後に置かれる条件の文字(文字列、右端指定)、省略の場合は無条件
A t の前に置かれる文字(文字列)、前置詞が不要の場合は空白
t s 変換後の文字(文字列)、前後置詞のみで s の変換不要の場合は*
B t の後に置かれる文字(文字列)、後置詞が不要の場合は空白
コロンの外が空白である場合は無条件であることを示します。
C、Dが空白である場合は文脈自由であることを意味し、:を省略することができます。
A、Bが空白である場合はs→tの文字の置き換えを意味し、:を省略することができます
 
よく使われる変換ルールの例
都道府県レベルの変換
1. 都道府県が確実に省略されている場合で、都道府県を付加する.。
変換表_1
+*+都=東:京:}; 東京を東京都に変換
+*+府=京:都:}; 京都を京都府に変換
+*+府=大:阪:}; 大阪を大阪府に変換
+*+県=$:[^都道府県]:}; 右端に都道府県のつかない文字列に県を付加する
2. 都道府県が省略されているかどうか不明のとき、または、省略されたのとそうでないのとが混合しているときに、都道府県を付加する。 
「{」が追加されたことにより「東京都」の後ろ2文字が「京都」とみなされたりするのを防ぐことができます。
変換表_1
+*+都={東:京:}; 東京を東京都に変換
+*+府={京:都:}; 京都を京都府に変換
+*+府={大:阪:}; 大阪を大阪府に変換
+*+県=$:[^都道府県]:}; 右端に都道府県のつかない文字列に県を付加する
ここでは次の規則が使われています。
+  + プラス 区切り文字(左辺の区切り文字)
:   : コロン 区切り文字(文脈指定において右辺の区切り)
;   ; セミコロン 区切り文字(変換指定の区切り)
*  * 右辺の中央の変数部においては、任意の文字列(0文字以上)
左辺においては右辺の変数そのもの
}   } 右はなし
{   { 左はなし
$   $ 算用数字以外の文字
$$  $$ 算用数字以外の文字列(一字以上)
[^] [ ]で囲まれた文字以外の文字(いずれか1文字との比較)
^文字列 指定された文字列の文字数と同じ文字数の文字列に対して指定された文字列と異なるもの
注) [ ] ^ は半角のみ
   
市区町村レベルの変換
1. 先頭にある「東京都」を削除する。
変換表_1
+NULL+={:東京都:$; 市区町村名の頭にある東京都を削除
2. 埼玉市をさいたま市に修正する。
変換表_1
さいたま市=埼玉市 無条件に置き換え
3. 先頭の郡名を削除し先頭を町村名にする(3つの変換表を順次に実行します)
変換表_1
郡+*+={:郡:; 郡から始まる行政名に郡を付加します
変換表_2
+NULL+={:*:郡; 郡の前の先頭からの文字を削除します
変換表_3
+NULL+={:郡:; 先頭の郡の文字を削除します
ここでは次の規則が使われています。
NULL 削除
  文脈自由である場合はコロン:は省略可能
   
大字町丁目レベルの変換
1. 丁目を削除し、番地の間の文字を「-」に統一します。
変換表_1
+##+=$:&&:丁目; 漢数字の丁目を算用数字に変換
+-+=:丁目:#; 算用数字の前の丁目を-に置き換える
+-+=#:[のノー]:#; 算用数字の間の「の」「ノ」「ー」を「-」に置き換える
+-+=#:−:#; 倍角のハイフォン(−)を半角(-)に置き換える
2. 文字の間の「が、ヶ、ケ、ガ」などの表記の揺れを統一する。
変換表_1
+ヶ+=$:[がガヶ]:$; 文字の間の「が」「ガ」「ケ」を「ヶ」に置き換える
+ノ+=$:[の之]:$; 文字の間の「の」「之」を「ノ」に置き換える
+ツ+=$:[つっッ]:$; 文字の間の「つ」「っ」「ッ」を「ツ」に置き換える
ここでは次の規則が使われています。
&  & 漢数字の一文字
&&  && 漢数字の列(一字以上)
#  # 算用数字の一文字
##  ## 算用数字の列(一字以上)
[ ] 囲まれた文字のいずれか(1文字)
#と&は相互に変換の関係にある
 
その他の変換例
〒+*+={:*:}; 郵便マーク(〒)を付加します
  「〒100-0001」 ← 「100-0001」
+NULL+=:[様殿]:}; 最右端の様や殿を削除します
  「山田太郎」 ← 「山田太郎様」