関口宏司のLuceneブログ

OSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
lucene-gosen を使って節電する
昨日従来のものより25%の処理速度向上を達成したlucene-gosen 1.1.0のリリースをお知らせしたばかりだが、現trunkはさらに改良されてそれよりも9%、以前に比べると35%の高速化を達成した。達成したといっても達成したのはRobertさんで、私は隣で"Great!"とかいって盛り上げているだけである。

ところで、25%〜35%高速化したということは、それだけ早く形態素解析処理が終わる(処理時間が短くなる)のであるから、それだけコンピューターを早く解放できるので節電できているといえるのではないか。いや、そう思いたい。

もちろん24時間形態素解析器を使っているわけではないので、節電量は数パーセントにも満たないかもしれないが、多くのSenのユーザーが新しいバージョンのlucene-gosenに乗り換えれば、全体で結構節電したことになったりしないだろうか。

・・・などと、全社で節電に取り組む某インテグレーター様にてしばし空想。
| 関口宏司 | 形態素解析 | 21:02 | comments(0) | trackbacks(0) |
lucene-gosen 1.1.0 リリース
lucene-gosen 1.1.0 をリリースした。今回のリリースでは、JapaneseTokenizerが出力する各種Attributeを必要になるまでメモリにロードしないという改善を行い、さらなる高速化を実現した。手元の簡単な計測では、25%の処理速度向上が認められた。

計測に使用したプログラムを以下に示す。データには「第177回国会における菅内閣総理大臣施政方針演説」を使い、これを1万回ループする中で形態素解析を行った。2.2GHz Intel Core i7のMacBook Proで、lucene-gosen 1.0.1で107,144ms、lucene-gosen 1.1.0で80,290msとなった。

  static final String STATEMENT = // ここに所信表明演説を貼り付け

  static final int NUM_LOOP = 10000;
  
  public static void main(String[] args) throws Exception {
    long startTime = System.currentTimeMillis();
    for( int i = 0; i < NUM_LOOP; i++){
      TokenStream stream = new JapaneseTokenizer(new StringReader(STATEMENT));
      CharTermAttribute termAtt = stream.addAttribute(CharTermAttribute.class);
      while(stream.incrementToken());
      stream.close();
      if(i % 1000 == 0)
        System.out.println(Integer.toString(i + 1) + " processed...");
    }
    long endTime = System.currentTimeMillis();
    System.out.println("processing time (ms) : " + Long.toString(endTime - startTime));
  }


なおこの改善により、PartOfSpeechAttributeのコピーを保持するTypeAttributeがJapaneseTokenizerから出力されないようになった。これまでJapaneseTokenizerが出力するTypeAttributeでなにか処理をするTokenFilterを持っている人は、代わりにPertOfSpeechAttributeを参照するように変更する必要がある。
| 関口宏司 | 形態素解析 | 22:09 | comments(0) | trackbacks(0) |
lucene-gosen 1.0.1 リリース
lucene-gosen 1.0.1をリリースした。以下から使用する辞書に合わせてダウンロードできる:

http://code.google.com/p/lucene-gosen/downloads/list

このリリースはユーザから寄せられた次のバグフィックスを含んでいる:

WordDelimiterFilter使用時,JapaneseBasicFormFilterがNullPointerExceptionとなる

ハイライトが正しくできない

いずれも重要な修正なので、1.0.0を使用している方は即時1.0.1に切り替えていただきたい。
| 関口宏司 | 形態素解析 | 10:04 | comments(0) | trackbacks(0) |
lucene-gosen: Viterbiコストの表示
lucene-gosenのページにはSolr 3.1のanalysys.jspでのJapaneseTokenizerの出力結果が表示されている。よく見ると、トークンのコストが表示されているのがわかるだろう(一番下の属性)。これはカスタム辞書を作成するとき、単語のコストをいくつにすればいいかのデバッグ用に便利かも知れないということでつけた機能である。
| 関口宏司 | 形態素解析 | 11:02 | comments(0) | trackbacks(0) |
Senの入手方法
Solr本ではsen-1.2.2.1.zipを入手して適用する方法を書いているが、今はどうやらZIPファイルの入手が困難になっているようなので、ソースからのビルド方法を記しておこう。なお、Senは現在活動していないので、Lucene/Solr 3.1であれば先日も紹介したlucene-gosenを使うことをお奨めする。lucene-gosenは活発に活動しているので、安心して使えると思う。

SenのビルドにはJavaとAntがインストールされていることを前提とする。また、辞書のビルドにはSolr本にもあるとおりPerlが必要となる。

# SubversionからSenを入手
$ svn co https://svn.java.net/svn/sen~svn/tags/SEN_1_2_2_1/sen

# ビルド。なおcppコマンドがないとエラーになるが、その部分
#(build.xmlの中ででcppを実行しているところ)は実行する必要がないので
# <exec/>はコメントアウトして先に進めて良い
$ cd sen
$ ant

# あとはSolr本にあるとおり、辞書をビルドする
$ cd dic
$ ant
| 関口宏司 | 形態素解析 | 01:35 | comments(0) | trackbacks(0) |
lucene-gosen + Solr 3.1
先日簡単に紹介したlucene-gosenを、Solr 3.1で使う手順を説明しよう。

1.lucene-gosenのダウンロードしてビルド

$ mkdir ~/work
$ cd ~/work
$ svn checkout http://lucene-gosen.googlecode.com/svn/trunk/ lucene-gosen-read-only

$ cd lucene-gosen-readonly
$ ant


2.Solr 3.1のダウンロードとlucene-gosenのJARの設定

$ mkdir ~/work2
$ cd ~/work2
$ wget http://ftp.riken.jp/net/apache//lucene/solr/3.1.0/apache-solr-3.1.0.tgz
$ tar xvzf apache-solr-3.1.0.tgz
$ cd apache-solr-3.1.0/example
$ mkdir solr/lib
$ cp ~/work/lucene-gosen-readonly/lucene-gosen-1.0beta.jar solr/lib


3.schema.xmlの設定

<fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100">
  <analyzer>
    <tokenizer class="solr.JapaneseTokenizerFactory"/>
  </analyzer>
</fieldType>


4.Solrを起動

$ java -jar start.jar


そして、text_jaで解析すると、次のようになる。 JapaneseTokenizer lucene-gosen
| 関口宏司 | 形態素解析 | 11:36 | comments(13) | trackbacks(0) |
lucene-gosen
Lucene/SolrコミッターのRobert Muirさんが開始したlucene-gosenプロジェクト:

http://code.google.com/p/lucene-gosen/
| 関口宏司 | 形態素解析 | 09:33 | comments(0) | trackbacks(0) |
+ Solrによるブログ内検索
+ PROFILE
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<< December 2018 >>
+ LINKS
検索エンジン製品 - 比較のポイント
商用検索エンジンを購入した企業担当者は読まないでください。ショックを受けますから・・・
>>製品比較 10のポイント
+ Lucene&Solrデモ
+ ThinkIT記事
+ RECOMMEND
Apache Solr入門 ―オープンソース全文検索エンジン
Apache Solr入門 ―オープンソース全文検索エンジン (JUGEMレビュー »)
関口 宏司,三部 靖夫,武田 光平,中野 猛,大谷 純
+ RECOMMEND
Lucene in Action
Lucene in Action (JUGEMレビュー »)
Erik Hatcher,Otis Gospodnetic,Mike McCandless
FastVectorHighlighterについて解説記事を寄稿しました。
+ RECOMMEND
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ MOBILE
qrcode
+ SPONSORED LINKS