mecab使って姓名を分かち書きしてみたらすこぶる良かった

   

どうも、前処理班 @geeorgeyです。

数日前にこんな事を書きました。

Salesforceを1年半運用したら重複データだらけで死んだのですが、便利な機能がありまして

一年程度運用してみて、その活用の勘所などもわかってくると、社内にあるいろんなデータをすべてインポートして統合したくなるものです。

それで、やってるんですけどね。2万レコードを超すレコードがあるのだけど、姓名がスペース等の区切り文字が無い状態になっているリストが発掘された訳です。しかもすでにSalesforceに入ってるものとの重複状態がわからないんですよ。死ねる。

それで、とりあえず苗字を切り分けましょうと。やってみた

ほぼ手作業だよねこの方法。ってことで死にたくなったのでやめた。駄目だこりゃと思って数日放置。

自暴自棄になった。そりゃなるよ。 2日たったら神が降りてきた。

ああそうか、mecabなんてものがあったじゃないかと。

金曜の夕方だったので途中までやって放置。 今日続きをやってみたらだいたい解決しちゃってナイスな感じでしたよと。

mecabに何をやらせたのか

http://qiita.com/awakia/items/9a0dec41d91c997c74b4 基本的にはここに書いてあることをそのままやってる。 Macにmecabインストールして、人名辞書をダウンロード→mecabの辞書用に若干修正してmecabに喰わせる。

こうやって賢くなったmecabに、最初の2万件超の人名リストを喰わせると9割程度がいい感じに姓名分割される。ヒャッハー、素敵。

詳細な手順

mecabとipadicのインストール。

リンク先では一発でやってたけど、エラー出たので分離して実行。

brew install mecab
brew install mecab-ipadic

ここはそのままやる

からオリジナルをダウンロードしてきて内容を置き換える。

Bash
cp Download/mecab-ipadic-2.7.0-20070801/* /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic/

必要な辞書データをダウンロードしてこよう

人名辞書一覧
http://www.mwsoft.jp/programming/munou/ime_dictionary_link.html#person

加工する。UTF-8とeuc-jpを行ったり来たりしたのがちょっと面倒だった。

lhaの展開はstuffit expanderとか入れとけばダブルクリックでできます。コマンドラインでやってもいいけどそのへんは好みで。

データを変換する
形式はこれ
直視,,,10000,名詞,固有名詞,人名,名,*,*,なおよし,ナオヨシ,ナオヨシ

カンマの数は12個。

左から,

表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分3,活用形,活用型,原形,読み,発音
コスト部分の計算はこれでいい
10000 - length * 500
カンマを文末に幾つか付けないといけないんだけど、そういう時にvimは便利だ。
自由自在である。素晴らしい。後ろに2個カンマつける
辞書は以下の3つを使った
女の子の名前辞書用データ
http://www.vector.co.jp/soft/data/writing/se021655.html
変換後にeuc-jpにして保存。
辞書ができたら辞書をアップデートする
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -f euc-jp -t utf-8 -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic/
こんな感じ。-dでディレクトリ指定しないとエラーが出た。
これで設定は完了。
あとは、データを読み込んで出力する。
ファイルは適当に用意する。僕の場合は姓名がくっついた人名を改行して2万件超のファイルにした。最後の行に改行入れないとエラー出た。

コマンドは

$ mecab -O wakati 入力ファイル名.csv > 出力ファイル名.csv

というかんじ。やってみると、スペースで区切られた名前ファイルに変換されている。

素晴らしい…素晴らしいよmecab。ITってのはこうやって使うもんだよ…

ディープラーニングとかやってみたいと思いつつ時間がとれてない@geeorgeyでした。それでは

おすすめ記事一覧

 - Tips