首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GoogleNews中处理OOV字词.向量.阴性

在GoogleNews中处理OOV字词.向量.阴性
EN

Stack Overflow用户
提问于 2019-09-16 04:18:26
回答 3查看 1K关注 0票数 0

我需要计算被标记的句子的每个单词的单词向量,如下所示:

代码语言:javascript
复制
['my', 'aunt', 'give', 'me', 'a', 'teddy', 'ruxpin']. 

如果我使用的是经过预先训练的fastText嵌入: facebook的cc.en.300.bin.gz。我可以挺过去的。但是,当我使用GoogleNews中的word2vec时,它会返回一个InvalidKey错误。我的问题是,我们如何计算单词向量,即OOV?我在网上搜索,什么也找不到。当然,要做到这一点,就要删除谷歌word2vec中没有列出单词的所有句子。然而,我注意到16134中只有5550个在嵌入中完全有单词。

我也是

代码语言:javascript
复制
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返回一个错误。

任何帮助都是非常感激的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-16 14:05:43

太棒了!非常感谢。

代码语言:javascript
复制
def get_vectorOOV(s):
  try:
    return np.array(model.wv.get_vector(s))
  except KeyError:
    return np.zeros((300,))
票数 0
EN

Stack Overflow用户

发布于 2019-09-16 05:12:49

如果找不到词汇表,请用相同大小的零向量初始化它们(Google word2vec应该是300个维度的向量):

代码语言:javascript
复制
try:
    word_vector = model.wv.get_vector('your_word_here')

except KeyError:
    word_vector = np.zeros((300,))
票数 1
EN

Stack Overflow用户

发布于 2019-09-16 18:41:30

GoogleNews向量集是单词到向量的简单映射。它中没有为未知单词合成向量的工具(或者创建它的算法)。

(类似地,如果您将一个简单的向量集作为一个gensim加载到KeyedVectors中,那么就没有机会在结果对象上运行train()了,就像您在问题代码中显示的那样。它不是一个完全可训练的模型,只是向量的集合。)

您可以使用in关键字检查一个单词是否可用。正如其他答案所指出的,然后您可以选择使用一些插入值(如全零向量)来处理这些单词。

但通常最好完全忽略这些词--假装它们甚至不在你的文本中。(相反,使用零向量,然后将零矢量输入到系统的其他部分,就会使那些未知的词(本质上是)稀释了其他邻近的单词向量的影响,而这通常不是你想要的。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57950325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档