使用Gensim保存FastText自定义模型二进制文件

问题描述 投票:0回答:1

我正在尝试保存使用gensim训练的自定义FastText模型。我想保存二进制文件,以便有可能再次训练模型。

保存二进制文件的代码是下一个:

from gensim.models.fasttext import save_facebook_model

save_facebook_model(model,'own_fasttext_model.bin')

但是我在同一行中得到了下一个错误:

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-192-c9c2c41985af> in <module>
      2 from gensim.models.fasttext import save_facebook_model
      3 
----> 4 save_facebook_model(model,'own_fasttext_model.bin')

/opt/conda/lib/python3.7/site-packages/gensim/models/fasttext.py in save_facebook_model(model, path, encoding, lr_update_rate, word_ngrams)
   1334     """
   1335     fb_fasttext_parameters = {"lr_update_rate": lr_update_rate, "word_ngrams": word_ngrams}
-> 1336     gensim.models._fasttext_bin.save(model, path, fb_fasttext_parameters, encoding)

/opt/conda/lib/python3.7/site-packages/gensim/models/_fasttext_bin.py in save(model, fout, fb_fasttext_parameters, encoding)
    666     if isinstance(fout, str):
    667         with open(fout, "wb") as fout_stream:
--> 668             _save_to_stream(model, fout_stream, fb_fasttext_parameters, encoding)
    669     else:
    670         _save_to_stream(model, fout, fb_fasttext_parameters, encoding)

/opt/conda/lib/python3.7/site-packages/gensim/models/_fasttext_bin.py in _save_to_stream(model, fout, fb_fasttext_parameters, encoding)
    629 
    630     # Save words and ngrams vectors
--> 631     _input_save(fout, model)
    632     fout.write(struct.pack('@?', False))  # Save 'quot_', which is False for unsupervised models
    633 

/opt/conda/lib/python3.7/site-packages/gensim/models/_fasttext_bin.py in _input_save(fout, model)
    573 
    574     assert vocab_dim == ngrams_dim
--> 575     assert vocab_n == len(model.wv.vocab)
    576     assert ngrams_n == model.wv.bucket
    577 

AssertionError: 

关于可能发生的事情的任何线索?

提前感谢。

save gensim fasttext
1个回答
0
投票

.save_facebook_model()方法是一个崭新的功能。这样的AssertionError通常表示严重的错误:与当前代码安全运行所期望或要求的相比,该断言在当前状态下引起了矛盾。

如果您可以组合成一小组独立的小步骤来可靠地创建错误,则可以通过以下方式将其报告给项目的错误跟踪器:

https://github.com/RaRe-Technologies/gensim/issues

((尤其要确保在任何报告中进行审阅并注明:model对象是如何创建/训练的?是否以任何非标准方式对其进行了修改?]

© www.soinside.com 2019 - 2024. All rights reserved.