问题描述
尝试在 gensim 中上传 fasttext 模型 (cc.nl.300.bin) 时,出现以下错误:
!wget https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.nl.300.bin.gz
!gunzip cc.nl.300.bin.gz
model = FastText_gensim.load_fasttext_format('cc.nl.300.bin')
model.build_vocab(cleaned_text,update=True)
AttributeError: 'FastTextTrainables' object has no attribute 'syn1neg'
使用我自己的数据集构建词汇时代码出错。该数据集的格式没问题,因为我已经用它来构建和训练其他(未预训练的)Word2Vec 和 FastText 模型。
我在这个博客上看到其他人有同样的错误,但他们的解决方案对我不起作用:https://github.com/RaRe-Technologies/gensim/issues/2588
另外,我在某处读到我应该使用“load_facebook_model”?但是我根本无法导入 load_facebook_model ?这甚至是解决这个问题的好方法吗?
还有其他建议吗?
解决方法
您确定您使用的是最新版本的 Gensim 4.0.1
,其中对 FastText 实现进行了许多改进?
而且,您肯定希望使用 .load_facebook_model()
加载完整的 .bin
Facebook 格式模型:
https://radimrehurek.com/gensim/models/fasttext.html#gensim.models.fasttext.load_facebook_model
但还要注意:训练后的词汇扩展最好被认为是一种高级和实验性的功能。它可能不会对典型任务提供任何改进 - 事实上,如果不仔细考虑权衡和平衡后期训练的影响,它会使事情变得更糟。
在大型多样化语料库上训练的 FastText
模型可能已经能够通过其子词向量为词汇表外的词合成胜于无的猜测向量。
如果您需要整合一些包含非常不同的词和词义的数据,通常最好从头开始重新训练,使用所有所需文本影响的均等组合。然后,您将以标准和平衡的方式做事,而不会对通常的做法进行更难调整和更难评估的即兴更改。