よしだのブログスマートフォン用の表示で見るよしだのブログサブタイトルはありません。検索エンジン調査のきっかけは「デジタル一眼レフ」という文字列が含まれているフィールドに「一眼レフ」で検索してもヒットしないという現象です。日本語の形態素解析をつかった検索では結構在りがちで、大体ユーザー辞書に登録すれば良くなるのですが*1、今回は表面的な対策だけでなく、根本原因を探ってみることにしました。入れるなどちょっとだけ手間が必要かもしれません。画面で単語の切れ方を調べてみることにしました。「一眼レフ」を入力すると、検索されたときの文字列の処理の状況が再現できます。検索した場合にヒットすることを示しています。以下は、そのスクリーンショットです。側が「一眼」が「一」「眼」と切れており、単語の切れ方が異なるためヒットしないことがわかりました。抽出して調査しました。いうバージョンがコンパイルされた状態で含まれているということ。ダウンロードしてきます。構造についてダウンロードしてきたファイルを展開します。展開されたファイルは色々な種類があるのですが、今回の課題を分析するために関連しそうな辞書のファイルを調査、ピックアップしました。連結コストが記載されているさらなる詳細な説明は、以下の本家サイトで。http://mecab.googlecode.com/svn/trunk/mecab/doc/dic-detail.html形態素解析の分割ロジックなぜ上記で、単語と連結コストしか調べてないかというと、今回の原因は単に辞書に単語が無いか、連結がおかしいかのいずれかだと推測したからです。形態素解析は、どの数ある単語(形態素)からどれを正解として選択するか決定するために、コスト最小化法というロジックを採用しているからです。以下、簡単な説明です。辞書には分割後の単語の一覧と、単語がどのように連結されるかの一覧が含まれる単語と連結には、それぞれコストと呼ばれる数値が設定されている入力された文字列と、辞書の単語と連結から、形態素の候補を複数あげるその際に、候補の中から、単語コストと連結コストを足した結果が最も小さい並びを形態素解析結果として出力するコスト最小法の説明は、以下の13スライド目を参照するととても分かりやすいhttp://www.slideshare.net/torotoki/ss-9720666ちなみに、コストは予めコーパスと呼ばれる、大量の文章を元に、CRFや隠れマルコフモデルなどで機械学習的に推定し作成するそうです。CRF)辞書の中身はどうだったのか?というわけで、単語コストと連結コストをピックアップして整理したのが以下です。結論としては、やはり予想通り、変な切れ方をしている方がコストの合計が若干少ないことがわかりました。以下は、辞書から、連結コストと単語コストのレコードを、抽出して列挙したものです。単語(形態素)の行の、左から4つめの数字が単語コスト。実際に切れている、「デジタル」「一」「眼」「レフ」についてコストを羅列したもの。レフ-573一方、こう切って欲しい、「デジタル」「一眼」「レフ」の場合のコストは、上記よりも大きい。