Taku Kudo
taku****@chase*****
2014年 3月 8日 (土) 04:22:04 JST
工藤です MeCabの辞書の定義だけでやるのはいろいろ制限があるので、制約付き解析の機能を試してみるのをおすすめします。 https://mecab.googlecode.com/svn/trunk/mecab/doc/partial.html 事前にどこは必ず切る・切らないを指定してMeCabに与えると、それを制約にして解析します。 API経由で叩くと、制約の自由度がより高くなります。 工藤 2014年3月7日 7:44 Koichi Sugimoto <koich****@gmail*****>: > はじめまして、sugimotoと申します。 > 独自辞書に調べたい単語を登録して、その単語を文章から検索する使い方をしています。 > > > 公式のドキュメント > http://mecab.googlecode.com/svn/trunk/mecab/doc/dic-detail.html > …を参考にして辞書を作り、 > 概ね上手く機能しているのですが、より詳細な指定をしたいと思っています。 > > 以下は現在のmecab設定ファイル群の内容です。 > > --------------- > > [matrix.def] > 1 1 > 0 0 0 > > [unk.def] > DEFAULT,0,0,0,* > SPACE,0,0,0,* > > [char.def] > DEFAULT 1 0 0 > SPACE 0 1 0 > 0x0020 SPACE > 0xFF5A SPACE > > [dicrc] > cost-factor = 800 > bos-feature = BOS/EOS > eval-size = 1 > unk-eval-size = 1 > config-charset = UTF-8 > > [辞書変換前のcsv] > aaa,0,0,0,AAA > bbb,0,0,0,BBB > ccc,0,0,0,CCC > > --------------- > > 実際の利用は『文章からphpなどのスクリプトで「aaa」を探して「AAA」を返す』などのような利用を行っています。 > この「aaa」を探す上で、ある条件を付けたいのですが、「単語の中にaaaが含まれる場合は認めない」ようにしたいのです。独立した単語であることを確認したい。 > > もうちょっと言い換えますと、左連接は「行頭か区切り文字」右連接は「行末か区切り文字」ということになると思います。が、mecabだけでそういった処理が可能なのか、またその設定方法がよくわかりません。区切り文字を辞書に登録する必要がありそうだ、までは検討がついているのですが…。 > > 以下に、正しい判定(ヒットさせたい)と、 > 誤った判定(ヒットさせたくない)の例を示します。 > 行単位で一文だと考えて下さい。 > > >正の例 > aaa > aaa,land > land, aaa > star aaa fox > aaa"aaa"bbb(真ん中の"aaa"がヒット) > > >誤の例 > Haaan > aaaland > > ------- > > 以上ですが、お詳しい方おられましたら、是非よろしくお願いいたします。 > _______________________________________________ > mecab-users mailing list > mecab****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/mecab-users