news 2026/10/17 10:31:58

如何调用GLiNER2.5-Decide对fast-decisions做分类推理:候选标签原样传入的完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何调用GLiNER2.5-Decide对fast-decisions做分类推理:候选标签原样传入的完整教程

【免费下载链接】fast-decisions

项目地址:https://ai.gitcode.com/hf_mirrors/fastino/fast-decisions
点击查看免费下载

fast-decisions 是专为 GLiNER2.5-Decide 打造的分类决策数据集:17 个业务域、每域一个 JSONL 文件、共 1,700 条样本。每一行都是"自由文本 + 候选标签 + 金标答案",一行文本可以携带多个决策头(task head)。本教程从加载数据开始,带你完整走通调用 GLiNER2.5-Decide 做分类推理的全流程,并重点讲清一条核心纪律——候选标签必须原样传入。

1. 认识数据集:17 个业务域,每域一个文件

📦 fast-decisions 不是通用推理考题,而是一组产品必须做的操作性分类决策:客户意图、银行意图、邮件分诊、工单路由、诊所未决、评论情感、文档类型等。

  • 输入:input字段,纯自由文本(带[channel]、[body]等上下文前缀)
  • 输出:output.classifications,一个"决策头"列表,一行可以包含多个头
  • 候选标签:每个头的labels字段,即完整候选集;true_label是金标答案,永远是字符串列表(单标签头也是单元素列表)
关键信息内容
域数量17 个开发域,每域 100 条,共 1,700 行
文件格式JSONL,每行一个样本
评测口径官方测试集(每域 300 条)已保留(held out),本仓库文件仅用于开发
许可证Apache 2.0

每个决策头有哪些候选标签,完整清单见 README.md 的 "Task heads and label sets" 一节。

2. 一步加载数据:用 datasets 库

2.1 加载单个域

from datasets import load_dataset ds = load_dataset("fastino/fast-decisions", "support_intent", split="train")

2.2 加载全部 17 个域

from datasets import load_dataset, concatenate_datasets domains = ["support_intent", "support_topic", "document_type", "review_sentiment", "agent_handoff", "email_triage", "ticket_route", "product_feedback", "banking_intent", "clinic_request", "travel_request", "news_topic", "paper_field", "sports_recap", "restaurant_review", "benefits_request", "screen_tags"] all_ds = concatenate_datasets([ load_dataset("fastino/fast-decisions", name, split="train") for name in domains ])

config 名与文件名一一对应:support_intent对应 support_intent.jsonl,product_feedback对应 product_feedback.jsonl 等。每个文件的第一行就是一个完整样本,可直接在仓库中浏览,例如 email_triage.jsonl(一行邮件要同时做出 4 个决策)。

2.3 想本地浏览数据?clone 仓库即可

git clone https://gitcode.com/hf_mirrors/fastino/fast-decisions

3. 调用 GLiNER2.5-Decide 做分类推理

3.1 加载模型

from gliner2 import AutoExtractor model = AutoExtractor.from_pretrained("fastino/GLiNER2.5-Decide")

处理英文文本用fastino/GLiNER2.5-Decide;非英文文本请改用多语言版GLiNER2.5-multi-Decide,加载方式完全一致(见 README.md)。

3.2 核心调用:classify_text

签名非常简单——第一个参数是文本,第二个参数是"任务名 → 候选标签"的字典:

row = ds[0] head = row["output"]["classifications"][0] pred = model.classify_text(row["input"], {head["task"]: head["labels"]}) print(pred[head["task"]])

3.3 核心纪律:候选标签原样传入

⚠️labels是该决策头的完整候选集,调用时务必原样透传,这是本数据集最重要的使用约定(README.md 明确要求 "pass it to your model as-is"):

  1. 不要从候选集里剔除金标——那等于泄漏答案,评测分数会虚高;
  2. 不要随意增删、改序或"精简"候选集——模型就是在这套集合上训练和评测的;
  3. 不要跨头混用候选集——一行可能有多个头,每个头有各自的labels,字典的 key 必须与task名严格对应;
  4. 推理时不要自行替换成你业务里的标签,除非你已自行微调。

单标签头返回一个字符串,多标签头返回列表。例如 product_feedback.jsonl 中的product_area头标记了multi_label: true,金标答案可以是多个产品区域的列表。

4. 精确匹配评测:跑官方评测循环

官方口径是精确匹配(exact match):预测集合与金标集合逐一比对,单标签头按字符串、多标签头按列表,统一转成排序集合后比较。完整评测循环如下:

hits = total = 0 for row in ds: for head in row["output"]["classifications"]: pred = model.classify_text(row["input"], {head["task"]: head["labels"]}) got = pred[head["task"]] if isinstance(got, str): got = [got] elif isinstance(got, dict): got = [got["label"]] hits += sorted(got) == sorted(head["true_label"]) total += 1 print(hits / total)

这正是 README.md 给出的评测代码,可原样复制到任何域的数据集上运行。

5. 分类推理的 3 个常见坑

  1. 有序标签是字符串数字:0–5、0–10 这类有序头用"3"而不是整数3,不要自行做类型转换。
  2. true_label永远是列表:单标签头也是["refund_request"],比较时先归一成列表,别直接写==字符串。
  3. 本仓库的分数不能当基准:仓库内是开发集(每域 100 条),官方测试集(每域 300 条)被保留。不要把在本仓库文件上跑出的分数作为 benchmark 对外报告(README.md 特别强调)。参考:GLiNER2.5-Decide 在保留测试集上的平均精确匹配为 60.2%,位列参评模型第一,详见 README.md。

6. 常见问题(FAQ)

Q:一行有多个决策头,怎么推理?A:按评测循环的方式逐个头处理——遍历row["output"]["classifications"],为每个头用各自的task名和labels构造字典后调用classify_text。

Q:某头的候选标签全集在哪里查?A:README.md 列出了全部 17 个域、每个头的完整标签集,推理时直接使用这些字符串作为候选集。

Q:数据可以用来微调吗?A:可以。本仓库提供的是开发集(dev split),适合开发与调优;项目方提供 Fastino 平台来微调和部署 GLiNER2.5,多语言场景可关注GLiNER2.5-multi-Decide。

Q:多标签头和单标签头的返回有什么不同?A:单标签头返回字符串(如refund_request),多标签头返回列表(如["kids", "drama"],见 screen_tags.jsonl)。评测时统一按集合精确匹配。

【免费下载链接】fast-decisions

项目地址:https://ai.gitcode.com/hf_mirrors/fastino/fast-decisions
点击查看免费下载
上一篇:OpenSpace 数据服务层实战:基于>下一篇:eslint-plugin-unicorn 快照测试解读:no-xor-as-exponentiation 规则如何拦截误把位异或当乘方的写法

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 10:28:21

Qwen Code 安装使用全流程:把 settings 改到 TaoToken 的配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 10:27:24

SSD在分布式存储中的底层原理与实战运维指南

1. 为什么今天还要重聊SSD——分布式存储里那块“不声不响却总在扛压”的硬盘你有没有遇到过这样的场景:某次集群扩容后,读写延迟突然从2ms跳到18ms,监控图上IOPS曲线像心电图一样乱颤;运维同事反复确认网络没丢包、CPU负载正常、…

作者头像 李华
网站建设 2026/10/17 10:24:38

OpenClaw 核心优势与好处:本地部署 AI 代理框架的配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 10:23:02

超市智能商品推荐系统设计:从POS小票到关联规则实战

上周去某家社区超市结账,收银员递给我一张打印小票,底部多了一行字:“您常买的某品牌鲜牛奶下周有促销,搭配全麦面包更划算”。我愣了一下——这家店什么时候开始懂我了?后来一问才知道,他们用一套上线不到…

作者头像 李华