blu*_*sky 9 word2vec tensorflow
读取tensorflow word2vec模型输出如何输出与特定单词相关的单词?
阅读src:https://github.com/tensorflow/tensorflow/blob/r0.11/tensorflow/examples/tutorials/word2vec/word2vec_basic.py可以查看图像的绘制方式.
但是,是否有一个数据结构(例如字典)作为训练模型的一部分而创建,允许访问最接近给定单词的最近n个单词?例如,如果word2vec生成图像:
image src:https://www.tensorflow.org/versions/r0.11/tutorials/word2vec/index.html
在这个图像中,单词'to,he,it'包含在同一个集群中,是否有一个函数将输入'输出'并输出'he,it'(在这种情况下n = 2)?
这种方法一般适用于word2vec.如果你可以将word2vec保存在文本/二进制文件中,如google/GloVe word vector.那你需要的只是gensim.
安装:
Python代码:
from gensim.models import Word2Vec
gmodel=Word2Vec.load_word2vec_format(fname)
ms=gmodel.most_similar('good',10)
for x in ms:
print x[0],x[1]
Run Code Online (Sandbox Code Playgroud)
然而,这将搜索所有单词以给出结果,有近似最近邻(ANN),它将更快地给你结果,但在准确性上有折衷.
在最新的gensim,惹恼用于执行人工神经网络,看到这个笔记本电脑了解更多信息.
我假设您不想使用 gensim,并且更愿意坚持使用张量流。在这种情况下,我将提供两种选择
如果您只是尝试从探索的角度做到这一点,我建议使用 Tensorboard 的嵌入可视化工具来搜索最接近的嵌入。它提供了一个很酷的界面,您可以对一定数量的邻居使用余弦距离和欧几里德距离。
在 word2vec_basic.py 文件中,有一个示例说明它们如何计算最接近的单词,如果您稍微搞乱了该函数,您可以继续使用它。在图表本身中可以找到以下内容:
# 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)
Run Code Online (Sandbox Code Playgroud)
然后,在训练期间(每 10000 步),他们运行下一段代码(当会话处于活动状态时)。当他们调用similarity.eval()它时,它会获取图中相似性张量的字面 numpy 数组评估。
# Note that this is expensive (~20% slowdown if computed every 500 steps)
if step % 10000 == 0:
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)
Run Code Online (Sandbox Code Playgroud)
如果您想自己调整此设置,则必须进行一些巧妙的更改,将其更改reverse_dictionary[valid_examples[i]]为您想要获取 k 个最接近单词的单词/单词 idx。
| 归档时间: |
|
| 查看次数: |
9658 次 |
| 最近记录: |