nackworld管理日記

2009/11/09(Mon) Senを動かす

WindowsXP上でSenを動かす(辞書最新)&ビルド環境を作ったのでメモ

動かす環境を作るのに必要なもの→Sen,Ant,ActivePerl
ビルド環境を作るのに必要なもの→JDK,(Ant[*1]),(cpp[*2])

[*1]:上記で既にインストール済
[*2]:本来は必須だけどWindows用に持ってくるのが面倒なので、使用しない方向で


Senって?

→Javaで書かれた形態素解析プログラムです。(が、既に開発/サポートは終了されてるっぽぃ?)

以下だらっとしたメモなので興味のある人のみ。

1)環境を作る

・Senの入手&解凍
ここから sen-1.2.2.1.zip を持ってくる
https://sen.dev.java.net/servlets/ProjectDocumentList?folderID=755&expandFolder=755&folderID=0

解凍先はどこでもいいけど(私は D:\sen-1.2.2.1 という感じで置いた。以下その前提で)

・Antの入手&解凍
公式サイト http://ant.apache.org/bindownload.cgi でもどこでもいいから apache-ant-1.7.1-bin.zip を持ってくる

解凍先はどこでもいいけど(私は D:\apache-ant-1.7.1 という感じで置いた。以下その前提で)

・ActivePerlの導入

Perlなら何でもいいのだろうけど、インストーラも付いてお手軽な ActivePerl をインストール
http://aspn.activestate.com/ASPN/Downloads/ActivePerl/

※AntとPerlは、次の「辞書ファイル作成」で使用されます。
→辞書ファイルを入手できれば不要という話もある。(が、再配布して良いものなのか不明)


・JDKの導入

ソースの最終更新が2006年当時なのでその頃以降のでいいんじゃないでしょうか。
とりあえず最新の http://java.sun.com/javase/ja/6/download.html このあたりのJDKをダウンロードしておけば
いいんじゃ?
私の場合、仕事用マシンに入っていた

C:\jdk1.6.0_05

をそのまま使用したけど特に問題は起きてない(っぽい)


2)辞書ファイル作成

(動作概要)
辞書ファイル作成コマンドを実行すると、勝手にネット経由でIPA辞書(バージョン2.6.0)をダウンロードしてきて、
Sen用辞書を作ってくれる。(=セキリュティソフト(ファイヤウォールetc)…の設定が必要な場合がある、かも)

D:\sen-1.2.2.1\dic

に移動し、

D:\apache-ant-1.7.1\bin\ant -Dperl.bin=c:\Perl\bin\perl.exe

としてAnt起動。
しばらく待つと辞書ファイルができあがる。( posInfo.sen とか。4つくらい)

3)実行

まず、sen-1.2.2.1\bin に移動
そこにあるsen.batのままだと不都合な場合もあるので、sen.cmdにリネームし、以下のように編集

rem set classpath
>SET SEN_HOME=D:\sen-1.2.2.1
>SET JAVA_HOME=C:\jdk1.6.0_05
SET CLASSPATH=%SEN_HOME%\lib\sen.jar
SET CLASSPATH=%CLASSPATH%;%SEN_HOME%\lib\commons-logging.jar

@%JAVA_HOME%\bin\java -Dsen.home=%SEN_HOME% -classpath %CLASSPATH% StringTaggerDemo ${1+"$@"}


※>のついた部分が追加。SEN_HOMEとJAVA_HOMEを指定しているのでJAVA_HOMEに関しては指定済みの環境であれば不要かも。


んでsen.cmdを実行すると、

Please input Japanese sentence:
2009/11/10 12:16:47 net.java.sen.Dictionary
情報: token file = D:\sen-1.2.2.1\dic/token.sen
2009/11/10 12:16:47 net.java.sen.Dictionary
情報: time to load posInfo file = 0[ms]
2009/11/10 12:16:47 net.java.sen.Dictionary
情報: double array trie dictionary = D:\sen-1.2.2.1\dic/da.sen
2009/11/10 12:16:47 net.java.sen.util.DoubleArrayTrie load
情報: loading double array trie dict = D:\sen-1.2.2.1\dic/da.sen
2009/11/10 12:16:47 net.java.sen.util.DoubleArrayTrie load
情報: loaded time = 0.422[ms]
2009/11/10 12:16:47 net.java.sen.Dictionary
情報: pos info file = D:\sen-1.2.2.1\dic/posInfo.sen
2009/11/10 12:16:47 net.java.sen.Dictionary
情報: time to load pos info file = 0[ms]
2009/11/10 12:16:47 net.java.sen.Tokenizer loadConnectCost
情報: connection file = D:\sen-1.2.2.1\dic\matrix.sen
2009/11/10 12:16:47 net.java.sen.Tokenizer loadConnectCost
情報: time to load connect cost file = 125[ms]

という画面になって止まるので、日本語の文章を何か入力してみる
(ALT+半角/全角キーでIMEをONにして直接打ち込む、でも可)

本日は晴天なり。
本日 (*) 1375-4748-名詞-副詞可能(0,2,2) * 本日
は (*) 284-3143-助詞-係助詞(2,3,1) * は
晴天 (*) 1345-5542-名詞-一般(3,5,2) * 晴天
なり (*) 338-7566-助詞-接続助詞(5,7,2) * なり
。 (*) 8--31-記号-句点(7,8,1) * 。

みたいな結果が出てきます。形態素解析されてますなぁ。


4)sen.jarを作ってみる

ソースを修正した時などいろいろな時に必要なのでjarを作り直してみる

D:\sen-1.2.2.1

に移動し、

D:\apache-ant-1.7.1\bin\ant -Dperl.bin=c:\Perl\bin\perl.exe

としてAntを起動する、が、一般的な環境では

BUILD FAILED
D:\sen-1.2.2.1\build.xml:47: Execute failed: java.io.IOException: Cannot run program "cpp": CreateProcess error=2,


47行目あたりでcppが無いとか言われて落ちると思われる。

・解決策は2通りあって、
1)Windows用のcppを導入する(Cygwinとか?)
2)そこは修正しないので、無視する(作り直さない)よう、build.xmlを修正する

今回は楽な2を選択(笑)

build.xmlの47〜49行目
<exec executable="cpp" output="${src.dir}/net/java/sen/util/DoubleArrayTrie.java" >
<arg line="-P ${src.dir}/net/java/sen/util/DoubleArrayTrie.cpp"/>
</exec>


<!--<exec executable="cpp" output="${src.dir}/net/java/sen/util/DoubleArrayTrie.java" >
<arg line="-P ${src.dir}/net/java/sen/util/DoubleArrayTrie.cpp"/>
</exec>-->
として思いっきり無効化(コメントアウト)します。

※DoubleArrayTrie.cppからDoubleArrayTrie.javaを作っているらしいけどそんな所に手を入れることは無いため既存ソースでいいであろうという方針

そうして再度Antを実行すれば作成されます。(いくつか警告は出るがコメント中なので無視して良いと思われる)

※こうした修正が必要になる時があるので
辞書にすごく長い単語が含まれてるとその単語を含んだドキュメントを追加する際にIndexOutOfBoundsExceptionで失敗する
http://d.hatena.ne.jp/gnarl/20080912/1221189985


補足)文字コードの話

UTF-8にしておいた方が良い?のかどうか微妙ですがUTF-8にしておきたい場合は

sen\conf\sen.xml、sen-processor.xml 内
utf-8 に変更

sen\dic\dictionary.properties 内
sen.charset=UTF-8 に変更 # dic.charset=EUC_JPは変更しない

を設定して辞書ファイルを作り直すが吉。


長文お疲れ様でした。私も読み返すことがあるのか不明(謎)
【カテゴリ】日記

2009/11/05(Thu) 今回の職場は

武道館のけっこう側

なのでライブをやる気配とかが上から伺えます。
今日は14時頃から「赤い人(=赤のパーカーを着た人)が多い」と職場の人が騒いでいたのでググってみたら仙台貨物というグループのであった。


謎の運送屋バンド、仙台貨物・初登場インタヴュー!BARKS
http://www.barks.jp/feature/?id=1000025245

によれば全員ゲイだというがどうなんだろう(笑)
#しかし公式サイト見てちょっと興味もった。聞いてみたくなったかも知れない運転(しかし活動休止の罠)


ドスパラGalleriaでのタッチパッド無効化のんびり歩き
http://mattariplay.blog56.fc2.com/blog-entry-103.html

私もGalleriaノートPCを仕事場に持ち込んでいるのですが、最近よくタッチパッドがあっちこっちに動くんだこれがまた。
しかもBIOSではロクな設定ができないとゆー(起動順くらいしか設定できなかった気がする)

そんな訳でWindowsUpdateでドライバ更新したらドライバのほーで無効化できるよー、という話。
(最初「デバイスマネージャ」→「PS/2互換マウス」→(右クリック)ドライバの更新、の流れでは更新されなくて、「プロパティ」→「ドライバ」→ドライバの更新、という順番だと見つけてくれた。謎じゃ)

なんか環境を元に戻したら忘れそうなんでメモ。(仕事が終わったら元環境にリカバリするので)
#しかしノートPCのキーボードがけっこう熱いのであまり長文が打てないのであった


1分以上保てば、医学的には早漏ではない メンズサイゾー
http://www.menscyzo.com/2009/10/post_440.html

あにゃるに挿れた場合についての考察は無いんですかね(謎)


姉貴が事故で昏睡状態になった2ちゃんねる実況中継
http://res2ch.blog76.fc2.com/blog-entry-4520.html

勝手にBL本と想像したが如何に?(謎)
#しかし現世に魂を繋ぎ留めておくのはやはり精神力なのかなぁと。以下参考。
ありがとう白パンツ2ちゃんねるの(・∀・)イイ!
http://2ch-e.com/article/14295971.html
事件や事故に巻き込まれた同人さん 事件簿142ch
http://changi.2ch.net/test/read.cgi/2chbook/1254510120/85
【カテゴリ】日記 PC

2009/11/02(Mon) 九段のあたりに出没

どうしてもと言われると

行きたくなる反面、キナ臭さを感じて躊躇してしまいますよね(謎)
#何とゆーか、火消しまでにはなっていないけど、それなりに大変そうなプロジェクトではあるな。
(ドキュメントが揃ってないと思っていた前案件より更にドキュメントが無いとは・・・)


フレームワーク

今回もまたstrutsライクな環境。ってーかstrutsっぽい構造を独自で実装する系は流行りなんだろうか。(あんまり最近のを知らない)
(確かにstrutsでのxmlファイルの管理はめんどーだと思ったけども)
…と思ってたらやはりNが絡んでいたでござる(笑)
【カテゴリ】日記

2009/11/01(Sun)

(日記が発掘されたので書いてみる on 20101116…一年前か(汗))


http://d.hatena.ne.jp/hagex/20091028
Twitterを有害サイトに指定せよHagex-day.info
http://d.hatena.ne.jp/hagex/20091028

それはそうとtwitterではデマが広がる勢いも物凄いんじゃないだろーかと思っていたんですがやはりそうなのなかなぁ。
…モザイクかけられてても知ってる人は高木せんせーだと推測できますよねコレ。
#↓はてブに残ってた
ファイル共有ソフトを放置していた疑いで東京都在住・産 ...

…よく読めば釣りだとわりそうな気がするけど最初のほうしか読まれないで脊髄反射してしまうからなー。
(そのうち取り付け騒ぎとか風説の流布に使われたりするんじゃなかろうか。アカウント無い人には届きにくいけど最近だとWeb上にtwitter発言とか載せられるしねぇ)
【カテゴリ】日記

過去ログ 200901 02 03 04 05 06 07 08 09 10 11 
201001 02 03 06 09 10 11 12 
201101 02