😳

文章埋め込み表現をUMAPで可視化する

2024/03/10に公開

はじめに

以前に書いた記事で紹介したように、文章を埋め込み表現と呼ばれる数値ベクトルに変換することで、近い意味を持つ文章は、近いベクトルで表現することができます。この技術により、高速な文章検索が実現できます。

https://zenn.dev/tsutof/articles/abe58215c2c347

文章埋め込みはとても興味深い技術ですが、埋め込み表現は、512次元や768次元など、高次元のベクトルなので、数値そのものを見ても、その文章の特徴を確認することは難しいです。そこで、次元削減により、2次元あるいは3次元へ射影し可視化することにより、その文章の特徴や、他の文章との類似度を、大雑把に把握することができます。本記事では、その方法を紹介します。なお、詳細な手順は、以下のGitHubリポジトリからJupyterノートブックとして参照できます。

https://github.com/tsutof/nlp-notebooks

livedoorニュースコーパス

実験用のデータとして、livedoor ニュースコーパスを使わせていただきました。このデータはクリエイティブ・コモンズライセンスで公開されています。以下、9個のカテゴリーに分類されているので、各カテゴリー毎の特徴を見ることもできます。

  • トピックニュース
  • Sports Watch
  • ITライフハック
  • 家電チャンネル
  • MOVIE ENTER
  • 独女通信
  • エスマックス
  • livedoor HOMME
  • Peachy

UMAP

今回の実験では、文章埋め込み表現の生成用モデルに、sentence-transformers/distiluse-base-multilingual-cased-v2を利用させていただきましたが、このモデルは512次元の数値ベクトルを出力します。当然ながら、512次元そのままでは可視化できないので、2次元あるいは3次元に次元削減して、可視化することになります。次元削減には、いくつかの方法が存在しますが、今回は、UMAPを利用させていただきました。UMAPは比較的高速で、かつ、元の特徴空間上で近い点が次元削減後も近くなるように処理されると言われています。

可視化

512次元の文章埋め込み表現をUMAPで2次元に次元圧縮し、Matploblibの散布図で可視化しました。下図がその一例です。

UMAPのドキュメントによると、UMAPは確率的アルゴリズムであり、ランダム性を利用して近似ステップを高速化しているとあります。そのため、同一のデータを次元削減しても、毎回同じ結果になる保証はありません。但し、各点の距離感は、毎回、同じように把握しているようで、結果が変わっても、グラフの左右や、上下が反転するような感じです。

全カテゴリーを重ねて表示すると、見えない部分が生じるので、以下のようにカテゴリー毎にも可視化してみました。

ITライフハック、家電チャンネル、エスマックスは似たトピックスを扱っているので、近い領域に集まっています。

モバイル系を扱うエスマックスは比較的近い領域に集まっていて、内容が専門的であると考えられるのですが、なぜか、4点が図の上の方に外れています。この4点の記事内容を調べてみると、以下のようなもので、MOVIE ENTERの領域に近いことに納得できます。

  • 通信キャリアのCM映像に関すること
  • 通信キャリアのビデオ配信サービスに関すること
  • 映画の予告編を見ることができるモバイルアプリに関すること
  • ロールプレイングゲームのモバイルアプリに関すること(「栄光」、「冒険」、「伝説」などが映画っぽい語句が出現するため?)

Sports Watchも比較的よく集まっていますが、図の下の方に外れた1点の記事内容を調べてみると、日本ビーチバレー連盟が、携帯電話による写真撮影を解禁したニュースで、エスマックスの領域に近いことに納得がいきます。

なお、先に述べたとおり、UMAPによる次元削減処理の結果は、必ずしも再現しないので、上記で述べた状況が、次に実験した時に再現するかどうかは分かりません。

まとめ

文章埋め込み表現は、文章の意味もある程度、数値化できるので、検索などの分野で非常に有効な技術です。但し、高次元の情報なため、それが有効に機能しているかどうかのチェックが難しい面があります。そこで、次元削減はとても役立ち、次元削減の方法の一つであるUMAPを利用した、文章埋め込み表現の可視化手順を紹介しました。詳細を以下のGitHubリポジトリで公開しているのでよろしければお試しください。Google Colabでも試せます。

https://github.com/tsutof/nlp-notebooks

Discussion