Senのインストールに関してまとめておく。
SenはJavaで書かれているのでJavaは必須だが、ここでは省略。
- Antの準備
最近はもっぱらMavenばかり使ってたのでAnt入れてなかった...
Apache Ant - Binary Distributions
ここから apache-ant-1.8.3-bin.zip をダウンロード。
任意のディレクトリに解凍、解凍したディレクトリをWindowsの環境変数ANT_HOMEに登録、PATHに %ANT_HOME%\bin を追加する。
コマンドプロンプトでantが起動するか確かめる。
c:\>ant -version Apache Ant(TM) version 1.8.3 compiled on February 26 2012 c:\>
残念ながらPerlには明るくない。
Strawberry PerlとActiveState Perlの2種類あるようだが、聞き覚えのあるActiveState Perlをインストールすることにした。
Download and Install Perl Binaries: ActivePerl | ActiveState
ここからActivePerlをダウンロード。現時点の最新バージョンは5.14.2。
インストーラーを起動し、ひたすら [Next] をクリックするのみでOK。
インストールが終わったら、コマンドプロンプトを起動、正常にインストールされたか確認する。
c:\>perl -v This is perl 5, version 14, subversion 2 (v5.14.2) built for MSWin32-x64-multi-thread (with 1 registered patch, see perl -V for more detail) Copyright 1987-2011, Larry Wall Binary build 1402 [295342] provided by ActiveState http://www.ActiveState.com Built Oct 7 2011 15:19:36 Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. c:\>
- Subversionのインストール
Apache Subversion Binary Packages
ここからSubversionをダウンロードしてインストールする。現時点の最新バージョンは1.7.4。
何種類かあるが、どれでも問題ない。
インストーラーを実行、svn.exe があるディレクトリ(例えば C:\Program Files\SlikSvn\bin)をWindowsの環境変数PATHに追加する。
コマンドプロンプトでSubversionが起動するか確かめる。
c:\>svn --version svn, バージョン 1.7.4-SlikSvn-1.7.4-X64 (SlikSvn/1.7.4) X64 コンパイル日時: Mar 8 2012, 13:42:47 Copyright (C) 2012 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/ 以下のリポジトリアクセス (RA) モジュールが利用できます: * ra_neon : Neon を利用して WebDAV (DeltaV) プロトコルでリポジトリにアクセスするモジュール。 - 'http' スキームを操作します - 'https' スキームを操作します * ra_svn : svn ネットワークプロトコルを使ってリポジトリにアクセスするモジュール。 - Cyrus SASL 認証を併用 - 'svn' スキームを操作します * ra_local : ローカルディスク上のリポジトリにアクセスするモジュール。 - 'file' スキームを操作します * ra_serf : serf を利用して WebDAV (DeltaV) プロトコルでリポジトリにアクセスするモジュール。 - 'http' スキームを操作します - 'https' スキームを操作します c:\>
- Senの入手
いよいよ本題。以前はsenをzipでダウンロードできたそうだが、2012/5/23現在は入手不可なので最新のソースをSubversionで取得する。
※SenプロジェクトのURL http://java.net/projects/sen
C:\Users\xxx\home>svn co https://svn.java.net/svn/sen~svn/tags/SEN_1_2_2_1/sen 'https://svn.java.net:443' のサーバ証明書の認証中にエラーが発生しました: - 証明書は信頼のおける機関が発行したものではありません。証明書を手動で認証 するためにフィンガープリントを用いてください! 証明書情報: - ホスト名: www.java.net - 有効範囲: Sun, 19 Sep 2010 15:00:00 GMT から Wed, 19 Sep 2012 14:59:59 GMT まで - 発行者: Class 3 MPKI Secure Server CA, VeriSign Trust Network, Sun Microsystems Inc - フィンガープリント: 22:d2:d5:43:96:0f:eb:e0:9a:20:b9:14:b4:d9:32:1e:6a:f3:37:11 拒否しますか (R)、一時的に承認しますか (t)、常に承認しますか (p)? t A sen\dic A sen\dic\dictionary.properties A sen\dic\ipa2mecab.pl A sen\dic\build.xml A sen\dic\compound.pl A sen\demo A sen\demo\SenBench.java A sen\demo\MeCabBench.java A sen\conf A sen\conf\sen-processor.xml A sen\conf\sen.xml A sen\lib A sen\lib\junit.jar A sen\lib\LICENSE.logging A sen\lib\LICENSE.junit A sen\lib\commons-logging.jar A sen\src A sen\src\test A sen\src\test\dic A sen\src\test\dic\compound.dic A sen\src\test\custom_dic.csv A sen\src\test\testcase A sen\src\test\testcase\StringTaggerTest.java A sen\src\test\testcase\RemarkProcessorTest.java A sen\src\test\testcase\CompositPostProcessorTest.java A sen\src\test\testcase\CompoundWordPostProcessorTest.java A sen\src\java A sen\src\java\ProcessorDemo.java A sen\src\java\StringTaggerDemo.java A sen\src\java\net A sen\src\java\net\java A sen\src\java\net\java\sen A sen\src\java\net\java\sen\processor A sen\src\java\net\java\sen\processor\CompositPostProcessor.java A sen\src\java\net\java\sen\processor\PostProcessor.java A sen\src\java\net\java\sen\processor\CompoundWordPostProcessor.java A sen\src\java\net\java\sen\processor\PreProcessor.java A sen\src\java\net\java\sen\processor\RemarkPostProcessor.java A sen\src\java\net\java\sen\processor\RemarkPreProcessor.java A sen\src\java\net\java\sen\StringTagger.java A sen\src\java\net\java\sen\Token.java A sen\src\java\net\java\sen\tools A sen\src\java\net\java\sen\tools\PairObject.java A sen\src\java\net\java\sen\tools\MkCompoundTable.java A sen\src\java\net\java\sen\tools\DictionaryMaker.java A sen\src\java\net\java\sen\tools\MkSenDic.java A sen\src\java\net\java\sen\CToken.java A sen\src\java\net\java\sen\Viterbi.java A sen\src\java\net\java\sen\Dictionary.java A sen\src\java\net\java\sen\Node.java A sen\src\java\net\java\sen\StreamTagger.java A sen\src\java\net\java\sen\SenUtils.java A sen\src\java\net\java\sen\io A sen\src\java\net\java\sen\io\FileAccessor.java A sen\src\java\net\java\sen\io\RandomAccessReader.java A sen\src\java\net\java\sen\io\FullBufferedReader.java A sen\src\java\net\java\sen\io\FileAccessorFactory.java A sen\src\java\net\java\sen\io\MappedBufferedReader.java A sen\src\java\net\java\sen\Tokenizer.java A sen\src\java\net\java\sen\ja A sen\src\java\net\java\sen\ja\JapaneseTokenizer.java A sen\src\java\net\java\sen\resources A sen\src\java\net\java\sen\resources\sen.xsd A sen\src\java\net\java\sen\util A sen\src\java\net\java\sen\util\CSVData.java A sen\src\java\net\java\sen\util\CSVParser.java A sen\src\java\net\java\sen\util\DoubleArrayTrie.java A sen\src\java\net\java\sen\util\DoubleArrayTrie.cpp A sen\src\java\StreamTaggerDemo.java A sen\bin A sen\bin\simplelog.properties A sen\bin\sen.bat A sen\bin\sen.sh A sen\docs A sen\build.xml U sen リビジョン 89 をチェックアウトしました。 C:\Users\xxx\home>
- Senのビルド
上の続き。このままビルドするとcppコマンドが無いエラーが発生するので、build.xmlの以下の箇所をコメントアウトする。
<exec executable="cpp" output="${src.dir}/net/java/sen/util/DoubleArrayTrie.java" > <arg line="-P ${src.dir}/net/java/sen/util/DoubleArrayTrie.cpp"/> </exec>
コメントアウトしたらビルドする。
C:\Users\xxx\home\sen>ant Buildfile: C:\Users\xxx\home\sen\build.xml init: [mkdir] Created dir: C:\Users\xxx\home\sen\build [mkdir] Created dir: C:\Users\xxx\home\sen\build\classes [mkdir] Created dir: C:\Users\xxx\home\sen\build\lib compile: [javac] C:\Users\xxx\home\sen\build.xml:59: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 31 source files to C:\Users\xxx\home\sen\build\classes [javac] 警告:[options] ブートストラップ・クラスパスが-source 1.3と一緒に設定されていません [javac] C:\Users\xxx\home\sen\src\java\net\java\sen\SenUtils.java:158: 警告:この文字は、エンコーディングeuc_jpにマップできません [javac] * unicodeToDATCode("???".toCharArray()); [javac] ^ [javac] C:\Users\xxx\home\sen\src\java\net\java\sen\SenUtils.java:158: 警告:この文字は、エンコーディングeuc_jpにマップできません [javac] * unicodeToDATCode("???".toCharArray()); [javac] ^ [javac] C:\Users\xxx\home\sen\src\java\net\java\sen\SenUtils.java:158: 警告:この文字は、エンコーディングeuc_jpにマップできません [javac] * unicodeToDATCode("???".toCharArray()); [javac] ^ [javac] 警告4個 jar: [copy] Copying 1 file to C:\Users\xxx\home\sen\build\classes\net\java\sen\resources [jar] Building jar: C:\Users\xxx\home\sen\lib\sen.jar BUILD SUCCESSFUL Total time: 4 minutes 43 seconds C:\Users\xxx\home\sen>
警告が出ているが問題ない。「警告:この文字は、エンコーディングeuc_jpにマップできません」にちょっとびびったが、ソースを見ると思いっきりコメントなので全く問題なし。
- Senで使う辞書のビルド
上の続き。普通に辞書をビルドするとIPA辞書が使われるが、今回はあえてNAISTの辞書を使ってみる。
http://sourceforge.jp/projects/naist-jdic/releases/
ここから naist-jdic-0.4.3.tar.gz をダウンロードし、C:\Users\xxx\home\sen\dic に解凍する。
解凍したら、フォルダ名を naist-jdic-0.4.3 から ipadic-2.6.0 に変更する(とりあえず以下のbuild.xmlの修正量を減らすため)。
次にbuild.xmlの修正。
perlの実行パスがUNIX用になっているので修正する。
<!-- <property name="perl.bin" value="/usr/bin/perl"/> --> <property name="perl.bin" value="perl"/>
また、辞書ファイルのアーカイブはダウンロード済なので下記2箇所もコメントアウト。
<get src="${ipadic.home}/${ipadic.archive}" dest="${ipadic.archive}" />
<gunzip src="${ipadic.archive}"/> <untar src="${ipadic.dir}.tar" dest="." /> <delete file="${ipadic.dir}.tar"/>
ビルトする。
C:\Users\xxx\home\sen\dic>ant Buildfile: C:\Users\xxx\home\sen\dic\build.xml prepare-proxy: prepare-archive: prepare-dics0: prepare-dics: download: melt: prepare: dics0: [exec] ipadic-2.6.0/naist-jdic.dic ... create: [java] [INFO] MkSenDic - (1/7): reading connection matrix ... [java] [INFO] MkSenDic - connection file = connect.csv [java] [INFO] MkSenDic - charset = EUC_JP [java] [INFO] MkSenDic - (2/7): building type dictionary ... [java] [INFO] MkSenDic - (3/7): writing conection matrix (5 x 1940 x 1095 = 10621500) ... [java] [INFO] MkSenDic - (4/7): reading morpheme information ... [java] [INFO] MkSenDic - load dic: dic.csv [java] [INFO] MkSenDic - 50000... [java] [INFO] MkSenDic - 100000... [java] [INFO] MkSenDic - 150000... [java] [INFO] MkSenDic - 200000... [java] [INFO] MkSenDic - 250000... [java] [INFO] MkSenDic - 300000... [java] [INFO] MkSenDic - 350000... [java] [INFO] MkSenDic - 400000... [java] [INFO] MkSenDic - 450000... [java] [INFO] MkSenDic - (5/7): sorting lex... [java] [INFO] MkSenDic - (6/7): writing token... [java] [INFO] MkSenDic - key size = 456169 [java] [INFO] MkSenDic - (7/7): building Double-Array (size = 387066) ... [java] [INFO] DoubleArrayTrie - save time = 0.107[s] [java] [INFO] MkSenDic - total time = 78[ms] BUILD SUCCESSFUL Total time: 1 minute 36 seconds C:\Users\xxx\home\sen\dic>
- Senを使ってみる
実際に形態素解析できるか確かめる。
C:\Users\xxx\home\sen\lib>set SEN_HOME=C:\Users\xxx\home\sen C:\Users\xxx\home\sen\lib>java -Dsen.home=%SEN_HOME% -cp sen.jar;commons-logging.jar StringTaggerDemo done. Please input Japanese sentence: 5 23, 2012 12:02:48 午前 net.java.sen.Dictionary <init> 情報: token file = C:\Users\xxx\home\sen\dic/token.sen 5 23, 2012 12:02:48 午前 net.java.sen.Dictionary <init> 情報: time to load posInfo file = 16[ms] 5 23, 2012 12:02:48 午前 net.java.sen.Dictionary <init> 情報: double array trie dictionary = C:\Users\xxx\home\sen\dic/da.sen 5 23, 2012 12:02:48 午前 net.java.sen.util.DoubleArrayTrie load 情報: loading double array trie dict = C:\Users\xxx\home\sen\dic/da.sen 5 23, 2012 12:02:48 午前 net.java.sen.util.DoubleArrayTrie load 情報: loaded time = 0.374[ms] 5 23, 2012 12:02:48 午前 net.java.sen.Dictionary <init> 情報: pos info file = C:\Users\xxx\home\sen\dic/posInfo.sen 5 23, 2012 12:02:48 午前 net.java.sen.Dictionary <init> 情報: time to load pos info file = 0[ms] 5 23, 2012 12:02:48 午前 net.java.sen.Tokenizer loadConnectCost 情報: connection file = C:\Users\xxx\home\sen\dic\matrix.sen 5 23, 2012 12:02:48 午前 net.java.sen.Tokenizer loadConnectCost 情報: time to load connect cost file = 47[ms] すもももももももものうち すもも (すもも) 名詞-一般(0,3,3) スモモ スモモ も (も) 助詞-係助詞(3,4,1) モ モ もも (もも) 名詞-一般(4,6,2) モモ モモ も (も) 助詞-係助詞(6,7,1) モ モ もも (もも) 名詞-一般(7,9,2) モモ モモ の (の) 助詞-連体化(9,10,1) ノ ノ うち (うち) 名詞-非自立-副詞可能(10,12,2) ウチ ウチ C:\Users\xxx\home\sen\lib>
Apache Solr入門 ―オープンソース全文検索エンジン
- 作者: 関口宏司,三部靖夫,武田光平,中野猛,大谷純
- 出版社/メーカー: 技術評論社
- 発売日: 2010/02/20
- メディア: 大型本
- 購入: 18人 クリック: 567回
- この商品を含むブログ (22件) を見る