Skip to content

Python toolkit for Chinese Language Understanding(CLUE) Evaluation benchmark

License

Notifications You must be signed in to change notification settings

CLUEbenchmark/PyCLUE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyCLUE

Python toolkit for Chinese Language Understanding Evaluation benchmark.

中文语言理解测评基准的Python工具包,快速测评代表性数据集、基准(预训练)模型,并针对自己的数据选择合适的基准(预训练)模型进行快速应用。

关于CLUE

datasets, baselines, pre-trained models, corpus and leaderboard

中文语言理解测评基准,包括代表性的数据集、基准(预训练)模型、语料库、排行榜。

我们会选择一系列有一定代表性的任务对应的数据集,做为我们测试基准的数据集。这些数据集会覆盖不同的任务、数据量、任务难度。

安装PyCLUE

现在,可以通过pip安装PyCLUE:

pip install --upgrade PyCLUE

或直接git clone安装PyCLUE:

pip install git+https://www.github.com/CLUEBenchmark/PyCLUE.git

基准(预训练)模型

已支持预训练语言模型

  1. BERT-zh
  2. BERT-wwm-ext
  3. albert_xlarge_zh_brightmart
  4. albert_large_zh_brightmart
  5. albert_base_zh_brightmart
  6. albert_base_ext_zh_brightmart
  7. albert_small_zh_brightmart
  8. albert_tiny_zh_brightmart
  9. roberta_zh_brightmart
  10. roberta_wwm_ext_zh_brightmart
  11. roberta_wwm_ext_large_zh_brightmart

待支持

  1. XLNet_mid
  2. ERNIE_base

快速评测CLUE数据集

数据集介绍及下载

注:数据集与CLUEBenchmark所提供的数据集一致,仅在格式上相应修改,以适应PyCLUE项目

1. AFQMC 蚂蚁金融语义相似度

数据介绍
数据量:训练集(34334)验证集(4316)测试集(3861)
例子:
{"sentence1": "双十一花呗提额在哪", "sentence2": "里可以提花呗额度", "label": "0"}
每一条数据有三个属性,从前往后分别是 句子1,句子2,句子相似度标签。其中label标签,1 表示sentence1和sentence2的含义类似,0表示两个句子的含义不同。

链接:https://pan.baidu.com/s/1It1SiMJbsrNl1dEOBoOGXg 提取码:ksd1

测评脚本

训练模型脚本位置:PyCLUE/clue/sentence_pair/afqmc/train.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/sentence_pair/afqmc/train.ipynb

提交文件脚本位置:PyCLUE/clue/sentence_pair/afqmc/predict.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/sentence_pair/afqmc/predict.ipynb

2. TNEWS' 今日头条中文新闻(短文本)分类 Short Text Classificaiton for News

数据介绍

该数据集来自今日头条的新闻版块,共提取了15个类别的新闻,包括旅游,教育,金融,军事等。

数据量:训练集(266,000),验证集(57,000),测试集(57,000)
例子:
{"label": "102", "label_des": "news_entertainment", "sentence": "江疏影甜甜圈自拍,迷之角度竟这么好看,美吸引一切事物"}
每一条数据有三个属性,从前往后分别是 分类ID,分类名称,新闻字符串(仅含标题)。

链接:https://pan.baidu.com/s/1Rs9oXoloKgwI-RgNS_GTQQ 提取码:s9go

测评脚本

训练模型脚本位置:PyCLUE/clue/classification/tnews/train.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/classification/tnews/train.ipynb

提交文件脚本位置:PyCLUE/clue/classification/tnews/predict.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/classification/tnews/predict.ipynb

3. IFLYTEK' 长文本分类 Long Text classification

数据介绍

该数据集共有1.7万多条关于app应用描述的长文本标注数据,包含和日常生活相关的各类应用主题,共119个类别:"打车":0,"地图导航":1,"免费WIFI":2,"租车":3,….,"女性":115,"经营":116,"收款":117,"其他":118(分别用0-118表示)。

数据量:训练集(12,133),验证集(2,599),测试集(2,600)
例子:
{"label": "110", "label_des": "社区超市", "sentence": "朴朴快送超市创立于2016年,专注于打造移动端30分钟即时配送一站式购物平台,商品品类包含水果、蔬菜、肉禽蛋奶、海鲜水产、粮油调味、酒水饮料、休闲食品、日用品、外卖等。朴朴公司希望能以全新的商业模式,更高效快捷的仓储配送模式,致力于成为更快、更好、更多、更省的在线零售平台,带给消费者更好的消费体验,同时推动中国食品安全进程,成为一家让社会尊敬的互联网公司。,朴朴一下,又好又快,1.配送时间提示更加清晰友好2.保障用户隐私的一些优化3.其他提高使用体验的调整4.修复了一些已知bug"}
每一条数据有三个属性,从前往后分别是 类别ID,类别名称,文本内容。

链接:https://pan.baidu.com/s/1EKtHXmgt1t038QTO9VKr3A 提取码:u00v

评测脚本

训练模型脚本位置:PyCLUE/clue/classification/iflytek/train.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/classification/iflytek/train.ipynb

提交文件脚本位置:PyCLUE/clue/classification/iflytek/predict.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/classification/iflytek/predict.ipynb

4. CMNLI 语言推理任务 Chinese Multi-Genre NLI

数据介绍

CMNLI数据由两部分组成:XNLI和MNLI。数据来自于fiction,telephone,travel,government,slate等,对原始MNLI数据和XNLI数据进行了中英文转化,保留原始训练集,合并XNLI中的dev和MNLI中的matched作为CMNLI的dev,合并XNLI中的test和MNLI中的mismatched作为CMNLI的test,并打乱顺序。该数据集可用于判断给定的两个句子之间属于蕴涵、中立、矛盾关系。

数据量:train(391,782),matched(12,426),mismatched(13,880)
例子:
{"sentence1": "新的权利已经足够好了", "sentence2": "每个人都很喜欢最新的福利", "label": "neutral"}
每一条数据有三个属性,从前往后分别是 句子1,句子2,蕴含关系标签。其中label标签有三种:neutral,entailment,contradiction。

链接:https://pan.baidu.com/s/1mFT31cBs2G6e69As6H65dQ 提取码:kigh

评测脚本

训练模型脚本位置:PyCLUE/clue/sentence_pair/cmnli/train.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/sentence_pair/cmnli/train.ipynb

提交文件脚本位置:PyCLUE/clue/sentence_pair/cmnli/predict.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/sentence_pair/cmnli/predict.ipynb

5. 诊断集 CLUE_diagnostics test_set

数据介绍

诊断集,用于评估不同模型在9种语言学家总结的中文语言现象上的表现。

使用在CMNLI上训练过的模型,直接预测在这个诊断集上的结果,提交格式和CMNLI一致,在排行榜详情页可以看到结果。(注:该数据集包含CMNLI的训练集与测试集)

链接:https://pan.baidu.com/s/1DYDUGO6xN_4xAT0Y4aNsiw 提取码:u194

评测脚本

训练模型脚本位置:PyCLUE/clue/sentence_pair/diagnostics/train.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/sentence_pair/diagnostics/train.ipynb

提交文件脚本位置:PyCLUE/clue/sentence_pair/diagnostics/predict.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/clue/sentence_pair/diagnostics/predict.ipynb

6. 其他CLUE支持的数据集

补充中。

应用于自定义任务

1. 多分类任务 Multi Class Classification

任务说明

多分类任务,如文本分类、情感分类等,可接受单句输入和句子对输入两种形式。

数据要求

数据目录下应至少包含train.txt,dev.txt和labels.txt文件,可增加test.txt文件。

保存形式参考:

单句输入(对应评测脚本中的task_type = 'single'):PyCLUE/examples/classification/single_data_templates/,https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/classification/single_data_templates

句子对输入(对应评测脚本中的task_type = 'pairs'):PyCLUE/examples/classification/pairs_data_templates/,https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/classification/pairs_data_templates

注:应采用\t作为分隔符。

评测脚本

训练模型脚本位置:PyCLUE/examples/classification/train.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/classification/train.ipynb

预测使用脚本位置:PyCLUE/examples/classification/predict.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/classification/predict.ipynb

2. 句子对任务(孪生网络) Sentence Pair (Siamese)

任务说明

句子对任务(孪生网络),如相似句子对任务等。与多分类任务中的句子对输入模型区别:多分类任务中的句子对任务采用类似Bert的拼接形式进行输入,而该任务采用孪生网络的形式进行输入。

数据要求

数据目录下应至少包含train.txt,dev.txt和labels.txt文件,可增加test.txt文件。

保存形式参考:

输入:PyCLUE/examples/sentence_pair/data_templates/,https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/sentence_pair/data_templates

注:应采用\t作为分隔符。

评测脚本

训练模型脚本位置:PyCLUE/examples/sentence_pair/train.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/sentence_pair/train.ipynb

预测使用脚本位置:PyCLUE/examples/sentence_pair/predict.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/sentence_pair/predict.ipynb

3. 文本匹配任务(孪生网络) Text Matching (Siamese)

说明

文本匹配任务(孪生网络),如FAQ检索、QQ匹配检索等任务,使用孪生网络生成输入句子的embedding信息,使用hnswlib检索最相近的若干句子。

数据要求

数据目录下应至少包含cache.txt,train.txt,dev.txt和labels.txt文件,可增加test.txt文件。

保存形式参考:

输入:PyCLUE/examples/text_matching/data_templates/,https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/text_matching/data_templates

注:应采用\t作为分隔符。

评测脚本

训练模型脚本位置:PyCLUE/examples/text_matching/train.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/text_matching/train.ipynb

预测使用脚本位置:PyCLUE/examples/text_matching/predict.ipynb

参考:https://github.com/CLUEBenchmark/PyCLUE/blob/master/examples/text_matching/predict.ipynb

训练生成文件

1. 模型文件

模型文件包含10个最新的checkpoint模型文件和pb模型文件(10个checkpoint模型文件在测试集dev.txt上表现最佳的模型)。

训练生成文件

2. 训练过程指标

训练过程生成的指标文件(train_metrics.png),分别为accuracy,total_loss,batch_loss,precision,recall和f1指标。

train_metrics

3. 验证过程指标

若存在验证文件test.txt且验证文件各行以true_label作为起始,则打印最佳模型在验证文件上的指标。

image-20200510133813806

API文档

更新中。

其他说明

正式地址:https://github.com/CLUEBenchmark/PyCLUE

调试地址:https://github.com/liushaoweihua/PyCLUE

Timeline

更新日志

  • 2019.12.05
    • 初版PyCLUE,用以快速评测CLUE数据集(文本分类、句子对任务);
  • 2020.05.10
    • 代码改版,合并冗余代码(测试版本:tensorflow 1.15.2),为简化API,在下游任务上暂时移除对TPU的支持;
    • 支持多版bert、albert和roberta模型,可根据指定预训练语言名自动下载并加载使用;
    • 支持文本分类、句子对、文本匹配任务;
    • 用以快速评测CLUE数据集(AFQMC/TNEWS/IFLYTEK/CMNLI),生成CLUEBenchmark可接受的提交文件;
    • 应用于自定义任务,快速快速生成checkpoint和tensorflow-serving支持部署的pb模型文件形式,并可加载pb模型文件进行预测;支持文件形式质检,保存误识别结果至指定目录。

更新计划

  • 2020.05 ~ 2020.08
    • 支持其他文本分类、句子对和文本匹配任务;
    • 支持序列标注任务;
    • 支持XLNET、ERNIE、ELECTRA等;
    • 支持预训练词向量模型(Word2Vec等),支持多类下游网络;
  • 2020.08 ~ 2020.10
    • 支持阅读理解任务;
    • 支持TF 2.0;
  • 2020.10 ~ 2020.12