2007年4月13日金曜日

LuceneとGoSen

Luceneでつかっている、JapaneseAnalyzerを、SenからGoSenをつかうように書き換えてみた。
とりあえず問題なし。

perlは最初だけだからともかく、JCLが不要なのがすばらしい。
これだけのために、jcl104-over-slf4jが必要になってたからな。



6 件のコメント:

  1. 私もGosenに入れ替えようとしたのですが、、、うまく動きません。

    クラスもいろいろと書き換えられていて整合性がとれませんし、変わったAPIのどれを使えばよいかもわかりません。

    わかるようでしたらどうやって動いたのか書いてくれると助かります。

    TokenのgetPosとか、、、。

    返信削除
  2. 変更は、StreamTaggerのコンストラクタの引数を、
    input, configFileから、
    SenFactory.getStringTagger(configFile), inputに

    tokenがnet.java.sen.Tokenなのを、
    net.java.sen.dictionary.Tokenに

    org.apache.lucene.analysis.Tokenのコンストラクタを
    final Morpheme m = token.getMorpheme();
    return new Token
     (m.getBasicForm(),
      token.getStart(),
      token.end()
      m.getPartOfSpeech());
    ってな感じですかね。

    お役に立てば。

    返信削除
  3. testdata/dictionaryにbuild.xmlがあるので、
    antを実行してください。
    正しく終了すれば、コンパイル済みの.senファイルができます。

    そのままのbuild.xmlだと無駄に毎回コンパイルしますので、
    build.xml内の、ファイル名を以下のように書き換えるといいと思います。
    dic.csv -> dictionary.csv
    connect.csv -> connection.csv
    da.sen -> trie.sen
    matrix.sen -> connectionCost.sen
    posInfo.sen -> partOfSpeech.sen

    返信削除
  4. [いいですね] 参考にさせて頂き、(GoSenを)Solrのアナライザに組込むことができました
    貴重な情報をありがとうございます!

    返信削除
  5. Hi,

    I'm afraid I don't. I've not used GoSen anymore and I have already forgotten about it.
    If you can choose other morphological analyzer, you can try cmecab-java(http://code.google.com/p/cmecab-java/). I think cmecab-java is better. Because the dictionary is same as MeCab, so there are many documents for MeCab.

    Thanks,
    Hideaki

    返信削除
  6. Thanks, I'll take a look at http://code.google.com/p/cmecab-java/ :-)

    返信削除