(h)自文書抽出日本的住所
(f)YAPC::Asia 2007 Tokyo (n)Yappo - 大沢和宏 (m)ko@yappo.ne.jp (b)http://blog.yappo.jp/ (a)5 (1)
自己紹介
(2)大沢和宏
Kazuhiro Osawa (2)位置情報系について
あまりrikouじゃないです (2)今日から長男は
小学2年生です (1)その他は、さっきやった (1)
自己紹介おわり
(1)[f:13]自文書抽出日本的住所 (1)何語? (1)翻訳 (2)2006/10/20
Shibuya.pm tech talk #7 (1)この時やった (1)[f:7]Geography::AddressExtract::Japan (2)と、あまり変わってません
ただし空気読みます (1)Q.前回見た方、挙手 (3)急遽代打になったのでエグいデモは無いです>< (1)ごめんなさい (1)
本気で謝罪
(1)このsessionのabstract (2)[f:8]非位置情報業界人が自然文章から住所を抜き出すための取り入れた手法や、一般公開されているデータベース/Web APIを用いて抽出精度を高めたりランドマークを抽出する方法を解説します。 (2)[f:8]非位置情報業界人が自然文章から住所を抜き出すための取り入れた手法や、
一般公開されているデータベース/Web APIを用いて抽出精度を高めたりランドマークを抽出する方法を解説します。
(1)先の理由により今回は省略です (1)修正後のabstract (2)[f:10]非位置情報業界人が自然文章から住所を抜き出すための取り入れた手法を解説します。 (1)it's simple (2)あとで事務所行って謝罪して来ます (i)[t:10]
(1)
謝罪終り
(t)アジェンダ (l)日本の住所ルール (l)抽出方法考える (l)Regexp::Assemble (l)ノーマライズ (l)変った住所 (l)document update (3)[f:8]Geography::AddressExtract::Japan という日本の住所抽出モジュールを作った時の苦悩とかを話します
(ちょっと昔話だけど^^;;;;) (t)開発のきっかけ (l)位置情報が活発だからなんかしたい (l)ジオコーダ使いたい! (l)自然文から抽出したい! (l)フリーなのが見当たらない! (2)
ファック
! 位置情報関連業界! (1)今回は規制 (1)
日本の住所ルール
(t)素人が作るために (l)位置情報屋の資料漁る (l) -> たいした情報ない (l)住所マニアのサイトあさり (l) -> 変った表記沢山ある (l)郵便番号DBを読み漁る (l) -> パターンつかむ (t)住所ルール 町村 (l)都道府県 (東京都) (l)郡 (西多摩郡) (l)町村 (檜原村) (l)大字 (南郷) (l)小字 (無い場合もある) (l)番地 号 (t)住所ルール 東京の島 (l)都道府県 (東京都) (l)島 (小笠原諸島 とか 新島) (l)町村 (小笠原村) (l)大字 (父島 とか 末吉) (l)小字 (奥村 とか 無い場合もある) (l)番地 号 (t)住所ルール 市 (l)都道府県 (東京都) (l)市 (八王子市) (l)大字 (どっか町) (l)小字 (1丁目) (l)番地 号 (t)住所ルール 政令指定都市 (l)都道府県 (東京都) (l)市 (千葉市) (l)区 (美浜区) (l)大字 (どっか町) (l)小字 (1丁目) (l)番地 号 (t)住所ルール 特別区 (l)都道府県 (東京都) (l)区 (新宿区) (l)大字 (新宿) (l)小字 (1丁目) (l)番地 号 (t)分ったこと (l)ほぼ全ての地域は (l)都道府県/郡市区町村/大字/小字 (l)番地/号 (l)で表せそう (3)[f:10]とりあえず20:80の法則で
ベストエフォートに
抽出出来ればイイ (1)
抽出方法考える
(t)正規表現 ? (l)[f:5]/(.+[都道府県])(.+[市区町村])hogehoge/ (l) みたいな正規表現いっぱい書く? (l)ノイズ多そう (l)でも正規表現を使うのよさげ (t)都道府県をキーにする (l)(北海道|青森県|岩手県|..) (l)のような正規表現を用意 (l)都道府県にマッチした所から (l)住所らしき文字列を抽出 (l)市区町村から住所が書かれてたらダメ (l)架空の住所のノイズが (t)郵便番号DBから... (l)正確な住所表記を抽出できる (l)問題はデータサイズ (l)そもそも、住所全パターンで (l)正規表現作れるのかよ (3)
そうだ
Regexp::Assemble
があった
(t)Regexp::Assemble (l)にぽたん研究所研究所主任にぽたん氏 (l)による、日本の電話番号 (l)全てにマッチする正規表現を作るのに (l)使ってたのを見てしリました (l)そのエントリを若干おぼえていたなりぃ (s)[f:5]複数の文字列のいづれかにマッチする正規表現を作る use Regexp::Assemble; my $ra = Regexp::Assemble->new; $ra->add( 'ab+c' ); $ra->add( 'ab+-' ); $ra->add( 'a\w\d+' ); $ra->add( 'a\d+' ); print $ra->re; # prints a(?:\w?\d+|b+[-c]) #See perldoc Regexp::Assemble ---- (t)どうつかう? (l)住所DBのデータを全て使う 自動生成 (l)都道府県、郡、市区町村、字の四つ (l)郡が無ければ三つ (l)これらをあり得るパターンで結合して (l)正規表現作成
→
実物
(t)パターン (l)千葉県千葉市美浜区ほげほげ (l)千葉県美浜区ほげほげ (l)千葉市美浜区ほげほげ (l)美浜区ほげほげ (l)千葉県千葉市美浜区 (l)千葉県千葉市 (t)最小マッチ / 最大マッチ (l)都道府県や市が抜けても抽出したい (l)抜けた所は、自動的に保管したい (l)どの区が、何県何市に属してるかを (l)別途HASHで保持する
→
実物
(1)港区の場合は? (t)同名地名の対応 (l)東京都港区/名古屋市港区の場合はど (l)っちを選ぶ? (l)町の名前で選ぶ (l)港区六本木なら東京都港区六本木 (l)[f:6]港区大手町なら愛知県名古屋市港区大手町 (l)この対策もモジュール化! →
実物
(t)その他 (l)番地のパターン抽出にもR::Aで (l)字の抽出もR::Aで (l)Regexp::Assemble大活躍 (t)抽出レベル (l)市区町村名があれば抽出できる (l)番地とか無くてもいい (l)千葉県千葉市 だけでも引っかかる (1)
ノーマライズ
(t)正規化! 正規化! (l)人間の住所表記はゆらぎがおおい (l)1-2-3 とか 五の三の四 とか (l) 1丁目4番地 とか (l)数値の正規化 (l)番地 号の正規化 (l)形式の統一 (t)ノイズがいっぱい (l)町田市なんとか小学校 が抽出される (l)文章の内容によっては (l)ごみ文字列もでてくる (l)形態素とかもいるかもね (t)竜
ヶ
崎 竜
ケ
崎
竜
崎
龍
崎 (l)kokogikoさんが気にする異字体問題 (l)やってらんないのでスルー (l)異字体でも認識させたいけど大変 (l)Encodeで出来る? (l)フィルタリングフレームワークとか (1)
変った住所
(t)マイナーなとこ (l)地割りという表記 (l)大阪市中央区上町
A
番 (l)大阪市鶴見区浜5−
南
1 (l)静岡県下田市
一丁目
(l)静岡県伊豆の国市
エメラルドタウン
2312 (t)メジャーなとこ (l)北海道 (l)京都市こわい (t)北海道 (l)札幌市浜5−南1 (l)札幌市
神町営団大通り
(l)札幌市太田5
の通り
23番地 (t)北海道は通りが主体 (l)札幌市中央区の北四条西とか (l)/札幌市.+区.+条[西東]?.丁目/ (l)とかでいけそう (l)あとはSapporo.pmの人に聞く (1)京都市役所の恐怖 (s)[f:5]全部京都市役所の住所 京都市中京区
寺町通御池上る
上本能寺前町488 京都市中京区
寺町通押小路下る
上本能寺前町488 京都市中京区
押小路通寺町東入
上本能寺前町488 京都市中京区
押小路通河原町西入
上本能寺前町488 京都市中京区
河原町通押小路下る
上本能寺前町488 京都市中京区
河原町通御池上る
上本能寺前町488 京都市中京区
御池通河原町西入
上本能寺前町488 京都市中京区
御池通寺町東入
上本能寺前町488 ---- (s)もっと恐怖、これも同じ場所 高倉通六角下ル 高倉通蛸薬師上ル 六角通烏丸東入ル2筋目下ル 蛸薬師通烏丸東入ル2筋目上ル ---- (t)京都市こわすぎ (l)角とか入るとか上るとか (l)普通の住所表記もあったりする (l)一応 (l)Geography::AddressExtract::Japan (l)で抽出可能 (1)
document update
(2)前回発表してから
半年たちました (1)その間にあった
出来事を軽く (1)
その1
(1)前回DanFredさんに
突っ込まれた (3)こ「僕のRegexp::Trieつかってみなよぉ」 (l)言われてしばらくしてから (l)見たら良さそうだった! (l)今は効率を気にしないので (l)今後参考にします (1)
その2
(l)先週月曜日にPlaceXML (l)なんとかって会合に呼ばれた (l)あの有名なここギコさんに! (l)行ってみたら講師枠だった! (l)役人系で超アウェイ>< (l)いわゆるGeoRSS (l)(なんちゃってGeoRSSって (l)言うらしいいよ!) (l)っぽいのを日本主導でつくるらしい (2)そんな事は
どうでも良くて (3)もらった資料中に
住所フォーマットがあった (2)引用はやばそう
なので割愛 (3)木構造に住所を
定義してあって
使えそう (3)人間は都合良く
書いてくれないけどwwwwwwwwwwwwwwwwwww (1)
その3
(3)昨日のマジデ見てたらパーサと正規表現組み合わせても良いかと思った (1)
今後は
(l)ノイズ/適合立うp (l)プラグインの仕組再整備 (l)他の人の意見もっとほすぃ (2)ご清聴ありがとうございました
id:amachang++ (1)[f:90,t:-12,l:-4]飯