word2vec
推論ベースの手法
カウントベースも推論ベースのものも背景に分布仮説がある ニューラルネットワークで単語を処理する
show me your friends, and I’ll tell who you are
カウントベース手法の問題点
大規模な corpus を扱う場合に問題が発生する
ex) 語彙数100万とすると、 100万x100万の行列に SVD を行う。これは現実的ではない => $ O(n^3)のオーダー
いちいちコーパス全体の統計データを使うので、処理が膨大になる
一方推論ベースではミニバッチで処理する
推論ベースの手法の概要
何らかのモデルに対してニューラルネットワークを使う
出力は確率
you ??? goodbye and I say hello の ??? にどのような単語が来るか?を推論する
NNにおける単語の処理方法
NN では単語をそのまま扱えないので、固定長のベクトルに変換する
one-hot 表現(one-hot vector)
ベクトルの要素の一つだけが 1 でそれ以外が 0 のベクトル
例えば、 corpus が you say goodbye and I say hello . の場合、you と goodbye の one-hot vector は以下のようになる。hot な要素と語順(単語ID)が対応している。
you => (1 0 0 0 0 0 0)
goodbye => (0 0 1 0 0 0 0)
=> ニューロンの数を固定できる(この場合は7)
one-hot vector x weight matrix => 全結合層による変換
出力は
単語の分散表現 word embeddings
シンプルなword2vec
ニューラルネットワークの中間層のモデルにニューラルネットワークを組み込む。
参考リンク