Tensorflow-hub文本模块预处理

时间:2018-04-28 16:34:50

标签: tensorflow tensorflow-hub

我正在使用tensorflow-hub上提供的新模块(我非常喜欢 - 感谢你的。)

我不清楚的是,在喂食句子时应该进行预处理。模块documentation表示,在预处理步骤中,inputj句子在空格处被分割。

然而,当我运行以下程序时,我只得到一个向量:

with tf.device("/cpu:0"):
  embed = hub.Module("https://tfhub.dev/google/nnlm-en-dim128/1")

global_step1 = tf.train.get_or_create_global_step()
with tf.device("/cpu:0"):
  embeddings = embed({"default": ["Cat sat on mat"]})

with tf.train.MonitoredTrainingSession(is_chief=True) as sess:
  message_embeddings_cat = sess.run(embeddings)
  print(message_embeddings_cat.shape) # (result: (1, 128))

如何获取每个单词的嵌入,以及单个向量代表什么?句子的固定维度表示 Unknown-Word 嵌入还是别的什么?

提前致谢!

编辑:结果似乎是使用tf.nn.embedding_lookup_sparse创建的组合嵌入。 (感谢您对@svsgoogle的确认)

1 个答案:

答案 0 :(得分:2)

是的,输出表示整个句子的固定维度表示。

你也可以嵌入单个单词来获取它们的向量。在你的情况下:

embeddings = embed({"default": ["Cat", "sat", "on", "mat"]})

应该给你一个形状的结果(4,128)。

相关问题