如何使用gensim load_word2vec_format加载预训练手套模型?
How to load pre-trained glove model with gensim load_word2vec_format?
我正在尝试在 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 是否需要特定格式才能加载它?
GLoVe 格式与 load_word2vec_format()
支持的格式略有不同——缺少矢量计数和维度的第一行声明。
包含一个 glove2word2vec
实用脚本,您可以 运行 一次转换文件:
https://radimrehurek.com/gensim/scripts/glove2word2vec.html
此外,从 Gensim 4.0.0 开始(目前在预发布测试中),load_word2vec_format()
方法获得一个新的可选 no_header
参数:
如果设置为 no_header=True
,该方法将从文件的初步扫描中推断出 count/dimensions - 因此它可以使用该选项读取 GLoVe 文件 - 但代价是两次完整-文件读取而不是一个。 (因此,您可能仍想使用 .save_word2vec_format()
重新保存对象,或使用 glove2word2vec
脚本,以便将来加载更快。)
我正在尝试在 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 是否需要特定格式才能加载它?
GLoVe 格式与 load_word2vec_format()
支持的格式略有不同——缺少矢量计数和维度的第一行声明。
包含一个 glove2word2vec
实用脚本,您可以 运行 一次转换文件:
https://radimrehurek.com/gensim/scripts/glove2word2vec.html
此外,从 Gensim 4.0.0 开始(目前在预发布测试中),load_word2vec_format()
方法获得一个新的可选 no_header
参数:
如果设置为 no_header=True
,该方法将从文件的初步扫描中推断出 count/dimensions - 因此它可以使用该选项读取 GLoVe 文件 - 但代价是两次完整-文件读取而不是一个。 (因此,您可能仍想使用 .save_word2vec_format()
重新保存对象,或使用 glove2word2vec
脚本,以便将来加载更快。)