python - 使用word2vec预训练向量,如何生成句子的id作为tensorflow中tf.nn.embedding_lookup函数的输入?

标签 python tensorflow gensim word2vec

为了提取输入数据的嵌入表示, tensorflow 文档说我们可以使用以下内容:

embed = tf.nn.embedding_lookup(embeddings, input_data)

根据TF documentation ,tf.nn.embedding_lookup函数的第二个参数是ids的张量:

ids: A Tensor with type int32 or int64 containing the ids to be looked up in params.

我的问题是:给定一个句子,比如说,

"Welcome to the world"

如何将其表示并转换为 ids?在下面的代码中,如何将我的句子转换为input_data

from gensim import models
embedding_path = "../embeddings/GoogleNews-vectors-negative300.bin"
w = models.Word2Vec.load_word2vec_format(embedding_path, binary=True)
X = w.syn0
W = tf.Variable(tf.constant(0.0, shape=X.shape),trainable=False, name="W")
embedding_placeholder = tf.placeholder(tf.float32, X.shape)
embedding_init = W.assign(embedding_placeholder)
embed = tf.nn.embedding_lookup(embedding_init, input_data)
sess = tf.Session()
sess.run(embed, feed_dict={embedding_placeholder: X})

最佳答案

我正在寻找类似这样的代码。我不知道 w 的类属性 - 在 gensim 网站中找不到它们。

s = "hello, how are you?"
tokens = tokenize(s)//function that returns a list of the tokens in a sentence

ids = []
for key in tokens:
  try:
    ids.append(w.vocab[key].index)
  except:
    ids.append(w.vocab['UNK'].index)

关于python - 使用word2vec预训练向量,如何生成句子的id作为tensorflow中tf.nn.embedding_lookup函数的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41467115/

相关文章:

tensorflow - 使用 TF Lite Model Maker 创建的模型出现 TF.js 导入错误

numpy - 数据集中模式的随机化

python - 应用gensim LDA主题建模后,如何获取每个主题概率最高的文档并将其保存在csv文件中?

python - pandas使用groupby加速多行计算

python - OData Python 库可用吗?

python - 打印算法的页面范围

python - Mongoengine 查询将一个字段与另一个字段进行比较

Tensorflow:将文件的全部内容恰好一次读入单个张量

python - 如何更改 LdaMulticore 中的默认字数?

python - gensim Doc2Vec 是否区分具有正面和负面上下文的相同句子。?