GLiNER2多任务Schema实战:一次前向传播同时完成5类抽取任务
GLiNER2多任务Schema实战一次前向传播同时完成5类抽取任务【免费下载链接】GLiNER2Unified Schema-Based Information Extraction项目地址: https://gitcode.com/gh_mirrors/gl/GLiNER2GLiNER2 是一个 Schema 驱动的统一信息抽取框架能在一次前向传播中同时完成实体抽取、文本分类、结构化记录、关系抽取与片段属性标注 5 类任务。传统做法要为每类任务部署一个模型、跑一遍管线而 GLiNER2 只需用一个 Schema 声明所有任务调用一次extract()即可拿到全部结果推理成本几乎不随任务数增加且支持纯 CPU 本地运行。为什么需要一次前向传播做多任务常见的信息抽取管线通常这样工作跑一遍 NER 模型抽实体跑一遍分类模型判情感跑一遍 JSON 抽取模型解析字段……再跑一遍关系抽取每一遍都要把文本重新编码一次模型越多延迟越高、维护成本越大。GLiNER2 的思路是Schema 条件化schema-conditioned所有任务共用同一个 DeBERTa-v3 编码器任务类型实体、标签、字段、关系被编码为查询条件注入同一次前向传播。换句话说5 个任务共享同一次文本编码这就是一次前向传播的含义。5 类任务一览任务Schema 方法典型场景实体抽取.entities()人名、公司、产品、日期文本分类.classification()情感、意图、文档类型支持多标签结构化抽取.structure()发票字段、订单信息、病历条目关系抽取.relations()A 就职于 B这类头尾实体对片段属性.entity_attributes()给抽出的产品片段单独标注情感上图展示了配合 GLiNER2 使用的微调与部署界面上传训练数据、选择模型、一键训练后即可在本地或服务端推理。快速上手3 步完成多任务抽取安装带本地推理的完整包需 Python 3.10pip install gliner2[local]第 1 步加载模型。AutoExtractor会根据检查点自动选择 spanGLiNER2或 boundaryGLiNER2.5架构from gliner2 import AutoExtractor, AttributeGroup extractor AutoExtractor.from_pretrained(fastino/gliner2.5-base-v1)第 2 步用一个 Schema 声明全部 5 类任务。链式调用即可详见 tutorial/4-combined.mdschema ( extractor.create_schema() # ① 文本分类 .classification(sentiment, [positive, negative, neutral]) # ② 实体抽取 .entities([person, product, company]) # ③ 片段属性只给 product 标注情感 .entity_attributes({ span_sentiment: AttributeGroup( [positive, negative, neutral], applies_to[product], qualify_labelsTrue, ) }) # ④ 关系抽取 .relations([works_for]) # ⑤ 结构化抽取 .structure(order_info) .field(order_number, dtypestr) .field(amount, dtypestr) .field(status, dtypestr, choices[pending, shipped, delivered]) )第 3 步一次调用全部返回。text (Tim Cook works for Apple. I ordered an iPhone for $999, status is shipped. Great camera, disappointing battery.) result extractor.extract( text, schema, include_confidenceTrue, # 每个结果带置信度 include_spansTrue, # 每个片段带 [start, end) 字符位置 )返回是一个字典5 类任务的结果并列其中sentiment给出文档级情感entities按类型分组span_sentiment挂在对应 product 片段上relation_extraction给出 works_for 的头尾对order_info给出结构化的字段值。3 个实用技巧1. 用描述提升抽取精度实体类型可以写成{类型名: 描述}的形式描述会被编码进 Schema 查询显著提升歧义场景的准确率。例如把medication: 药品或药物名称作为实体定义比裸词medication更稳。2. 片段属性 ≠ 文档分类一篇评测可以整体中性但其中 iPhone 摄像头是正面、电池是负面。文档级情感用.classification()片段级情感用.entity_attributes()两者可以共存于同一个 Schema。更多细节见 tutorial/13-span_attributes.md。3. 长文档与批量处理文本超过模型窗口时用extract_long()/batch_extract_long()它会自动按重叠分块、把片段位置映射回原文并合并重叠区的重复结果。多个文档则用batch_extract()还可以为每条文档指定不同的 Schema。进阶需要全局一致的关系图时用 JointIE上面第 ④ 类的关系抽取是独立解码——关系和实体分别打分无法保证works_for的头一定是 person、尾一定是 organization也无法限制每个人最多一个雇主。如果这类约束对业务很重要升级到JointIE它在候选分数之上做带约束的图搜索保证整张关系图全局满足你声明的类型端点、唯一性、无自环、无环等硬约束。完整用法见 tutorial/15-joint_ie.md。相关文档与源码多任务组合详解含发票、医疗、法律等完整 Schema 示例tutorial/4-combined.md片段属性教程tutorial/13-span_attributes.md联合信息抽取带约束关系图tutorial/15-joint_ie.md训练数据格式与微调教程tutorial/8-train_data.md、tutorial/9-training.mdSchema 构建器源码gliner2/inference/schema.py抽取运行时extract/extract_long实现gliner2/inference/runtime.py小结你的需求推荐做法多种抽取任务并行、省延迟一个组合 Schema extract()只抽实体/只分类直接用extract_entities()/classify_text()简写 API关系必须满足类型与数量约束JointIE 约束 Schema中文等无空格语言加载时指定word_splitterchar隐私敏感场景本地 CPU 推理零外部依赖GLiNER2 把多个模型、多次编码压缩成一个 Schema、一次前向传播是构建统一信息抽取管线的高效选择。【免费下载链接】GLiNER2Unified Schema-Based Information Extraction项目地址: https://gitcode.com/gh_mirrors/gl/GLiNER2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考