gensim形式のword2vecモデルをdeeplearning4jで使用する
- 使用したdeeplearning4j、nd4jのバージョン :
1.0.0-beta5
word2vecの学習済みモデルとして配布されているデータ(例1(https://github.com/Kyubyong/wordvectors)、例2(http://aial.shiroyagi.co.jp/2017/02/japanese-word2vec-model-builder/))は、gensim
用の形式のデータとなっており、deeplearning4j
ではそのままでは読み込むことができない。
deeplearning4jで読み込むためには、一旦gensimで読み込み、word2vecの標準形式として再出力すれば良い。
# 例1のデータを使用した例
import gensim
model = gensim.models.Word2Vec.load('ja.bin')
model.wv.save_word2vec_format("ja_converted.bin", binary=True)
このような手順で出力したja_converted.bin
は、deeplearning4j側で以下のように読み込むことができる。
import org.deeplearning4j.models.embeddings.loader.WordVectorSerializer;
import org.deeplearning4j.models.word2vec.Word2Vec;
// 読み込み
Word2Vec word2Vec = WordVectorSerializer.readWord2VecModel(new File("ja_converted.bin"));
// 近い単語を出力
for (String word : word2Vec.wordsNearest("猫", 10)) {
System.out.println(word);
}