Sen は辞書を構築するのに Apache Ant というビルドツールを使う。 これをあらかじめインストールしておく必要がある。
/usr/local に展開し、ディレクトリ名を sen-1.2.2.1 から sen に変更する。
$ su # cd /usr/local # unzip ~学籍番号/Desktop/sen-1.2.2.1.zip # mv sen-1.2.2.1 sen
Sen では、Sen のインストールされているディレクトリ SEN_HOME を設定するほか、 Java の CLASSPATH に sen.jar と commons-logging.jar (jakarta project のロギングライブラリ) を追加する必要がある。なお、commons-logging.jar は Sen に同梱されている。
ログイン時に自動的に設定されるよう、ディレクトリ /etc/profile.d の下に、 ファイル /etc/profile.d/sen.sh を作成する。 内容は以下の通り。
#!/bin/bash export SEN_HOME=/usr/local/sen if [ -z "$CLASSPATH" ]; then CLASSPATH=. elif [ x`echo $CLASSPATH | grep "^:"` != "x" ]; then CLASSPATH=.$CLASSPATH elif [ "$CLASSPATH" != "." -a x`echo $CLASSPATH | grep "^\\.:"` = "x" ]; then CLASSPATH=.:$CLASSPATH fi for jar in sen commons-logging; do if [ x`echo $CLASSPATH | grep "/$jar.jar"` = "x" ]; then if [ -e $SEN_HOME/lib/$jar.jar ]; then export CLASSPATH=$CLASSPATH:$SEN_HOME/lib/$jar.jar fi fi done
~学籍番号/Desktop/ にダウンロードした場合は、以下のようにする。
$ su # cd /etc/profile.d # mv ~学籍番号/Desktop/sen.sh . # chown root.root sen.sh # chmod +rx sen.sh # exit
bash をログインシェルとして起動し直すと変更が反映される。 echo で確認できる。
$ exec bash -l $ echo $CLASSPATH
ant を使い、解析のための辞書を構築する。 辞書のパッケージを自動的に取得するため、ネットワークの接続が必要である。
$ su # cd /usr/local/sen # ant Buildfile: build.xml ... BUILD SUCCESSFUL Total time: X seconds # cd dic # ant Buildfile: build.xml ... BUILD SUCCESSFUL Total time: Y minute Z seconds #
proxy経由でしか外につなげない場合は、 ant -Dproxy.host=XXX -Dproxy.port=8080 などとする。
bash をログインシェルとして起動後、実行の確認を以下のようにする。 Ctrl-d で終了。
$ bash -l $ sh /usr/local/sen/bin/sen.sh なにか日本語を入力して試そう なにか (なにか) 副詞-助詞類接続(0,3,3) ナニカ ナニカ 日本語 (日本語) 名詞-一般(3,6,3) ニホンゴ ニホンゴ を (を) 助詞-格助詞-一般(6,7,1) ヲ ヲ 入力 (入力) 名詞-サ変接続(7,9,2) ニュウリョク ニューリョク し (する) 動詞-自立(9,10,1) シ シ て (て) 助詞-接続助詞(10,11,1) テ テ 試そう (試そう) 名詞-サ変接続(11,14,3) シソウ シソー $
Sen には、 String を解析するクラス net.java.sen.StringTagger と、 Stream を解析するクラス net.java.sen.StreamTagger がある。 1つの形態素(単語)はクラス net.java.sen.Token のインスタンスとなる。
まず、java の CLASSPATH に sen.jar と commons-logging.jar が必要。
Sen は実行時に sen.xml という設定ファイルを読み込む。 環境変数 SEN_HOME が正しくしていされている場合には、 以下のようにすることで ${SEN_HOME}/conf/sen.xml が読み込まれる。
$ java -Dsen.home=${SEN_HOME} クラス名 コマンドライン引数...
Sen には Apache Jakarta Project の Commons コンポーネントの1つである logging ライブラリ が組み込まれている。 何も指定をしないと実行時に読み込んだ辞書の情報などが表示されるが、 気になる場合には、以下のように起動オプションを加えることで抑制される。
$ java -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog ...
NoOpLog というのは、何もしない Log、つまり何も出力しないということ。
Sen のパッケージに含まれていて /usr/local/sen/java/src/ にインストールされているサンプルを参考にするとよい。
-Dsen.home=${SEN_HOME} を忘れないように。
文字列として扱う StringTaggerDemo.java がわかれば実用上問題ない。
なお、Sen を用いたプログラムをコンパイルをすると、 推奨されていないものを使っているという警告が出ることがあるが、 コンパイルは正常に終了しているので無視してよい。