ITと哲学と

IT系エンジニアによる技術と哲学のお話。

SCDVについて学んだ

文章を数学的に扱いやすい形に変える方法の一つであるSCDVについて学んだ。

SCDVとは

ドキュメントを数学的に扱うことのできるような形に変換する方法のひとつで、Sparse Composite Document Vectorのこと。 他の方法に比べて変換後の形が小さくて扱いやすかったり、変換後の値を文章分類などに扱った際に精度が高いといった利点がある。

アルゴリズム

3つのパートに別れる。

  • Word Vector Clustering
  • Document Topic-Vector Formation
  • Sparse Document Vecotrs

Word Vector Clustering

まず、あつめてきたドキュメントから、単語を抜き出して、ボキャブラリセット Vを作る。 このとき、ボキャブラリセットにはw_1~w_Vの単語が含まれる。

これらについて、SGNS]によるWord2Vecを行い、各単語w_1~w_Vについての単語ベクトル \vec{wv_i}(i=1...V)を求める。ここで、ベクトルの長さをdとする。

さらに、これらをガウス混合モデルを用いて、K個のクラスタに分類する。 Kをいくつにするかは任意で、SCDVのパラメータになっている。

分類した各クラスタC_kについて、各単語モデルw_iクラスタC_kに所属する確率p(C_k|w_i)を、全ての単語・全てのクラスタについて計算する。

Document Topic-Vector Formation

単語ベクトルw_1~w_Vに、各単語モデルw_iクラスタC_kに所属する確率p(C_k|w_i)を掛け合わせたものを、単語-クラスタベクトル \vec{wcv_{ik}}と呼ぶ。

 \vec{wcv_{ik}} = w_i \times p(C_k|w_i)

単語-クラスタベクトル \vec{wcv_{ik}}を、すべてのクラスタ(k=1...K)について並べた行列を考える。

 [\vec{wcv_{i1}}, ... ]

これに、IDF(w_i)という値(ドキュメント内部で単語w_iがどれだけ珍しいかを表す数値)を掛け合わせたものを単語-トピックモデル \vec{wtv_i}と呼ぶ。

 \vec{wtv_i} =[ \vec{wcv_{i1}}, ... ]× IFD(w_i)

なお、 \vec{wtv_i}d \times Kの行列である(長さdのベクトルをK個横に並べて、実数を掛け算しただけなので)。

この \vec{wtv_i}を、特定のドキュメントD_nに出てくる単語の分だけ足し合わせた値を文章ベクトル \vec{dv_{D_n}}と呼ぶ

 \vec{dv_{D_n}} = Σ {\vec{wtv_i}}

Sparse Document Vecotrs

得られた \vec{dv_{D_n}} をスパース(ほとんどの要素が0で、残り数少ない要素のみが値を持つ状態)にするために、閾値を下回る要素については0に値を変換する。

こうして得られたものを、SCDVによる文章ベクトル \vec{SCDV_{Dn}}とよぶ。

さいごに

このベクトルを用いて、文章分類などを行うと、他の方法に比べて精度がよい。