【问题标题】:NLP ELMo model pruning inputNLP ELMo 模型剪枝输入
【发布时间】:2021-08-06 01:51:05
【问题描述】:

我正在尝试根据 tensorflow hub 上可用的预训练 ELMo 模型检索词的嵌入。我使用的代码是从这里修改的:https://www.geeksforgeeks.org/overview-of-word-embedding-using-embeddings-from-language-models-elmo/

我输入的句子是
bod = 即将推出,预计每个项目都会制作一个视频,我们期待在这次会议上与您讨论这个问题,这次他们已经制定了视频奖的选择标准,争取头把交椅时间"

这些是我想要嵌入的关键字:
words=["do", "a", "video"]

embeddings = elmo([bod],
signature="default",
as_dict=True)["elmo"]
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)

这句话的长度是 236 个字符。 这是显示的图片

但是当我把这句话放入ELMo模型时,返回的张量只包含一个长度为48的字符串

当我尝试为超过 48 个长度限制的关键字提取嵌入时,这会成为一个问题,因为关键字的索引显示在此长度之外:

这是我用来获取'bod'中单词索引的代码(如上所示)

num_list=[]
for item in words:
  print(item)
  index = bod.index(item)
  num_list.append(index)
num_list

但我一直遇到这个错误:

我尝试查找 ELMo 文档来解释为什么会发生这种情况,但我没有找到任何与修剪输入问题相关的内容。

非常感谢任何建议!

谢谢

【问题讨论】:

    标签: neural-network nlp word-embedding allennlp elmo


    【解决方案1】:

    这并不是真正的 AllenNLP 问题,因为您使用的是基于 tensorflow 的 ELMo 实现。

    也就是说,我认为问题在于 ELMo 嵌入了标记,而不是字符。您将获得 48 个嵌入,因为该字符串有 48 个标记。

    【讨论】:

    • 是的,我几天前就意识到了。忘记在这里更新了。谢谢!!
    猜你喜欢
    • 2019-08-15
    • 2020-12-15
    • 2019-07-23
    • 2020-11-21
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2013-05-05
    相关资源
    最近更新 更多