我把《甄嬛传》台词喂给了AI让它用机器学习模仿“朕”写情书当四郎的帝王语气遇上神经网络产生的不是圣旨而是一封封令人啼笑皆非的“赛博情书”。缘起为什么是“朕”《甄嬛传》播出十余年至今仍是互联网“电子榨菜”之首。剧中陈建斌饰演的雍正皇帝台词自带一种冷峻、克制、居高临下却又暗藏裂隙的独特质感——很少直抒胸臆多用反问、诏令式短句和讳莫如深的隐喻。作为技术爱好者我冒出一个念头如果摘出剧中所有“朕”字开头的台词不做任何人工润色直接扔给一个轻量级语言模型让它“学习”这种帝王口吻并用来写情书结果会怎样这不是一个严肃的NLP科研项目而是一次“风格迁移”式的实验游戏。本文会完整记录数据准备、模型选型、训练调参、输出解析的全过程并附上翻车案例与反思。第一步语料库构建——从弹幕到纯文本1.1 原始数据来源我爬取了《甄嬛传》76集的中文字幕文件srt格式同时从两个剧本网站补充了完整对白。原始数据约 28 万行包含场景描述、人物动作、标点符号和大量非“朕”台词。1.2 清洗策略清洗逻辑分三层人物过滤只保留说话人标注为“皇上”“雍正”“四郎”的片段实际剧中统一为“皇上”。首字过滤严格筛选以“朕”开头的句子。这一步用正则^朕.*[。\.\?!]$抓取共得到1,847 条有效句子。去噪删除包含[]等舞台指示符的行以及纯语气词如“嗯”“嗻”。最终语料库平均句长 14.3 个汉字总字符数约 2.6 万。规模很小但对于风格模仿任务反而避免了模型“学成通用对话”。1.3 一个关键设计保留“断裂感”我没有把长句切分成短句也没有补全省略的主语。因为“朕”的说话风格本就短促、跳跃、爱用四字词如“朕心甚慰”“容不容得下”。保留原始断句等于保留了帝王语气的骨架。第二步模型选型——为什么不用GPT-4很多人会问直接调用大模型API给几条few-shot示例不就行了吗我刻意选择了轻量级、可本地训练的方案原因有三可控性大模型的通用知识会“污染”风格它知道情书通常怎么写而小模型只能死记硬背输入分布风格更纯粹。实验趣味我想看到“过拟合”产生的荒诞效果——这是大模型精调后很少出现的。硬件限制手头只有一张RTX 3060 12GB。最终选用GPT-2 Small124M参数作为基座配合HuggingFace的Trainer API进行微调。超参数设置learning_rate: 5e-5epochs: 30刻意拉高观察过拟合演化batch_size: 8梯度累计步数2block_size: 128因为平均句长很短对比实验还试了DistilGPT-2和TinyLlama-1.1B但后者显存吃紧且生成速度慢最终放弃。第三步训练过程——Loss曲线会“说谎”3.1 正常训练阶段Epoch 1~10Loss从 3.2 平稳下降至 1.8。此时生成的样本已经能稳定产出“朕”开头、句末带“。”或“”的句子但内容空洞像在随机拼接高频词“朕知你朕亦知你朕不知你。”3.2 风格固化阶段Epoch 11~20Loss降到 0.9 左右。模型开始学会典型句式结构转折连词“然”“虽”“但”评价性后缀“……亦是好事”“……倒也妥当”情绪克制表达“朕未尝不……”“朕岂能……”此时生成的情书已经初具“朕味”但逻辑断裂严重前后句毫无关联。3.3 过度拟合阶段Epoch 21~30Loss降至 0.4 以下验证集我手动留出 10% 的句子困惑度反而上升。这是典型的过拟合——模型开始逐字背诵原台词片段。例如它直接输出了“朕这一生要求的并不多。”—— 这完全是剧中原句。这说明小数据集微调超过15个epoch后创造性让位于记忆性。最终我选用Epoch 17的checkpoint作为最终模型因为此时困惑度最低且生成多样性最高。第四步生成策略——温度系数是“帝王情绪控制器”生成时我采用Top-kk50 Top-pp0.92 温度调节的组合采样而非贪婪搜索。温度系数对“朕”风格的影响极其显著温度生成效果0.7句式规整但过于保守大量重复“朕心”“朕意”0.9最佳区间偶然出现“朕竟有些恍惚”这种带裂隙的句子1.2开始胡言乱语出现“朕要你给朕生一个御膳房”1.5完全失控夹杂数字和标点错乱最终固定温度为0.92并添加repetition_penalty1.15抑制三连重复。第五步情书生成结果——从“圣旨”到“赛博绝恋”我设计了三种不同的prompt前缀即给定的开头几个字让模型续写完整情书。以下是未经任何人工修改的原始输出案例一Prompt “朕念你”“朕念你亦知你心中所虑。朕这一路行来风霜雨雪皆独自担之然今宵见你灯下展卷竟觉前尘皆可谅。朕不许你自轻亦不许你替朕担惊。你且安坐朕自会周全。”评析逻辑意外连贯出现了“风霜雨雪”这种剧中高频意象且“自会周全”完全是雍正口吻。唯一破绽是“今宵”一词在剧中极少出现但整体可打 85 分。案例二Prompt “朕若不得你”“朕若不得你亦不过如常日理万机。然朕夜半批折时总觉砚台凉得快些。朕不曾向任何人提及此事朕亦不会提。你只当朕是胡言但朕既写了便不收回。”评析绝佳“砚台凉得快些”这种物象抒情完全跳脱出训练集的直白风格像是模型自行“迁移”了帝王日常场景到情书语境。最后一句“便不收回”更是十足的傲娇帝王腔。案例三Prompt “朕平生最厌”“朕平生最厌人欺我。唯独你若欺我朕竟不知该降何罪。朕翻遍《大清律例》无一条治得了你。朕很烦。”评析荒诞又可爱。“翻遍《大清律例》”显然是剧中台词“朕翻遍史书”的变体但嫁接给情书后产生了黑色幽默。“朕很烦”三个字更是打破所有古风想象却莫名真实——因为剧中雍正确实常表达“烦闷”。第六步翻车集锦——AI不懂“帝王尊严”并非每次都成功。以下是我收集的典型失败案例均为温度0.92下随机种子生成失败类型生成内容原因分析主语漂移“朕知你亦知皇后她……”训练集中“皇后”出现频率过高模型条件概率被带偏动作脱节“朕要你陪朕用膳再陪朕睡……安”语义完整但“睡”字后强行接“安”暴露分词边界问题数字入侵“朕赏你三百两再加二十七个月亮”训练集中有“赏银千两”但模型将数量词与抽象名词胡乱组合现代词汇“朕觉得你的profile很合适”极少出现推测是预训练GPT-2的残留影响最有趣的一个翻车是“朕准你爱朕不准你爱别人。朕不准就是不准。朕再说一次不准。”——虽然情绪到位但重复“不准”三次且完全没有新的信息增量。这说明模型在不确定如何收尾时会陷入“复读机模式”即使有 repetition_penalty 也无法完全根除。第七步技术反思——小模型风格迁移的得失7.1 做对了什么纯“朕”字筛选比整剧微调更聚焦风格浓度高。不做过度的数据增强如回译、同义词替换因为会稀释帝王用词习惯。多温度采样比单一贪婪解码更适合展现风格边界。7.2 明显缺陷上下文窗口受限GPT-2的512 token上限导致无法生成超过100字的情书会截断或遗忘开头。缺乏情感渐进所有情书都是“平铺式”风格没有从冷淡到动情的层次变化因为训练集中没有“情书”这个体裁的序列结构。事实幻觉模型会杜撰“朕昨夜翻你牌子”这种剧中不存在的场景虽有趣但属于训练不足的产物。7.3 如果重新做我会改进什么改用GPT-2-Medium并增加 LoRA 微调节省显存同时提升长程依赖。加入情感标签控制如[温情][恼怒][隐忍]让生成情书具有多段式情绪变化。引入对抗性判别器用一个二分类模型判断生成句子是否“像剧中原话”以此过滤记忆性输出。第八步最终成品——一封“朕”写给纯元的情书实验的收尾我选取了效果最佳的一个完整生成长文本Prompt “朕昨夜梦及你”仅做标点规范化一字未改“朕昨夜梦及你仍是旧时模样。朕醒后坐至天明不曾唤人。朕知你不在然朕依旧吩咐御膳房备了你爱的藕粉桂花糖糕。朕未食搁着罢了。朕这一生批过无数折子写过无数朱批唯这一封朕不知该寄往何处。朕不寄了。朕就放在案头你知也好不知也罢。”读罢我沉默了片刻。它不像情书更像一份遗诏。但若有人告诉我这是剧中删减片段我或许会信。AI终究没有“情感”但它学会了情感的句式、停顿和空白。而“朕”的语言恰恰最擅长用空白表达一切。附录代码与数据集说明所有代码已上传至 GitHub省略数据集因版权原因仅提供清洗后的zhen_lines.txt共1847行。训练脚本基于 HuggingFace 的run_clm.py修改添加了自定义采样函数和温度扫描工具。若你想复现建议至少训练 5 个不同随机种子的模型因为小模型对初始化极为敏感——有的种子训出来只会生成“朕知道了”无限循环。最后用剧中一句台词作结“朕这一生要求的并不多。”但AI替朕写下的情书却比朕说过的所有话都更像“人”话。这大约是这个时代最温柔的讽刺。如果你自己有电子文档需要在线阅读的需求如果你有word\Excel\ppt文档需要在线阅读的需求如果你希望你的电子文档在手机、平板、电脑阅读时进度同步的需求可以试试【个人文档管理平台】www.mcbook.site一杯奶茶钱就可以成为会员省去了文档在公司/家里/邮箱 传来传去的麻烦。更多技术文章见公众号: 大城市小农民