如何使用 gensim 处理 KeyError(f"Key '{key}' not present") wor2vec
How to handle KeyError(f"Key '{key}' not present") wor2vec with gensim
我已经用 gensim 库构建了一个模型,我正在尝试获取词汇表中不存在的单词向量,但我遇到了一个错误,我想以最好的方式处理这个错误。
如果我能得到模型中不存在的词的向量,那就完美了。
代码
model = KeyedVectors.load('nice.model')
token_vector = model.wv['bla bla bla']
错误
File "/home/ahmed/PycharmProjects/WebScarping/venv/lib/python3.9/site-packages/gensim/models/keyedvectors.py", line 421, in get_index
raise KeyError(f"Key '{key}' not present")
KeyError: "Key 'hmed' not present"
请帮我解决错误
如果模型中不存在标记,则无法为您提供向量。
您的模型没有用于(伪)词 'bla bla bla'
的向量,它所能做的就是报告这一点。
您可以通过 pre-checking 令牌是否存在来避免异常,并且仅在存在时请求它:
if token in model.wv:
token_vector = model.wv[token]
else:
# whatever your next-best step is when a vector not available
...
或者,您可以捕获异常:
try:
token_vector = model.wv[token]
except KeyError:
# whatever your next-best step is when a vector not available
...
但是没有神奇的方法可以为未知标记创建一个好的向量。你将不得不忽略这样的词,或者 make-up 一些插件 stand-in 值,或者想出一些其他 project-appropriate 解决方法。
(如果您有足够的训练数据以及令牌实际用法的各种示例,则可以训练包含令牌的模型。您还可以考虑查找或训练 word2vec 变体模型,例如 FastText
,可以合成 guess-vectors 未知标记,基于它们可能与在训练中学习的单词共享哪些子串——但此类向量的质量可能很差。)
我已经用 gensim 库构建了一个模型,我正在尝试获取词汇表中不存在的单词向量,但我遇到了一个错误,我想以最好的方式处理这个错误。 如果我能得到模型中不存在的词的向量,那就完美了。
代码
model = KeyedVectors.load('nice.model')
token_vector = model.wv['bla bla bla']
错误
File "/home/ahmed/PycharmProjects/WebScarping/venv/lib/python3.9/site-packages/gensim/models/keyedvectors.py", line 421, in get_index
raise KeyError(f"Key '{key}' not present")
KeyError: "Key 'hmed' not present"
请帮我解决错误
如果模型中不存在标记,则无法为您提供向量。
您的模型没有用于(伪)词 'bla bla bla'
的向量,它所能做的就是报告这一点。
您可以通过 pre-checking 令牌是否存在来避免异常,并且仅在存在时请求它:
if token in model.wv:
token_vector = model.wv[token]
else:
# whatever your next-best step is when a vector not available
...
或者,您可以捕获异常:
try:
token_vector = model.wv[token]
except KeyError:
# whatever your next-best step is when a vector not available
...
但是没有神奇的方法可以为未知标记创建一个好的向量。你将不得不忽略这样的词,或者 make-up 一些插件 stand-in 值,或者想出一些其他 project-appropriate 解决方法。
(如果您有足够的训练数据以及令牌实际用法的各种示例,则可以训练包含令牌的模型。您还可以考虑查找或训练 word2vec 变体模型,例如 FastText
,可以合成 guess-vectors 未知标记,基于它们可能与在训练中学习的单词共享哪些子串——但此类向量的质量可能很差。)