获取word2vec

时间:2017-05-03 07:15:01

标签: tensorflow neural-network deep-learning word2vec

我正在使用基于TensorFlow word2vec tutorial的代码。

我想编写一个文本文件,其中包含数据集的每个元素与其对应的单词标签之间的相似值矩阵。

我认为' sim'存储这些相似度值:

 sim = similarity.eval()

as:

# Compute the cosine similarity between minibatch examples and all embeddings.
  norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))
  normalized_embeddings = embeddings / norm
  valid_embeddings = tf.nn.embedding_lookup(
      normalized_embeddings, valid_dataset)
  similarity = tf.matmul(
      valid_embeddings, normalized_embeddings, transpose_b=True)

sim基本上是unique_data_length x unique_data_length对象,它显示所有相似度值。大。

我想获得每个相似度值的标签。

e.g。如果我得到:

sim[i][j]

然后我是什么,什么是j。我可以这样做:reverse_dictionary [i]来获得真正的价值吗?它是否真的以这种方式存储?

在教程中,他们获得验证集中的关闭X字:

  sim = similarity.eval()
  for i in xrange(valid_size):
    valid_word = reverse_dictionary[valid_examples[i]]
    top_k = 8  # number of nearest neighbors
    nearest = (-sim[i, :]).argsort()[1:top_k + 1]
    log_str = "Nearest to %s:" % valid_word
    for k in xrange(top_k):
      close_word = reverse_dictionary[nearest[k]]
      log_str = "%s %s," % (log_str, close_word)
    print(log_str)

这里让我感到困惑的是:

nearest = (-sim[i, :]).argsort()[1:top_k + 1]

为什么输出编码值而不是相似值?

1 个答案:

答案 0 :(得分:0)

据我所知,sim位置i(和j)代表i't元素,可以通过reverse_dictionary [i]来识别。