首页 > 解决方案 > 为什么 word2vec 创建词嵌入的速度如此之快?

问题描述

蟒蛇 3.9.6

我编写了代码来为我的领域(医学书籍)创建词嵌入。我的数据包含 45,000 个正常长度的句子(31 519 个唯一词,591 347 个所有词)。当我创建/学习模型时:

from gensim.models.word2vec import Word2Vec
model = Word2Vec(sentences,
                 min_count   = 5,
                 vector_size = 200, 
                 workers     = multiprocessing.cpu_count(),
                 window      = 6
                 )  
model.save(full_path)

,它训练了大约 1-2 秒,保存的模型大小约为 15MB。

如何检查我的词嵌入创建的正确性?

标签: pythongensimword-embedding

解决方案


词嵌入并没有真正的“正确性”,只是“对预期目的有用”。

尤其是当您训练特定领域的向量时,对于某些特定的预期任务,您应该尝试创建自己的评估组合。

这些可能从一些特别的健全性检查开始,例如:“如果我查看model.most_similar('esophageal')(或许多其他探测词),结果对我有意义吗?”

但是,如果你的评估是一些可重复的定量评分,那就更好了——比如一堆“应该”比其他词更接近的词——可以在你已经使用的新模型中快速运行调整参数或添加训练数据,将其与其他模型进行排名。

如果您的下游应用程序(信息检索、分类或推荐等)本身对理想结果有一些稳健的评分,并且您可以将其应用回来以表明一组词向量是否比另一组更好,则最好,以及多少。

另外:对于 word2vec,这不是一个非常大的训练集,但对于一些有用的结果可能就足够了。但这可能是令人怀疑的快速完成。尝试在INFO级别启用日志记录,并观察进度信息以确保它在每个步骤中都有意义。测试使用超过默认值epochs=5是否具有使训练花费更多时间的预期效果。(一个常见的错误是只传递一个迭代器,它只能产生一次训练数据,而不是一个真正的迭代器,可以重复多次迭代,给模型。这个错误允许模型一次通过它需要发现词汇,而不是epochs真正训练所需的额外通行证。)


推荐阅读