【问题标题】:How to load pre-trained glove model with gensim load_word2vec_format?如何使用 gensim load_word2vec_format 加载预训练的手套模型?
【发布时间】:2021-02-03 04:08:58
【问题描述】:

我正在尝试在 gensim 中将预训练的手套加载为 word2vec 模型。我已经从here 下载了手套文件。我正在使用以下脚本:

from gensim import models
model = models.KeyedVectors.load_word2vec_format('glove.6B.300d.txt', binary=True)

但出现以下错误

ValueError                                Traceback (most recent call last)
<ipython-input-38-e0b48b51f433> in <module>()
      1 from gensim import models
----> 2 model = models.KeyedVectors.load_word2vec_format('glove.6B.300d.txt', binary=True)

2 frames
/usr/local/lib/python3.6/dist-packages/gensim/models/utils_any2vec.py in <genexpr>(.0)
    171     with utils.smart_open(fname) as fin:
    172         header = utils.to_unicode(fin.readline(), encoding=encoding)
--> 173         vocab_size, vector_size = (int(x) for x in header.split())  # throws for invalid file format
    174         if limit:
    175             vocab_size = min(vocab_size, limit)

ValueError: invalid literal for int() with base 10: 'the'

根本问题是什么? gensim 需要特定的格式才能加载吗?

【问题讨论】:

    标签: stanford-nlp gensim word2vec word-embedding


    【解决方案1】:

    GLoVe 格式与load_word2vec_format() 支持的格式略有不同——缺少向量计数和维度的第一行声明。

    包含一个 glove2word2vec 实用程序脚本,您可以运行一次来​​转换文件:

    https://radimrehurek.com/gensim/scripts/glove2word2vec.html

    此外,从 Gensim 4.0.0 开始(目前处于预发布测试阶段),load_word2vec_format() 方法获得了一个新的可选 no_header 参数:

    https://radimrehurek.com/gensim/models/keyedvectors.html?highlight=load_word2vec_format#gensim.models.keyedvectors.KeyedVectors.load_word2vec_format

    如果设置为no_header=True,该方法将从文件的初步扫描中推断出计数/尺寸 - 因此它可以使用该选项读取 GLoVe 文件 - 但代价是两次完整文件读取而不是一次. (因此,您可能仍希望使用 .save_word2vec_format() 重新保存对象,或使用 glove2word2vec 脚本,以加快未来的加载速度。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多