統計とイモリとバーベルと

勉強の備忘録メイン

なぜFGOを始めてしまったのか

メモ: 学習済み単語ベクトルについて

学習済み単語ベクトルとは?

メモ: Embeddingについて で触れたように,文章を単語化して生成されたSequenceは,Vocabularyに対するone-hot表現のまま用いるのではなく,分散表現に変換した上でNNなり他の分類器なりに投じることで,次元の削減による計算量の節約と,分散表現に変換することによる情報の保存が期待される.
学習済み単語ベクトル(Pre-trained word vectors)は,その名の通り,wikipediaなどのオープンデータを用いて作成された膨大な数の単語の分散表現データセットである.データソースや作成方法の違い,言語の違いからいくつもの学習済み単語ベクトルが公開されている.

なぜ学習済み単語ベクトルを用いるのか?

単語ベクトルの作成には,① 文章データの取得,② 文章データの前処理, ③ 単語ベクトルの学習 の各ステップが必要になるが,これらは多大な労力を要する場合が少なくない.また,分析したいデータセットではデータ量が十分でなく,適当な分散表現に変換できないこともあると思われる.

学習済み単語ベクトルにはどのようなものがあるのか

下記リンク等を参照

いますぐ使える単語埋め込みベクトルのリスト - Qiita

以下ではStanford大学のGloVeを使用した. https://nlp.stanford.edu/projects/glove/

どのように使用するか

  1. 使用する単語ベクトルの種類を決める(Wikipediaから学習したものか,Twitterか,Common Crawlのものか)
  2. 単語ベクトルをダウンロード
  3. pythonで読み込み
   embeddings_index = dict()
   f = open('/hoge/glove.twitter.27B/glove.twitter.27B.100d.txt')
   for line in f:
       values = line.split()
       word = values[0]
       coefs = np.asarray(values[1:], dtype='float32')
       embeddings_index[word] = coefs
   f.close()
   print('Loaded %s word vectors.' % len(embeddings_index))
  1. 必要なものだけ抽出するなどして適宜保存する
  2. keras.layers.Embeddingに突っ込む等
Embedding(input_size, 100, weights=[embedding_matrix], input_length=hoge, trainable=False)

その他参考リンク

How to Use Word Embedding Layers for Deep Learning with Keras - Machine Learning Mastery