LoginSignup
3
5

More than 5 years have passed since last update.

GloVeを学習する

Posted at

はじめに

GloVeはStanfordによる単語分散表現の教師なし学習手法です。詳細は省きますが、Stanford版のword2vecと考えれば、使用シーン的には問題ないでしょう(単語のちかさをとる、深層学習の埋め込み表現の初期値にする)。word2vecよりも学習が遅いだとか、代わりに精度が高いだとか言われることもありますが、タスクによりけりというのが実際のところのように感じます。

word2vecの学習しょっちゅうやるのですが、はじめてGloVeの学習をしたので備忘録として記載します。

やったこと

準備

特に私の環境では追加インストールは必要ありませんでした。適当なCコンパイラだけ入ってればいいんじゃないかな。

git clone http://github.com/stanfordnlp/glove
cd glove

データの準備

データはword2vecの学習などと同じ、単語がスペース区切りされたファイルを用意します。異なる文書は改行で表現します。改行がある場合は、改行をまたいでウィンドウを設置したりはしないようなので、同じ文書のだったら1つの行にまとめてしまったほうが良いかもしれません。

下記はDBPediaデータセットむけにデータを作った例。

wget https://github.com/le-scientifique/torchDatasets/raw/master/dbpedia_csv.tar.gz
tar -xf dbpedia_csv.tar.gz
cat dbpedia_csv/train.csv| sed 's/\(^[0-9]*,"[^"]*"," *\)\|\("$\)//g' > dbpedia.txt

スクリプトの書き換え

GloVeを学習するためには複数のプログラムを実行する必要がありますが、GloVeレポジトリには一連の流れを記載したデモスクリプトが用意されています。使用データがベタ打ちされているので、上記で作ったデータを指すように修正します。

 make
-if [ ! -e text8 ]; then
-  if hash wget 2>/dev/null; then
-    wget http://mattmahoney.net/dc/text8.zip
-  else
-    curl -O http://mattmahoney.net/dc/text8.zip
-  fi
-  unzip text8.zip
-  rm text8.zip
-fi

-CORPUS=text8
+
+CORPUS=dbpedia.txt
 VOCAB_FILE=vocab.txt

学習の実行

./demo.sh を実行すると、自動的にMakeして学習を走らせてくれます。デフォルトの設定は1時間くらいで終わりました。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5