百度NLP制作的情感分类工具。
项目描述
情绪分析
目录
简介
情感、情感、情感、情感、情感、情感、情感、情感、情感同时,情绪分析在价值决策、舆论、个性化推荐等领域业务分析的重要应用,具有学术价值。
近日,百度正式发布情绪预训练模型SKEP(Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis)。SKEP利用情绪知识增强预训练模型,在14项中英情绪分析典型任务上已经全面超越SOTA,此工作被ACL 2020录用。
论文地址:https://arxiv.org/abs/2005.05635
为了方便研发人员和商业合作伙伴共同发挥最前沿的情绪分析技术,本次百度在 Senta 中进一步公开了基于 SKEP 的情绪预训练代码和中英情绪预模型。在 SKEP 开源项目中集成了几项训练产业化的一键式情绪分析预测工具。用户只需要执行代码来实现基于 SKEP 的情绪预想和模型预测功能。
蜂箱
SKEP是团队提出的基于情绪增强的情绪预测模型的预训练方法,采用此模型计算,然后构造一个无模型计算方法,然后构造模型,让机器理解模型研究利用SKEP为各种类型的情绪预测模型进行测试。分析任务提供统一且强大的趋势表示。
百度研究团队在三个典型的情绪分析任务,情绪(Sentment Sentiment Classification),Aspect-level Sentiment Classification、情感句子等级-Opinion Role LabelClassification),1个中文数据等级(Aspect-level Sentiment Classification)上进一步验证了情绪预训练模型SKEP的效果。实验明显,以通用预训练模型ERNIE(版本)初始化,SKEP比ERNIE平均提升约1.2%,并且较原SOTA平均内部约提升2%,具体如下表:
| <center>任务 | <center>数据集合 | <center>语言 | <center>指标 | <center>原SOTA | <中心>SKEP | <center>数据集地址 |
| <center>级情绪 <center>分类 |
<中心>SST-2 | <center>中文 | <中心>ACC | <中心>97.50 | <中心>97.60 | <center>下载地址 |
| <center>亚马逊-2 | <center>中文 | <中心>ACC | <中心>97.37 | <中心>97.61 | <center>下载地址 | |
| <center>ChnSentiCorp | <中心>中文 | <中心>ACC | <中心>95.80 | <中心>96.50 | <center>下载地址 | |
| <center>NLPCC2014-SC | <中心>中文 | <中心>ACC | <中心>78.72 | <中心>83.53 | <center>下载地址 | |
| <center>评价对象级的 <center>情绪分类 |
<center>Sem-L | <center>中文 | <中心>ACC | <中心>81.35 | <中心>81.62 | <center>下载地址 |
| <center>Sem-R | <center>中文 | <中心>ACC | <中心>87.89 | <中心>88.36 | <center>下载地址 | |
| <center>人工智能挑战 | <中心>中文 | <中心>F1 | <中心>72.87 | <中心>72.90 | <center>暂未开放 | |
| <center>SE-ABSA16_PHNS | <中心>中文 | <中心>ACC | <中心>79.58 | <中心>82.91 | <center>下载地址 | |
| <center>SE-ABSA16_CAME | <中心>中文 | <中心>ACC | <中心>87.11 | <中心>90.06 | <center>下载地址 | |
| <center><center> 观点 |
<center>MPQA-H | <center>中文 | <center>b-F1/p-F1 | <center>83.67/77.12 | <中心>86.32/81.11 | <center>下载地址 |
| <center>MPQA-T | <center>中文 | <center>b-F1/p-F1 | <中心>81.59/73.16 | <center>83.67/77.53 | <center>下载地址 | |
| <center>COTE_BD | <中心>中文 | <中心>F1 | <中心>82.17 | <中心>84.50 | <center>下载地址 | |
| <center>COTE_MFW | <中心>中文 | <中心>F1 | <中心>86.18 | <中心>87.90 | <center>下载地址 | |
| <center>COTE_DP | <中心>中文 | <中心>F1 | <中心>84.33 | <中心>86.30 | <center>下载地址 |
代码结构
.
├── README.md
├── requirements.txt
├── senta # senta核心代码,包括模型、输出reader、分词方法等
├── script # 情感分析各任务入口启动脚本,通过调用配置文件完成模型的训练和预测
├── config # 任务配置文件目录,在配置文件中设定模型的方法、超参数、数据等
一化键工具
为了降低用户的使用窗帘,百度SKEP开源项目中集成了在给产业化的一键式情绪分析预测工具。具体安装和使用方法如下:
安装方法
本仓库支持 ip 和安装源程序安装方式,使用 pip 或源程序安装时需要先安装 PaddlePaddle,PaddlePaddle 请参考安装文档。
- pip 安装
python -m pip install Senta
- 源码安装
git clone https://github.com/baidu/Senta.git .
cd Senta
python -m pip install .
使用方法
from senta import Senta
my_senta = Senta()
# 获取目前支持的情感预训练模型, 我们开放了以ERNIE 1.0 large(中文)、ERNIE 2.0 large(英文)和RoBERTa large(英文)作为初始化的SKEP模型
print(my_senta.get_support_model()) # ["ernie_1.0_skep_large_ch", "ernie_2.0_skep_large_en", "roberta_skep_large_en"]
# 获取目前支持的预测任务
print(my_senta.get_support_task()) # ["sentiment_classify", "aspect_sentiment_classify", "extraction"]
# 选择是否使用gpu
use_cuda = True # 设置True or False
# 预测中文句子级情感分类任务
my_senta.init_model(model_class="ernie_1.0_skep_large_ch", task="sentiment_classify", use_cuda=use_cuda)
texts = ["中山大学是岭南第一学府"]
result = my_senta.predict(texts)
print(result)
# 预测中文评价对象级的情感分类任务
my_senta.init_model(model_class="ernie_1.0_skep_large_ch", task="aspect_sentiment_classify", use_cuda=use_cuda)
texts = ["百度是一家高科技公司"]
aspects = ["百度"]
result = my_senta.predict(texts, aspects)
print(result)
# 预测中文观点抽取任务
my_senta.init_model(model_class="ernie_1.0_skep_large_ch", task="extraction", use_cuda=use_cuda)
texts = ["唐 家 三 少 , 本 名 张 威 。"]
result = my_senta.predict(texts, aspects)
print(result)
# 预测英文句子级情感分类任务(基于SKEP-ERNIE2.0模型)
my_senta.init_model(model_class="ernie_2.0_skep_large_en", task="sentiment_classify", use_cuda=use_cuda)
texts = ["a sometimes tedious film ."]
result = my_senta.predict(texts)
print(result)
# 预测英文评价对象级的情感分类任务(基于SKEP-ERNIE2.0模型)
my_senta.init_model(model_class="ernie_2.0_skep_large_en", task="aspect_sentiment_classify", use_cuda=use_cuda)
texts = ["I love the operating system and the preloaded software."]
aspects = ["operating system"]
result = my_senta.predict(texts, aspects)
print(result)
# 预测英文观点抽取任务(基于SKEP-ERNIE2.0模型)
my_senta.init_model(model_class="ernie_2.0_skep_large_en", task="extraction", use_cuda=use_cuda)
texts = ["The JCC would be very pleased to welcome your organization as a corporate sponsor ."]
result = my_senta.predict(texts)
print(result)
# 预测英文句子级情感分类任务(基于SKEP-RoBERTa模型)
my_senta.init_model(model_class="roberta_skep_large_en", task="sentiment_classify", use_cuda=use_cuda)
texts = ["a sometimes tedious film ."]
result = my_senta.predict(texts)
print(result)
# 预测英文评价对象级的情感分类任务(基于SKEP-RoBERTa模型)
my_senta.init_model(model_class="roberta_skep_large_en", task="aspect_sentiment_classify", use_cuda=use_cuda)
texts = ["I love the operating system and the preloaded software."]
aspects = ["operating system"]
result = my_senta.predict(texts, aspects)
print(result)
# 预测英文观点抽取任务(基于SKEP-RoBERTa模型)
my_senta.init_model(model_class="roberta_skep_large_en", task="extraction", use_cuda=use_cuda)
texts = ["The JCC would be very pleased to welcome your organization as a corporate sponsor ."]
result = my_senta.predict(texts)
print(result)
详细使用说明
项目下载
-
代码下载
下载代码库到本地
git clone https://github.com/baidu/Senta.git .
-
下载模型
下载英文情绪分析预训练SKEP的英文模型和英文模型(本项目中以ERNIE 1.0 large(中文)、 ERNIE 2.0 large()和RoBERTa large(了)作为初始化,训练的中文情绪预训练模型)
cd ./model_files # 以ERNIE 1.0 large(中文)作为初始化,训练的SKEP中文情感预训练模型(简写为SKEP-ERNIE1.0) sh download_ernie_1.0_skep_large_ch.sh # 以ERNIE 2.0 large(英文)作为初始化,训练的SKEP英文情感预训练模型(简写为SKEP-ERNIE2.0) sh download_ernie_2.0_skep_large_en.sh # 以RoBERTa large(英文)作为初始化,训练的SKEP英文情感预训练模型(简写为SKEP-RoBERTa) sh download_roberta_skep_large_en.sh
-
演示数据下载
下载训练数据使用SKEP训练和情绪分析任务
cd ./data/ sh download_ch_data.sh # 中文测试数据 sh download_en_data.sh # 英文测试数据
环境安装
-
PaddlePaddle 安装
本项目于PaddlePaddle 1.6.3,安装PaddlePaddle后,需要及时的将CUDA、cuDNN、NCCL2等动态库路径加入到环境变量LD_LIBRARY_PATH当中,否则会训练中会报过程相关的库错误。具体的paddlepaddle配置细节请在这里安装文档。
推荐使用pip安装方式
python -m pip install paddlepaddle-gpu==1.6.3.post107 -i https://mirror.baidu.com/pypi/simple
-
senta项目python包依赖
支持Python 3的版本要求3.7; 项目中其他python包依赖列在根目录下的requirements.txt文件中,使用以下命令安装:
python -m pip install -r requirements.txt
-
环境变量添加
在./env.sh中修改环境变量,包括python、CUDA、cuDNN、NCCL2、PaddlePaddle相关环境变量,PaddlePaddle环境变量参考说明请参考PaddlePaddle环境变量说明
模型训练和预测
-
训练前训练
# 在SKEP-ERNIE1.0中文模型的基础上,继续pre-train sh ./src/run_pretrain_ernie_1.0_skep_large_ch.sh # 在SKEP-ERNIE2.0英文模型的基础上,继续pre-train sh ./src/run_pretrain_ernie_2.0_skep_large_en.sh # 在SKEP-RoBERTa英文模型的基础上,继续pre-train sh ./src/run_pretrain_roberta_skep_large_en.sh
-
Finetune 训练和预测句子级情绪分类任务
# 基于SEKP-ERNIE1.0模型finetune训练和预测中文句子级情感分类任务,示例数据:ChnSentiCorp sh ./src/run_train.sh ./config/ernie_1.0_skep_large_ch.Chnsenticorp.cls.json # finetune训练 sh ./src/run_infer.sh ./config/ernie_1.0_skep_large_ch.Chnsenticorp.infer.json # 预测
# 基于SKEP-ERNIE2.0模型finetune训练和预测英文句子级情感分类任务,示例数据:SST-2 sh ./src/run_train.sh ./config/ernie_2.0_skep_large_en.SST-2.cls.json # finetune训练 sh ./src/run_infer.sh ./config/ernie_2.0_skep_large_en.SST-2.infer.json # 预测
# 基于SKEP-RoBERTa模型finetune训练和预测英文句子级情感分类任务,示例数据:SST-2 sh ./src/run_train.sh ./config/roberta_skep_large_en.SST-2.cls.json # finetune训练 sh ./src/run_infer.sh ./config/roberta_skep_large_en.SST-2.infer.json # 预测
-
Finetune 训练和预测评估对象级的情绪分类任务
# 基于SKEP-ERNIE1.0模型finetune训练和预测中文评价对象级的情感分类任务,示例数据:SE-ABSA 16_PHNS sh ./src/run_train.sh ./config/ernie_1.0_skep_large_ch.SE-ABSA16_PHNS.cls.json # finetune训练 sh ./src/run_infer.sh ./config/ernie_1.0_skep_large_ch.SE-ABSA16_PHNS.infer.json # 预测
# 基于SEKP-ERNIE2.0模型finetune训练和预测英文评价对象级的情感分类任务,示例数据:Sem-L sh ./src/run_train.sh ./config/ernie_2.0_skep_large_en.absa_laptops.cls.json # finetune训练 sh ./src/run_infer.sh ./config/ernie_2.0_skep_large_en.absa_laptops.infer.json # 预测
# 基于SKEP-RoBERTa模型finetune训练和预测英文评价对象级的情感分类任务,示例数据:Sem-L sh ./src/run_train.sh ./config/roberta_skep_large_en.absa_laptops.cls.json # finetune训练 sh ./src/run_infer.sh ./config/roberta_skep_large_en.absa_laptops.infer.json # 预测
-
Finetune 训练和预测或标签任务
# 基于SKEP-ERNIE1.0模型finetune训练和预测中文观点抽取任务,示例数据:COTE_BD sh ./src/run_train.sh ./config/ernie_1.0_skep_large_ch.COTE_BD.oe.json # finetune训练 sh ./src/run_infer.sh ./config/ernie_1.0_skep_large_ch.COTE_BD.infer.json # 预测
# 基于SKEP-ERNIE2.0模型finetune训练和预测英文观点抽取任务,示例数据:MPQA sh ./src/run_train.sh ./config/ernie_2.0_skep_large_en.MPQA.orl.json # finetune训练 sh ./src/run_infer.sh ./config/ernie_2.0_skep_large_en.MPQA.infer.json # 预测
# 基于SKEP-RoBERTa模型finetune训练和预测英文观点抽取任务,示例数据:MPQA sh ./src/run_train.sh ./config/roberta_skep_large_en.MPQA.orl.json # finetune训练 sh ./src/run_infer.sh ./config/roberta_skep_large_en.MPQA.infer.json # 预测
-
该代码同时支持用户进一步开发使用,可以根据配置文件中设置的相关、模型、优化器,以及修改模型的超参数进行二次开发训练。
-
本代码库目前训练支持基于SKEP情绪预测模型进行和训练预测,如果用户希望使用Bow、CNN、LSTM等轻量级模型,请移步至Senta v1使用。
演示数据集说明
该项目中使用的各个数据集的说明、下载方法及使用样例示例如下:
-
句子级情绪分类数据集
ChnSentiCorp 是中文句子级情感分类数据集,包含酒店、笔记本电脑和笔记本的网购评论。为方便使用演示数据中提供了完整的数据,数据示例:
qid label text_a 0 1 這間酒店環境和服務態度亦算不錯,但房間空間太小~~不宣容納太大件行李~~且房間格調還可以~~ 中餐廳的廣東點心不太好吃~~要改善之~~~~但算價錢平宜~~可接受~~ 西餐廳格調都很好~~但吃的味道一般且令人等得太耐了~~要改善之~~ 1 <荐书> 推荐所有喜欢<红楼>的红迷们一定要收藏这本书,要知道当年我听说这本书的时候花很长时间去图书馆找和借都没能如愿,所以这次一看到当当有,马上买了,红迷们也要记得备货哦! 2 0 商品的不足暂时还没发现,京东的订单处理速度实在.......周二就打包完成,周五才发货... ...
SST-2是主要的电影句子情感分类数据集,由评论组成。为方便使用演示数据中提供了完整的数据,数据集下载,数据示例:
qid label text_a 0 1 it 's a charming and often affecting journey . 1 0 unflinchingly bleak and desperate 2 1 allows us to hope that nolan is poised to embark a major career as a commercial yet inventive filmmaker . ...
-
评价对象级情感分类数据集
SE-ABSA_PHNS是中文评价对象级情绪分类数据集16个,主要由描述手机类别中某类属性的商品用户评论。为方便使用演示数据集提供了完整的数据,数据集下载地址,数据集示例如下:
qid label text_a text_b 0 1 software#usability 刚刚入手8600,体会。刚刚从淘宝购买,1635元(包邮)。1、全新,应该是欧版机,配件也是正品全新。2、在三星官网下载了KIES,可用免费软件非常多,绝对够用。3、不到2000元能买到此种手机,知足了。 1 1 display#quality mk16i用后的体验感觉不错,就是有点厚,屏幕分辨率高,运行流畅,就是不知道能不能刷4.0的系统啊 2 1 phone#operation_performance mk16i用后的体验感觉不错,就是有点厚,屏幕分辨率高,运行流畅,就是不知道能不能刷4.0的系统啊 ...
Sem-L数据集是中文对象评价情绪分类计算机数据集,主要由描述笔记本类别的商品用户评论组成,数据集的商品用户评论组合了。为方便使用演示数据中提供完整的数据,数据集下载地址示例:
qid text_a text_b label 0 Boot time Boot time is super fast, around anywhere from 35 seconds to 1 minute. 0 1 tech support tech support would not fix the problem unless I bought your plan for $150 plus. 1 2 Set up Set up was easy. 0 3 Windows 8 Did not enjoy the new Windows 8 and touchscreen functions. 1 ...
-
神话故事集
COTE-BD 数据集是中文互联网数据集。为了方便demo中提供完整的数据集,数据集下载地址,数据集使用示例如下,为了方便模型使用,使用数据集是对数据集进行分词处理后的互联网评论,标签用BIO标记评论或事件。
... B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 张 莉 , 女 , 祖 籍 四 川 , 1982 年 考 入 西 安 美 术 学 院 工 艺 系 , 1986 留 校 任 教 至 今 。 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O 可 能 本 片 确 实 应 该 在 电 影 院 看 3d , 才 能 体 会 到 奥 斯 卡 对 其 那 么 多 技 术 的 表 扬 , 也 才 能 体 会 到 马 丁 想 用 技 术 的 进 步 对 老 电 影 致 敬 的 用 意 [UNK] 最 近 听 说 《 雨 果 》 五 月 国 内 排 片 , 想 说 : 广 电 搞 毛 啊 ! 。 O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 《 笑 忘 书 》 是 由 林 夕 作 词 , c . y . kong 作 曲 , 王 菲 演 唱 的 一 首 歌 , 收 录 于 专 辑 《 寓 言 》 中 。 B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 龙 泉 寺 中 精 致 的 壁 画 , 近 前 观 看 每 位 人 物 面 部 表 情 都 表 现 得 栩 栩 如 生 , 文 革 中 部 分 被 损 坏 后 来 修 复 。 ...
MPQA数据集是英文互联网评论数据集。为使用方便演示数据中的完整数据,数据集下载,数据集使用示例需要如下,其中为了方便模型使用文本进行分处理,将标签使用BIO地址标注内容注释内容、评论实体和实体内容表达主体。
... O O O B_H B_DS B_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T I_T O O O O O In most cases he described the legal punishments like floggings and executions of murderers and major drug traffickers that are applied based on the Shria , or Islamic law as human rights violations . O O O O B_H B_DS I_DS I_DS I_DS I_DS B_T O O O O O O O In other cases , he made unfounded charges by accusing Iran of discrimination against women and minorities . B_H B_DS I_DS I_DS O O O O O O O O O O O O O O O O O O O O He made such charges despite the fact that women 's political , social and cultural participation is not less than that of men . O O O B_H B_DS O O O O O B_T I_T I_T I_T I_T I_T I_T I_T I_T O O O O O O O O O O O O O For instance , he denounced as a human rights violation the banning and seizure of satellite dishes in Iran , while the measure has been taken in line with the law . ...
论文效果复现
基于该项目可以实现对于论文 Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis 效果的复现。 下面提供论文的复现方法示例:
#下载以Roberta作为初始化,训练的SKEP英文情感预训练模型(简写为SKEP-RoBERTa)
sh download_roberta_skep_large_en.sh
#基于SKEP-RoBERTa模型finetune训练和预测英文句子级情感分类任务(示例数据:SST-2)
sh ./src/run_train.sh ./config/roberta_skep_large_en.SST-2.cls.json # finetune训练
sh ./src/run_infer.sh ./config/roberta_skep_large_en.SST-2.infer.json # 预测
#基于SKEP-RoBERTa模型finetune训练和预测英文评价对象级的情感分类任务(示例数据:Sem-L)
sh ./src/run_train.sh ./config/roberta_skep_large_en.absa_laptops.cls.json # finetune训练
sh ./src/run_infer.sh ./config/roberta_skep_large_en.absa_laptops.infer.json # 预测
#基于SKEP-RoBERTa模型finetune训练和预测英文观点抽取任务(示例数据:MPQA)
sh ./src/run_train.sh ./config/roberta_skep_large_en.MPQA.orl.json # finetune训练
sh ./src/run_infer.sh ./config/roberta_skep_large_en.MPQA.infer.json # 预测
注:如需要复现论文数据集结果,请参考论文修改任务的参数设置。
参考文献
使用该项目中的代码、模式或方法,请在相关文档、论文中引用我们的工作。
@misc{tian2020skep,
title={SKEP: Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis},
author={Hao Tian and Can Gao and Xinyan Xiao and Hao Liu and Bolei He and Hua Wu and Haifeng Wang and Feng Wu},
year={2020},
eprint={2005.05635},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。