首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >KeyError:单词不在词汇表中“在word2vec中

KeyError:单词不在词汇表中“在word2vec中
EN

Stack Overflow用户
提问于 2022-05-12 09:42:38
回答 1查看 481关注 0票数 1

我想把一些日语单词转换成矢量,这样我就可以训练预测模型了。为此,我从这里下载了经过预先培训的模型。

代码语言:javascript
运行
复制
import gensim
from sklearn.feature_extraction.text import CountVectorizer
from gensim.models import KeyedVectors
from gensim import models
from janome.tokenizer import Tokenizer

w2v_model = models.KeyedVectors.load_word2vec_format(w2v_models_path)
t = Tokenizer()
# I am testing for some random string
sentence = "社名公開求人住宅手当・家賃補助制度がある企業在宅勤務・リモートワーク可能な求人テレワークコロナに負けるな!積極採用中の企業特集リモートワーク可能なWebデザイナー求人"

tokens = [x.surface for x in t.tokenize(sentence)]
vectors = [w2v_model[v] for v in tokens]

在最后一行中,我得到了KeyError: "word 'テレワークコロナ' not in vocabulary",这里有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-12 18:10:51

如果您得到一个“不在词汇表中”错误,您可以相信您所请求的令牌(word/key)不在那个KeyedVectors模型中。

您可以通过w2v_model.key_to_index看到您的模型所知道的单词的完整列表(按它们存储的顺序)。(或者,只需快速浏览一下中间20的范围,就可以与Python access(如w2v_model.key_to_index[500:520])进行理智的检查。)

您确定'テレワークコロナ' (以及任何其他提供相同错误的字符串)是一个合法的、常见的日语单词吗?令牌器可能在某种程度上失败了吗?标记器返回模型中的大部分单词吗?

看起来你所链接的网站刚刚从Facebook的FastText work (https://fasttext.cc/docs/en/crawl-vectors.html)中复制了这些词向量集。而且,您只是使用纯文本"word2vec_format“向量列表,所以您只知道文件中的确切单词,而不是完整的FastText模型--也是建模单词--片段,从而可以‘猜测’未知单词的向量。(这些猜测不是很好--比如从词根中找出单词的可能含义--但通常总比没有好。)

我不知道这种方法对日本人是否有效,但你可以试试。如果您转而抓取.bin (而不是文本)文件,并使用Gensim的FastText支持(特别是方法 )加载它。然后,您将得到一种特殊的KeyedVectors (FastTextKeyedVectors),它将给您对未知单词的猜测,这些猜测可能对您的目的有帮助(或者没有帮助)。

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

https://stackoverflow.com/questions/72213333

复制
相关文章

相似问题

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