本記事は、情報検索・検索技術 Advent Calendar 2023 9日目の記事です。
SIF/uSIFという文埋め込み手法と、そのRust実装であるsif-embeddingを紹介します。最後にちょこっとベクトル検索もします。
続きを読む本記事は、情報検索・検索技術 Advent Calendar 2023 9日目の記事です。
SIF/uSIFという文埋め込み手法と、そのRust実装であるsif-embeddingを紹介します。最後にちょこっとベクトル検索もします。
続きを読む文章を実数値ベクトルとして表現したものを文章ベクトルと呼びます。文脈によっては文章埋め込みや文章の分散表現とも呼ばれます。離散的な文章データを機械学習などに応用するにはベクトル表現が必要なことが多く、「どうすれば文章の特徴をよく表現したベクトルが得られるか?」は伝統的に重要なタスクです。
さて近年では、学習済みモデルやライブラリが整備されているおかげで、大規模なコーパスやハイスペPCを用意しなくても、それなりに品質の良い文章ベクトルが得られます。文章ベクトルがあれば、お手軽に検索したりクラスタリングしたりできるので、とてもありがたいです。
しかし、機械学習ビギナーのわたしには、どのベクトルをどう用いるのが良いのか経験的にわからないです。そこで年末年始の暇な時間を使って、教師なしでお手軽に得られる文章ベクトルを比較して遊んで入門してみようと思います。
続きを読む本記事では、文字列集合を保存し検索するためのシンプルで強いデータ構造であるFrontCoding文字列辞書(以下、FC辞書)を紹介します。このために使われるデータ構造としてはハッシュ表やTrieがメジャーです。それに対して、FC辞書はあまり使われていない印象で、実際に公開されているライブラリも少ないです。
しかし、FC辞書もハッシュ表やTrieに負けない利点を備えたデータ構造ですので、用途やデータセットによっては効率的に文字列辞書を実現することができます。例えば、SIGIR 2020でのクエリ補完に関する論文 [1] では、伝統的なTrie辞書よりもFC辞書の方が高速に検索できることを示しています。また、DB圧縮などで使われるDictionary Encoding (or Domain Encoding)1 でもFC辞書は有益です [2,3]。そのため、FC辞書について知っておくと、文字列データを扱うときに幸せになれるかもしれません。
以降では、[2] の論文の内容を参考にFC辞書を解説します。