検索エンジンはいかにして動くのか?
第6回 日本語における転置索引
はじめに
前回までの数回では,
英語は単語の間に空白を置くため,
文を単語や文字の並びに分割する方法
日本語のように単語が空白で区切られていない文を単語に分割するには,
- 形態素解析による分割
- N-gram
(q-gram) による分割
以下では,
- ※1
- 文を分割することを,
英語では 「segmentation」 や 「tokenization」 と言います。厳密には意味が異なりますが, 転置索引の文脈ではあまり区別して使われていないようです。また, 文を分割してできた各単語をターム (term) やトークン (token) と言います。
形態素解析による分割
形態素解析
現在は,
- ※2
- 隠れマルコフモデル
(Hidden Markov Model) や条件付き確率場 (Conditional Random Field) といった確率モデルが使われています。日本語における形態素解析エンジンとしてはMeCabやChasenが有名で, MeCabでは後者が, Chasenでは前者が使われています。これらモデルによる学習と形態素解析用の辞書を利用することで, 文の区切れ・ 品詞を予測します。
N-gram (q-gram) よる分割
N-gramとは文字のN文字の部分列のことを指し,
N-gramによる分割とは,
- ※3
- N=1の場合をuni-gram
(ユニグラム), N=2の場合をbi-bram (バイグラム) , N=3の場合をtri-gram (トリグラム) と呼びます。
各分割方法の利点と欠点
各分割方法で分割されたタームにより構築された転置索引の利点と欠点についてまとめておきます。
形態素解析による転置索引の利点と欠点
利点は,
欠点は,
たとえば,
N-gramによる転置索引の利点と欠点
利点は,
欠点としては,
- ※4
- この問題は,
単語境界を別に持つことで解決することができます。
日本語文書における転置索引の実装
現代の検索エンジンは,
まとめ
今回は,
参考文献
- [1]
- Introduction to Information Retrieval
- C. D. Manning, P. Raghavan,H. Schutze , Cambridge University Press, 2008
この記事に関連する書籍
-
検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏
まいにち使っている検索エンジンがどうやって動いているか,知っていますか? 本書では,小さな検索エンジンを作りながら,ソースコードレベルで検索エンジンのしくみ...