我正在进行情绪分析。我正在使用elmo方法来获取单词嵌入。但是我对此方法给出的输出感到困惑。考虑张量流网站中给出的代码:
elmo = hub.Module("https://tfhub.dev/google/elmo/2", trainable=True)
embeddings = elmo(["the cat is on the mat", "dogs are in the fog"],
signature="default",as_dict=True)["elmo"]
特定句子的嵌入向量根据您提供的字符串数而有所不同。要详细说明,请
x = "the cat is on the mat"
y = "dogs are in the fog"
x1 = elmo([x],signature="default",as_dict=True)["elmo"]
z1 = elmo([x,y] ,signature="default",as_dict=True)["elmo"]
因此x1[0]
将不等于z1[0]
。当您更改字符串的输入列表时,这会更改。为什么一个句子的输出取决于另一个。我没有训练数据。我仅使用现有的预训练模型。在这种情况下,我很困惑如何将我的评论文本转换为嵌入内容并用于情感分析。请解释。
注意:要获取嵌入向量,请使用以下代码:
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(tf.tables_initializer())
# return average of ELMo features
return sess.run(tf.reduce_mean(x1,1))
答案 0 :(得分:0)
当我运行您的代码时,x1 [0]和z1 [0]是相同的。但是,z1 [1]与
的结果不同y1 = elmo([y],signature="default",as_dict=True)["elmo"]
return sess.run(tf.reduce_mean(y1,1))
因为y的令牌数量少于x,并且盲目地减少到末尾的总产出会增加垃圾。
我建议使用“默认”输出而不是“ elmo”,这可以达到预期的效果。请参阅模块文档。