日本語解析ツールChasenを管理者権限なしでCentOSにUTF-8でインストールする

今回は日本語解析ツールであるChasenCentOSのコンピュータにインストールする機会があったので,メモしておこうと思います.

まぁ何が大変かって, 管理者権限がありません...

大学で使ってるコンピュータにインストールしなければならないのですが,うちの大学の情報演習室のコンピュータが実際は端末ごとにローカルが独立しているわけではなくて,1つのホストのファイルを共有している形になっていて,そこが大変.その中のあるひとつのディレクトリがホームディレクトリとしてそれぞれのユーザに振り分けられていて,その中にライブラリもなんもかも突っ込まないといけない.(多分)

よし,まぁ自然言語処理めっちゃ好きなんで頑張ろう.(終わったら自分のPCにmecab入れる笑)

参照サイト

以下の記事をメインで参考にさせていただきました.(僕の大学の大先輩の記事...笑)

銃とゲームと大学生 管理者権限無しでUbuntuにChasenをインストール。

必要なソフトをダウンロード

Chasenをインストールして実行するために必要なものが3つある.

1. Darts

1つ目はDartsっていうライブラリ.公式サイトより

Darts は, Double-Array [Aoe 1989]を構築するための シンプルな C++ Template Library です. Double-Array は Trie を表現するためのデータ構造です. ハッシュ木, デジタルトライ, パトリシア木, Suffix Array による擬似 Trieといった 他の Trie の実装に比べ高速に動作します. (中略) ハッシュのような単純な辞書として使うことも可能ですが, 形態素解析器の辞書に必須の Common Prefix Search を非常に高速に行うことができます

ということらしい.この分野初心者すぎてわからない...笑

構文木のデータ構造を表現するためのツール的な認識でいいかな.

ダウンロードは以下

Darts: Double ARray Trie System

2. Chasen

そして2つ目がChasen本体.Casenは奈良先端科学技術大学の研究室らしい.やっぱすごいんやな...

Chasen自体は 日本語文(自然言語)を単語単位に分割し品詞を付与するツールだよね.

ダウンロードは以下.

リリース chasen-2.4 chasen-2.4.4 - ChaSen legacy - SourceForge.JP

3. IPAdic

そして3つ目がIPAdicという辞書ライブラリ.

IPAdicについてはこちらが詳しい.

IPADIC(IPA辞書)とはなにものか? - ぱらめでぃうす

なるほどめちゃくちゃ詳しい.日本語解析ツール(厳密に言えば形態素解析器か?)で現在有力なのはmecabchasenぐらいで,そのどちらもIPAdicという辞書を使ってることに変わりはないのだけど,その内容は微妙に異なってるらしい.

Chasen用IPAdicのダウンロードは以下から.

IPAdic legacy プロジェクト日本語トップページ - SourceForge.JP

ということで以上みっつをダウンロードしたらさっそくインストールにうつろう.

インストール

Dartsインストール

まずDartsをインストール.

その前に自分のディレクトリに新しいchasen用ディレクトリでも作っておく.

$ mkdir ./chasen
$ cd ./chasen

その中にさきほどダウンロードした3つを突っ込んでおく.

そしたらまずはDartsのファイルを展開して入ります.

$ tar zxvf darts-0.32.tar.gz
$ cd darts-0.32

configure, makeします.ポイントは,configureするときにきちんとディレクトリを指定することかな.

$ ./configure --prefix=/home/workspace/totz/chasen # ここで自分のディレクトリのパスを指定
$ make
$ make install

この3行では,configureでMakefileを生成して,makeで,Makefileに従ってソースコードコンパイル,リンクしたり,インストールなどを実行しているってことか.

Makefileという名前のファイルに記した設定に従ってソースコードコンパイル、リンクしたり、インストールなどを実行しているのでした。

ここで配布パッケージ内のファイル一覧をよく見てください。Makefileがどこにもありません。似たような名前のファイルはあるものの、配布パッケージには入っていないわけです。当然、配布パッケージを展開した直後にmakeを実行すると、Makefileがないのでエラーになります。

このことから、makeコマンドの前に実行しているconfigureコマンドが、Makefileを生成しているのだろうと分かります。configureはカレントディレクトリのファイルを実行していますので、これは配布パッケージ内にあるファイルということになります。

仕事で使える魔法のLAMP(11):配布パッケージの中身と、configureの役目を知る - @IT

なるほどです.いろいろインストールとかしてきたはずだけど,こんなことも知らなかった...笑

configureコマンドは, 環境(OS)における違いに依存せずソフトウェアをインストールするためのコマンドということ.環境における違いってのは,例えばライブラリまでのパスがwindows, Mac, ubuntu, centOSとかで違ってくる,ってこととか.

configureによる自動設定が主流になる前は、Makefileなどのファイルを自分の環境に合わせて書き換えてからmakeしていました。

仕事で使える魔法のLAMP(11):配布パッケージの中身と、configureの役目を知る - @IT

ってことなのでconfigure便利だなぁと.

でも展開したディレクトリの中にはもともとMakefileがいくつか存在していてるみたいだ.Makefile.amとMakefile.inの2つ.configure実行後には,新たにMakefileが生成された.

とりあえず実行すると,なんかいろいろ警告っぽいのでたけどchasenディレクトリの中にincludeとlibexecが生成されていたので,とりあえずokかなと.

chasenインストール

展開してディレクトリに入ります.

$ tar zxvf chasen-2.4.4.tar.gz
$ cd chasen-2.4.4

つぎにconfigureでMakefileを生成してmake,make install

ここでのポイントはさきほどDartsをインストールしたときに生成されたincludeディレクトリを含めないといけないということ.

$ ./configure --prefix=/home/workspace/totz/chasen --with-darts=/home/workspace/totz/chasen/include
$ make
$ make install

めっちゃ警告出る笑

chasenディレクトリ以下にbinとlibが生成されたのでokかな

ipadicインストール

ここが一番大変.

同じように展開してディレクトリに入る

$ tar zxvf ipadic-2.7.0.tar.gz
$ cd ipadic-2.7.0

そしたらconfigureでMakefileを生成.パスを指定すると同時にchasenのconfigファイルとリンクしておく.

$ ./configure --prefix=/home/workspace/totz/chasen --with-chasen-config=/home/workspace/totz/chasen/bin/chasen-config

そしてここからがくせもの.

padicは文字コードEUC-JPなので、Ubuntuで使う場合はUTF-8に変換する必要があります。 http://1027kobaemon.blog.fc2.com/blog-entry-91.html

また,CentOSもデフォルトで文字コードUTF-8が採用されているらしいので変更する必要はあるみたい.

CentOS ではデフォルトの文字コードUTF-8を採用しています。 http://www.linuxmaster.jp/linux_blog/2011/03/centosutf-8eucsjis.html

CentOSでは,/etc/sysconfig/i18n以下に文字コードの設定が書かれているらしい.内容を確認したら以下のようだった.

LANG="ja_JP.UTF-8"

ということでUTF-8でした.残念(笑)管理者権限がないのでいじれるわけもなく...

ということでipadicの設定ファイルを書き換えるシェルスクリプトを書きます.

ソースは以下.

for file in *.dic *.cha
do
if [ -f $file ]; then
echo $file
iconv -f euc-jp -t utf-8 $file > tmpfile
mv tmpfile $file
fi
done
exit

冒頭の#!/bin/sh拡張子に.shつけてshで実行してるんだからいらないと思う.

そしたらさっきのスクリプトを実行します.

$ sh ./convert.sh

これで辞書をUTF-8に変換完了.

さらに以下のサイトを参考にしながらかつ自分のとこを指定するのを忘れないように,辞書を生成する

http://news.mynavi.jp/column/yetanother/045/

$ `/home/workspace/totz/chasen/bin/chasen-config --mkchadic`/makemat -i w
$ `/home/workspace/totz/chasen/bin/chasen-config --mkchadic`/makeda -i w chadic *.dic
$ mkdir /home/workspace/totz/chasen/etc
$ make install

最後にchasenディレクトリ直下に作成したetcファイルに移動.設定ファイルであるchasenrcが生成されているはずなので,こいつもchasenrcもUTF-8に変換する.

もとの設定ファイルは削除する感じになってたけど,一応とっておこう

$ cd ../etc
$ iconv -f euc-jp -t utf-8 chasenrc > chasenrc.tmp
$ mv chasenrc chasenrc.org
$ mv chasenrc.tmp chasenrc

ということで設定完了!意外にひとつも詰まることなくインストールできた!先駆者の方々に本当に感謝です...

実行!!

chasenを実行するときもオプションをつけて$ chasen -i wとして、明示的にUTF-8エンコーディングによる入力を指定するべきらしい.

chasen楽しい!!!

bash-4.1$ ./chasen -i w
朝のコーヒーは一番おいしいです。
朝 チョウ   朝 名詞-固有名詞-地域-国      
の ノ の 助詞-連体化        
コーヒー    コーヒー    コーヒー    名詞-一般       
は ハ は 助詞-係助詞        
一番  イチバン    一番  名詞-副詞可能     
おいしい    オイシイ    おいしい    形容詞-自立    形容詞・イ段  基本形
です  デス  です  助動詞   特殊・デス 基本形
。 。 。 記号-句点       
EOS