Word2vec 中不存在该键

问题描述 投票:0回答:1

当我使用预训练模型时遇到一些问题:w2v_512.model。

错误是“密钥‘xxx’不存在”

我认为这可能是“xxx”这个词无法从w2v_512.model转换为嵌入,因为模型在预训练过程中没有看到这个词。

我想知道如何解决。如果我使用 BERT 嵌入会有帮助吗?如果是这样,如何使用 BERT 来获得嵌入。

如果有人回答我,我将不胜感激!

word2vec bert-language-model word-embedding
1个回答
0
投票

一组 word2vec 向量只能为训练时包含的单词提供向量。

你可以:

  • 忽略分析中缺少的单词。如果您的预训练向量对您的问题领域的常见单词具有良好的覆盖率,则丢失的单词可能很少见,并且通常完全忽略它们并不会造成太大伤害。
  • 切换到一组不同的预训练 word2vec 向量,其中包含您需要的单词(如果您能找到)。
  • 在文本上训练您自己的 word2vec 模型,该文本对您需要的所有单词进行足够多的上下文使用,以便您准确控制哪些单词具有嵌入。
  • 使用替代的 word2vec 变体,例如 FastText,它将根据单词片段合成未知单词的猜测向量。您也许能够找到合适的预训练 FastText 模型,或者自己训练一个。这种策略在具有相似含义的单词共享相同的词根/前缀/后缀的语言中效果最好,并且合成的向量可能不是很好,但它们通常比没有好。

我相信 BERT 模型也可以理解从子词标记构建的单词,有点像 FastText,因此可以提供任意单词的嵌入。所以,你可以尝试一下,看看它是否适合你。但是,任何此类嵌入的质量仍然取决于模型围绕该单词和类似单词的训练效果。因此,为了实现您的目标,您应该始终检查结果的效果如何 – 模型可以返回您可以使用的嵌入这一事实并不足以确保嵌入值得使用。

© www.soinside.com 2019 - 2024. All rights reserved.