我试图用下面的代码加载Facebook fasttext crawl-300d-2M.vec的预训练vec文件。
from gensim.models.fasttext import load_facebook_model, load_facebook_vectors
model_facebook = load_facebook_vectors('fasttext/crawl-300d-2M.vec')
但却出现了下一个错误
NotImplementedError: Supervised fastText models are not supported
"无法加载这个向量"?
如果可以,之后我可以用自己的句子来训练它吗?
先谢谢你了。
整个错误跟踪。
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-181-f8262e0857b8> in <module>
----> 1 model_facebook = load_facebook_vectors('fasttext/crawl-300d-2M.vec')
/opt/conda/lib/python3.7/site-packages/gensim/models/fasttext.py in load_facebook_vectors(path, encoding)
1196
1197 """
-> 1198 model_wrapper = _load_fasttext_format(path, encoding=encoding, full_model=False)
1199 return model_wrapper.wv
1200
/opt/conda/lib/python3.7/site-packages/gensim/models/fasttext.py in _load_fasttext_format(model_file, encoding, full_model)
1220 """
1221 with gensim.utils.open(model_file, 'rb') as fin:
-> 1222 m = gensim.models._fasttext_bin.load(fin, encoding=encoding, full_model=full_model)
1223
1224 model = FastText(
/opt/conda/lib/python3.7/site-packages/gensim/models/_fasttext_bin.py in load(fin, encoding, full_model)
339 model.update(dim=magic, ws=version)
340
--> 341 raw_vocab, vocab_size, nwords, ntokens = _load_vocab(fin, new_format, encoding=encoding)
342 model.update(raw_vocab=raw_vocab, vocab_size=vocab_size, nwords=nwords, ntokens=ntokens)
343
/opt/conda/lib/python3.7/site-packages/gensim/models/_fasttext_bin.py in _load_vocab(fin, new_format, encoding)
192 # Vocab stored by [Dictionary::save](https://github.com/facebookresearch/fastText/blob/master/src/dictionary.cc)
193 if nlabels > 0:
--> 194 raise NotImplementedError("Supervised fastText models are not supported")
195 logger.info("loading %s words for fastText model from %s", vocab_size, fin.name)
196
NotImplementedError: Supervised fastText models are not supported
我相信,但不确定,在这个特定的情况下,你得到这个错误是因为你试图加载一组普通向量(FastText项目倾向于将其命名为以 .vec
)与一个被设计用于FastText特定格式的方法,其中包括子虫模型信息。
结果,它将文件的前导字节误解为将模型声明为使用 FastText'-supervised'模式的模型。(Gensim确实不支持这样的完整模型,在那个不太常见的模式下。但它可以从这样的模型中加载终端向量,无论如何,你的文件并不是真正来自于该模式)。)
已发布的文件可以与 load_facebook_vectors()
通常以 .bin
. 更多细节请参见该方法的文档。
https:/radimrehurek.comgensimmodelsfasttext.html#gensim.models.fasttext.load_facebook_vectors。
所以,你可以或者。
提供一个备用的 .bin
-命名的,Facebook-FastText格式化的向量集(带子词信息)到这个方法。(从快速查看他们的下载选项,我相信他们的文件与你的第一次尝试类似,将被命名为 crawl-300d-2M-subword.bin
&amp;大小约为7.24GB)。
加载你所拥有的文件,只有它的全词向量,通过。
from gensim.models import KeyedVectors
model = KeyedVectors.load_word2vec_format('fasttext/crawl-300d-2M.vec', binary=False)
在后一种情况下,没有FastText特有的功能(比如使用子词向量合成词汇外的猜测向量)将是可用的--但无论如何,这些信息不在'crawl-300d-2M.vec'文件中。(如果您使用更大的 .bin
文件&。.load_facebook_vectors()
上述方法)。)