Friday, December 24, 2010

[備忘録] Solr 1.4 と cmecab-java で日本語検索環境を構築

Solr と cmecab-java を利用し、日本語形態素解析による検索環境の構築を行ったので、そのときの作業メモ。

稼働環境

MacBook Pro 15" (Unibody, Mid 2010), Core i7 2.66GHz, 8GB RAM
Mac OS X 10.6.5 Snow Leopard


1. MeCab のインストール

cmecab-java は、MeCab の JNI バインディングなので、MeCab がインストールされていることを前提としたものです。なので、何はともあれ、MeCab をインストール。
もし詳しい情報が必要な場合は、過去記事 [備忘録] Mac OS X 10.6 Snow Leopard への Cabocha インストール を参照。


2. Protocol Buffers のインストール

LocalProtobufTagger を利用しないのであれば必要ないのですが、StandardTagger との比較検討対象に考えている場合には、こちらもインストールします。
Google Code のプロジェクトページのダウンロードリストから、protobuf-2.3.0.tar.gz をダウンロードし、適当なディレクトリへ解凍します。例として、/Users/hoge/work とすると、
$ tar zxvf protobuf-2.3.0.tar.gz
$ cd protobuf-2.3.0
$ pwd
/Users/hoge/work/protobuf-2.3.0

お約束の configure & make です。私の場合、サードパーティアプリは、/opt/local へ入れる事にしているので、
$ configure --prefix=/opt/local
$ make
問題なくビルド出来たようであれば、
$ make check
これも問題なければ、インストールします。
$ make install
あるいは、環境や設定、権限によっては、sudo も必要です。
$ sudo make install

3. SCons のインストール

SCons も必要なので、インストールします。
SCons プロジェクトのダウンロードページから、scons-2.0.1.tar.gz をダウンロードし、適当なディレクトリへ解凍します。例として、/Users/hoge/work とすると、
$ tar zxvf scons-2.0.1.tar.gz
$ cd scons-2.0.1
$ pwd
/Users/hoge/work/scons-2.0.1

ここで、インストールします。
$ python setup.py install --prefix=/opt/local
あるいは、権限や環境によっては、sudo が必要です。
$ sudo python setup.py install --prefix=/opt/local

4. Solr のインストール

Sorl をインストールします。
例として、/Users/hoge/work/apache-solr-1.4.1 へ展開し、example ディレクトリをSOLR_HOMEとしました。


5. cmecab-java のインストール

ダウンロードした cmecab-1.7.tar.gz を適当なディレクトリ、例として /Users/hoge/work へ展開します。
$ tar zxvf cmecab-1.7.tar.gz
$ cd cmecab-1.7
$ pwd
/Users/hoge/work/cmecab-1.7

JNIをビルドするため、jni ディレクトリへ行き、scons によりビルドします。この時、SConstruct を、自分の環境にあうように編集します。
$ cd jni
$ vi SConstruct

もし、Mac OS X Snow Leopard を利用している場合、JAVA_HOME は、/usr/libexec/java_home を実行することにより取得できます。つまり、
export JAVA_HOME=`/usr/libexec/java_home`
となります。jni.h などのインクルードファイルは、
export JNI_DIR=$JAVA_HOME/../Headers
などと .bash_profile で定義しておくと良いかもしれないです。
また、上記1.、2. のことから、/opt/local/lib と /opt/local/include も参照される必要があることから、私の環境では、以下のように変更しました。

javahome = os.environ['JAVA_HOME']
incpath = [join(javahome, '../Headers'), '/opt/local/include', '/usr/include']
libpath = ['/usr/lib', '/opt/local/lib']

後は、プロジェクトページのインストールに関する解説通りで、問題なくインストールできます。
なお、libCMeCab.dylib と libCMeCab_protobuf.dylib を、/Users/hoge/work/lib へ置いたので、DYLD_LIBRARY_PATH (Linuxの場合は、LD_LIBRARY_PATH)は、以下のように設定しました。
export DYLD_LIBRARY_PATH=/Users/hoge/work/lib:/opt/local/lib:$DYLD_LIBRARY_PATH

6. Solr 側の設定

a) schema.xml の設定
Jetty を利用してのテストなので、cmecab-1.7.jar と protobuf-java-2.1.0.jar を $SOLR_HOME/solr/lib へコピー
その後、プロジェクトページの使用方法の「Solr から使用する」を参考にして、filedType 定義を追加。



7. Admin GUI による動作の確認

Solr の Field Analysis 画面(Admin GUI の一部)へアクセスする。ポートの設定を変更したので、以下の URL となる。
http://localhost:9983/solr/admin/analysis.jsp
Field のプルダウンで、'type'を選び、テクストボックスへ、'text_mecab' と入力する。
Field value (Index) の 'verbose output' チェックボックスをチェック。
テキストボックスへ、定番の「すもももももももものうち」と入力。
'Analyze'ボタンをクリックする。正常に動いている場合は、画面下部に、
Index Analyzer
org.apache.lucene.analysis.ja.JapaneseAnalyzer {}
と表示され、以下のような解析結果が表示される。




参考にしたサイト


Monday, December 20, 2010

[備忘録] Solr 1.4 と Sen による日本語検索環境の構築

Solr 1.4 と Sen(MeCab の Java 実装)を利用し、オープンソースのみで形態素解析による全文検索が行えるような環境構築を行ったので、その作業メモ。環境は、以下の通り。


稼働環境

MacBook Pro 15" (Unibody, Mid 2010), Core i7 2.66GHz, 8GB RAM
Mac OS X 10.6.5 Snow Leopard


1. 用意するもの

Solr 1.4.1 を、Apache Solr のサイトからダウンロード。 Sen 本体と Solr/Lucene で利用するための lucene-ja プロセッサを、java.net の Sen プロジェクトページからダウンロード



2. Sen のインストール

ダウンロードした sen-1.2.2.1.zip を、適当なディレクトリ。例として、/Users/hoge/work へ解凍する。
$ unzip sen-1.2.2.1.zip
$ cd sen-1.2.2.1
$ pwd
/Users/hoge/work/sen-1.2.2.1

デフォルトでは、EUC-JP を扱うようになっているため、UTF-8 へ設定変更する。
$ cd conf
$ vi sen.xml
charset が euc-jp となっている部分を utf-8 へ書き換える。

$ vi sen-processor.xml
charset が euc-jp となっている部分を utf-8 へ書き換える。

辞書を UTF-8 でビルドするため、プロパティファイルを変更する。
$ cd ../dic
$ vi dictionary.properties
sen.charset=EUC-JP を sen.charset=utf-8 へ書き換える。
その他は、そのままとする。

辞書をビルドする。
$ ant
アーカイブをダウンロードし解凍、ビルドを行う。
もし、sen 本体を再ビルドする場合は、1つ上のディレクトリへ戻り、ビルドを行う。
$ cd ..
$ pwd
/Users/hoge/work/sen-1.2.2.1
$ ant
jar ファイルを solr のライブラリディレクトリへコピーする。
$ cp lib/sen.jar <SOLR_INST_DIR>/example/solr/lib
# lib ディレクトリが無い場合には、作成する。



3. lucene-ja のインストール

sen は、日本語形態素解析エンジンであり、これを Solr/Lucene から利用するためには、Solr/Lucene のAPIを利用したプロセッサ(要は、ラッパーあるいは、コネクタ)が必要となり、これが lucene-ja.jar となる。
ダウンロードした、lucene-ja-2.0test2.zip を適当なディレクトリ、例として /Users/hoge/work へ解凍
$ unzip lucene-ja-2.0test2.zip
$ cd lucene-ja
$ pwd
/Users/hoge/work/lucene-ja
jar ファイルを solr のライブラリディレクトリへコピーする。
$ cp lib/lucene-ja.jar <SOLR_INST_DIR>/example/solr/lib


4. Solr のインストール

ダウンロードした、apache-solr-1.4.1.tgz を適当なディレクトリ、例として、/Users/hoge/work へ解凍する。
$ tar zxvf apache-solr-1.4.1.tgz
$ cd apache-solr-1.4.1
$ pwd
/Users/hoge/work/apache-solr-1.4.1

インスタンスは、example のものを利用するので、SOLR_HOME は、example ディレクトリとなる。
$ export SOLR_HOME=/Users/hoge/work/apache-solr-1.4.1/example



5. Solr の設定

schema.xml の設定
$ cd $SOLR_HOME/solr/conf
$ vi schema.xml
以下のように sen 用のフィールドタイプを追加
<!-- This is an example of using sen for Japanese analysis and tokenization -->
<fieldType name="text_sen" class="solr.TextField">
  <analyzer class="org.apache.lucene.analysis.ja.JapaneseAnalyzer"/>
</fieldType>
<!-- sen -->
fields エントリは、とりあえずそのまま。先ずは、Solr が正常に起動することを確認し、Field Analysis 画面で sen の動作を確認する。



6. Solr の起動

上記 2. での sen インストールディレクトリ、例では、/Users/hoge/work/sen-1.2.2.1 を SEN_HOME として環境変数をセットする。
$ export SEN_HOME=/Users/hoge/work/sen-1.2.2.1
Solr を起動する。
$ cd <SOLR_INST_DIR>
$ java -Dsen.home=$SEN_HOME -jar start.jar

と、ここで問題発生!
solr 1.4 が起動しない。
SEVERE: java.lang.IllegalAccessError
が出ている。

ということで、lucene-ja を Eclipse などで開いてみると。
以下のコンストラクタで、input=in としている部分があるので、コメントアウトする。
コンストラクタ内の super(in) により、TokenFilter の protected final TokenStream input に in がセットされるので、動作は、問題ないです。
lucene-ja/src/org/apache/lucene/analysis/ja/DigitFilter.java
lucene-ja/src/org/apache/lucene/analysis/ja/KatakanaStemFilter.java
lucene-ja/src/org/apache/lucene/analysis/ja/MonitorFilter.java
lucene-ja/src/org/apache/lucene/analysis/ja/POSFilter.java

さらに、以下のファイルのエンコードを UTF-8 へ変更し、
lucene-ja/src/org/apache/lucene/analysis/ja/NormalizeReader.java
public static final int[] CONVERSION_TABLE
を、
public static final char[] CONVERSION_TABLE
と変更。さらに、'-1'が値として定義されていたものを、'0'と変更。
lucene-ja.jar を再ビルドし、用意。ただし、build.xml が用意されていないので、Eclipse からエクスポートした。
TODO: Make a build.xml for lucene-ja.jar
ということで。


7. Admin GUI による動作の確認

Solr の Field Analysis 画面(Admin GUI の一部)へアクセスする。ポートの設定を変更していない場合は、以下の URL となる。
http://localhost:8983/solr/admin/analysis.jsp
Field のプルダウンで、'type'を選び、テクストボックスへ、'text_sen'と入力する。
Field value (Index) の 'verbose output' チェックボックスをチェック。テキストボックスへ、定番の「すもももももももものうち」と入力。
'Analyze'ボタンをクリックする。
正常に動いている場合は、画面下部に、
Index Analyzer
org.apache.lucene.analysis.ja.JapaneseAnalyzer {}
と表示され、以下のような解析結果が表示される。

















参考にしたサイト

http://d.hatena.ne.jp/knaka20blue/20080922/1222104683
http://shower.human.waseda.ac.jp/~m-kouki/pukiwiki_public/96.html

Friday, December 10, 2010

Apple TV 購入!

iPad の OS バージョンアップに合わせ、Apple TV を購入しました。

予想以上に AirPlay が使えることで、非常に気に入りました。

 

Apple TV を 46" の液晶テレビへ繋ぎ、AirPlay で iPhone/iPad からストリーミングしたビデオや写真を見てみましたが、想像以上にキレイでした。友人は、720P だからイマイチだと思う。と言っていましたが、正直、僕自身は、全く気になりません。この値段で、これだけ使えるのなら買いだと思いました。

 

Friday, December 3, 2010

MacJournal for iPad からの投稿テスト

MacJournal for iPad を購入したので、日本語のエントリーをアップロードできるかテスト。これが問題なければ、義母のiPad購入の障害が無くなることになる。

Sunday, October 31, 2010

Lucene Revolution のセッションビデオが公開されています

10月に行われた Lucene Revolution のセッションの様子がビデオで公開されています。

全てのセッションは、公開されていませんが、Twitter, LinkedIn, Salesforce.com などの人気のあったセッションについては公開されているようです。

http://www.lucidimagination.com/events/revolution2010/videos

Friday, April 30, 2010

New MacBook Pro 15" (Mid 2010) 購入

MacBook Pro 15” (Core i7 2.66GHz, 4GB RAM, 500GB 7200 rpm HDD, 15” HR Glossy screen) を購入しました。

実は、Core i7, 1440x900 以上のスクリーン、バッテリで5時間以上動作。という条件のもと、ThinkPad X201s をオーダしていたのですが、当初予定の4週間を過ぎても納入される気配が無く、納期問い合わせにもイマイチな対応なところに、5月中旬から下旬にかけて納品予定との連絡。落胆していたところで、Appleからモデルチェンジの発表があったので、思い切ってThinkPadをキャンセルし、MacBook Proを購入。予定通り10日後には、納品されました。 ThinkPad は、非常に魅力的な良いマシンだと思い、楽しみにしていたのですが、納期の遅さにガッカリです。キャンペーンなんかで非常に安い値段で手に入るので、それを考えればコストパフォーマンスは非常に良いと思うのですが、それだけに、なおさら腹立たしく感じたのかも知れません。

そんなこんなで心情的にはいろいろありましたが、結果的には非常に満足しています。ちょっと予算オーバしちゃったけどw ただ、メモリを8GBへ増設したいので、来月もお小遣いを節約しなければw

Saturday, March 13, 2010

[備忘録] Unibody MacBook + Mac OS X 10.6 Snow Leopard + Boot Camp で 64 bit Windows 7 を利用する

Boot Camp でパーティンションを切り、Windows 7 をインストール。ここまでは、普通の手順で何の問題も無く出来るのだけど、Boot Camp 3.0 を Windows 7 へインストールしようとすると、”このマシンでは、Boot Camp x64 はサポートされていません”というメッセージ (実際には、“Boot Camp x64 is unsupported on this computer model”) が表示されてインストールできません。が、これを回避する手段があります。

 

1) コマンドプロンプトを管理者権限で起動 スタートメニューの検索ボックスで、「コマンドプロンプト (Command Prompt)」と入力した際に表示されるアイコンで、右クリックメニューを表示し、「管理者権限で実行 (日本語版のメニューでは、表記が多少違うかも。英語版で実施したため曖昧です。英語版では、“Run As Administrator”)」を選択し、コマンドプロンプトを起動。

 

2) DVD ドライブへ移動 DVD ドライブが D ドライブだとした場合、先ほど起動したコマンドプロンプトで、以下を実行 cd D:

 

3) Boot Camp ディレクトリへ移動 BootCamp64.msi ファイルのあるディレクトリへ移動します。日本語版 Windows 7 では、“\”は、“¥”記号になります。

cd Boot Camp\Drivers\Apple 4) Boot Camp インストーラを起動 64 bit 版 Boot Camp 3.0 のインストーラを起動します。

msiexec /i BootCamp64.msi

私の Unibody MacBook (Core 2 Duo 2.4 GHz, 4 GB RAM) でもインストール終了まで数分かかりました。このインストールが終了したら、今度は、Boot Camp Software Update 3.1 for Windows 64 bit (ダウンロードは、こちらから: http://support.apple.com/kb/DL979 ) をインストールすれば、現在の最新の状態とすることが出来ます。このアップデータのインストールは、素直にインストーラのダブルクリックで起動・実行できます。

 

[参考にしたサイト/エントリ]

http://forum2.xeeno.com/~forums/showthread.php?p=9120855

http://blog.andersonshatch.com/2009/01/11/windows-7-x64-on-a-macbook-pro-guide/

http://mdavey.wordpress.com/2009/01/09/windows-7-64-bit-on-a-macbook/

http://gizmodo.com/5387353/how-to-survive-boot-camp-and-run-win-7-on-a-mac

 

Thursday, February 25, 2010

[MEMO] Change the 'Auto Logon' settings on Windows Vista

#1 Open the Start menu

#2 Type ‘netplwiz’ and select the icon that would shows up in ‘Programs’ group.

#3 Click the ‘Continue’ button on ‘User Account Control’ dialog.

#4 If you want to enter the user name and password when you logon to the computer. You should check the option ‘Users must enter a user name and password to use this computer.’ on the ‘User Accounts’ dialog. If you turn off this feature, You should uncheck the option.

#5 Click the OK button and the close the dialog.