如何以二进制和文本格式保存快速文本模型?

时间:2019-08-30 16:57:26

标签: gensim fasttext

documentation有点不清楚如何将快速文本模型保存到磁盘-如何在参数中指定路径,我尝试这样做,但失败并出现错误

文档示例

>>> from gensim.test.utils import get_tmpfile
>>>
>>> fname = get_tmpfile("fasttext.model")
>>>
>>> model.save(fname)
>>> model = FastText.load(fname)

此外,如何像word2vec模型那样以文本格式保存模型?

'word2vecmodel.wv.save_word2vec_format("D:\w2vmodel.txt")'

编辑

在尝试先创建文件的建议后,我保持与运行此代码之前相同的错误

savepath = os.path.abspath('D:\fasttextmodel.v3.bin');
from gensim.test.utils import get_tmpfile
fname = get_tmpfile(savepath)
fasttext_model.save(fname)
  

TypeError:文件必须具有“写入”属性

2 个答案:

答案 0 :(得分:0)

在保存之前,您是否尝试过在本地目录中创建一个名为“ fasttext.model”的文件?

此外,我假设您在此正确之前对模型进行了训练?

答案 1 :(得分:0)

FastText save()/load() 示例中的文档具有误导性,他们建议您使用 get_tmpfile。如果我将数据文件名作为字符串传递并且不将其包装在 get_tmpfile 中,我可以保存模型:

model.save("fasttext.model")

然后可以用同样的方式加载,直接传递字符串:

model = FastText.load("fasttext.model")

请注意,这将为大型模型保存多个文件。但是,在加载模型时,只需指定主fasttext.model file,函数会自动加载其他文件(如果有)。