如何在文本/二进制文件中保存tensorflow的word2vec以便以后使用kNN输出?

时间:2017-12-18 17:57:17

标签: machine-learning tensorflow nlp word2vec embedding

我在tensorflow中训练了一个word2vec模型。但是当我保存会话时,它只会输出model.ckpt.data / .index / .meta个文件。

我正在考虑在检索最近的单词时实施KNN方法。我看到了使用gensim的答案,但是如何首先将张量流word2vec模型保存到.txt

2 个答案:

答案 0 :(得分:0)

只需将嵌入矩阵评估为numpy数组,并将其与已解析的单词一起写入文件。示例代码:

vocabulary_size = 50000
embedding_size = 128

# Assume your word to index map
word_to_idx = { ... }
# Assume your embeddings variable
embeddings = tf.Variable(tf.random_uniform([vocabulary_size, embedding_size],0,1))

with tf.Session() as sess:
  embeddings_val = sess.run(embeddings)
  with open('embeddings.txt', 'w') as file_:
    for i in range(vocabulary_size):
      embed = embeddings_val[i, :]
      word = word_to_idx[i]
      file_.write('%s %s\n' % (word, ' '.join(map(str, embed))))

答案 1 :(得分:0)

我遇到了同样的问题,并尝试了Maxim的解决方案。

您需要替换以下行:

word = word_to_idx[i]

使用

word = idx_to_word[i]

您可以使用以下代码简单地反转word_to_idx-dictionary:

idx_to_word = dict(zip(word_to_idx.values(), word_to_idx.keys()))

除此之外,他的解决方案效果很好。