项目简介
本项目借助MindSpore框架,利用百度开源的基于SKEP的情感预训练代码和中英情感预训练模型,实现文本情感分析功能。情感分析包含句子级情感分类、评价对象级情感分类等多种任务,在消费决策、舆情分析、个性化推荐等领域有重要应用价值。
项目的主要特性和功能
- 支持百度发布的SKEP情感预训练模型,在多项情感分析任务上超越SOTA。
- 适配SST - 2句子级情感分类数据集和Sem - L评价对象级情感分类数据集。
- 提供训练和评估脚本,可在Ascend处理器上进行单机或分布式训练,并对训练后的模型进行评估。
- 支持将训练好的模型导出为mindir格式。
- 可进行推理操作,推理结果保存在当前路径的acc.log文件中。
安装使用步骤
1. 环境准备
- 硬件:准备Ascend或GPU处理器搭建硬件环境。
- 框架:安装MindSpore。可查看MindSpore教程和MindSpore Python API获取更多信息。
2. 数据集下载
运行以下命令下载英文测试数据:
shell
sh download_en_data.sh
3. 训练模型
- 准备Roberta权重文件(ckpt),通过设置环境变量DEVICE_ID和RANK_SIZE决定是否使用分布式运行。
- 在Ascend处理器上运行单机训练:
bash bash scripts/train.sh
若数据集较大,建议添加外部环境变量确保HCCL不超时:bash export HCCL_CONNECT_TIMEOUT=600
若使用较大的BERT模型,保存检查点时可能出现protobuf错误,可尝试设置:bash export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
- 分布式训练:无需修改配置,可直接在ModelArts上进行分布式训练,同样执行:
bash bash scripts/train.sh
4. 评估模型
评估SST数据集
运行以下命令前,确保已设置加载与训练检查点路径(绝对全路径):
bash
python eval.py --data_url ./data/ --ckpt /username/pretrain/checkpoint_100_300.ckpt --job SST-2
评估Sem - L数据集
bash
python eval.py --data_url ./data/ --ckpt /username/pretrain/checkpoint_100_300.ckpt --job Sem-L
5. 导出模型
shell
python export.py --ckpt_file [CKPT_PATH] --file_name [FILE_NAME] --file_format [FILE_FORMAT]
参数ckpt_file
是必需的,EXPORT_FORMAT
必须在 ["AIR", "MINDIR"]中选择。
6. 推理过程
在执行推理之前,需要通过export.py导出mindir文件,输入数据文件为bin格式。
shell
bash run_infer_310.sh [MINDIR_PATH] [DATA_FILE_PATH] [NEED_PREPROCESS] [DEVICE_ID]
NEED_PREPROCESS
为必选项,在[y|n]中取值,表示数据是否预处理为bin格式;DEVICE_ID
可选,默认值为 0。推理结果保存在当前路径的acc.log中。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】