Tokenize

Japanese
Address

Using

Machine

Learning

lulalala

Ruby/Rails developer

Github: lulalala
Twitter: lulalala_it

I also draw doujinshi because I am otaku.

Goal

From



To

{
 "prefecture"=>"東京都",
 "gun"=>"西多摩郡",
 "municipality"=>"秋多町"
}
"東京都西多摩郡秋多町"

How to do it?

どうやってするの?

I think it is difficult to use

if statements

and
regular expressions

新潟十日
奈良県 大和山市

 

Parserator library /
usaddress service

  • Python
  • Can parse English address
  • Using Machine Learning

Conditional Random Fields

条件付き確率場

条件付き確率場無向グラフにより表現される確率的グラフィカルモデルの一つであり、識別モデルである。これは自然言語処理生体情報工学コンピュータビジョンなどの分野で連続データの解析などによく利用される。特にCRFは形態素解析固有表現抽出ゲノミクスに応用され、隠れマルコフモデルに関連するような問題において、代わりとしても用いることができる。コンピュータビジョンにおいては、物体認識、画像領域分割(セグメンテーション)などに使用される。

I don't understand but I still tried it on Taiwanese address
私は理解していないが、私はまだ台湾の住所でそれを試した

  1. Obtain data データを取得する

  2. Clean data データを整理する

  3. Train model トレーニング

OpenStreetMap

  • Regional data download at Gisgraphy
  • .pbf file (Protocolbuffer Binary Format)
gem install pbf_parser

Obtain data データを取得する

wapiti gem

  • Written by inukshuk
    Very nice person who helped me a lot
  • Wrapper around wapiti, a C library
    "A simple and fast discriminative sequence labelling toolkit"

Train model トレーニング

台北市 南港區 研究院路二段  128號

       city           suburb            street                 housenumber

["台 city", "北 city", "市 city",

"南 suburb", "港 suburb", "區 suburb",

"研 street", "究 street", "院 street", "路 street"...]

Input

Input --> CRF training -->
model file

Address text --> model file -->
parsed result

  • 15460 address data
  • 2/3 used for training
  • Training time is around a few seconds

日本の場合

日本のOpenStreetmap
ファイルは大きです

 

JP.tar.bz2  1.06 GB
TW.tar.bz2  57.52 MB
GB.tar.bz2  893.33 MB

But it does not have many addresses
多くの住所が含まれていません

City field's data is not consistent.
データが一貫していません。

I decided to generate fake address instead.
代わりに偽のアドレスを生成することにしました。

30000 addresses are generated like this:
青森県南津軽郡藤崎町7丁目43-50

 

25000 used for training
5000 used for verification

Not always successful
Failure rate: 1.02%

兵庫県南あわじ市5丁目69-25


{"prefecture"=>"兵庫県", "gun"=>"南", "municipality"=>"あわじ市", "other"=>"5丁目69-25"}

鹿児島県南九州市1丁目65-89

 

{"prefecture"=>"鹿児島県", "gun"=>"南", "municipality"=>"九州市", "other"=>"1丁目65-89"}

岐阜県中津川市4丁目32-100


{"prefecture"=>"岐阜県", "gun"=>"中", "municipality"=>"津川市", "other"=>"4丁目32-100"}

 

I need to properly learn CRF to improve this.
私はこれを改善するためにCRFを正しく学ぶ必要があります。

Project URL:
https://github.com/lulalala/japan_address

ご聴取ありがとう

ございました

 

If you are anime otaku, please chat with me :D

ご聴取ありがとう

ございました

 

If you are anime otaku, please chat with me :D

Japanese Address Tokenization

By lulalala

Japanese Address Tokenization

  • 1,392