[groonga-dev,03974] Re: MeCabの辞書について

Back to archive index

Kouhei Sutou kou****@clear*****
2016年 3月 8日 (火) 22:45:41 JST


須藤です。

In <56DD5****@webmk*****>
  "[groonga-dev,03971] MeCabの辞書について" on Mon, 7 Mar 2016 18:55:39 +0900,
  "info****@webmk*****" <info****@webmk*****> wrote:

> (メーリングリストのアーカイブが簡単に検索できればいいのですが...)

ですよねぇ。。。

> 1.Mroongaで使用している辞書ファイルの場所はどのように調べればいいで
> しょうか?(サーバーに辞書が複数インストールされており、どの辞書が使われ
> ているかをMroongaの設定から把握したいです)

MroongaはMeCabのデフォルトの設定を利用します。
そのため、/etc/mecabrcなどMeCabの設定ファイルを参照してくだ
さい。

ただ、MeCabのデフォルトの設定を使うため、Mroongaの設定からど
の辞書を使っているかは判断できません。

> 2.辞書への単語の追加(ユーザー辞書)は、一般的なMeCabの単語の追加方法
> と同じように行えばいいでしょうか?もし何か注意すべき点がありましたらご教
> 授願えればと思います。
> 
> ※一般的なMeCabの単語の追加方法とは、例えばこのような方法です
> https://mecab.googlecode.com/svn/trunk/mecab/doc/dic.html

一般的な方法で問題ありません。

注意事項は辞書を更新した後はインデックスを再作成する必要があ
るということです。

そうしないと、辞書更新前に作ったインデックスを使ってしまうか
らです。


ただ、そうすると辞書更新のコストが上がってしまうため、必要最
小限のレコードだけ更新したくなります。そのために↓の仕組みを
考えているのですが、まだ手を動かせていません。

単語Aを登録するとした場合:

  1. TokenMecabでインデックスを張っているカラムに対し、
     TokenBigramSplitSymbolAlphaのインデックスIも作成する

  2. インデックスIで単語Aを検索し、単語Aを登録したときに影響
     のあるレコードを抽出する
     ポイント:TokenBigramSplitSYmbolAlphaを使うと漏れのない
     検索ができる

  3. 辞書にAを追加する

  4. 2.で見つけたレコードに対してだけTokenMecabのインデック
     スを更新する

     4.1 Aを登録する前の辞書でトークナイズして、該当トークン
         をインデックスから削除する

     4.2 Aを登録後の辞書でトークナイズして、該当トークンをイ
         ンデックスに追加する

4.1, 4.2を実現できるようにMroonga(Groonga)で同時に複数の
MeCabの辞書を扱えるようにしないとなぁと思っています。


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
リーダブルコードワークショップ:
  http://www.clear-code.com/services/code-reader/readable-code-workshop.html




groonga-dev メーリングリストの案内
Back to archive index