2015年6月1日月曜日

elasticsearch Kuromoji

elasticsearchにKuromojiを導入したので、学習メモ

環境

  • vagrant(centOS6.5)

Kuromojiとは

Javaで書かれているオープンソースの日本語形態素解析エンジンです。
メールサーバーを構築したことがある人は、Mecabをイメージするとよいと思います。
solrを利用したことがある人は、solrのkuromojiと全く同じなので学習の必要はありません。

インストール

こちらの記事に手順を記載しています。chefで導入しています。

サンプルの作成

まずは簡単なサンプルを作成していきましょう。ここではindex名『kuromoji_sample』でデータを作成します。
indexってなにそれ?の場合は、この記事で基礎から学習してください。

user_dictionaryを作成

まずはユーザ辞書を作成します。

ファイル名『userdict_ja.txt』を作成します。
ファイルの保存先は『/usr/local/etc/elasticsearch』になります。
公式サイトの説明だと{home}/config配下と記載されていますが、間違いです。(少なくともcentosの場合は)


// elasticsearch homeへ移動
cd /usr/local/etc/elasticsearch

sudo touch userdict_ja.txt

chmod 777 elasticsearch:elasticsearch userdict_ja.txt

userdict_ja.txtを作成します。文字コードはutf-8です。


富士,富士,フジ,カスタム名詞
高尾,高尾,タカオ,カスタム名詞

elasticsearchを再起動します。


sudo service elasticsearch restart

インデックスの作成

次はインデックスを作成します。

『kuromoji_user_dict』というユーザ辞書指定をしたtokenizerと、それを使う『my_analyzer』というanalyzerを登録したindexを作成します。


curl -XPUT 'http://localhost:9200/kuromoji_sample/' -d'
{
    "settings": {
        "index":{
            "analysis":{
                "tokenizer" : {
                    "kuromoji_user_dict" : {
                       "type" : "kuromoji_tokenizer",
                       "mode" : "extended",
                       "discard_punctuation" : "false",
                       "user_dictionary" : "userdict_ja.txt"
                    }
                },
                "analyzer" : {
                    "my_analyzer" : {
                        "type" : "custom",
                        "tokenizer" : "kuromoji_user_dict"
                    }
                }

            }
        }
    }
}
'
{"acknowledged":true}

上記のindexが登録されたことを確認します。


http://localhost:9200/_aliases?pretty

{
  "kuromoji_sample" : {
    "aliases" : { }
  }
}

きちんと登録されていますね。

解析

最後に、解析ができるかをチェックします。


curl -XGET 'http://localhost:9200/kuromoji_sample/_analyze?analyzer=my_analyzer&pretty' -d '富士山'

{
  "tokens" : [ {
    "token" : "富士",
    "start_offset" : 0,
    "end_offset" : 2,
    "type" : "word",
    "position" : 1
  }, {
    "token" : "山",
    "start_offset" : 2,
    "end_offset" : 3,
    "type" : "word",
    "position" : 2
  } ]
}

成功です。

以上。

参考サイト
elasticsearch オススメ書籍

elasticsearchを使うなら側においておきたい一冊です。
うまくまとまっていて、辞書代わりにも利用できます。今のところ日本語の本を使うならこの本一択ですね。

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...