(57)【要約】      （修正有）【課題】表記が同じ地名や、省略された表記、建物名や人名などが混在している場合であっても、正確なデータクレンジングが可能とする。【解決手段】住所を定義する辞書データ１０１ｂを参照して住所を構成する要素の候補である基本トークンとして追加するとともに、分割された文字列について辞書データ１０１ｂから該当する単語が検出されない場合には、当該分割された文字列の文字種別を解析し、解析された文字種別に応じた解析トークンとして追加する候補追加部１０２ａと、候補追加部１０２ａによって追加された基本トークン及び解析トークンを分岐をさせつつ接続して木構造を構築するツリー構築部１０２ｂと、木構造に含まれる分岐パターン毎に、各トークンの優先度に応じて付与された重み付けを加算したコストを計算するコスト計算部１０２ｃと、計算されたコストに応じて所定の分岐パターンを住所の候補として選択する候補選択部１０２ｅとを備えている。【選択図】図２
2018101244.tif 000002
【特許請求の範囲】
【請求項１】
入力された文字列から、住所に関する情報を抽出し特定するデータクレンジングシステムであって、
前記文字列を取得する文字列取得部と、
前記入力された文字列を分割し、分割された文字列について住所に関する単語を定義する辞書を参照し、辞書から検出された単語を、住所を構成する要素の候補である基本トークンとして追加するとともに、前記分割された文字列について前記辞書から該当する単語が検出されない場合には、当該分割された文字列の文字種別を解析し、解析された文字種別に応じた解析トークンとして追加する候補追加部と、
前記候補追加部によって追加された前記基本トークン及び解析トークンを、特定すべき住所の候補として分岐をさせつつ接続して木構造を構築するツリー構築部と、
前記ツリー構築部が構築した木構造に含まれる分岐パターン毎に、各トークンの優先度に応じて付与された重み付けを加算したコストを計算するコスト計算部と、
計算されたコストに応じて、所定の分岐パターンを前記特定すべき住所の候補として選択する候補選択部と
を備えることを特徴とするデータクレンジングシステム。
【請求項２】
前記候補選択部によって選択された情報と、前記文字列取得部によって取得された文字列とを比較し、その合致の程度をマッチングレベルとして出力するマッチングレベル判定部をさらに備えることを特徴とする請求項１に記載のデータクレンジングシステム。
【請求項３】
前記候補追加部は、各分岐点において、前記候補追加部により追加された基本トークン又は解析トークンに対応させて、未知語としての優先度が付与された未知語トークンをさらに追加することを特徴とする請求項１又は２に記載のデータクレンジングシステム。
【請求項４】
前記候補追加部は、各分岐点において、前記基本トークン又は解析トークンのうち所定の文字数のものについてのみ前記未知語トークンを生成することを特徴とする請求項３に記載のデータクレンジングシステム。
【請求項５】
入力された文字列から、住所に関する情報を抽出し特定するデータクレンジング方法であって、
候補追加部が、分割された文字列について住所に関する単語を定義する辞書を参照し、辞書から検出された単語を、住所を構成する要素の候補である基本トークンとして追加するとともに、前記分割された文字列について前記辞書から該当する単語が検出されない場合には、当該分割された文字列の文字種別を解析し、解析された文字種別に応じた解析トークンとして追加する候補追加ステップと、
ツリー構築部が、前記候補追加ステップで追加された前記基本トークン及び解析トークンを、特定すべき住所の候補として分岐をさせつつ接続して木構造を構築するツリー構築ステップと、
前記ツリー構築ステップで構築した木構造に含まれる分岐パターン毎に、各トークンの優先度に応じて付与された重み付けを加算したコストを、コスト計算部が計算するコスト計算ステップと、
計算されたコストに応じて、所定の分岐パターンを前記特定すべき住所の候補として候補選択部が選択する候補選択ステップと
を備えることを特徴とするデータクレンジング方法。
【請求項６】
入力された文字列から、住所に関する情報を抽出し特定するデータクレンジングプログラムであって、コンピューターを、
前記文字列を取得する文字列取得部、
前記入力された文字列を分割し、分割された文字列について住所に関する単語を定義する辞書を参照し、辞書から検出された単語を、住所を構成する要素の候補である基本トークンとして追加するとともに、前記分割された文字列について前記辞書から該当する単語が検出されない場合には、当該分割された文字列の文字種別を解析し、解析された文字種別に応じた解析トークンとして追加する候補追加部、
前記候補追加部によって追加された前記基本トークン及び解析トークンを、特定すべき住所の候補として分岐をさせつつ接続して木構造を構築するツリー構築部と、
前記ツリー構築部が構築した木構造に含まれる分岐パターン毎に、各トークンの優先度に応じて付与された重み付けを加算したコストを計算するコスト計算部、及び
計算されたコストに応じて、所定の分岐パターンを前記特定すべき住所の候補として選択する候補選択部
として機能させることを特徴とするデータクレンジングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、名寄せ処理やデータクリーニング処理など、入力された文字列から住所に関する情報を抽出し特定するデータクレンジングシステム、データクレンジング方法及びデータクレンジングプログラムに関する。
【背景技術】
【０００２】
テキスト処理技術の一つとして、情報抽出技術が種々開発されている。これは、テキストを解析して指定したオブジェクトの情報を抜き出す技術であり、この情報抽出技術では、企業名、個人名、住所、電話番号などの情報を抽出し、情報抽出の結果は、既存の情報への付加情報或いは更新情報として活用される。この際、データ補正や重複データ判別のための処理を行い、データベース内に無秩序に格納されたデータを標準化する技術としてデータクレンジング（データクリーニング／名寄せ）がある。このデータクレンジングとは一般には顧客情報の一元化を意味するが、より広い意味では同一のオブジェクトに関する情報を一元化するための技術である。例えば複数の企業情報で社名と住所が一致している場合、それらを同一と判断することで、企業というオブジェクトの情報を一元的に管理することを可能とする。
【０００３】
ところで、上述した名寄せやデータクレンジングでは、一般的に、類似度によってキーワードに近いデータを検索する「あいまい検索機能」を、住所全体に対して行い、同一の住所を検出する処理を行う手法が採用されている。ところが、住所全体に対してあいまい検索を行うと、文字の意味や属性を無視して文字列の一致度のみで検索するため、明らかに違う住所がヒットしてしまう場合がある。例えば、「東京都○○区××４丁目２２−１９」と「東京都○○区××４丁目２−１９」とは、住所としては全く別であるが、文字列としては１文字だけの違いであるため同様に検出される。また、「東京都○○区××４−２２−１９」と「東京都○○区××４丁目２２−１９」とは、住所としては同一であるが、あいまい検索では一致度が低く検出されない。このため、あいまい検索を用いたデータクレンジングでは、最低限、建物名以前までは意味が完全に一致するように処理する必要がり、住所を構成する文字の意味をコンピューターが理解できるように形態素解析を行い分解しておく必要がある。
【０００４】
従来の形態素解析を用いた方法としては、例えば、特許文献１に開示されたような読替え可能な文字列の対応を記録した読み替え辞書を用いて、文字列の読替えを行うプログラムがある。この特許文献１に開示された読み替え辞書とは、読替え可能な文字列の対応を記録した辞書データであり、コンピューターを用いた名寄せ処理における正規化辞書や、一種のシソーラスなどとして利用できる。この読替え辞書では、形態素解析により文字列に含まれる単語又は複合語として分解し、単語又は複合語の対応を抽出して読み替え辞書に登録しておき、それら単語又は複合語の対応を用いて文字列を読み替え、データ補正や重複データの判別を行う。
【０００５】
この特許文献１に開示されたプログラムでは、第１の文字列と第２の文字列とを取得し、取得した第１の文字列と第２の文字列とから、それぞれ単語又は複合語である文字列を抽出し、操作者の選択操作に応じて、選択された文字列の対を記憶部に記憶しておき、表記が類似しない文字列の対応を読替え可能な文字列の対応の候補として抽出可能とする。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−６５０６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した特許文献１に開示されたプログラムでは、読み替え可能な単語や複合語を対応付けておき、読み替えの候補として提示するだけのものであることから、例えば、新宿区の「新宿（シンジュク）」と葛飾区にある「新宿（ニイジュク）」など表記が同じ地名については、区別されることなく候補として抽出されることとなり、さらに、市区町村を省略して表記されていたり、建物名や人名などが混在している場合には、誤った候補が抽出されたり、或いは無数の候補が抽出されたりすることとなり、正確なデータクレンジングが困難となる可能性がある。
【０００８】
そこで、本発明では、上記課題を解決するために、表記が同じ地名や、省略された表記、建物名や人名などが混在している場合であっても、正確なデータクレンジングが可能なデータクレンジングシステム、データクレンジング方法及びデータクレンジングプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明は、
入力された文字列から、住所に関する情報を抽出し特定するデータクレンジングシステムであって、
前記文字列を取得する文字列取得部と、
前記入力された文字列を分割し、分割された文字列について住所に関する単語を定義する辞書を参照し、辞書から検出された単語を、住所を構成する要素の候補である基本トークンとして追加するとともに、前記分割された文字列について前記辞書から該当する単語が検出されない場合には、当該分割された文字列の文字種別を解析し、解析された文字種別に応じた解析トークンとして追加する候補追加部と、
前記候補追加部によって追加された前記基本トークン及び解析トークンを、特定すべき住所の候補として分岐をさせつつ接続して木構造を構築するツリー構築部と、
前記ツリー構築部が構築した木構造に含まれる分岐パターン毎に、各トークンの優先度に応じて付与された重み付けを加算したコストを計算するコスト計算部と、
計算されたコストに応じて、所定の分岐パターンを前記特定すべき住所の候補として選択する候補選択部と
を備えることを特徴とする。
【００１０】
また、本発明は、入力された文字列から、住所に関する情報を抽出し特定するデータクレンジング方法であって、
候補追加部が、分割された文字列について住所に関する単語を定義する辞書を参照し、辞書から検出された単語を、住所を構成する要素の候補である基本トークンとして追加するとともに、前記分割された文字列について前記辞書から該当する単語が検出されない場合には、当該分割された文字列の文字種別を解析し、解析された文字種別に応じた解析トークンとして追加する候補追加ステップと、
ツリー構築部が、前記候補追加ステップで追加された前記基本トークン及び解析トークンを、特定すべき住所の候補として分岐をさせつつ接続して木構造を構築するツリー構築ステップと、
前記ツリー構築ステップで構築した木構造に含まれる分岐パターン毎に、各トークンの優先度に応じて付与された重み付けを加算したコストを、コスト計算部が計算するコスト計算ステップと、
計算されたコストに応じて、所定の分岐パターンを前記特定すべき住所の候補として候補選択部が選択する候補選択ステップと
を備えることを特徴とする。
【００１１】
これらの本発明によれば、入力文字列から分割した単語について、辞書を参照して、辞書中の単語や文字種別に応じて重み付をしつつ接続して木構造を構築して、木構造の分岐パターン毎のコストを計算して、候補を抽出するため、例えば、新宿区の「新宿（シンジュク）」と葛飾区にある「新宿（ニイジュク）」など表記が同じ地名があっても、実在する市区町村に応じて、区別して住所の構成要素の候補として抽出することができ、さらに、市区町村を省略して表記されていたり、建物名や人名などが混在している場合であっても、正確なデータクレンジングが可能となる。
【００１２】
上記発明における前記候補追加部は、各分岐点において、前記候補追加部により追加された基本トークン又は解析トークンに対応させて、未知語としての優先度が付与された未知語トークンをさらに追加することが好ましい。この場合には、市区町村が省略されたり、誤記が混在している場合にも未知語としてコスト計算に含めておき、候補に含めることができる。
【００１３】
上記発明では、候補選択部によって選択された情報と、文字列取得部によって取得された文字列とを比較し、その合致の程度をマッチングレベルとして出力するマッチングレベル判定部をさらに備えることが好ましい。この場合には、クレンジング後のデータ同士を比較して、その結果をマッチングレベルとして出力することから、通信サービス等の審査などにおいて、マッチしている状態をレベルで分けて出力・表示することができ、例えば不正住所を記載した偽造証明書を使った不正な申し込みを検知することができる。
【００１４】
上記発明において前記候補追加部は、各分岐点で前記基本トークン又は解析トークンのうち所定の文字数のものについてのみ前記未知語トークンを生成することが好ましい。この場合には、未知語を追加することによる演算処理量の増加を最低限に抑えることができ、演算負荷の増大による処理遅延等を回避することができる。
【００１５】
なお、上述した本発明に係るデータクレンジングシステム及びデータクレンジング方法は、所定の言語で記述された本発明のデータクレンジングプログラムをコンピューター上で実行することにより実現することができる。すなわち、本発明のプログラムを、携帯端末装置やスマートフォン、ウェアラブル端末、モバイルＰＣその他の情報処理端末、パーソナルコンピュータやサーバーコンピューター等の汎用コンピューターのＩＣチップ、メモリ装置にインストールし、ＣＰＵ上で実行することにより、上述した各機能を有するシステムを構築して、本発明の方法を実施することができる。
【００１６】
すなわち、本発明のプログラムは、入力された文字列から、住所に関する情報を抽出し特定するデータクレンジングプログラムであって、コンピューターを、
前記文字列を取得する文字列取得部、
前記入力された文字列を分割し、分割された文字列について住所に関する単語を定義する辞書を参照し、辞書から検出された単語を、住所を構成する要素の候補である基本トークンとして追加するとともに、前記分割された文字列について前記辞書から該当する単語が検出されない場合には、当該分割された文字列の文字種別を解析し、解析された文字種別に応じた解析トークンとして追加する候補追加部、
前記候補追加部によって追加された前記基本トークン及び解析トークンを、特定すべき住所の候補として分岐をさせつつ接続して木構造を構築するツリー構築部と、
前記ツリー構築部が構築した木構造に含まれる分岐パターン毎に、各トークンの優先度に応じて付与された重み付けを加算したコストを計算するコスト計算部、及び
計算されたコストに応じて、所定の分岐パターンを前記特定すべき住所の候補として選択する候補選択部
として機能させることを特徴とする。
【００１７】
このような本発明のデータクレンジングプログラムでは、例えば、通信回線を通じて配布することが可能であり、また、コンピューターで読み取り可能な記録媒体に記録することにより、スタンドアローンの計算機上で動作するパッケージアプリケーションとして譲渡することができる。この記録媒体として、具体的には、フレキシブルディスクやカセットテープ等の磁気記録媒体、若しくはＣＤ-ＲＯＭやＤＶＤ-ＲＯＭ等の光ディスクの他、ＲＡＭカードなど、種々の記録媒体に記録することができる。そして、このプログラムを記録したコンピューター読み取り可能な記録媒体によれば、汎用のコンピューターや専用コンピューターを用いて、上述したシステム及び方法を簡便に実施することが可能となるとともに、プログラムの保存、運搬及びインストールを容易に行うことができる。
【発明の効果】
【００１８】
このような本発明によれば、名寄せやデータクリーニング等のデータクレンジング処理に際し、表記が同じ地名や、省略された表記、建物名や人名などが混在している場合であっても、正確な文字列を読み替えやデータ補正、重複データの判別を行うことができる。
【００１９】
特に、クレンジング後のデータ同士を比較し、マッチしている状態をレベルで分けるなどの処理を実行することで、通信サービス等の審査などにおいて、不正住所を記載した偽造証明書を使った不正な申し込みを検知することができる。
【図面の簡単な説明】
【００２０】
【図１】実施形態に係るデータクレンジングシステムを実現するための情報処理端末装置の全体構成を示す概念図である。
【図２】実施形態に係るデータクレンジングシステムのＣＰＵ上に構築される機能モジュールを示すブロック図である。
【図３】実施形態に係る処理の概略を示すフロー図である。
【図４】実施形態に係る各処理に関わるデータを示す説明図である。
【図５】実施形態に係るツリー生成処理を示すフロー図である。
【図６】実施形態に係る文字種別解析処理を示すフロー図である。
【図７】（ａ）は実施形態に係る住所マスターのデータ内容を示す表であり、（ｂ）は辞書データのデータ内容を示す表である。
【図８】実施形態に係るコスト計算におけるルールを示す表である。
【図９】実施形態に係るツリー生成処理の説明図であり、（ａ）は文字分割処理を示す説明図であり、（ｂ）は文字の接続処理を示す説明図である。
【図１０】実施形態に係るツリー生成処理における次段階の説明図であり、（ａ）は文字分割処理を示す説明図であり、（ｂ）は文字の接続処理を示す説明図である。
【図１１】実施形態に係るツリー生成処理において、数字が含まれている場合の文字の接続処理を示す説明図である。
【図１２】実施形態に係る生成されたツリーを示す説明図である。
【図１３】実施形態に係るツリーから選出されたパターンを示す説明図である。
【図１４】実施形態に係る形態素解析の結果を示す図表である。
【発明を実施するための形態】
【００２１】
（データクレンジングシステムの全体構成）
以下に添付図面を参照して、本発明に係るデータクレンジングシステムの実施形態を詳細に説明する。図１は、本実施形態に係るデータクレンジングシステムを実現するための情報処理端末装置の全体構成を示す概念図である。なお、説明中で用いられる「モジュール」とは、装置や機器等のハードウェア、或いはその機能を持ったソフトウェア、又はこれらの組み合わせなどによって構成され、所定の動作を達成するための機能単位を示す。
【００２２】
本実施形態に係る情報処理端末装置１は、汎用的なコンピューターや専用の装置で実現することができ、具体的には、図１に示すように、ＣＰＵ１０２と、メモリ１０３と、入力インターフェース１０４と、ストレージ装置１０１と、出力インターフェース１０５と、通信インターフェース１０６とを備えている。なお、本実施形態では、これらの各デバイスは、ＣＰＵバス１ａを介して接続されており、相互にデータの受け渡が可能となっている。
【００２３】
入力インターフェース１０４は、キーボードやポインティングデバイス、タッチパネルやボタン等の操作デバイスから操作信号を受信するモジュールであり、受信された操作信号はＣＰＵ４０２に伝えられ、ＯＳや各アプリケーションに対する操作を行うことができる。出力インターフェース１０５は、ディスプレイやスピーカー等の出力デバイスから映像や音声を出力するために映像信号や音声信号を送出するモジュールである。
【００２４】
通信インターフェース１０６は、他の通信機器とデータの送受信を行うモジュールであり、通信方式としては、例えば、電話回線やＩＳＤＮ回線、ＡＤＳＬ回線、光回線などの公衆回線、専用回線、ＷＣＤＭＡ（登録商標）及びＣＤＭＡ２０００などの第３世代（３Ｇ）の通信方式、ＬＴＥなどの第４世代（４Ｇ）の通信方式、及び第５世代（５Ｇ）以降の通信方式等の他、Ｗｉｆｉ（登録商標）、Bluetooth（登録商標）などの無線通信ネットワークが含まれる。
【００２５】
ＣＰＵ１０２は、各部を制御する際に必要な種々の演算処理を行う装置であり、各種プログラムを実行することにより、ＣＰＵ１０２上に仮想的に各種モジュールを構築する。また、このＣＰＵ１０２上では、ＯＳ（Operating System）が起動・実行されており、このＯＳによって情報処理端末装置１の基本的な機能が管理・制御されている。さらに、このＯＳ上では種々のアプリケーションが実行可能になっており、ＣＰＵ１０２でＯＳプログラムが実行されることによって、情報処理端末装置１の基本的な機能が管理・制御されるとともに、ＣＰＵ１０２でアプリケーションプログラムが実行されることによって、種々の機能モジュールがＣＰＵ上に仮想的に構築される。
【００２６】
本実施形態では、本発明のデータクレンジングプログラムを実行することにより、各種機能モジュールがＣＰＵ１０２上に構築される。具体的には、図２に示すように、文字列取得部１０２ｄと、候補追加部１０２ａと、ツリー構築部１０２ｂと、コスト計算部１０２ｃと、候補選択部１０２ｅと、マッチングレベル判定部１０２ｆとが構築される。
【００２７】
文字列取得部１０２ｄは文字列を取得するモジュールであり、入力インターフェース１０４や通信インターフェース１０６から入力されたり、ストレージ装置１０１から読み出されたりして、住所に関する文字列が取得される。取得された入力文字列は候補追加部１０２ａに受け渡される。候補追加部１０２ａは、文字列取得部１０２ｄを通じて入力された文字列を分割し、分割された文字列について住所に関する単語を定義する辞書データ１０１ｂを参照し、辞書データ１０１ｂから検出された単語を、住所を構成する要素の候補である基本トークンとして追加するとともに、分割された文字列について辞書データ１０１ｂから該当する単語が検出されない場合には、当該分割された文字列の文字種別を解析し、解析された文字種別に応じた解析トークンとして追加するモジュールである。この候補追加部１０２ａで追加された各種トークンはツリー構築部１０２ｂに受け渡される。
【００２８】
ツリー構築部１０２ｂは、候補追加部１０２ａによって追加された基本トークン及び解析トークンを、特定すべき住所の候補として分岐をさせつつ接続して木構造を構築するモジュールであり、コスト計算部１０２ｃは、ツリー構築部１０２ｂが構築した木構造に含まれる分岐パターン毎に、各トークンの優先度に応じて付与された重み付けを加算したコストを計算するモジュールである。候補選択部１０２ｅは、計算されたコストに応じて、所定の分岐パターンを特定すべき住所の候補として選択するモジュールである。
【００２９】
メモリ１０３及びストレージ装置１０１は、データを記録媒体に蓄積するとともに、これら蓄積されたデータを各デバイスの要求に応じて読み出す装置であり、例えば、ハードディスクドライブ（ＨＤＤ）やソリッドステートドライブ（ＳＳＤ）、メモリカード等により構成することができる。特に、本実施形態に係るストレージ装置１０１には、データクレンジング処理に必要なデータベースとして住所マスター１０１ａと、形態素解析を行うための辞書データ１０１ｂとが格納されている。
【００３０】
住所マスター１０１ａは、形態素解析後に住所の実在性を問い合わせるデータベースであり、図７（ａ）に示すように、６０００万件以上存在している都道府県・市区町村・大字・字・街区・地番・建物名など、各単語（住所要素）を切り出して住所を分割する単位で格納されている。なお、例えば、「〜丁目」は字として登録されている。
【００３１】
また、辞書データ１０１ｂは、形態素解析をするうえで住所として認識できる単語（文字列）を予め定義し、参照可能に格納するテーブルデータである。この辞書データ１０１ｂは、形態素解析後に、住所マスター１０１ａへ問合せを的確に行うために、住所マスター１０１ａの情報のうち「都道府県」「市区町村」「大字」「字」の情報から生成される。を行っている。また、この辞書データ１０１ｂの各レコードは、図７（ｂ）に示すように、「単語」と「本来の単語」、「品詞」、「住所コード」と関連付けて構成される。ここで、「本来の単語」とは、「葛飾区」を「葛飾」と略された場合や「霞ヶ関」「霞が関」のような表記揺れを訂正するために用いるデータである。また、「品詞」は処理の効率化、及び単語の出現位置の妥当性を検証するコスト計算のために用いられる。
【００３２】
また、本実施形態では、都道府県を判定した時点で、辞書データの選択を行うことで、検索効率を高めている。詳述すると、辞書データを都道府県毎に４７分割し、一番最初の［都道府県］や［市区町村］から、利用する辞書を一つに絞り、ツリー構築の際に生成されるパターンの下図を４７分の１に減少させている。例えば、処理対象の文字列のうち最初の３〜４文字だけを見て都道府県のどれに当てはまるかを判定し、どの都道府県の辞書データを使うか決定する。このとき、文字列の最初の文字で都道府県を判定できなくても、市区町村名でほぼ判断できるため、その時点で辞書を一つに絞って処理を進める選択することもできる。
【００３３】
上記マッチングレベル判定部１０２ｆは、候補選択部１０２ｅによって選択された情報と、文字列取得部１０２ｄによって取得された文字列とを比較し、その合致の程度をマッチングレベルとして出力するため、通信サービス等の審査などにおいて、マッチしている状態をレベルで分けて出力・表示することができ、例えば不正住所を記載した偽造証明書を使った不正な申し込みを検知することができる。
【００３４】
（データクレンジングシステムの動作）
以上説明したデータクレンジングシステムを動作させることによって、本発明のデータクレンジング方法を実施できる。図３は本実施形態に係るデータクレンジングシステムの全体的な処理概要を示すフロー図であり、図４は各処理に関わるデータを示す説明図である。ここでは「東京都葛飾区新宿４丁目２２−１９亀有警察」をクレンジング対象とした場合を例示する。
【００３５】
この場合、形態素解析の候補は、下記のように複数存在する。
（ａ）東京都  葛飾  区  新宿  ４丁目  ２２  −  １９  亀有  警察
（ｂ）東京都  葛飾  区  新宿  ４丁目  ２２  −  １９  亀有警察
（ｃ）東京都  葛飾区  新宿  ４丁目  ２２  −  １９  亀有  警察
（ｄ）東京都  葛飾区  新宿  ４丁目  ２２  −  １９  亀有警察
本実施形態では、これら（ａ）〜（ｄ）のうち（ｄ）が適正であり、このように区切られるように処理が実行される。
【００３６】
先ず、データクレンジングの対象として入力された文字列を、文字列取得部１０２ｄにより取得し（Ｓ１０１）、この入力された文字列Ｄ０１を分割し、分割された文字（単語）を、候補追加部１０２ａ及びツリー構築部１０２ｂによってノードとして接続してツリーＤ０２を生成する（Ｓ１０２）。すなわち、この文字列の分割では、文字の切り分け方や、切り分けられた文字（文字列）の属性や種別に応じて、後方に接続される文字列の属性や種別が変動することから、その変動の可能性に応じて分岐された木構造が形成される。このステップＳ１０２では、可能な文字の切り分け方を全て試行し、切り分けられた文字（文字列）の属性や種別を辞書データを参照して、木構造を構成するノードの組合せを、特定すべき住所の候補一覧であるツリーＤ０２として生成する。
【００３７】
次いで、このツリーに含まれるノードの組合せパターンについてそれぞれの確度であるコストをコスト計算部１０２ｃにより計算し（Ｓ１０３）、より確度の高いパターンを、候補選択部１０２ｅによって、特定すべき住所の候補として選択し（Ｓ１０４）、さらにマッチングレベル判定部１０２ｆによって
マッチングレベル等を計算し（Ｓ１０５）、解析結果Ｄ０３として出力する。
【００３８】
なお、本実施形態において、「トークン」とは分割された文字に品詞や住所コードなど意味の情報を持たせたデータを意味し、ツリーのノードとして取り扱われる。また「ツリー」とはトークンをつなぎ合わせたデータ構造（木構造）の全体を意味し、「パターン」とはツリーを生成した後に現れる、ノードの組合せパターンによって複数形成される住所候補の一つ一つを意味する。さらに、図４に示すように、辞書データ１０１ｂは、形態素解析後に住所マスター１０１ａへ問合せを的確に行えるように、住所マスター１０１ａの情報のうち「都道府県」「市区町村」「大字」「字」の情報から生成される。
【００３９】
（１）ツリー生成
ここで上述したツリー生成について詳述する。図５は、上述したツリー生成処理の詳細を示すフロー図である。
同図に示すように、ツリー生成ステップＳ１０２では、文字切り出し（分割）処理（Ｓ２０１ａ）、辞書問合せ処理（Ｓ２０１ｂ）、辞書にない未知語の品詞や種別を解析する処理（Ｓ２０１ｄ）によってトークンを生成して、候補として追加する辞書検索ループと、この候補として追加されたトークンを絞り込む候補絞り込みステップＳ２０２と、絞り込まれたトークンを子ツリーとして順次接続して木構造を構築するツリー生成ループ（Ｓ２０３）とを含んでいる。
【００４０】
なお、各トークンとしては、辞書から検出された単語である基本トークンと、辞書から該当する単語が検出されない場合にその文字列の文字種別を解析して得られる解析トークンと、基本トークン又は解析トークンに対応させて未知語としての優先度が付与された未知語トークンとがある。各トークンには、引数として住所、オフセット、都道府県、親ノードが設定される。この住所とは、例えば「東京都港区〜〜ビル名Ａ５０５」のように都道府県からビル名や部屋番号までの住所に関する全ての表記を指す。また、引数のオフセットは、入力された処理対象の文字列中における先頭からの文字数である。引数にはさらに、インデックスとして都道府県が含まれ、さらにはツリーのノードを形成する際の直上のノードである親ノードが設定されている。
【００４１】
図５に示す各処理について詳述する。
先ず、入力された住所に係る文字列を、都道府県・市区町村・大字・字・街区・地番・建物名といった要素単位に切り出して、入力文字列を分割する（Ｓ２０１ａ）。具体的には、図９（ａ）に示すように、処理対象となる文字列の先頭から１文字、先頭から２文字、先頭から３文字と文字数を増やしつつ切り出していく。
【００４２】
そして、切り出した個々の文字列について辞書データを参照する問合せ処理を実行していく（Ｓ２０１ｂ）。そして、辞書データ中に合致する単語が検出された場合（Ｓ２０１ｃにおける「Ｙ」）には、その分割文字を、木構造のノード候補である基本トークンとして追加する（Ｓ２０１ｅ）。図９（ａ）に示した例では、「東京都葛飾区新宿４丁目２２−１９亀有警察署」を住所に関する文字列として、順次文字分割処理及び辞書問合せ処理を実行しており、既に「東京都」がトークンとして取得されて「処理済み」となり「処理対象」から除外され、「東京都」以降の文字列「葛飾区新宿４丁目２２−１９亀有警察署」を処理対象として、文字の切り出し及び辞書の問合せを行っている。
【００４３】
一方、辞書データ中に合致する単語が検出されない場合（Ｓ２０１ｃにおける「Ｎ」）には、辞書にない未知語として文字種別や品詞の解析を行う（Ｓ２０１ｄ）。このステップＳ２０１ｄで解析され、未知語として優先度が付与された文字列は解析トークンとして、木構造のノード候補に追加される（Ｓ２０１ｅ）。
【００４４】
また、ステップＳ２０１ｅでは、各トークンに対応する「未知語」を、未知語トークンとして追加する。なお、このとき未知語の中に、数値／漢数字／カナ／区切り文字等があればトークンとして追加し、なければ次の処理対象へ移行する。ここでは「葛飾区」に数値、漢数字等が存在しないため追加は行われない。
【００４５】
次いで、ステップＳ２０１の処理で追加された基本トークン又は解析トークンの絞り込みを行い（Ｓ２０２）、絞り込まれたトークンを、新たなトークンとして処理済みのトークンに接続する（Ｓ２０３）。このとき、図９（ａ）の例のように複数の文字列が取得された場合には、同図（ｂ）に示すように、ツリーが分岐される。図示の時点では、このような処理の結果、処理対象について、「葛飾区」の「葛〜」で始まる単語を取得し、「市区町村」の属性が付された「葛飾」及び「葛飾区」が文字列として取得され、トークンＥ０２ａ〜ｃとして親ノードである「東京都」のトークンＥ１に接続された状態を示している。
【００４６】
なお、図９（ａ）に示した例では、「葛飾（市区町村）」のトークンＥ０２ａには、引数として、住所が「東京都葛飾区新宿４丁目２２−１９亀有警察」、オフセットが”５”、都道府県が「東京都」、親ノードが「東京都」−「葛飾」として設定されている。また、「葛飾区（市区町村）」のトークンＥ０２ｂには、引数として、住所が「東京都葛飾区新宿４丁目２２−１９亀有警察」、オフセットが”６”、都道府県が「東京都」、親ノードが「東京都」−「葛飾区」として設定されている。
【００４７】
また、ステップＳ２０２では、上述した「葛飾区新宿」の「亀有警察署」の場合、辞書から取得できたものだけでパターンを作ると、市区町村が「新宿」と「葛飾」の２つ出てきてしまい、後述のコスト計算の判断で誤った選択をしてしまう可能性があることから、辞書から取得できた「葛飾」と「葛飾区」に対応する未知語としての「葛飾」と「葛飾区」を用意する。このとき、全てのトークンに対する未知語トークンを残すとパターンが増えてしまい、大きくパフォーマンスが下がるため、所定の文字数の未知語トークンのみを追加することもできる。本実施形態では、未知語のうち、最も長い「葛飾区」だけを未知語トークンＥ０２ｚとして残し、処理済のトークンＥ１である「東京都」に接続する。
【００４８】
ステップＳ２０３では、再帰呼び出し処理により、下流のツリーを接続していく（Ｓ２０３ａ）。ここでは、辞書から取得できた「葛飾」と「葛飾区」とを処理済みとしてそれぞれ除外し、これら除外された単語以降の各文字列を次の処理の処理対象として分岐させ、各々の処理対象について同様の処理を実行する。すなわち図１２に示すように、「葛飾（市区町村）」のトークンＥ０２ａについてはそれ以降の文字列「区新宿４丁目２２−１９亀有警察署」を処理対象として、文字の切り出し及び辞書の問合せを行い、「葛飾区（市区町村）」のトークンＥ０２ｂについては「新宿４丁目２２−１９亀有警察署」を処理対象として、文字の切り出し及び辞書の問合せを行う。図１０（ａ）では、このような処理の結果、「葛飾区」以降の処理対象から、「市区町村」の属性が付された「新宿区」、及び「大字」の属性が服された「新宿」が文字列として取得された状態を示している。
【００４９】
その後、分割した文字の接続処理（Ｓ１０３）及び辞書にない未知語の品詞解析（Ｓ１０４）を行う。詳述すると、ステップＳ１０１及びＳ１０２の処理の結果、辞書から取得された文字を新たなトークンとして、上流の処理済みのトークンに接続する。このとき、図１０（ａ）の例のように複数の文字列が辞書から取得された場合には、同図（ｂ）に示すようにツリーが分岐され、それぞれのトークン以降の各文字列が次の処理の処理対象となる。
【００５０】
ここでも、各トークンに対応する未知語トークンを追加する。すなわち、図１０（ｂ）に示すように、辞書から取得できた「新宿（市区町村）」と「新宿（大字）」に対応する未知語としての「新宿（未知語）」を未知語トークンＥ０３ｚとして用意する。図示した例では、未知語は「新宿」だけであるため、これに対する「新宿（未知語）」の未知語トークンＥ０３ｃを、処理済みのトークンＥ０２ｂである「葛飾区（市区町村）」に接続する。
【００５１】
なお、このとき未知語の中に、数値／漢数字／カナ／区切り文字等があればトークンとして追加し、なければ次の処理対象へ移行する。「新宿」には、数値、漢数字等が存在しないため追加は行われない。数値／漢数字／カナ／区切り文字等が含まれている例としては、図１１に示す「東京都港区６本木１丁目３−３８」のように、誤記により「大字」である「六本木」を「６本木」と入力された場合などが考えられる。
【００５２】
この場合、上流のトークンである「港区」まで分解できているとすると、「港区」以降の文字列「６本木１丁目３−３８」を処理対象として、文字の切り出し及び辞書の問合せが行われる。この切り出し及び辞書の問合せは、ループ処理により繰り返し実行され、ループ１回目で先頭から一文字目である「６」を切り出し、品詞が数値であることから辞書データの問合せは行わない。
【００５３】
次いで、ループ２回目で先頭からの２文字である「６本」について問合せ、結果が「Ｎｕｌｌ」であれば該当単語が検出されないとして、「六本」で問合せを行い、さらに、ループ３回目で先頭からの３文字である「６本木」について問合せ、結果が「Ｎｕｌｌ」であれば該当単語が検出されないとして、「六本木」で問合せを行う。「六本木」は実在する地名であるため検索結果がヒットされ、ツリーの親ノードへ追加される。そして、ループ４回目以降では、辞書に該当単語が見つかってもループを継続させ、文字列の最後まで実行し、可能な限りのトークンを取得する。
【００５４】
そして、辞書から取得できた「六本木」に対応する未知語として「６本木」が用意される。未知語は「６本木」だけであるためこれを「未知語」のトークンとして残し、処理済のトークンである「港区」と繋げる。このとき、入力値が、例えば「一丁目３−６本木マンション」というように、番地の後に表記されたビル名を含む場合もあり、その場合には「６」及び「本木」で分解して正しい可能性もあることから、未知語の中に、数値／漢数字／カナ／区切り文字等があるため、数値の「６」もトークンとして追加する。
【００５５】
この結果、「六本木（大字）」のトークンには、引数として、住所が「東京都港区６本木１丁目３−３８」、オフセットが”８”、都道府県が「東京都」、親ノードが「東京都」−「港」として設定されている。また、「６（数値）」のトークンには、引数として、住所が「東京都港区６本木１丁目３−３８」、オフセットが”６”、都道府県が「東京都」、親ノードが「東京都」−「港区」として設定される。
【００５６】
また、辞書データで検索された単語をそのままツリー構造を構築すると、検出数が多いときには、パターンが最大数万程度にまで膨れ上がるケースが発生し得ることから、本実施形態では、生成され得るパターンを最大でも数百程度へ抑え、ツリー構造の効率化を図っている。
【００５７】
具体的には、「［市区町村］の後には［市区町村］が来ない」等、慣習上・法規上の明確なルールに関わるものは、コスト計算で計算せずツリー生成時点で排除する。また、「大字」を追加する際は、「市区町村」の住所コードと一致しているか確認して、合致しない場合にはツリーを生成しない。例えば、「港区」の後に「六本木」は、実在し、住所コード上にも存在するので、ツリー（トークン）を生成するが、「港区」の後に「初台（渋谷区）」は実在せず、住所コード上にも存在しないので、ツリーを生成しない。さらには、文字数が多いほどパターンが増加する傾向にあるため、３０文字以上の住所は１５文字程度に分割してそれぞれ処理する。
【００５８】
以上の処理を全ての未処理の部分に繰り返し適用することで（ステップＳ２０４における「Ｎ」）、入力文字列の最後の文字まで分解し、トークンを繋げていき、図１２に示すように、トークンが接続されたそれぞれの分岐形態についてのパターンを生成し、ツリーを構築する。なお、実際にはパターンが１００前後生成されるが、図示した例では、採用されないルートの殆どを省略して表記している。なお、図１２の例では、主立ったパターンとして、図１３に示すように、トークンＥ０２ｂから分岐されたＥ０３ｂ〜Ｅ０８ｂに至るパターンＰ１ｂと、トークンＥ０３ｃから分岐されたＥ０５ｃ〜Ｅ０８ｃ２に至るパターンＰ１ｃと、トークンＥ０３ｅから分岐されたＥ０４ｅ〜Ｅ０８ｅ２に至るパターンＰ１ｅと、トークンＥ０３ｅから分岐されたＥ０４ｆ１〜Ｅ０８ｆに至るパターンＰ１ｆとが表記されている。
【００５９】
（２）コスト計算
このようにしてツリーが生成された後、全パターンについてコスト計算を行い（図３中のステップＳ１０３）、住所として正しい可能性が最も高いパターンを選択する（同図中のステップＳ１０４）。
【００６０】
本実施形態では、図８に示すようなルールに従ってコスト計算を行う。同図中優先度１に示すように、都道府県、市区町村、大字、字の順に並んでいるなど、日本の住所記入慣習に従って入力されている可能性が高い場合にはコストを低くしたり、優先度２に示すように、数字の直後に漢数字が存在しているなど、番地等の数字を記載した後に、施設名称やビル名、人名が記載されている可能性が高く、純粋な住所表記以外の記載が混在している可能性が高いことからコストが高くしたりする。
【００６１】
さらに、優先度３のように、未知語の文字数が多いものは、文字数が適正に分解できていない可能性が高いことからコストを高くしたり、優先度４のように、数値が２つ以上含まれているものは、住所としての数字が含まれている可能性が高いためコストを低くしたり、優先度５のように、分解結果が数値又は記号、数字の順に並んでいるものは、「３−３」というように省略表記である可能性が高いためコストを低くしたり、さらに優先度６のように、同一の市区内に同一文字を含む地名が複数混在する場合には、記入者はより注意して省略語を避けて記載すると考えられるため、入力値と辞書の正式名称が完全一致となるときには、前方一致や後方一致などと比較してコストを低くする。
【００６２】
このようなルールに従って計算を行うと、図１２に示すツリーのうち、図１３に示すパターンＰ１ｂが最もコストが低くなり、形態素解析結果として採用される。この形態素解析結果は、住所マスター１０１ａから生成された辞書データ１０１ｂに基づいているため、住所マスター１０１ａとの比較がしやすい状態になっている。例えば、図１４に示すように、形態素解析後の未知語部分を建物名として住所マスターと比較を行うと、建物名は「亀有警察署」が正しいことを確認することができる。
【００６３】
（３）文字種別解析
ここで、上述したステップＳ２０１ｃにおける文字種別解析についてさらに詳述する。本実施形態では、文字列がカナ、アルファベット、記号・空白又は数字であるかを判定し、併せて例外的な住所形式も判定し、その判定結果を返却値に付記する。この例外的な住所の判定としては、本実施形態では、京都における「通り名」の判定が含まれる。
【００６４】
すなわち、京都の通り名は、本来の住所では位置がわかりにくいため、交差点を構成する通りの名前２つ（〇〇通△△）とそこからの相対位置（上る、東入等）によって構成される住所が公式に用いられている。例えば、京都市役所の住所を例に挙げると、京都市役所の住所は、「京都市中京区寺町通御池上る上本能寺前町４８８」となっており、住所マスター上の住所では、「京都市中京区 上本能寺前町 ４８８」となっており、通り名が「寺町通御池上る」である。通り名がなくとも住所を特定はできるため、住所マスター上は通り名は含まれていない。そのため形態素解析時点で判断し、通り名はマスター検索時やクレンジング結果保存時は無視するようにしている。
【００６５】
なお、××米軍基地といった既知や駐屯地等の住所は、丁目等が入っていないことが多く、「BOX80BOX20897APOAP96367」といった識別番号が個人に割り振られている場合があるなどの特徴がある。ただし、本実施形態では、特別な処理をせずに、「丁目がない」、「数値やアルファベットが多い」という情報に基づいて、通常通りの形態素解析を行ってトークンを生成し、後続の処理に引き継ぐことで、基地/駐屯地の判断を可能としている。
【００６６】
具体的には、図６に示すフローのような処理を行う。図６は、実施形態に係る文字種別解析処理を示すフロー図である。先ず、処理対象となる文字列を取得すると、文字種別が判別され、その種別に応じた処理が行われる（Ｓ３００）。
【００６７】
文字列がカナの場合（Ｓ３０１）には、結果が１文字で「ノ」であった場合、区切り記号としての「ノ」を返却値に追加し（Ｓ３０２）、連続するカナを返却値に追加する（Ｓ３０３）。文字列がアルファベットの場合には（Ｓ３０４）、連続するアルファベットを返却する（Ｓ３０５）。文字列が記号や空白の場合は（Ｓ３０６）、品詞を「記号」又は「空白」を返却する（Ｓ３０７）。
【００６８】
文字列が数字の場合は（Ｓ３０８）、「〜丁目」の形であるか否かを正規表現により判定する（Ｓ３０９）。「〜丁目」の形である場合（Ｓ３０９における「Ｙ」）には、「〜丁目」を字であるとして返却値に追加し、「〜丁目」の形でない場合（Ｓ３０９における「Ｎ」）には、漢数字かどうかの判定を行う（Ｓ３１２）。このステップＳ３１２で漢数字であると判定したときには（ステップＳ３１２における「Ｎ」）、連続する数値を返却する（Ｓ３１８）。一方、ステップＳ３１２において、漢数字であると判定したときには（ステップＳ３１３における「Ｙ」）、さらに京都通り名か否かを正規表現で判定する（Ｓ３１４）。通り名であるときには（Ｓ３１５における「Ｙ」）、京都通り名を追加し（Ｓ３１７）、通り名でないときには（Ｓ３１５における「Ｎ」）、「未知語」を追加して（Ｓ３１６）、連続する数値を返却する（Ｓ３１８）。
【００６９】
他方、文字列が上記のいずれでもない場合は（Ｓ３１９）、「京都通り名」であるか否かを正規表現により判定する（Ｓ３２０）。京都通り名であるときには（Ｓ３２１における「Ｙ」）、京都通り名を返却し（Ｓ３２２）、通り名でないときには（Ｓ３２１における「Ｎ」）、結果が１文字で「の」であった場合、区切り記号としての「の」を返却値に追加して（Ｓ３２３）、「未知語」を返却値に追加して（Ｓ３１６）返却する。
【００７０】
（４）マッチングレベル判定
さらには、本実施形態では、候補選択部１０２ｅによって選択された情報と、文字列取得部１０２ｄによって取得された文字列とをマッチングレベル判定部１０２ｆで比較し、その合致の程度をマッチングレベルとして出力するため、通信サービス等の審査などにおいて、マッチしている状態をレベルで分けて出力・表示することができ、例えば不正住所を記載した偽造証明書を使った不正な申し込みを検知することができる。
【００７１】
例えば、建物名以外が完全一致、部屋番号以外が完全に一致、建物名、部屋番号以外が完全一致など、住所のどの部分がどの程度合致するのかを判定することができる。これにより、部屋番号は違うが同じ建物に住んで不正を働くケースを検出することができる。
【００７２】
（作用・効果）
このような本実施形態によれば、入力文字列から分割した単語について、辞書を参照して、辞書中の単語や文字種別に応じて重み付をしつつ接続して木構造を構築して、木構造の分岐パターン毎のコストを計算して、候補を抽出するため、表記が同じ地名があっても、実在する市区町村に応じて区別して住所の構成要素の候補として抽出することができ、さらに、市区町村を省略して表記されていたり、建物名や人名などが混在している場合であっても、正確なデータクレンジングが可能となる。
【００７３】
また、本実施形態では、各分岐点において、基本トークン又は解析トークンに対応された未知語トークンを追加するため、市区町村が省略されたり、誤記が混在している場合にも未知語としてコスト計算に含めておき、候補に含めることができる。特に、本実施形態では、各分岐点において、最も文字数の多い基本トークン又は解析トークンについてのみ未知語トークンを生成するため、未知語を追加することによる演算処理量の増加を最低限に抑えることができ、演算負荷の増大による処理遅延等を回避することができる。
【００７４】
さらには、本実施形態では、候補選択部１０２ｅによって選択された情報と、文字列取得部１０２ｄによって取得された文字列とを比較し、その合致の程度をマッチングレベルとして出力するため、通信サービス等の審査などにおいて、マッチしている状態をレベルで分けて出力・表示することができ、例えば不正住所を記載した偽造証明書を使った不正な申し込みを検知することができる。
【符号の説明】
【００７５】
Ｄ０１…文字列
Ｄ０２…ツリー
Ｄ０３…解析結果
１…情報処理端末装置
１ａ…ＣＰＵバス
１０１…ストレージ装置
１０１ａ…住所マスター
１０１ｂ…辞書データ
１０２…ＣＰＵ
１０２ａ…候補追加部
１０２ｂ…ツリー構築部
１０２ｃ…コスト計算部
１０２ｄ…文字列取得部
１０２ｅ…候補選択部
１０２ｆ…マッチングレベル判定部
１０３…メモリ
１０４…入力インターフェース
１０５…出力インターフェース
１０６…通信インターフェース
【図１】
2018101244.tif 000003
【図２】
2018101244.tif 000004
【図３】
2018101244.tif 000005
【図４】
2018101244.tif 000006
【図５】
2018101244.tif 000007
【図６】
2018101244.tif 000008
【図７】
2018101244.tif 000009
【図８】
2018101244.tif 000010
【図９】
2018101244.tif 000011
【図１０】
2018101244.tif 000012
【図１１】
2018101244.tif 000013
【図１２】
2018101244.tif 000014
【図１３】
2018101244.tif 000015
【図１４】
2018101244.tif 000016