中文长下文词语预测(Chinese WPLC)数据集
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
pengf d74122644d 更新 'README.md' 1 个月前
nezha_evaluate 上传文件至 'nezha_evaluate' 1 个月前
LICENSE Initial commit 1 个月前
README.md 更新 'README.md' 1 个月前
数据说明文档.pdf 上传文件至 '' 1 个月前

README.md

中文长下文词语预测 (Chinese WPLC)数据集

Chinese Word Prediction with Long Context (Chinese WPLC) 是天津大学联合鹏城实验室在小说上建立的依赖长上下文预测目标单词的中文数据集,创建目的是为了评测模型建模长文本的能力。

简介

该数据集在给定前文的条件下,测试机器预测目标句子最后一个单词的能力,选择的上下文、目标句子及待预测单词满足以下条件:当给定完整语境时待预测单词很容易被猜测出来,当只给最后一个句子时,难以被猜测出来。我们希望通过这个数据集检测模型在长上下文上提取信息的能力。例如:

上下文:随后他立即想到自己为什么如此气愤——他之所以气愤,是因为他害怕了。在他个人处于巨大危险的情况下,贝思抛弃了他。在海底深处只剩下他们三个人,他们互相需要——他们得互相依靠。

目标句:然而贝思不可信赖,这使他感到害怕,而且

目标词:气愤

在上述的例子中,目标词 “气愤“ 能够通过上下文和目标句推测出来,而单靠目标句,很难被猜测出来。

数据采集与构建流程

  • Step1 数据收集

Chinese WPLC数据集来自网络爬取的小说,涵盖玄幻、言情、武侠、侦探、悬疑等类型,总量超过6万部。将重复的小说、公开读本(世界名著、文学名著、古典名著等)以及敏感词比例超5%的小说过滤后,剩余小说按照2:1:1的比例随机划分为训练集、测试集和验证集。

  • Step2 段落抽取

使用pkuseg[1]对分句后的测试集和验证集小说段落进行分词,以段落最后一句为终点句子,在终点句子之前,往前累计总词数大于50的最少完整句子集合抽取出来作为上下文,并进一步将终点句子最后一个词作为待预测单词,终点句子剩余部分构成目标句子。上下文、目标句子、待预测单词共同组成一个上下文段落。抽取上下文段落需满足以下条件:

  1. 目标词不是停用词。
  2. 目标词在训练集语料中词频大于5。
  3. pkuseg、jieba[2]、thulac[3]三种分词工具切分出来的目标词一致。
  4. 目标句子包含至少10个词。
  5. 每本小说最多抽取200个上下文段落。

仅当条件1不满足时,可将停用词前一个词作为目标词进行上述2-5条件检测,其余情况,将上下文段落抛弃。最终抽取出210万个段落。

  • Step3 段落过滤

为减少数据集构建时间,需过滤掉相对简单的段落。使用以下四种组合生成答案候选:

  1. 给定目标句子的预训练NEZHA[4]。
  2. 给定目标句子的微调NEZHA。
  3. 给定上下文和目标句子的预训练NEZHA。
  4. 给定上下文和目标句子的微调NEZHA。

当待预测单词出现在任一束搜索策略生成的Top-5个答案候选中时,将该段落抛弃。
为进一步减少人工标注量,在构建数据集过程将待预测单词困惑度在使用上下文和不使用上下文比值的对数作为指标。优先考虑指标大于1的段落,由此得到21万个段落。

  • Step4 人工筛选

将Step3剩余段落经过随机抽样后通过100+标注人员进行三轮标注:

  1. 在给定完整段落(上下文+目标句)猜测目标词,猜对后的上下文段落进入下一轮。
  2. 给不同标注人员重复第一轮。
  3. 给定目标句让三个不同的标注人员最多猜9个词,如果目标词都没有被猜到,则将该段落加入Chinese WPLC数据集。

第三轮标注中标注人员每人每个段落最多猜测3个词,以最大限度确保待预测单词需通过长上下文信息才能推断出来,而不能通过单个句子进行推断。虽然第三轮标注能够确保待预测单词不能通过局部信息推断,但是由于标注人员知识存在差异,该流程不能确保第一轮标注段落能被猜对。第二轮标注进一步确保上下文段落可以被猜对。为减少人工标注时间,在标注过程中提示标注人员待预测词的长度(字数)。

数据统计与分析

经过第一轮后,只有14-17%的数据能进入下一轮,在第二轮中的数据中,有50%-60%的数据能进入第三轮。在第三轮标注中,只有60%的数据能够构成最后的Chinese WPLC数据集。数据统计如表1所示:

原数据 第一轮筛选后 第二轮筛选后 第三轮筛选后
数量 21.3万 3.45万 1.85万 11121

Chinese WPLC数据集每个上下文段落平均由3-4个句子构成,平均长度为120个字,如表2所示:

数量 长度 句子数量 下载
Dev 5964 118 3.7 dev.json
Test 5157 121 4.2 test_without_answer.json

数据格式

数据格式可参考下面两个样本数据,每个样本由2个字段组成,masked_text字段是上下文和目标句子,correct_word是位置上正确的词,数量代表待预测单词字数。

{
"masked_text": "随后他立即想到自己为什么如此气愤——他之所以气愤,是因为他害怕了。在他个人处于巨大危险的情况下,贝思抛弃了他。在海底深处只剩下他们三个人,他们互相需要——他们得互相依靠。然而贝思不可信赖,这使他感到害怕,而且<mask><mask>。",
"correct_word": "气愤"
}
{
"masked_text": "钟将也不躲不闪,只是简单的凝出一块雷光盾,只是他的雷光盾却不像楚毅峰的那样包裹住整个身体,只有脸盆大小,但是他的雷光盾完全是一块整体,没有雷电闪烁,没有电芒流转。甚至连一点雷电的痕迹都看不到,就是一声银色的坚实<mask><mask>!",
"correct_word": "盾牌"
}

评测脚本

本脚本基于 https://github.com/huawei-noah/Pretrained-Language-Model/tree/master/NEZHA-Gen-TensorFlow

版本注释

版本1.0: 2021/04/22

安装环境

脚本使用Tensorflow 1.13和Python 3.6测试通过。python包fire是必需的。安装fire包:

pip3 install fire

使用步骤

1: 从Google DriveBaidu Netdisk(code:rb5m)下载Chinese GPT的模型文件,将models_gpt文件夹移动到与脚本相同的目录中。

2: 将dev.Json文件移动到与脚本相同的目录。

3: 运行脚本 nezha_evaluate.py

python3 nezha_evaluate.py

评测指标

Chinese WPLC数据集的创建目的是为了评测模型建模长文本的能力。我们采用预测准确率(Accuracy)作为评测指标,该指标值越高代表模型处理长文本能力越强。 OpenAI公司发布的GPT-2在lambada数据集测得的指标是预测最后一个bpe分词,这会给模型带来额外的信息,降低任务的难度[5]。因此评测过程中我们不希望将目标词预测任务简化为最后一个子词预测任务。由于猜词过程中存在近义词,因此在评测过程中额外考虑TOP3准确率。

基准模型
为测试人类在Chinese WPLC数据集上的猜词效果,从验证集和测试集各随机抽取500条共1000条作为测试样本,并平均分发给4名人员,每人基于上下文猜测出3个单词计算准确率。

Model Top1 Accuracy(%) Top3 Accuracy (%)
Human 31.2 49.7
NEZHA 0.0 0.0

参考文献

[1] Luo R, Xu J, Zhang Y, et al. Pkuseg: A toolkit for multi-domain chinese word segmentation[J]. arXiv preprint arXiv:1906.11455, 2019.
[2] J. Sun, “Jieba Chinese word segmentation tool,” 2012
[3] 孙茂松, 陈新雄, 张开旭, 郭志芃, 刘知远. THULAC:一个高效的中文词法分析工具包. 2016.
[4] Wei J, Ren X, Li X, et al. NEZHA: Neural contextualized representation for chinese language understanding[J]. arXiv preprint arXiv:1909.00204, 2019.
[5] https://github.com/openai/gpt-2/issues/131

项目信息

天津大学、鹏城实验室是 Chinese WPLC 数据集发布的主要单位。

许可证:

Creative Commons Attribution 4.0 International