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);
}