Word2vec 引发 KeyError(f"Key '{key}' not present")

Word2vec raise KeyError(f"Key '{key}' not present")

目前正在使用gensim 4.0库编写代码。但是,我不知道为什么它总是找不到相似的词。起初,当我设置 min_count = 5 时,错误是它要我先构建一个词汇表,但是当我将它设置为 min_count = 1 时,它说,key error not present ...此处包含数据集的完整代码:https://github.com/JYjunyang/FYPDEMO 我写错了什么或遗漏了一些重要步骤吗?一切正常,但只有这个 word2vec 实现......将感谢提供的每一个指导...... 注意:LemmaColumn 是词形还原后的数据框

def FeaturesExtraction():
    word2vec = 
Word2Vec(sentences=LemmaColumn,vector_size=100,window=5,min_count=1,workers=8,sg=1)
    b1 = time.time()
    train_time = time.time() - b1
    print(word2vec.wv.most_similar('virus', topn=10))

我不知道为什么,在用 10k 数据训练后,词汇表中的唯一单词只有 7:
单词 #0/7 是 t
单词 #1/7 是 l
单词 #2/7 是 x
单词 #3/7 是 e
单词 #4/7 是 _
单词 #5/7 是你
单词 #6/7 是 f

您的 LemmaColumn 变量可能不符合 Word2Vec 需要 sentences 参数的格式。它需要一个 Python 序列:可以迭代多次的东西,例如列表或另一个 re-iterable 对象。在这个序列中,每个单独的项目本身必须是 list-of-string-tokens(单词)。

如果相反:

LemmaColumn = [ 
    ['f', 'u', 'l', 'l', '-', 't', 'e', 'x', 't'],
]

……甚至……

LemmaColumn = [ 
    ['full-text'],
]

...因为 Python 会很乐意将纯字符串(如 'full-text')视为一个包含 1 个字符的字符串的列表。因此,您的整个训练词汇表只是该单个字符串的字符——可能是 column-name,而不是您想要使用的 column-data。

Double-check LemmaColumn 中的内容。对列的数据执行必要的转换,使其成为 Word2Vec 期望的序列类型,并在尝试 Word2Vec.

之前确认它看起来合理

此外:运行 至少登录到 INFO 级别将显示更多模型的进度,并且当您学习理解报告的 steps/progress 时,诸如weirdly-low 计数 texts/words,或者如果他们处理正确数量(大量)的数据会立即完成需要花费时间的步骤,将会更快地显现出来。

最后,请注意 min_count=1 对于像 word2vec 这样的算法来说基本上总是一个坏主意。好的向量只来自同一个词用法的多个不同例子——因此默认 min_count=5。保留稀有词不仅往往会为这些稀有词获得较差的向量,而且 natural-language 文本往往有很多这样的稀有词这一事实意味着模型的大部分时间 & space 都用于(几乎没有希望)改进那些附近其他词向量也会受到影响的垃圾词向量的任务。