查看原文
其他

中文文本匹配数据集整理

刘聪NLP NLP工作站 2023-11-28

写在前面

大家好,我是刘聪NLP。

前两天,分享完SimCSE论文后,就开始整理中文文本匹配(文本相似度)数据集了,后面准备基于该数据集,训练一个句向量表征模型。不找不知道,一找吓一跳,共整理了「16个」可用于文本匹配任务。

之前,弄个Github项目,记录了自己整理的一些数据集,包括:中文摘要数据和中文机器阅读理解数据集。这次也将中文文本匹配(文本相似度)数据集,放到其中,

Github地址:https://github.com/liucongg/NLPDataSet

原始数据描述

数据集包括:DIAC2019、CCKS2018_Task3、LCQMC、AFQMC、GAIIC2021_Task3、THS2021、CHIP2019、SOHU_2021、COVID19、PAWSX、XF2021、Chinese-MNLI、Chinese-SNLI、Chinese-STS-B、OCNLI、PKU等16个数据集。

其中,

  • Chinese-MNLI数据集、Chinese-SNLI数据集和OCNLI数据集为自然语言推理数据集,共包含三个标签,分别是蕴含(entailment)、中立(neutral)和矛盾(contradiction)。在数据处理过程中,将蕴含文本对当作匹配文本对(标记为1),将中立和矛盾文本对当作不匹配文本对(标记为0)。

很多论文已经提出,使用矛盾文本对作为难负例训练模型,可以提高模型效果。

  • Chinese-STS-B数据集,共包含0到5的6个标签,数字越大表示文本对越相似。在数据处理过程中,将标签为5的文本对当作匹配文本对(标记为1),将标签为0-2的文本对当作不匹配文本对(标记为0)。

为什么正样本仅取标签5?Chinese-STS-B数据集是由英文翻译过来的,个人看了一些数据,3或4标签都存在一些问题,因此没有保留对应标签的数据。

  • PKU数据集为文本复述的数据集,文本对都是匹配的。在数据处理过程中,所有数据都为匹配文本对(标记为1)。
  • SOHU_2021数据集有些特殊,数据对中存在短短文本匹配、短长文本匹配和长长文本匹配。并且每个类别中又包含A和B两种,A的匹配标准较为宽泛,两段文字是同一个话题便视为匹配,B的匹配标准较为严格,两段文字须是同一个事件才视为匹配。在数据处理过程中,只有该数据集的样本存在type标签,包括:dda、ddb、dca、dcb、cca和ccb,对应"短短匹配A类"、"短短匹配B类"、"短长匹配A类"、"短长匹配B类"、"长长匹配A类"和"长长匹配B类"。建议使用时,使用“短短匹配B类”类型数据。

清洗数据描述

将上述数据进行简单地数据清洗以及格式转换操作,为了方便读取;具体格式如下:

{
    "version": str,
    "data": [
        {
            "sen1": str,
            "sen2": str,
            "label": int or str
        },
        {
            "sen1": str,
            "sen2": str,
            "label": str
        },

    ]
}

其中,version为str类型,表示哪种数据;data为一个list,里面包含多个字典,每个字典包含sen1、sen2、label、type等字段;sen1表示第一个文本,sen2表示第二个文本,label表示是否匹配(1表示匹配,0表示不匹配);而type字段,仅存在SOHU_2021数据集中,表示哪种类型的数据。

  • afqmc数据集,总样本数为:38650,其中,匹配样本个数为:11911,不匹配样本个数为:26739
  • ccks2018_task3数据集,总样本数为:100000,其中,匹配样本个数为:50000,不匹配样本个数为:50000
  • chip2019数据集,总样本数为:20000,其中,匹配样本个数为:10000,不匹配样本个数为:10000
  • COVID-19数据集,总样本数为:10749,其中,匹配样本个数为:4301,不匹配样本个数为:6448
  • diac2019数据集,总样本数为:100298,其中,匹配样本个数为:38446,不匹配样本个数为:61852
  • gaiic2021_task3数据集,总样本数为:177173,其中,匹配样本个数为:54805,不匹配样本个数为:122368
  • lcqmc数据集,总样本数为:260068,其中,匹配样本个数为:149226,不匹配样本个数为:110842
  • pawsx数据集,总样本数为:53401,其中,匹配样本个数为:23576,不匹配样本个数为:29825
  • ths2021数据集,总样本数为:41756,其中,匹配样本个数为:10478,不匹配样本个数为:31278
  • xf2021数据集,总样本数为:5000,其中,匹配样本个数为:2892,不匹配样本个数为:2108
  • sohu_2021数据集,总样本数为:69578,其中,匹配样本个数为:18714,不匹配样本个数为:50864
  • cmnli数据集,总样本数为:404024,其中,匹配样本个数为:134889,不匹配样本个数为:269135
  • csnli数据集,总样本数为:564339,其中,匹配样本个数为:188518,不匹配样本个数为:375821
  • ocnli数据集,总样本数为:53387,其中,匹配样本个数为:17726,不匹配样本个数为:35661
  • cstsb数据集,总样本数为:4473,其中,匹配样本个数为:401,不匹配样本个数为:4072
  • pku数据集,总样本数为:509832,其中,匹配样本个数为:509832,不匹配样本个数为:0

数据下载

原始数据在上述的数据链接中就可以下载到,如果下载不到,或者想要直接获取所有数据的同学,可以私聊我。

清洗及格式转换后的数据,下载链接:https://pan.baidu.com/s/1V-WHrZoDcSw1QEA9NDg9UQ 提取码:rt6f

数据读取

def read_ts_data(path):
    with open(path, "r", encoding="utf-8"as fh:
        data = json.load(fh)
        print(data["version"])
        for i, sample in enumerate(data["data"]):
            print("sen1:", sample["sen1"])
            print("sen2:", sample["sen2"])
            print("label:", sample["label"])
            print("*" * 30)
            exit()
path = "data/xf2021.json"
read_ts_data(path)

结果:

version: xf2021
sen1: 有哪些女明星被潜规则啦
sen2: 哪些女明星被潜规则了
label: 1
******************************

总结

数据是基础,有了数据不一定可以SOTA,但是没有数据式万万不能SOTA的。

如果大家有其他的中文文本匹配数据,欢迎补充!!!可以在评论中提出、也可以私聊我,也可以在github上pr。

请多多关注本人知乎「刘聪NLP」,有问题的朋友也欢迎加我微信「logCong」私聊,交个朋友吧,一起学习,一起进步。
我们的口号是“生命不止,学习不停”。

往期推荐


SimCSE论文精读

2021年总结

常用预训练语言模型(PTMs)总结

EMNLP2021之AEDA:一种更简单的文本分类数据增强技术

中文摘要数据集汇总

中文机器阅读理解(片段抽取)数据集整理

回顾BART模型

超详细中文注释的GPT2新闻标题生成项目

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存