LoginSignup
0
0

More than 5 years have passed since last update.

neologd 組み込みlucene kuromoji コンパイル環境のdocker化

Last updated at Posted at 2018-05-28

mecab-ipadic-neologd辞書を組み込んだ、lucene kuromojiを作成するコンパイル環境をdocker化しました。

環境構築

git clone https://github.com/ft28/practice.git
cd solr/neologd

docker-compose build

jar ファイル作成

docker-compose run jdk ./solr/build.sh

上記コマンドを実行すると、mecab, mecab-ipadic, lucene-solrの各リポジトリを取得、dockerコンテナ内でコンパイルが実行され、neologd辞書を含んだ lucene kuromoji jarファイルがsolrディレクトリ以下に作成されます。このjarファイルを、既存jarファイルと置き換えると、solrでneologd辞書を使った形態素解析が可能になります。

neologd 辞書のコンパイルオプション

build.sh でneologd辞書をコンパイルする際には、build.shのL59 のように、--ignore_noun_ortho オプションを追加して、一般名詞/固有名詞の表記ゆれ無効にしました。

--ignore_noun_ortho を指定せず辞書を作成して、solr の schema.xmlで、solr.JapaneseBaseFormFilterFactory をフィルタとして登録すると、

schema.xml
    <fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
      <analyzer>
        <!-- トークン化 -->
        <tokenizer class="solr.JapaneseTokenizerFactory" mode="normal" />

        <!-- 基本形になおす -->
        <filter class="solr.JapaneseBaseFormFilterFactory"/>
      </analyzer>
    </fieldType>

「ミツミ」を解析した時の最終出力が「三身」になってしまうという問題が発生します。

JT text ミツミ
baseForm 三身
JBFF text 三身

これは neologd-common-noun-ortho-variant-dict-seed.20170228.csv 内で以下のようなデータが作成されているため発生します。

neologd-common-noun-ortho-variant-dict-seed.20170228.csv
ミツミ,1285,1285,5527,名詞,一般,*,*,*,*,三身,ミツミ,ミツミ

そこで、上記辞書データファイルを作成しないよう --ignore_noun_ortho を指定して、辞書データ作成を行います。

まとめ

普段は、サーバープロセスを動かすために使っているdockerコンテナですが、今回はコンパイル実行環境としてdockerコンテナを活用し、dockerさえ動いていればコマンド一つで必ずコンパイル可能な環境を実現できました。

参考

修正されたmecab-ipadic-neologdの辞書を、Lucene Kuromojiに適用してみる

  • jar ファイルのコンパイル手順はこちらのサイトを参考にしました。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0