资讯详情

资讯详情

GLiNER2 训练数据 JSONL 格式全解析:校验工具指南与 6 大常见坑

GLiNER2 训练数据 JSONL 格式全解析校验工具指南与 6 大常见坑【免费下载链接】GLiNER2Unified Schema-Based Information Extraction项目地址: https://gitcode.com/gh_mirrors/gl/GLiNER2GLiNER2 是一个统一的信息抽取框架一套 schema 同时支持实体识别NER、文本分类、结构化数据抽取与关系抽取。要把模型微调到位训练数据的质量是成败关键——这篇文章带你吃透 GLiNER2 训练数据的JSONL 格式规范介绍内置的校验工具并整理出6 个新手最容易踩的坑帮助你一次跑通训练。一图看懂GLiNER2 训练数据的四大任务GLiNER2 的统一体现在同一个 JSONL 文件可以混合标注四类任务模型在一次前向传播中同时学会它们。任务字段键名一句话说明实体识别entities抽取人名、公司、地点等文本片段文本分类classifications给文本打标签单标签/多标签结构化抽取json_structures抽取固定字段的记录如订单、联系人关系抽取relations抽取实体之间的语义关系完整的字段定义可查阅官方数据格式文档 tutorial/8-train_data.md。JSONL 通用结构一行一个样本训练文件是标准的JSONL每行一个 JSON 对象UTF-8编码。核心是两个字段input待处理的原始文本output标注好的 schema含上面四类任务的任意组合 小贴士项目同时兼容text/schema两种等价键名你可以按需选用二者完全等价。一条最简的实体识别样本长这样{input: John works at Google in California., output: {entities: {person: [John], company: [Google], location: [California]}}}四大任务字段速查表字段类型必填说明entitiesdict[类型, 提及列表]否实体类型 → 该类型下的所有文本片段entity_descriptionsdict[类型, 描述]否给实体类型加自然语言描述可提升效果classificationslist[dict]否分类任务列表json_structureslist[dict]否结构化记录列表json_descriptionsdict[parent, dict[field, 描述]]否给结构字段加描述relationslist[dict]否关系抽取列表⚠️关键规则一条样本至少要包含一个非空任务。四类任务全部为空{entities: {}, classifications: [], ...}会被校验直接判为无效。分类任务示例多标签需显式声明multi_label{input: 这款手机拍照很棒但续航一般。, output: {classifications: [{task: aspects, labels: [camera, battery, screen], true_label: [camera, battery], multi_label: true}]}}关系任务示例head/tail是最常用写法也可自定义字段名{input: John works for Microsoft., output: {relations: [{works_for: {head: John, tail: Microsoft}}]}}校验工具三步检查你的训练数据数据类全部集中在 gliner2/training/data.py核心是TrainingDataset。三步走即可让数据先体检、再训练。第 1 步加载并严格校验from gliner2.training.data import TrainingDataset dataset TrainingDataset.load(train.jsonl) report dataset.validate(raise_on_errorFalse) print(f有效: {report[valid]}无效: {report[invalid]})validate()见 data.py#L1058-L1100会逐条检查默认就是严格模式实体提及、关系值、结构字段值都必须能在原文中找到大小写不敏感的子串匹配。第 2 步检查关系字段一致性errors dataset.validate_relation_consistency()该方法见 data.py#L1102-L1116确保同一种关系类型在所有样本里字段名完全一致——这是新手高频翻车点。第 3 步查看数据集统计dataset.print_stats()print_stats()见 data.py#L1186-L1226输出实体类型分布、标签分布、文本长度统计帮你快速发现标注不均衡。 容错加载TrainingDataset.load(path, on_errorskip)可跳过坏行并把它们记入skipped_lines见 data.py#L1246-L1310适合处理99% 干净的历史数据。6 大常见坑与避坑清单坑 1标注的值凭空出现不在原文里严格校验要求实体、关系值、结构字段值必须真实出现在input中。写person: [John Smith]但原文只有John整条记录会被判无效。这是被丢弃样本的头号原因。坑 2同种关系字段结构不一致关系类型以首次出现的字段名定义结构之后所有同类型实例必须沿用。前一条works_for用head/tail后一条突然多一个rolevalidate_relation_consistency()就会报错。坑 3一条样本没有任何任务output里entities、classifications、json_structures、relations全空 → 校验失败。即使是负例也要至少保留一个非空任务。坑 4true_label字符串 vs 列表 / 漏写multi_label单标签下true_label: positive和[positive]都可但多标签时若漏写multi_label: true会触发校验错误见Classification.validate()data.py#L417-L437。坑 5input/output与text/schema混用两种键名都支持但不要在同一份文件里混着用保持统一可减少解析歧义。加载器按首行自动判定格式data.py#L288-L313。坑 6编码 / 空行 / 非法 JSON文件必须UTF-8编码每行都必须是合法 JSONJSONL 不支持尾逗号空行会被自动忽略。加载阶段任一坏 JSON 都会抛出带行号的ValueErrordata.py#L251-L257。训练前的校验清单 ✅提交训练前逐条对照每行都是合法 JSON无尾逗号统一使用input/output或text/schema每条样本至少一个非空任务实体/关系/结构字段值都能在原文中找到同种关系类型字段名一致多标签任务已声明multi_label: true文件为 UTF-8 编码相关文件与延伸阅读数据格式总规范tutorial/8-train_data.md训练流程与配置tutorial/9-training.md数据类源码InputExample/TrainingDataset/ 校验逻辑gliner2/training/data.py推理侧正则校验器RegexValidatortutorial/5-validator.md目标图结构校验validate_target_graphgliner2/processing/validation.py 一句话总结先用TrainingDataset.loadvalidate()print_stats()给数据做体检再开训就能避开绝大多数标注错配导致的无效训练。【免费下载链接】GLiNER2Unified Schema-Based Information Extraction项目地址: https://gitcode.com/gh_mirrors/gl/GLiNER2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →