【发布时间】:2019-09-16 04:18:26
【问题描述】:
我需要计算一个句子的每个单词的单词向量,它被标记如下:
['my', 'aunt', 'give', 'me', 'a', 'teddy', 'ruxpin'].
如果我使用的是预训练的 [fastText][1] Embeddings: cc.en.300.bin.gz by facebook。我可以通过OOV。但是,当我从 GoogleNews-vectors-negative300.bin 使用 Google 的 word2vec 时,它返回一个 InvalidKey 错误。我的问题是我们如何计算 OOV 的词向量呢?我在网上搜索我找不到任何东西。当然,这样做的方法是删除所有没有在 google 的 word2vec 中列出的单词的句子。但是,我注意到 16134 个单词中只有 5550 个单词完全在嵌入中。
我也是
model = gensim.models.KeyedVectors.load_word2vec_format('/content/drive/My Drive/Colab Notebooks/GoogleNews-vectors-negative300.bin', binary=True)
model.train(sentences_with_OOV_words)
但是,tensorflow 2 返回错误。
任何帮助将不胜感激。
【问题讨论】:
-
如果找不到词汇,可以用零向量初始化(即300维向量,全为0)。
-
你的意思是,我创建了一个 gensim.models.keyedvectors.Word2VecKeyedVectors 的 Child 类,然后在那里重写 'get_vec' 方法?如果是这样,我能找到实现吗?谢谢。
-
我认为你可以只做一个
try和except而不是创建一个子类。看我的回答。