スパースベクトルとは、要素の大部分が「0」であり、ごく一部の要素のみが有意な数値を持つデータ表現形式です。テキストデータの特徴量抽出や自然言語処理において、特定の単語(トークン)の出現有無を表現する際によく用いられます。必要なデータのみを保持することで、メモリ効率を高めつつ計算処理を高速化する情報表現の手法です。
スパースベクトルとは
スパースベクトルとは、膨大な次元数を持つベクトルの中で、ほとんどの成分が「0」であり、一部の成分のみに有効な数値が入っているデータ構造です。
詳しく解説
スパースベクトルは、日本語で「疎(そ)ベクトル」とも呼ばれます。特に自然言語処理の分野では、膨大な数の語彙(辞書)に対して、個々の文書に含まれる「トークン」の位置にのみ数値を割り当てることで、テキストをベクトル化する際によく使われます。もし全ての次元(語彙数)をそのまま保持するとメモリが浪費されてしまうため、値が「0」ではない位置(インデックス)と、その値のみを記録する形式でデータを保持し、メモリ使用量の大幅な削減と計算処理の高速化を実現します。伝統的な「情報検索」のシステムでも基礎となる技術です。
具体例・使われ方
具体的な例として、検索エンジンのテキスト処理が挙げられます。数万語におよぶ辞書のうち、ある短いニュース記事に出現する単語はほんの数十語に過ぎません。このとき、出現した単語に対応する次元にのみ「1」や重要度(TF-IDFなど)を格納し、それ以外の数万語の次元を「0」にする表現がスパースベクトルです。また、強力な全文検索システムで使われる統計的アルゴリズム「BM25」も、スパースベクトルによる単語の重み付けを基本としています。
似た用語との違い
よく混同される概念として「密ベクトル」があります。密ベクトルは、全ての次元(通常は数百から数千次元程度に圧縮された空間)に「0」以外の連続した実数値が格納されているデータ表現です。スパースベクトルが単語の「正確な一致」を捉えるのに対し、密ベクトルは文脈や意味の「類似性」を捉えるのに向いています。最近の「ベクトル検索」システムでは、これら両方を組み合わせたハイブリッド検索が主流になりつつあります。
注意点
スパースベクトルはキーワードの完全一致に基づくため、類義語や文脈のゆらぎ(例えば「スマートフォン」と「スマホ」)を同一視することができず、意味的な検索が苦手です。また、格納する値がない大半の次元を無理に保持しようとすると、スパース(疎)であることの恩恵を受けられず、単純なデータ肥大化を招くため、適切なインデックス構築とアルゴリズムの選定が必要です。