facebook更新FastText工程--新增模型压缩论文的实现模型大小缩减80%--文本分类词向量fasttext

Facebook 于北京时间2019年6月25日更新FastText代码,增加了FastText.ZIP:Compressing Text Classification Models论文的模型压缩实现,论文地址https://arxiv.org/abs/1612.03651

压缩后的模型能减小到10M以内

一、新版函数的变化

1.classification text的supervisor()变为train_supervisor(),只能输入模型的学习参数以及训练集文件,去掉直接保存模型的功能

注:词向量训练的函数也有修改,可以自行查看github代码

旧版代码:

新版代码:

2.保存模型要用save_model()

二、预测结果的改变

旧版中预测单个文本,也必须把分词结果保存在list中, 新版可以直接单句string形式输入也可以list,同时输出标签会带有前缀“__label__”

预测结果如下:

输入string:(('__label__测试',), array([1.00000727]))

或者输入list:([['__label__测试']], array([[1.00000727]]))

二、对训练好的模型进行压缩

import fasttext

old_model_path = 'clf.model.bin'
source_model_path = model_path
old_model = fasttext.load_model(source_model_path)

data_path = 'train.txt'

'''compress'''
print('begin compress')  #参数retrain=True的话需要输入原来的训练数据,会重新训练,模型不重新训练,还有其他参数未研究
old_model.quantize()
print('compress finish')
old_model.save_model(model_path.replace('.bin', '.ftz'))
print('save finished')

压缩后文件大小:

注意:旧版本的代码训练的模型由于与新版本不一样,要重新训练,否则load_model旧模型会报错
ValueError: /home/mnt/ppt_project_data/ppt_fasttext_clf_files/online_model/clf_ppt.model.bin has wrong file format!

Process finished with exit code 1

你可能感兴趣的:(nlp,machine,learning)