ベクトル検索のドメイン特化における検索キーワードの有用性
はじめに
当社はECサイトを運営しており、ユーザーが求める商品を迅速に見つけられるよう検索機能の改善に努めています。特に、曖昧なキーワードでの検索にも対応するためにベクトル検索技術の導入に力を入れております。
この記事では、その取り組みの中で活用している技術をご紹介します。
課題
検索エンジンが直面する課題の一つとして、検索したい商品名がわからず、曖昧で不明確なキーワードで検索されることがあります。
文字列一致で検索する全文検索では、曖昧で不明確な検索キーワードに対応するために辞書を活用します。検索キーワードや検索対象文書の文字を辞書で拡張させて、検索にヒットしやすくさせます。
しかし、頻出のキーワードであれば対応も出来ますが、あらゆる検索キーワードに対応しようとすると手動での対応には限界があります。特に、当社は製造業を対象とした製品を取り扱っており、専門用語・現場での通称などが多く使われます。そのため磨き込まれた一般の辞書をそのまま利用することが出来ず、個別に当社ドメインに特化した辞書を作り込む必要があります。
例)
キーワード | 一般 | 当社ドメイン |
---|---|---|
カラー | 色 | 円筒状をした旋盤加工品 |
一輪車 | ペダルで漕ぐ車輪が一つの乗り物 | 手押し車、猫車 |
このように、曖昧で不明確な検索キーワードへの対応に課題を感じていました。
対応策
そこで、そもそも辞書を作成せず、概念の類似をとることで検索が可能なベクトル検索の導入を検討しました。
特に、ドメイン特化させるために検索キーワード履歴の活用を考えました。検索キーワード履歴とは、ユーザーの一連の検索キーワードを結合した単語の羅列です。ユーザーは、検索して求める商品を見つけられない場合、同義語や通称を言い換えて再検索します。それらの検索キーワード履歴には、当社のユーザーの言い回し・知識といった情報が蓄積されているとも言えます。これらの情報を効果的に活用することで、当社のドメインに特化させることを考えました。
この情報を有効活用する技術の一つとして、「単語埋め込み表現(embedding)」があります。アルゴリズムの概念としては、文書内の単語の前後関係を基に関連する単語が空間上で互いに近接するように座標に配置(埋め込む)します。
この方法により、実際の検索キーワードを学習させた単語埋め込み表現が下図となります。当社のドメインにとって最適な単語の関係性を学習出来ていると言えます。実際、「カラー」の近くには「円形」「プラスチック」などの関連した単語が配置されており、「色」に関係した単語はありません。
なお、上図では、簡単のため2次元上で頻出語のみ示していますが、実際には多次元上で検索キーワード全てを学習しています。
この埋め込み表現上の点をベクトルとして捉え、そのベクトル間の類似度に基づいて検索を行う手法がベクトル検索の基礎となります。この技術を用いることで、検索キーワードの表現の揺れを吸収し、より精度の高い検索結果を提供することが可能になります。
なお、一般の文書から学習された単語埋め込み表現は、広く公開されているものもあり、用途によりますが利用することも可能です。しかし、当社のようにドメイン特化させる必要がある場合には、検索キーワード履歴を活用してドメイン特化のモデルを構築することは、効果的なアプローチと考えられます。
おわりに
今回は、ベクトル検索におけるドメイン特化のための検索キーワードの有用性についてご紹介させて頂きました。検索キーワードは、貴重な情報として、有効活用していきたいですね。
ベクトル検索には、他にも様々な概念で構成されています。
別の機会に、ご紹介させて頂ければ幸いです。
Discussion