oracleでちょっといい編集距離方法
編集距離(レーベンシュタイン)で文字の差を見たいとか、一致率の高いやつを出したい、見たいな要望があったんですが、純粋な編集距離だと文字に余計な装飾がついている方が「距離が遠く」なります。
例)
マスタ
東京都府中市1-1-1 あああああビル
広島県府中市1-1-1
ぶつけたいデータ
東京都府中市1-1-1
マスタにぶつけてみると「広島県」の方が上位になってしまう。
これは困ったと調べてみたら、前方一致率が高い方が優勢という取得方法がありました。
UTL_MATCH.JARO_WINKLERという方法。
参考:
https://docs.oracle.com/cd/E57425_01/121/ARPLS/u_match.htm
編集距離(レーベンシュタイン)で文字の差を見たいとか、一致率の高いやつを出したい、見たいな要望があったんですが、純粋な編集距離だと文字に余計な装飾がついている方が「距離が遠く」なります。
例)
マスタ
東京都府中市1-1-1 あああああビル
広島県府中市1-1-1
ぶつけたいデータ
東京都府中市1-1-1
マスタにぶつけてみると「広島県」の方が上位になってしまう。
これは困ったと調べてみたら、前方一致率が高い方が優勢という取得方法がありました。
UTL_MATCH.JARO_WINKLERという方法。
select UTL_MATCH.EDIT_DISTANCE_SIMILARITY('aaaaa','aaaab') as datこれでより人間の目で見た方にちょっと近い編集距離を取ることが出来ました。
from dual
→80
select UTL_MATCH.JARO_WINKLER('aaaaa','aaaab') as dat
from dual
→0.92
参考:
https://docs.oracle.com/cd/E57425_01/121/ARPLS/u_match.htm
コメント