アーカイブ: 2010年3月19日

住所抽出ライブラリを試してみる

パーマリンク 2010/03/19 20:16:09 著者: kumaold メール
カテゴリ: サーバ関係, プログラミング, PHP

新しい仕事の案件を片付けるのに、何かしらの方法で文章中から住所らしいものを抜き出すという処理が必要になり、どう実装しようか悩んでおりました。

そんなときに、Perl にあるライブラリの Geography::AddressExtract::Japan がすごいという記事を読み、試してみることにしました。

cotalog - Geography::AddressExtract::Japan を使って住所抽出


といったものの、普段 PHP 使いが Perl を使うはずもなく、このライブラリのインストールには苦労しました。

こちらのページが非常に参考になります。(ちょうどCentOS 5環境なので)

M.C.P.C. - Geography::AddressExtract::JapanをCentOS4に入れる

Perl は入っているものとして、はじめに Subversion のインストール

[root@kuma ~]# yum install subversion

CPAN(要初期設定)にて inc::Module::Install をインストール

途中で yes/no を聞いてくるところは、関連モジュールをインストールするかなので、基本的にはそのまま Enter キーでおk。

[root@kuma ~]# cpan
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install inc::Module::Install

最初から入れるとかなり時間がかかるが気長に20分くらい放置。
おわったら CPAN からは exit で一旦抜けます。

つぎに、適当なディレクトリを作成し、Subversion にてリポジトリをローカルに落としてきます。

[kuma@kuma ~]# mkdir tmp
[kuma@kuma tmp]# cd tmp
[kuma@kuma tmp]# svn checkout http://svn.coderepos.org/share/lang/perl/Geography-AddressExtract-Japan
[kuma@kuma tmp]# cd Geography-AddressExtract-Japan/trunk

このままビルド、といいたいところですが、perl Makefile.PL でエラーと怒られて続行することができません。

まずは Makefile.PL の7行目をコメントアウトします。

[kuma@kuma trunk]# vi Makefile.PL
build_requires(Test::More => 0.42);

# build_requires(Test::More => 0.42);

これでおそらく止まることなく Makefile.PL が実行できます

[kuma@kuma trunk]# perl Makefile.PL
[kuma@kuma trunk]# make
[kuma@kuma trunk]# make test

するとここでまたまたエラーが出て止まりました。
今度はライブラリが足りなかったようです。

エラーが発生した部分のソースを見て、この2つを追加で入れておきます。

UNIVERSAL::require
Class::Accessor::Fast

make test をすると、サンプルのプログラムが走ります。
それが確認できたら root に切り替えて make install で完了。

[kuma@kuma trunk]# su -
[root@kuma trunk]# make install

これで導入作業はすべて完了しました。

サンプルプログラム

#!/usr/local/bin/perl

use strict;
use Geography::AddressExtract::Japan;
use open ":encoding(utf8)";
use encoding "utf8", STDIN => "utf8", STDOUT => "utf8";

my $addr = <STDIN>;
my $t = Geography::AddressExtract::Japan->extract($addr);

print map { $_->{"city"} . $_->{"aza"} . $_->{"number"} . "
"; }@{$t};

これでコマンドラインからこのようにすることで、住所抽出ができます。

perl ./try.pl<<EOF
ここに住所・地名を含む文章を流し込む
EOF


Web ベースでのサンプルを作ってみました。
Geography::AddressExtract::Japan - Perl/PHPテスト

 

初めてのPerl 第5版初めてのPerl 第5版
近藤 嘉雪

オライリージャパン 2009-10-26

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2010年3月
 << < 現在> >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

検索

XMLフィード

16ブログ     powered by b2evolution free blog software