CLOVER🍀

That was when it all began.

Lucene Kuromojiに対して、mecab-ipadic-neologdの辞書を適用してビルドするbashスクリプトを書きました

ここ2〜3日、ず〜っとmecab-ipadic-neologdの辞書をLucene Kuromojiに適用するという作業を延々と繰り替えしていました。

修正されたmecab-ipadic-neologdの辞書を、Lucene Kuromojiに適用してみる
http://d.hatena.ne.jp/Kazuhira/20150316/1426520209

が、けっこうな数の手順を踏むので、だんだん面倒になってきました…。

そこで、上記のエントリでやった手順をまとめたbashスクリプトを書きました。ビルド方法もだいたい決まったことですし。
※完全に同じではありません

エラートラップとかは大して入れていませんが、ご了承ください。

実行する前提条件として、以下がインストールされている必要があります。

MeCabは、パスが通っていなかったら勝手にローカルでビルドして使います。ネットワークプロキシが必要な場合は…スクリプトを直すなり、環境変数を設定するなりしてください…。

動作確認は、Lucene 5.0.0と4.10.Xで行っています。Lucene 3系は、ディレクトリ構成が全然違うので、このスクリプトではビルドできないはずです。

スクリプトは、GitHubに置いてます。
https://github.com/kazuhira-r/kuromoji-with-mecab-neologd-buildscript/blob/master/build-lucene-kuromoji-with-mecab-ipadic-neologd.sh

このスクリプトを、ダウンロードしてきて実行権限を付与します。

$ wget https://raw.githubusercontent.com/kazuhira-r/kuromoji-with-mecab-neologd-buildscript/master/build-lucene-kuromoji-with-mecab-ipadic-neologd.sh
$ chmod a+x build-lucene-kuromoji-with-mecab-ipadic-neologd.sh

で、実行します。

$ ./build-lucene-kuromoji-with-mecab-ipadic-neologd.sh

最終的には、こういう結果が表示されます。

jar-core:
      [jar] Building jar: /xxxxx/lucene-solr/lucene/build/analysis/kuromoji/ucene-analyzers-kuromoji-ipadic-neologd-5.0.0-20150316-SNAPSHOT.jar

BUILD SUCCESSFUL
Total time: 5 seconds
-rw-rw-r-- 1 xxxxx xxxxx 27315558  320 00:50 lucene-analyzers-kuromoji-ipadic-neologd-5.0.0-20150316-SNAPSHOT.jar

実行後のカレントディレクトリは、このようになります。

$ ls -l1
合計 39992
-rwxrwxr-x 1 xxxxx xxxxx     3298  320 00:47 build-lucene-kuromoji-with-mecab-ipadic-neologd.sh
-rw-rw-r-- 1 xxxxx xxxxx 27315558  320 00:50 lucene-analyzers-kuromoji-ipadic-neologd-5.0.0-20150316-SNAPSHOT.jar
drwxrwxr-x 6 xxxxx xxxxx     4096  320 00:48 lucene-solr
drwxrwxr-x 8 xxxxx xxxxx     4096  320 00:31 mecab
drwxr-xr-x 8 xxxxx xxxxx     4096  320 00:47 mecab-0.996
-rw-rw-r-- 1 xxxxx xxxxx  1398663  218  2013 mecab-0.996.tar.gz
drwxrwxr-x 2 xxxxx xxxxx     4096  320 00:47 mecab-ipadic-2.7.0-20070801
-rw-rw-r-- 1 xxxxx xxxxx 12208105 1016  2011 mecab-ipadic-2.7.0-20070801.tar.gz
drwxrwxr-x 8 xxxxx xxxxx     4096  320 00:47 mecab-ipadic-neologd

カレントディレクトリに並んでいるJARファイルが、mecab-ipadic-neologdが適用されたJARファイルになります。こちらを利用してください。

このスクリプトは、こういう動作をします。
※最新版の動作や設定は、GitHubのREADMEを見るようにしてください

  1. MeCabのインストール(which mecabが偽となる場合)
  2. MeCab IPA辞書のインストール(`which mecab`が偽となる場合)
  3. mecab-ipadic-neologdの辞書CSV作成(libexec/make-mecab-ipadic-neologd.sh -Lを利用して、Lucene Kuromoji用に取り込み対象の調整)
  4. LuceneGitHubのミラーからClone
  5. CloneしたLuceneソースを、指定のタグにcheckout
  6. mecab-ipadic-neologdの辞書を利用するため、また生成されるJARファイル名を「lucene-analyzers-kuromoji-ipadic-neologd-[Lucene Version]-[mecab-ipadic-neologd date]-SNAPSHOT.jar」とするため、Lucene Kuromojiのbuild.xmlを編集
  7. 作成したmecab-ipadic-neologdの辞書CSVから、Lucene Kuromojiの作成
  8. カレントディレクトリに作成したLucene KuromojiのJARファイルをコピー

結果、最後にこのようなディレクトリ構成となるわけで。

$ ls -l1
合計 39992
-rwxrwxr-x 1 xxxxx xxxxx     3298  320 00:47 build-lucene-kuromoji-with-mecab-ipadic-neologd.sh
-rw-rw-r-- 1 xxxxx xxxxx 27315558  320 00:50 lucene-analyzers-kuromoji-ipadic-neologd-5.0.0-20150316-SNAPSHOT.jar
drwxrwxr-x 6 xxxxx xxxxx     4096  320 00:48 lucene-solr
drwxrwxr-x 8 xxxxx xxxxx     4096  320 00:31 mecab
drwxr-xr-x 8 xxxxx xxxxx     4096  320 00:47 mecab-0.996
-rw-rw-r-- 1 xxxxx xxxxx  1398663  218  2013 mecab-0.996.tar.gz
drwxrwxr-x 2 xxxxx xxxxx     4096  320 00:47 mecab-ipadic-2.7.0-20070801
-rw-rw-r-- 1 xxxxx xxxxx 12208105 1016  2011 mecab-ipadic-2.7.0-20070801.tar.gz
drwxrwxr-x 8 xxxxx xxxxx     4096  320 00:47 mecab-ipadic-neologd

Lucene、もしくはmecab-ipadic-neologdのバージョンが変わったらうまく動かなくなるかもしれませんが…。

変えそうな値は、スクリプトの先頭の方にあるので適当に変更すればよいと思います。

WORK_DIR=`pwd`

########## Variables ##########
## MeCab
MECAB_VERSION=mecab-0.996
MECAB_INSTALL_DIR=${WORK_DIR}/mecab

## MeCab IPA Dictionary
MECAB_IPA_DICTIONARY_VERSION=mecab-ipadic-2.7.0-20070801
DEFAULT_CHARSET=utf-8

## mecab-ipadic-NEologd
MAX_BASEFORM_LENGTH=15

## Lucene
LUCENE_VERSION_TAG=lucene_solr_5_0_0