Facebook最新开源工具pytext实战
Facebook开源的工具一直以简单易用闻名,比如fastText,一行命令即可训练词向量或者训练一个文本分类器。就在2018年12月,Facebook又开源了一个强大的NLP工具:pytext。
pytext是什么?
pytext可以把NLP问题流水线化,使得学术模型到产业应用无缝衔接。
说得直白一些,工程师再也不用痛苦地看各种paper的代码了!给定参数文档,调用三个命令:训练、测试、预测,一个模型就这样从学术界走向产业界!
pytext实战
这篇文章就以文本分类任务为例演示一下pytext的使用方法。
具体任务:给定标题,预测属于自然科学基金8个学科门类里的哪一类。
训练数据来源:科学基金共享服务网,20万项目标题和对应的学科标签。
训练集、验证集、测试集划分比例:7:1:2。
运行环境:Ubuntu 18.04,python3.6,virtualenv,个人PC,无GPU。
流程大致如下:下载代码→配置虚拟环境→训练→测试→保存模型→使用模型→用完退出虚拟环境
首先,下载相关代码:
git clone https://github.com/1049451037/pytext_clf
cd pytext_clf
然后,配置虚拟环境:
python3 -m venv pytext_venv
source pytext_venv/bin/activate
pip install wheel
pip install pytext-nlp
pip install jieba
训练:
pytext train < config.json
这个过程大概要一顿午饭的时间,因为我上传了我训练好的模型,如果不想等,可以直接跳到使用模型部分。
这里的config.json是pytext提供的默认配置,使用双向LSTM+Attention模型,未调参。
测试:
pytext test < config.json
准确率78.40%。
保存模型:
pytext export --output-path exported_model.c2 < config.json
使用模型:
python run_model.py config.json exported_model.c2
用完退出虚拟环境:
deactivate
以上就是pytext使用的例子,未经任何调参就达到了78.40%的分类准确率。对于上述过程用fastText做了一次,用验证集仔细调参,最好的效果是77.68%,所以pytext还是很给力的。
当然,pytext的功能不仅这些,这篇文章只是抛砖引玉,更多更强大的用法等待你去探索。
下面是一个demo演示:输入你的毕设标题即可预测学科,
各位博士硕士和本科毕业生们快来试一试吧!