高质量古诗词数据集构建与应用:从数据清洗到大模型训练实战 📅 发布时间:2026/9/3 2:29:52 👁 浏览次数: 简介本资源是一套面向大语言模型LLM训练与古诗文领域微调的高质量中文古诗词数据集覆盖先秦至现代逾两千年的经典文本专为AI研究人员、NLP工程师及古典文学数字化实践者设计解决古诗数据噪声多、格式杂、跨朝代标准不一等建模痛点。压缩包共123.72MB主体为结构化text文件包含清洗后的《全唐诗》《宋词三百首》《花间集》《曹操诗集》《纳兰性德词集》等核心子集以及水墨唐诗等特色选本所有文本均经人工校勘统一标点、修正异体字如“愚千慮切”→“愚衷千虑切”、补全文本节选、删除冗余注释与作者符号如〖〗、规范标题格式如《木兰花·令拟古决绝词》→《木兰花令·拟古决绝词》并校正误植如“雕弓ㄇ柳”→“雕弓笮柳”。已有378人学习下载读者可直接用于模型预训练语料构建、古诗生成任务微调、韵律分析或知识蒸馏具备即取即用的工程友好性与学术严谨性。1. 项目缘起为什么我们需要一个“干净”的古诗词数据集最近在折腾大模型相关的项目尤其是想训练一个能“吟诗作对”的模型时我遇到了一个几乎所有同行都会头疼的问题数据。市面上能找到的古诗词数据集不少但要么是格式混乱要么是标注不清要么就是掺杂了大量现代仿作、网络段子甚至还有错别字和乱码。用这样的数据去训练模型效果可想而知——生成的诗词要么格律不通要么意境全无甚至可能“创造”出一些不伦不类的句子。这让我萌生了一个想法为什么不自己动手整理一份从先秦到现代、覆盖完整、标注清晰、质量过硬的古诗词数据集呢这个想法最终落地成了你看到的这个“先秦到现代古诗词数据集大模型高质量数据说明-最新整理.zip”。它不仅仅是一个数据包的集合更是一次对中文诗歌脉络的系统性梳理和标准化尝试。这份数据集的初衷就是为所有需要处理中文诗歌文本的研究者、开发者、爱好者提供一个开箱即用、值得信赖的基石。2. 数据集全景扫描里面到底有什么这个数据集的核心理念是“全”与“净”。所谓“全”是时间跨度上的全覆盖所谓“净”是数据质量上的高标准。解压后你会看到一个结构清晰的目录主要包含以下几个核心部分2.1 核心数据文件JSON格式数据集的主体是多个按朝代划分的JSON文件这是为了兼顾结构化和易用性。每个JSON文件都遵循统一的Schema确保数据的一致性。以poetry_tang.json为例其数据结构如下{ “poems”: [ { “id”: “T001”, “title”: “静夜思”, “author”: “李白”, “dynasty”: “唐”, “content”: “床前明月光疑是地上霜。举头望明月低头思故乡。”, “tags”: [“思乡”, “月亮”, “唐诗三百首”], “annotation”: { “writing_background”: “此诗创作于唐玄宗开元十四年726年九月十五日左右李白时年26岁旅居扬州旅舍。在一个月明星稀的夜晚诗人抬望天空一轮皓月思乡之情油然而生写下了这首传诵千古、中外皆知的名诗。”, “appreciation”: “这首诗写的是在寂静的月夜思念家乡的感受。诗的前两句是写诗人在作客他乡的特定环境中一刹那间所产生的错觉...后两句通过动作神态的刻画深化思乡之情。” }, “metrics”: { “form”: “五言绝句”, “rhyme”: “光、霜、乡押平声阳韵”, “tonal_pattern”: “平平平仄平平仄仄仄平。仄平仄平仄平平平仄平。” }, “source”: “《全唐诗》卷一百六十五”, “verified”: true } // ... 更多诗歌 ], “metadata”: { “total_count”: 42900, “time_range”: “618-907”, “version”: “1.0.0”, “update_date”: “2023-10-27” } }字段深度解读id: 唯一标识符采用“朝代首字母序号”的格式便于索引和去重。tags: 关键词标签。这不是简单地从标题或内容中抽取而是结合了历代诗评、文学史共识进行的人工复核标注。例如李商隐的《锦瑟》会标注“无题诗”、“朦胧”、“典故”而不仅仅是“锦瑟”、“五十弦”。annotation: 这是数据集的“增值”部分。包含了创作背景和赏析数据来源于权威的文学鉴赏辞典和学术著作并经过校验确保信息准确且无版权争议。这为大模型理解诗歌的“意境”和“情感”提供了宝贵的上下文。metrics: 格律信息。对于近体诗律诗、绝句我们标注了其平仄格式和押韵情况。这部分数据是通过算法初筛加人工校验完成的对于研究诗词格律或训练格律校对模型极具价值。verified: 布尔值标记该条目是否经过人工二次校验。所有verified: true的数据都确保了作者、朝代、正文文字与权威古籍如中华书局点校本一致。2.2 辅助资源与说明文档除了核心的诗词JSON数据压缩包内还包含以下重要文件authors.csv: 诗人信息表。包含诗人姓名、字号、生卒年、所属朝代、生平简介、主要风格标签如“豪放”、“婉约”、“山水田园”。这张表可以与诗词数据通过作者字段关联实现“以人查诗”或分析诗人群体风格。dynasty_timeline.json: 朝代时间线。清晰定义了每个朝代的起止年份公元并标注了主要历史分期如“初唐”、“盛唐”、“晚唐”。这对于做历时性语言变化分析或社会背景研究至关重要。data_processing_guide.md: 数据处理指南。这篇文档详细说明了本数据集从原始文本扫描版古籍、权威数据库到最终结构化JSON的完整流水线包括OCR与校对如何利用OCR技术提取文本以及针对古籍竖排、异体字、避讳字的特殊校对规则。断句与标点古籍无标点我们依据语义和格律进行断句并添加现代标点这个过程的人机协作流程。格律分析算法简要介绍了用于自动分析平仄和押韵的算法原理及其准确率。质量管控描述了“机器初筛-规则过滤-人工抽样-专家复核”的四层质检流程。usage_examples.ipynb: 使用示例Jupyter Notebook。提供了几个即拿即用的Python脚本示例例如如何加载数据、按条件朝代、作者、标签查询、进行简单的统计分析如各朝代诗词数量分布、以及用于训练大模型的文本构建格式示例如将诗词、作者、标签拼接成特定提示词格式。3. 从数据到价值核心应用场景剖析拥有一个高质量的数据集只是第一步更重要的是如何用它来创造价值。下面结合我的实际经验谈谈这个数据集在几个核心场景下的应用。3.1 大模型预训练与微调这是本数据集最直接的应用场景。一个常见误区是直接把整首诗的文本扔给模型就行。实际上如何构建训练样本prompt-completion pair极大影响模型的学习效果。基础用法不推荐输入Prompt请写一首关于月亮的诗。 输出Completion床前明月光疑是地上霜。举头望明月低头思故乡。这种方式模型只能学到“提问-给诗”的简单映射无法学会创作。进阶用法推荐 我们可以利用数据集丰富的元数据构建更有指导性的样本。风格模仿输入诗人李白风格豪放飘逸主题山水请生成一首诗。 输出朝辞白帝彩云间千里江陵一日还。两岸猿声啼不住轻舟已过万重山。条件创作输入形式七言绝句押韵押“ou”韵关键词秋天、思乡请生成一首诗。 输出洛阳城里见秋风欲作家书意万重。复恐匆匆说不尽行人临发又开封。注此例为张籍《秋思》赏析生成输入诗歌[诗歌内容]请为这首诗写一段简要赏析。 输出[基于annotation.appreciation生成的赏析文本]实操心得在微调时建议将tags、metrics.form、author等信息作为条件condition融入输入提示词中而不是简单拼接。对于大规模预训练可以将诗词原文、作者、朝代、标签拼接成一段连贯的自然语言描述作为训练语料的一部分帮助模型建立更丰富的关联。3.2 文学研究与数字人文分析对于文学研究者或数字人文爱好者这个结构化数据集是一个宝库。词汇演变分析你可以轻松提取所有唐诗中的词汇与宋词中的词汇进行对比分析特定意象如“明月”、“孤舟”在不同时代诗人笔下的情感色彩变化。诗人社交网络虽然本数据集未直接包含唱和关系但可以通过分析共用意象、相似风格标签tags或结合外部史料初步构建诗人之间的“文学影响”网络。格律规律统计利用metrics字段可以大规模统计分析某个朝代如宋代的词牌其最常用的平仄规律是什么或者律诗中颔联、颈联对仗的工整度有何时代特征。示例分析唐代边塞诗中的高频意象import json from collections import Counter # 加载唐诗数据 with open(‘poetry_tang.json‘, ‘r‘, encoding‘utf-8‘) as f: data json.load(f) # 定义边塞诗相关标签 frontier_tags [‘边塞‘, ‘战争‘, ‘戍边‘, ‘从军‘] frontier_poems [p for p in data[‘poems‘] if any(tag in p.get(‘tags‘, []) for tag in frontier_tags)] # 简单的分词和词频统计此处需接入分词库如jieba import jieba all_words [] for poem in frontier_poems: content poem[‘content‘].replace(‘‘, ‘‘).replace(‘。‘, ‘‘).replace(‘‘, ‘‘).replace(‘‘, ‘‘) words jieba.lcut(content) all_words.extend([w for w in words if len(w) 1]) # 统计单字意象如“月”、“风”、“雪” word_freq Counter(all_words) print(word_freq.most_common(20)) # 输出前20个高频字3.3 教育应用与创意开发诗词学习APP可以基于此数据集快速搭建一个诗词查询、赏析、背诵的应用。annotation字段直接可用作学习资料。互动游戏开发“诗词填空”、“飞花令”、“根据意境猜诗名”等游戏数据集中规整的content和tags是绝佳素材。文创内容生成结合大模型可以根据节日、场景自动生成带有诗词元素的祝福语、海报文案、短视频脚本。4. 数据处理实战如何将原始数据“喂”给模型拿到数据后直接扔进模型训练往往效果不佳。这里分享一套我实践过的、针对本数据集的数据预处理流程。4.1 数据清洗与格式化尽管数据集本身质量很高但在投入训练前仍需根据任务目标做最后清洗。过滤非诗歌文本检查content字段确保其是完整的诗歌正文剔除个别可能混入的序、跋、注释文本本数据集已极大避免此问题。统一文本格式将所有全角字符如中文标点统一确保无乱码。将换行符统一为\n。处理生僻字与异体字对于大模型生僻字可能成为未登录词。可以考虑建立一个“异体字到标准字”的映射表或将非常用字替换为[UNK]标记但这会损失信息。更推荐的做法是在词表中扩充这些字并在训练时给予适当的采样权重。构建训练文本根据3.1节提到的方法将元数据构建成提示词。例如def build_prompt(poem_item): prompt f“诗人{poem_item[‘author‘]} 朝代{poem_item[‘dynasty‘]} 形式{poem_item[‘metrics‘].get(‘form‘, ‘古体诗‘)} 标签{‘‘.join(poem_item[‘tags‘])}。\n诗歌” completion poem_item[‘content‘] return prompt, completion4.2 训练集、验证集、测试集划分切忌随机划分因为同一诗人的不同作品风格相似随机划分会导致数据泄露使模型评估结果虚高。正确的划分策略按诗人划分将80%的诗人的作品作为训练集10%的诗人的作品作为验证集10%的诗人的作品作为测试集。这能真正测试模型对“未见过的诗人”风格的泛化能力。按朝代划分如果想测试模型对某个朝代诗歌的生成能力可以将该朝代的数据全部作为测试集用其他朝代的数据训练。4.3 词表构建与Tokenization对于古诗词直接使用现代中文的通用词表如BERT的词表效果可能不好因为包含大量文言虚词、典故用字。建议做法使用本数据集的所有诗词内容训练一个专属的Byte-Pair Encoding (BPE)或WordPiece词表。这样能确保“钟鼓馔玉”、“青冥浩荡”等诗词常见组合能被识别为一个token提高训练效率和质量。将诗人姓名、朝代、词牌名等作为特殊token加入词表。在tokenization时注意保留换行符因为换行在诗词中常常对应着诗句的划分具有语义信息。5. 避坑指南与常见问题在利用这个数据集进行开发和研究的过程中我踩过一些坑也总结了一些常见问题。5.1 数据使用中的典型误区误区一忽视verified字段。在精度要求极高的场景如学术引用请务必只使用verified: true的数据。verified: false的数据多为算法自动抽取尚未经人工最终核对可能存在细微误差。误区二将tags和metrics用于严格分类。tags是描述性的关键词一首诗可能同时有“山水”、“抒情”、“哲理”多个标签它们不是互斥的分类。metrics中的平仄标注是基于现代汉语拼音的“今韵”用于分析唐宋时期的“古韵”时需谨慎二者有区别。误区三直接使用原始数据训练对话模型。如果目标是训练一个能对话的“诗人AI”需要将诗词数据转化为多轮对话格式。例如用户说“写一首豪放的词”AI回复词作。这需要额外的对话数据构造工作本数据集提供的是“素材”而非“对话剧本”。5.2 模型训练效果不佳的排查思路如果微调后模型生成的诗句质量差可以按以下步骤排查检查数据格式首先确保你构建的prompt-completion对格式正确没有错位。打印出几条样本看看。审视任务难度让模型从零生成一首格律工整、意境优美的诗是极高的要求。可以尝试分步任务先让模型续写给出前两句生成后两句或进行诗句润色给出一句粗糙的诗让其优化。分析损失曲线如果训练损失下降很快但验证损失不降甚至上升可能是过拟合。尝试增加dropout率、使用更小的学习率、或增加数据多样性混合不同朝代的数据。评估指标问题诗词生成没有完美的自动评估指标。BLEU、ROUGE等基于n-gram重叠的指标与人类审美关联度不高。最好结合人工评价或使用一些专门针对诗歌的评估指标如押韵得分、平仄合规率等可利用数据集中的metrics进行自动计算对比。数据量是否足够虽然本数据集有数万首诗但对于大模型来说想要学到丰富的创作规律数据量可能依然不足。可以考虑进行数据增强例如回译将诗句翻译成英文再译回中文得到语义相近但表述不同的句子、同义词替换在非关键意象词上等但要注意保持诗歌的文学性。5.3 关于版权与学术规范的特别提醒本数据集在整理时已尽量使用版权过期作者逝世超过50年的古籍底本并对现代学者的赏析文字进行了概括和重述以避免直接的版权侵权。但是当你使用此数据集产出的研究成果如论文、商业产品时仍需注意学术引用在学术论文中引用某首诗时最规范的作法仍是追溯到权威出版社的纸质古籍版本如中华书局《全唐诗》本数据集可作为方便的查询工具但不宜作为最终引用源。商业应用用于训练商业化的AI产品时需评估风险。虽然诗歌本身无版权但数据集的结构化设计、独特的标签和赏析内容可能构成“数据库”相关的权利。建议在重要项目中咨询法律意见。署名与分享如果你基于此数据集发表了论文或开源了项目一个良好的学术习惯是在致谢或数据声明部分提及本数据集的来源即这个数据包以尊重整理者的劳动。整理这个数据集的过程本身也是一次对中华诗词宝库的深度巡礼。它或许仍不完美但希望能为你的探索提供一个更坚实的起点。在实际使用中最重要的是理解数据背后的结构设计意图然后灵活地将其适配到你的具体任务管道中让这些古老的文字在智能时代焕发新的生机。本文还有配套的精品资源点击获取