日本語解析ツールChasenを管理者権限なしでCentOSにUTF-8でインストールする
今回は日本語解析ツールであるChasenをCentOSのコンピュータにインストールする機会があったので,メモしておこうと思います.
まぁ何が大変かって, 管理者権限がありません...
大学で使ってるコンピュータにインストールしなければならないのですが,うちの大学の情報演習室のコンピュータが実際は端末ごとにローカルが独立しているわけではなくて,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辞書)とはなにものか? - ぱらめでぃうす
なるほどめちゃくちゃ詳しい.日本語解析ツール(厳密に言えば形態素解析器か?)で現在有力なのはmecabとchasenぐらいで,そのどちらも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