word2vec - KeyError:“单词 X 不在词汇表中”

塔哈06

使用Word2Vec模块实现为gensim我在纯文本文件中的句子构建词嵌入。尽管happy在词汇表中定义了这个词,但还是出现了错误KeyError: "word 'happy' not in vocabulary"试图将给定的答案应用于类似问题,但没有奏效。因此,发布了我自己的问题。

这是代码:

try:
    data = []
    with open(TXT_PATH, 'r', encoding='utf-8') as txt_file:
        for line in txt_file:
            for part in line.split(' '):
                data.append(part.strip())

    # When I debug, both of the words 'happy' and 'birthday' exist in the variable 'data'
    word2vec = Word2Vec(data, min_count=5, size=10000, window=5, workers=4)

    # Print result
    word_1 = 'happy'
    word_2 = 'birthday'
    print(f'Similarity between {word_1} and {word_2} thru word2vec: {word2vec.similarity(word_1, word_2)}')
except Exception as err:
    print(f'An error happened! Detail: {str(err)}')
五条毛

当您从 中收到这样的“不在词汇表中”错误时Word2Vec,您可以相信它:'happy'确实不在模型中。

即使您的视觉检查显示'happy'在您的文件中,它可能不会出现在模型中的几个原因包括:

  • 它不会发生,至少min_count=5

  • data格式不正确Word2Vec,所以它没有看到你期望看到的字眼。

看看data你的代码是如何准备的,它看起来像一个巨大的文件中所有单词的列表。Word2Vec而是期望一个序列,作为每个项目,该文本的单词列表。所以:不是一个单词列表,而是一个列表,其中每个项目都是一个单词列表。

如果您提供...

[
  'happy',
  'birthday',
]

......而不是预期......

[
  ['happy', 'birthday',],
]

...那些单字串将被视为字符列表,因此Word2Vec您会认为您想学习一堆单字符词的词向量。您可以通过查看词汇量是否看起来很小 ( len(model.wv)) 或者学习单词样本是否只是单字符单词 ('model.wv.index2entity[:10]`)来检查这是否影响了您的模型

如果您以正确的格式提供一个单词,至少min_count作为训练数据的一部分,它会在模型​​中得到一个向量。

(另外:size=10000是通常范围 100-400 之外的一种选择方式。我从来没有见过一个项目使用如此高维的词向量,只有在你有大量词汇和训练的情况下才在理论上是合理的-set。具有较小词汇表/数据的超大向量可能会产生无用的过度拟合结果。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

训练 gensim word2vec 模型后单词不在词汇表中,为什么?

word2vec 词汇表中缺少单词

Gensim:提高KeyError(“单词'%s'不在词汇表中”%word)

Gensim- KeyError:'单词不在词汇表中'

Gensim:KeyError:“单词不在词汇表中”

使用word2vec对类别中的单词进行分类

word2vec如何从向量中获取单词?

gensim word2vec:查找词汇中的单词数

训练有素的word2vec模型词汇中缺少的单词

如何最佳处理word2vec词汇中没有的单词

[Word2Vec] [gensim]使用参数min_count处理词汇中的遗漏单词

使用 Gensim Word2Vec.most_similar 方法评估相似性时“词不在词汇表中”

在2个不同的Word2Vec模型中单个单词的余弦相似度计算

在Gensim Word2Vec模型中匹配单词和向量

在word2vec中互为标量倍数的单词向量之间预期的语义关系是什么?

是否建议删除word2vec算法中的重复单词?

Gensim单词嵌入(Word2Vec和FastText)模型中的alpha值?

在word2vec或Glove中添加其他单词(可能使用gensim)

如何在Gensim Word2Vec中手动更改单词的向量尺寸

CBOW word2vec 中特定单词的向量是什么?

如何在自训练的word2vec模型中删除单词

word2vec 中是否有类似单词的波兰语实现?

语料库中没有用于 Word2Vec 训练的单词

word2vec用于单词词典

word2vec 词汇与字符

word2vec 中的词汇大小与向量大小

在Keras中实现word2vec

我用来训练word2vec模型的所有单词都必须在model.vocab中,对吗?

word2vec 包中函数 word2vec 的输入文件格式是什么?