vintage-sft-robustness
收藏资源简介:
Vintage SFT Robustness 是一个用于增强预-1930年代对话模型鲁棒性的监督微调数据集。该数据集包含 7,338 个样本,横跨五个路由:conversation_qa(3,500行,处理问候、告别、感谢等社交对话)、unparseable_qa(2,000行,处理乱码和截断句子)、typo_qa(1,200行,处理一个单词严重拼写错误的情况)、era_qa(220行,处理年份、时代错位、身份、地点等问答)、conversation_multiturn(418行,处理真正的双人对话,共2,044个回合)。单轮样本包含 question 和 answer 字段,多轮样本包含 conversations 列表(交替的 role 和 content)。所有样本均带有 score: 100,表示它们是构造的而非评分得到的。数据来源分为三类:语料库逐字提取(来自988MB的预-1930年摘录语料库)、程序生成(随机字符串和机械变形)和人工编写(115个用时代口吻手写的字符串)。数据集提供了详细的规模统计(总行数、每路由行数、中间token数、总token数约14.2万),并包含重要的时代错位风险警告,如语料库可能包含过时的古语、对话多轮倾向于维多利亚时期、方言保留在用户端等。该数据集旨在与训练时的输入噪声配合使用,以提升模型对非标准输入的鲁棒性。
Vintage SFT Robustness is a supervised fine-tuning dataset designed to enhance the robustness of pre-1930s dialogue models. It contains 7,338 samples spanning five routes: conversation_qa (3,500 rows, handling social dialogues such as greetings, farewells, and thanks), unparseable_qa (2,000 rows, handling garbled and truncated sentences), typo_qa (1,200 rows, handling cases of severe spelling errors in a single word), era_qa (220 rows, handling questions and answers about years, anachronisms, identities, places, etc.), and conversation_multiturn (418 rows, handling genuine two-person dialogues with 2,044 turns). Single-turn samples include question and answer fields, while multi-turn samples include a conversations list (alternating role and content). All samples have a score of 100, indicating they are constructed rather than rated. Data sources are divided into three categories: verbatim extraction from a corpus (988MB of pre-1930 excerpt corpus), programmatic generation (random strings and mechanical transformations), and manual writing (115 strings written in period style). The dataset provides detailed size statistics (total rows, rows per route, median tokens, approximately 142K total tokens) and includes important anachronism risk warnings, such as the corpus possibly containing outdated archaic language, multi-turn dialogues tending toward the Victorian era, and dialect preserved in the user side. The dataset is intended to be used with input noise during training to improve the models robustness to non-standard inputs.
数据集概述
Vintage SFT Robustness 是一个用于增强 1930 年前对话模型鲁棒性的监督微调(SFT)数据集,包含 7,338 行数据,分布在五条不同的“路线”(routes)中,专为补充预训练于前 1930 年书籍的对话模型而设计。
许可证:cc-by-4.0
语言:英语
规模:1K < n < 10K
标签:vintage、historical、pre-1930、sft、robustness
设计动机
该数据集解决的典型问题:模型在输入不再像“问题”时(如问候、乱码、无问号句子、拼写错误、时间错位问题、多轮对话),会偏离微调分布,退回基础语料的小说式生成行为,直到耗尽 token 预算。
| 输入示例 | 观察到的失败 | 对应路线 |
|---|---|---|
Hello |
生成大段叙述 | conversation_qa |
xakhavjba |
同上 | unparseable_qa |
| 去掉问号的问题 | 同上 | 训练时噪声(另设) |
What is a nedle? |
答非所问 | typo_qa |
What year is it? |
回答错误或回避 | era_qa |
| 多轮对话 | 无轮次概念 | conversation_multiturn |
基础数据集因 region_quality 指标偏好长句,导致对话类文本(短句)无法通过 0.70 的保留阈值,因此 SFT 数据约 98% 为叙述文本,缺乏真实对话样本。
数据内容与结构
| 路线 | 行数 | 中位 token/行 | 覆盖内容 |
|---|---|---|---|
conversation_qa |
3,500 | 15 | 问候、告别、感谢、承认、奇特开场(如 Praise God!)、模糊指代(如 Does he so?) |
unparseable_qa |
2,000 | 18 | 乱码与截断句子(含 fragment 655、multi_token 365、single_nonword 349、consonant_run 193、long_run 99、alnum_noise 93、micro 73、mixed_case 69、keyboard_mash 64、repeated_char 32、bare_punctuation 8) |
typo_qa |
1,200 | 30 | 单个词严重拼错 → 模型应反问确认(如 You mean needle, I take it?) |
era_qa |
220 | 17 | 年份(147)、时代错误(31)、身份(25)、地点(17) |
conversation_multiturn |
418 | 86 | 真实双人对话,共 2,044 轮 |
| 总计 | 7,338 | 约 142k token/遍 |
数据格式:单轮路线使用 question / answer;conversation_multiturn 使用 conversations 列表(交替 {role, content})。所有行均带 score: 100,因为是构造数据而非评分数据。
重要提示:数据行数占比(3.4%)与 token 占比(0.6%)差异悬殊,训练时应按 token 而非行数评估数据体量。
数据来源
分三类来源,仅一类存在时代错误风险:
1. Corpus-verbatim(语料逐字)——取自 988 MB 前 1930 年语料库(452,591 个片段):
- 90 条社交回避从句(仅在上下文无关时保留)
- 5,000 个完整句子,在随机词边界截断为片段
- 4,000 条短独立话语,用作奇特开场
- 全部
conversation_multiturn轮次,来自 croqaz/vintage-conversations(古腾堡小说,逐字核对)
2. Procedural(程序生成)——随机字符串与机械式篡改(乱码类别、五种拼写操作:删、换、双写、QWERTY 相邻键、谐音),无时代错误风险。
3. Authored(手写)——115 条按年代语气手写的字符串,是唯一的时代错误风险面:
- 32 条对话开场(如
What brings you) - 12 条代词特定询问
- 12 条年份回答(如
Nineteen hundred and thirty.) - 10 条拼写确认(
You mean {word}, I take it?) - 9 条回退承认、9 条身份回答、8 条结束语、7 条好奇尾句、6 条通用询问、5 条自然回答、5 条地点回答
这 115 条字符串在 7,338 行中高频重复,建议训练前通读。
时代错误风险警告
-
语料逐字无法防止古语化——语料跨越多个世纪,
good morrow是最常见问候、adieu是第二常见告别,均不适用于 1930 年语境。按出版年份过滤无效(1900 年代书籍中good morrow更频繁),需人工策展,黑名单必然不完整。 -
频率不等于适用性——
come again虽高频,但时代义为“回来”而非“再说一遍”,已入黑名单,其他类似词语可能幸存。 -
conversation_multiturn偏向维多利亚时期——来源为狄更斯、艾略特、托尔斯泰译作,早于 1930 年,但与预训练语料的主流年代(1850–1910)一致。 -
方言保留在用户轮次——语音方言(如
Knowd it yesday aftnoon at tea-time)仅从助手回答中剔除,用户轮次保留,基于“访客可能输入任何内容,但模型不应以此方式回答”。 -
上游对话集的说话人归属不保证——机械过滤只能捕捉结构断裂,无法捕捉语义断裂,部分交换可能不连贯。
-
用户端刻意现代化——
hi、hey、whats up、ok等输入是故意的,只有回答需要保持年代语气。 -
构造回答未经语料验证——115 条手写字符串虽符合年代语气,但无任何年代书籍包含这些句子,未经过时代错误过滤。
配套:训练时输入噪声(不在本数据集内)
与数据集配套设计的训练时噪声方案,对全课程的用户轮次施加 16 种操作、五大类变换:标点(含双感叹号)、大小写、间距、字符(换位、删/双字母、QWERTY 相邻键)、词级(删、重复、去撇号)。按 epoch 播种,同一行在不同训练轮次中以清洁或受损状态出现。答案轮次永不改动——理由:损坏的问题是模型读取的上下文,损坏的答案是模型学习复现的目标。
与 typo_qa 的区分:噪声是轻损伤、保留答案;typo_qa 是对单个关键词的重损伤,此场景下猜测是错的、询问是对的。二者分离可防止模型对轻微拼写错误过度提问。
警告:字符级操作模拟 OCR 伪影,与源语料可能已清理的损坏类别相同,若模型在答案中再现 OCR 式拼写错误,应首先怀疑此环节。
复现方法
给定 (count, seed) 可确定性复现,默认 seed 为 1930:
bash python -m synth.robustness.mine --scan-bytes 0 # 挖掘从句池(慢) python -m synth.robustness.mine --fragments 2500 # 句子池 python -m synth.robustness.mine --utterances 4000 # 话语池 python -m synth.robustness.build --dry-run # 仅统计 python -m synth.robustness.build # 构建并推送
数据布局:rows/<route>/part-*.jsonl




