キーワード検索 ≠ 全文検索
特許の商用データベースを利用していてこんなこと感じたことがあると思う。
例えば全文を対象としてキーワード「静電容量センサ」で検索
検索キーワードをハイライトして公報をチェック
しかしそこにはキーワード「静電容量センサ」がない。
これは我々ユーザが利用するイメージと実際の動作に違いがあることが理由である。各社商用データベースのエンジンになにが使用されているかは公開されていないがおそらく動作は下記と同じと思う。
通常我々が思い描くイメージは 「静電容量センサ」の語句のかたまりをテキストに対して一致させて検索させているものだと思う。もちろんこの方法での検索はデータベースでできるのだが、おそらく利用していないはず。理由はとても遅いから。これはSQLでいうとLIKE演算による部分一致になる。
では実際にどうしているかというと文章を語句単位に切り分けて、語句単位のマッチングをしている。これがデータベース(OracleやMySQLなど)でいう全文検索(Full Text Search)である。そして、その語句の切り分け方は以下の3通りある。なお、各商用データベースがどれを利用しているかは不明。
1.空白による区切り
英語などの言語に適用
2.N-gram
N文字単位で区切る。特に2文字単位はbigramと呼ばれ、日中韓はこれで対応するケースが多い。逆に英語では2文字では不十分といわれている。
3.形態素解析
形態素解析エンジンによって単語単位に分割。動詞の活用の表記揺れなども吸収できる。辞書を用いるので新語などには弱い。
bigramを例にとると 「静電容量センサ」 は「静電」、「電容」、「容量」、「量セ」、「セン」、「ンサ」に分解されて それらを同じ順序でもつ文献が検索される。適合率は下がるが漏れはないことはおわかりいただけると思う。
なぜこれで速くなるかということは説明が長いし、私も完全には理解してはいないが、自身で実験データ(公報3万件分)でLIKE演算と比較すると100倍くらいの速度の違いがあった。
これを知ってどうなるのかなという気もするけど少なくとも最初の?は消えるのではないでしょうか。ちなみに特許情報フェアのUSPTOのカンファレンスでは庁内の全文検索はN-gramとの記載があった(のでこのネタが浮かんだ)。