Tensorflow tfidf使用Keras的单词嵌入加权平均值

Tensorflow tfidf使用Keras的单词嵌入加权平均值,tensorflow,keras,Tensorflow,Keras,我不知道这怎么可能,但我想计算一个句子中单词嵌入的加权平均值,比如tfidf分数 就是这样,但只有重量: 如何使用自定义层或lambda层获得属于特定单词的适当权重?您需要访问嵌入层以获取索引,然后查找适当的权重 还是有一个我看不到的简单方法 embeddings = model.layers[0].get_weights()[0] # get embedding layer, shape (vocab, embedding_dim) 或者,如果定义图层对象: embedding_laye

我不知道这怎么可能,但我想计算一个句子中单词嵌入的加权平均值,比如tfidf分数

就是这样,但只有重量:

如何使用自定义层或lambda层获得属于特定单词的适当权重?您需要访问嵌入层以获取索引,然后查找适当的权重

还是有一个我看不到的简单方法

embeddings = model.layers[0].get_weights()[0] # get embedding layer, shape (vocab, embedding_dim) 
或者,如果定义图层对象:

embedding_layer = Embedding(vocab_size, 300, weights=[embedding_matrix], input_length=max_length, trainable=False)
embeddings = emebdding_layer.get_weights()[0]
从这里,您可能可以通过使用未经处理的单词包或整数输入查询各个权重的位置来直接处理它们

如果您愿意,您还可以通过字符串单词来查看实际的单词向量,尽管这对于简单地累加每个句子的所有单词向量是不必要的:

# `word_to_index` is a mapping (i.e. dict) from words to their index that you need to provide (from your original input data which should be ints)
word_embeddings = {w:embeddings[idx] for w, idx in word_to_index.items()}

print(word_embeddings['chair'])  # gives you the word vector
或者,如果定义图层对象:

embedding_layer = Embedding(vocab_size, 300, weights=[embedding_matrix], input_length=max_length, trainable=False)
embeddings = emebdding_layer.get_weights()[0]
从这里,您可能可以通过使用未经处理的单词包或整数输入查询各个权重的位置来直接处理它们

如果您愿意,您还可以通过字符串单词来查看实际的单词向量,尽管这对于简单地累加每个句子的所有单词向量是不必要的:

# `word_to_index` is a mapping (i.e. dict) from words to their index that you need to provide (from your original input data which should be ints)
word_embeddings = {w:embeddings[idx] for w, idx in word_to_index.items()}

print(word_embeddings['chair'])  # gives you the word vector

好的,但这如何回答我的问题呢?我想在一个可能的层内应用外部权重(而不仅仅是获取权重),以获得加权平均值。“在层内应用外部权重”-这意味着什么?你需要每个单词经过训练的权重向量,然后对每个句子进行平均,对吗?好的,但这如何回答我的问题呢?我想在一个可能的层内应用外部权重(而不仅仅是获取权重),以获得加权平均值。“在层内应用外部权重”-这意味着什么?你需要每个单词经过训练的权重向量,然后对每个句子进行平均,对吗?