今天是2024年3月8日,星期五,北京,晴。
我们今天来看看关于长文本的话题,当前长文本建模是个大趋势,但如何找到更多的长文本训练数据,十分重要,尤其是中文数据。
而当前陆续出现的一些长文本评估工作所提出的标注数据,可以作为一个补充来源。
而其中关于任务数据集的构造很有趣,我们也来重点看看CLongEval《CLongEval: A Chinese Benchmark for Evaluating Long-Context Large Language Models》(https://arxiv.org/pdf/2403.03514)这一评估方案
我们在文章《一文详看大模型长文本如何评估:四大主流评测数据集的任务设计、数据集构建方案》(https://mp.weixin.qq.com/s/rTsUjvo4hGu17ZpJmOYRKQ)中已经总结过当前的主流的长文本评估数据集,这个在长文本建模上有很大的用处。
1、ZeroSCROLLS
ZeroSCROLLS将不同来源的数据集自动处理成平均10k词的统一输入格式。
地址:https://arxiv.org/pdf/2305.14196.pdf
ZeroSCROLLS作为一个零测试基准,包含十个自然语言任务的测试集,每个任务都要求对不同类型的长文本进行推理,每个任务最多只能使用500个示例。
2、L-Eval评测数据集
L-Eval(L-EVAL: INSTITUTING STANDARDIZED EVALUATION FOR LONG CONTEXT LANGUAGE MODELS)从规模较小的类似公共数据集中重新标注数据和指令,以确保质量。此外,它还优化了评估程序和基线,以获得更准确的结论。
地址:https://arxiv.org/pdf/2307.11088.pdf
3、LongBench评测数据集
LongBench《LongBench: A Bilingual, Multitask Benchmark for Long Context Understanding》提供了一个双语和多任务数据集,具有不同长度、分布、模式、语言和领域的各种序列,用于全面评估长语境理解能力。
地址:https://arxiv.org/abs/2308.14508
4、LooGLE评测数据集
LooGLE包含更具挑战性的长依赖任务,如事件时间线重排、理解/推理和计算。这些任务不仅需要信息检索,还需要对整个文本进行理解/推理。
LooGLE中生成了两类主要任务:短依赖任务和长依赖任务。
对于短依赖性任务,从维基百科文章和脚本中生成短QA。
对于长依赖性任务,包括针对arXiv论文的摘要和针对长文档理解的人工设计QA任务。
QA有四个主要子任务:多重信息检索、时间轴重排、计算、理解和推理。该工作精细地生成任务/问题,以定制每个数据源的内在特征,从而更好地进行长文理解评估。
论文地址:https://arxiv.org/pdf/2311.04939.pdf
由于缺乏基准测试,这些模型的评估仍未得到充分发展。为填补这一空白,CLongEval《CLongEval: A Chinese Benchmark for Evaluating Long-Context Large Language Models》(https://arxiv.org/pdf/2403.03514)提出了一个用于评估大模型长上下文能力的中文基准,该任务数据包括7个不同任务和7,267个示例,适用于上下文窗口大小从1K到100K的模型,除了自动构建的标签外,还有2000多个手动标注的问答对。
1、基本思想
与人类解决问题的方式类似,长上下文大模型的基本功能可以归为以下两类:
一类是在部分或完整上下文中精确识别和获取关键信息的能力;
一类是基于给定信息以抽取或抽取的方式推理出答案的能力。
为了适应具有不同上下文窗口跨度的模型,在CLongEval中考虑了三个子集:小集(1K-16K),中集(16K- 50K)和大集(50K- 100k)。
2、任务类型
CLongEval包含7个任务中的7267个测试样本,包括长故事QA(Long Story QA)、长对话记忆(LongConversationMemory)、长故事摘要(Long Story Summarization)、堆叠新闻标签(Stacked News Labeling)、堆叠错字检测(Stacked Typo Detection)、键值对检索(Key-Passage Retrieval)和表查询(Table Querying)等。
其中:
1)长故事QA(Long Story QA):该任务涉及大模型根据长篇故事的上下文片段回答问题。为了完成这项任务,模型应该识别相关的片段并抽象地推理出答案。
这个数据构建很有意思,其从一个收集公共领域书籍的网站3中挑选了153本中国叙事小说。
收集的小说类型包括武侠、社会题材和推理小说,从集合中提取了200个不重叠的故事,每个故事的问题数量与它在token中的长度成正比,因此更长的故事有更多的问题。
该工作从每个故事中提取片段,均匀分布在整个故事中,平均每个片段有720个汉字,每个故事的片段数量对应于预期的问题数量。
然后根据上述标注原则,通过调用GPT-4-Turbo生成每个片段的6个问答对。然后,标注人员从6个选项中选择与给定片段最相关的特定问答对,最终形成200个故事(即语境)的995对问答。
2)长对话记忆(LongConversationMemory):这个任务被设计用来评估一个模型的长期记忆能力。
该任务利用用户和同伴聊天机器人之间多日对话的输入,要求大模型准确地回复特定日期对话历史中有关特定细节的问题。
为了构建测试数据集,该工作利用了80个虚拟用户和同伴聊天机器人之间140天的交互对话记录,并手动标注了1067个QA对。
3)长故事摘要(Long Story Summarization):摘要摘要是自然语言处理中的一项关键任务,它需要对输入进行全面的理解和复杂的推理。
在CLongEval中,该工作引入了一个基于故事的长上下文输入的长故事摘要任务。为了获得高质量的长上下文中文语料库,该工作利用云翻译API将BOOKSUM数据集翻译成中文,《Booksum: A collection of datasets for long-form narrative summarization.》(https://arxiv.org/abs/2105.08209),地址:https://huggingface.co/datasets/kmfoda/booksum,该数据集涵盖了各种类型的书籍,包含段落、章节和书籍上的摘要。
形式上,BOOKSUM中的每个样本(ti, si)包括一个文本输入ti和相应的摘要si,它可以是一个段落、一章或整本书。该工作选择连续的段落或章节的期望长度,并将它们连接起来以构建长上下文输入T,以确保翻译后的BOOKSUM数据集的语义一致。
随后,利用GPT-4-Turbo来聚合相应的摘要将所选的连续段落或章节组成一个整体摘要S,这可以被视为对构建的长上下文输入的适当的、高度抽象的摘要,然后用人对所有生成的摘要S进行检查。
4)堆叠新闻标签(Stacked News Labeling):在这个任务中,N篇新闻文章被堆叠在一个单一的上下文中,每篇文章包含一个新闻索引(范围从1到N)及其内容。
这项任务的目标是评估大模型是否能够全面阅读长上下文中的所有新闻文章,并从给定的可能类别池中确定每个新闻的类别。
完成这项任务需要模型仔细阅读和分析长上下文中的所有信息,该任务类似于ZeroScrolls的SpaceDigest或LongBench的PassageCount,大模型在其中逐条分析长上下文。
为了构建这个数据集,该工作首先从THUnews中提取一个子集,该数据集包含大约840K篇中文新闻文章。这个子集包括9个类别:体育、娱乐、家庭、房地产、教育、政治、游戏、科技和金融。每个类别包含相同数量的新闻文章。
该工作从不同的类别中随机选择新闻文章来填充上下文,直到达到所需的上下文长度。最后形成创建1005个上下文作为测试样本。
5)堆叠错字检测(Stacked Typo Detection):这个任务旨在从给定的输入中提取拼写错误的汉字。这项任务要求llm具有全面的上下文理解能力和信息提取能力。
该工作利用收集到的与Long story相同的中文叙事语料生成1000个上下文文本作为测试样本,每个上下文被分成多个段落,由一个从0开始递增的段落ID标识。
该工作随机选择一些段落,并从每个选中的段落中选择一个汉字作为错别字候选。然后使用相应的同音字来替换所选字符,从而产生同音字错别字。
为了保持错别字的平衡分布,错别字的数量是根据数据长度确定的:小集为10,中集为20,大集为30。每个上下文中大约有一半的段落包含拼写错误的字符。
6)键值检索(Key-Passage Retrieval):在这个任务中,上下文组成一个序列化为字符串的JSON对象,该对象包含多个key-value。
每个键是由32个随机生成的字符组成的唯一字符串,包含字母和数字,而对应的值是中文中的连续文本。
此任务的目标是根据给定的键返回相应的检索值,侧重于模型的信息提取能力,而不是从定位的片段中总结答案。
所有文章均取自三个中文QA数据集,即WebQA、sougou QA和CMRC2018。
7)表查询(Table Querying):在这个任务中,一个上下文由多个以Markdown格式排列的表组成。在表查询中,目标是定位上下文中的特定表,并根据查询条件从该表检索值。
TblQry涉及模型同时利用行和列索引从表中提取特定值。该工作的问题格式遵循条件模式:“在表a中,当B列的值为C时,D列的值是多少?”在这种问题格式中,llm需要首先在上下文中的多个表中识别表A,然后根据列B的值定位行并检索列d的值。
该任务中使用的所有表均来自WikTable,这是一个英语表集合。该工作过滤掉过长的表,只保留那些token计数不超过2000个token的表。
由于资源限制,该工作只使用云翻译API将每个表的列头和条件列翻译成中文,总共构建了180个包含多个表的上下文,最后生成了1100个测试样本。
3、数据集地址
该数据已经开源,可以在huggingface上进行访问:
https://github.com/zexuanqiu/CLongEval,https://huggingface.co/datasets/zexuanqiu22/CLongEval
本文主要介绍了长文本评估的一个工作CLongEval,并回顾了已有的一些长文本数据集,这些都可以作为当前长文本建模的一个重要数据来源。
1、https://arxiv.org/pdf/2403.03514
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。