在完成第三阶段关于小说原始数据清洗、高质量候选样本构建以及ActionParser基础标注体系设计之后,项目整体进入了一个更偏“工程闭环搭建”的阶段。

        相比前期主要围绕数据生成与格式设计,这一周的工作重心明显转向了三个方向:其一是将半自动标注流程真正稳定下来并产出可训练数据,其二是明确多来源数据在微调体系中的分层作用,其三是开始搭建模型训练、评估与版本管理的完整框架,并启动初步的Warmup训练实验


        在数据层面,本阶段最核心的成果是完成了约一千条高质量中文小说ActionParser标注数据的稳定产出。这个过程并不是简单的“把候选数据标一遍”,而是在前一阶段高质量候选基础上,通过半自动标注脚本进一步收敛而来的结果。整体流程依然保持“脚本辅助 + 人工决策”的模式,但在执行方式上做了明显优化。

        半自动脚本的作用不再是大规模筛选,而是更偏向结构化辅助。它会先对小说句段进行统一清洗与结构整理,包括对白识别、动作片段切分以及冗余叙述剔除,然后按照ActionParser既定输出格式生成基础JSON骨架。人工部分则主要集中在语义判断与结构修正上,例如判断某个句子是否真正构成动作、该动作应归属哪一类(如说话、移动、互动或观察),以及目标实体是否需要补全或重新对齐。在这种模式下,最终形成的约一千条数据在结构一致性和语义稳定性上明显优于初版候选数据,也使得整个训练数据体系从“可用”逐步走向“可控”。

{"instruction": "彭德怀对左权说:“把那个临阵脱逃的连长给我抓起来枪毙!”", "output": {"action_type": "speak", "target": "左权", "content": "把那个临阵脱逃的连长给我抓起来枪毙!", "actor": "彭德怀", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_001", "source_sentence_index": 47, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 0, "split_action_index": 0, "original_instruction": "八路军副总司令彭德怀怒气冲天地对副参谋长左权大吼道:“把那个临阵脱逃的连长给我抓起来枪毙!"}}
{"instruction": "李云龙对关大山说:“你算一下,从山坡倾斜处边缘到那个环形工事有80多米,也就是说,咱们的冲击距离有这么长,在这片开阔地上咱们全团会成了小鬼子的活靶子”", "output": {"action_type": "speak", "target": "关大山", "content": "你算一下,从山坡倾斜处边缘到那个环形工事有80多米,也就是说,咱们的冲击距离有这么长,在这片开阔地上咱们全团会成了小鬼子的活靶子", "actor": "李云龙", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_002", "source_sentence_index": 116, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 1, "split_action_index": 0, "original_instruction": "” 在独立团的指挥所里,李云龙对一营营长关大山说:“你算一下,从山坡倾斜处边缘到那个环形工事有80多米,也就是说,咱们的冲击距离有这么长,在这片开阔地上咱们全团会成了小鬼子的活靶子。"}}
{"instruction": "李云龙对赵刚说:“我带突击队先上,你负责殿后,我们打光了你再补上”", "output": {"action_type": "speak", "target": "赵刚", "content": "我带突击队先上,你负责殿后,我们打光了你再补上", "actor": "李云龙", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_003", "source_sentence_index": 131, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 2, "split_action_index": 0, "original_instruction": "李云龙拎着一口磨得飞快的鬼头刀,皮带上插着张着机头的驳壳枪,他一边检查弹夹一边对政委赵刚说:“我带突击队先上,你负责殿后,我们打光了你再补上。"}}
{"instruction": "赵刚对李云龙说:“本来我嘴巴挺干净,自从和你做了搭档,现在也学得满嘴脏话,一张口就骂娘,想想自己都不好意思,这叫他娘的什么与工农相结合?”", "output": {"action_type": "speak", "target": "李云龙", "content": "本来我嘴巴挺干净,自从和你做了搭档,现在也学得满嘴脏话,一张口就骂娘,想想自己都不好意思,这叫他娘的什么与工农相结合?", "actor": "赵刚", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_004", "source_sentence_index": 212, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 3, "split_action_index": 0, "original_instruction": "赵刚总恨恨地对李云龙说:“本来我嘴巴挺干净,自从和你做了搭档,现在也学得满嘴脏话,一张口就骂娘,想想自己都不好意思,这叫他娘的什么与工农相结合?"}}
{"instruction": "李云龙对楚云飞说:“楚兄,你要俘虏吗?”", "output": {"action_type": "speak", "target": "楚云飞", "content": "楚兄,你要俘虏吗?", "actor": "李云龙", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_005", "source_sentence_index": 320, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 4, "split_action_index": 0, "original_instruction": "李云龙微笑着对楚云飞说:“楚兄,你要俘虏吗?"}}
{"instruction": "赵刚对秀芹说:“秀芹同志,我代表全团干部战士向赵家峪妇救会的全体妇女表示感谢,你们做的军鞋真是雪中送炭呀,我们一定要多杀鬼子…”", "output": {"action_type": "speak", "target": "秀芹", "content": "秀芹同志,我代表全团干部战士向赵家峪妇救会的全体妇女表示感谢,你们做的军鞋真是雪中送炭呀,我们一定要多杀鬼子…", "actor": "赵刚", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_008", "source_sentence_index": 599, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 5, "split_action_index": 0, "original_instruction": "赵刚一本正经地对秀芹说:“秀芹同志,我代表全团干部战士向赵家峪妇救会的全体妇女表示感谢,你们做的军鞋真是雪中送炭呀,我们一定要多杀鬼子…"}}
{"instruction": "赵刚对秀芹说:“这第二杯酒,我要代表全团向秀芹同志道歉,今天是你大喜的日子,可我们全团连件像样的衣服都拿不出来,哪个新娘子没件花衣服?”", "output": {"action_type": "speak", "target": "秀芹", "content": "这第二杯酒,我要代表全团向秀芹同志道歉,今天是你大喜的日子,可我们全团连件像样的衣服都拿不出来,哪个新娘子没件花衣服?", "actor": "赵刚", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_009", "source_sentence_index": 806, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 6, "split_action_index": 0, "original_instruction": "赵刚说:“这第二杯酒,我要代表全团向秀芹同志道歉,今天是你大喜的日子,可我们全团连件像样的衣服都拿不出来,哪个新娘子没件花衣服?"}}
{"instruction": "李云龙对孔捷说:“老孔,对不起了,你先委屈一会儿,等我把事干完,要杀要剐随你处置”", "output": {"action_type": "speak", "target": "孔捷", "content": "老孔,对不起了,你先委屈一会儿,等我把事干完,要杀要剐随你处置", "actor": "李云龙", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_011", "source_sentence_index": 1305, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 7, "split_action_index": 0, "original_instruction": "”李云龙不为所动,他翻身上马,冷冷地对孔捷说:“老孔,对不起了,你先委屈一会儿,等我把事干完,要杀要剐随你处置。"}}
{"instruction": "李云龙对田雨说:“小田同志,你不要为难,这种事当然应该两厢情愿”", "output": {"action_type": "speak", "target": "田雨", "content": "小田同志,你不要为难,这种事当然应该两厢情愿", "actor": "李云龙", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_012", "source_sentence_index": 2231, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 8, "split_action_index": 0, "original_instruction": "李云龙拎起背包,朝田雨点点头说:“小田同志,你不要为难,这种事当然应该两厢情愿。"}}
{"instruction": "田雨对李云龙说:“老李,可以把灯关上吗?”", "output": {"action_type": "speak", "target": "李云龙", "content": "老李,可以把灯关上吗?", "actor": "田雨", "need_split": false, "sub_actions": []}, "source": "custom_zh_novel_candidate", "task_family": "zh_novel_action_parsing", "source_meta": {"book": "亮剑_都梁_TXT小说天堂", "collector": "reviewed_high_quality", "candidate_level": "auto_high", "score": 12, "original_id": "liangjian_speak_014", "source_sentence_index": 2470, "review_note": "long_instruction_split_single_action_high_quality", "split_from_record_index": 9, "split_action_index": 0, "original_instruction": "田雨没有吭声,她红着脸顺从地铺好被褥,然后吞吞吐吐地对李云龙说:“老李,可以把灯关上吗?"}}

        在完成中文标注数据收敛之后,我重新梳理了Hermes、SGD以及中文小说标注数据在微调体系中的定位问题。这个阶段的关键变化在于,不再将所有数据简单混合训练,而是明确它们在模型学习过程中的不同功能。

        Hermes数据更多承担的是基础指令对齐的作用,它的价值在于让模型具备稳定的结构化输出能力,也就是在输入任意自然语言时,能够形成相对规范的JSON式响应框架。

        SGD数据则偏向结构化意图与槽位抽取,它强化的是“输入到结构化动作”的映射能力,但其语境仍然偏任务型对话,与小说场景存在明显差异。

        相比之下,中文小说标注数据才是整个StoryVerse ActionParser任务的核心,它直接定义了模型在小说语境下如何理解角色行为、动作边界以及隐含语义,是最终效果上限的决定性因素。

        基于这种分层认知,整个微调体系不再是单一数据混合训练,而是逐步演化为一个分阶段对齐结构:先用通用指令数据建立格式能力,再用结构化任务数据强化映射能力,最后用中文小说数据完成领域对齐。


        在数据体系逐渐清晰的同时,我也对模型目录结构进行了重新整理,以确保后续训练过程中的权重、数据与实验版本能够严格对应,避免出现实验不可复现或模型版本混乱的问题。当前整个项目在/root/storyverse路径下已经形成相对清晰的分层结构,包括基础模型目录、微调模型目录、训练过程checkpoint存储目录以及数据处理后的不同阶段输出目录。

        其中基础模型统一存放在models/base下,用于作为所有实验的起点;微调后的模型结果进入models/finetune;训练过程中的中间权重则保存在checkpoints目录中。数据层面则按照raw、processed与annotated进行阶段划分,使原始数据、清洗数据与标注数据之间的关系完全可追溯。这种结构的意义不仅在于管理便利,更重要的是为后续多轮实验对比提供了基础条件,使得不同训练策略可以在同一体系下进行公平比较。


        在数据准备完成之后,我对中文标注数据进行了标准化划分,将其划分为训练集、验证集和测试集,并在划分过程中尽量避免简单随机切分,而是结合小说来源和情节连续性进行处理,防止同一情节信息泄漏到不同数据集合中。

        在划分完成后,我对数据分布进行了自检分析,主要关注动作类型分布角色交互类型分布以及场景覆盖情况。从结果来看,整体数据分布保持相对稳定,其中说话类动作占比最高,这是小说文本本身的自然结果;交互与移动类动作分布较为均衡;观察类动作数量相对较少,但在信息密度上具有较高价值。更重要的是,训练集、验证集与测试集在整体分布上没有出现明显偏移,这说明当前划分方式在统计意义上是合理的,可以支撑后续模型评估。


        在进入正式训练之前,我也同步建立了ActionParser的评估指标体系,用于后续微调效果的量化分析。相比传统分类任务,本项目的评估指标不仅关注动作类型是否正确,还额外加入了结构合法性与语义一致性两个维度。其中动作分类准确率用于衡量模型是否正确识别行为类型,实体抽取F1用于评估角色与目标对象识别能力,而结构合法率则用于检查输出JSON是否符合规范格式,语义一致性则用于判断输入输出之间的逻辑匹配程度。

        在这一指标体系建立完成之后,我对当前基座模型在ActionParser任务上的表现进行了基线评测

        从结果来看,未经微调的模型在该任务上存在明显不足,尤其是在动作分类方面容易集中预测为通用“说话”类型,缺乏对复杂行为的区分能力;实体抽取能力也不稳定,经常出现遗漏或泛化;同时在结构输出上偶尔会出现格式不完整的问题。这些结果说明,基座模型本身并不具备直接适配小说动作解析任务的能力,必须依赖专门数据进行领域微调


        在训练准备阶段,我还对Hermes和SGD数据进行了重新抽取与版本对齐处理,使其在字段结构和输出格式上完全对齐当前ActionParser定义。这一步的核心目的并不是增加数据量,而是确保不同来源数据在进入训练阶段时不会产生格式冲突,从而影响模型学习稳定性。同时,这一版本对齐也为后续分阶段训练提供了基础,使得不同数据源可以在不同训练阶段中被合理调用,而不是混合使用导致学习目标模糊。


        在训练策略设计上,本阶段重点构建了两阶段Warmup方案。第一阶段主要使用Hermes与SGD数据进行通用对齐训练,目标是让模型先具备稳定的结构化输出能力,并初步形成从自然语言到JSON动作表示的映射能力。这一阶段更强调格式稳定性和收敛速度,因此学习率相对较低,训练目标也更偏基础能力建立。

        在第一阶段完成之后,第二阶段切换至中文小说标注数据进行领域强化训练,这一阶段的重点不再是结构稳定,而是提升模型对小说语境中复杂行为的理解能力,包括隐含动作识别、角色交互解析以及语义边界判断等能力。通过这种分阶段训练方式,可以在一定程度上避免模型直接进入复杂语境时出现不收敛或学习混乱的问题。


        总体来看,第四节的工作标志着StoryVerse项目从“数据构建阶段”正式进入“训练体系搭建阶段”。在这一阶段中,不仅完成了约一千条高质量中文标注数据的稳定生产,还逐步建立了多源数据分层机制、模型目录管理体系、数据划分与自检流程、评估指标体系以及两阶段Warmup训练策略。这些内容共同构成了ActionParser从数据到模型的完整闭环基础,也为后续正式微调和效果优化奠定了结构化支撑。

        接下来的工作将进一步围绕Warmup评测结果展开,以及正式微调阶段的参数优化,使模型在中文小说交互场景中的表现进一步稳定和提升。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐