Huashu Design
alchaincyf · 技能
把你在 AI 智能体里写的一句话需求,变成一份完成的设计:发布动画、可点击的应用原型、可编辑的幻灯片、信息图,或一组小红书图片。可在多种智能体中使用。
按你用简短指令描述的字段,从文本里抽取答案,比如发票号或公司名,并返回匹配的片段。一个 150M 模型同时覆盖抽取式问答和实体识别。
UltraBERT-150M-clairic-extraction 是一款工具包,属于开发类,由 Mindket 上架。可免费获取。当前为第 1 版,最近更新于 。在本页下载,是一个装着它全部文件的 zip 压缩包。这些文件不会自己运行。
pip install -U huggingface_hub hf download tasksource/UltraBERT-150M-clairic-extraction
UltraBERT-150M-clairic-extraction 是建立在 UltraBERT-150M 之上的 150M 参数抽取模型。你给它一段文本和一组字段,每个字段带一条简短指令,它就返回回答每个字段的片段。一个字段可能返回一个答案、一个列表,或者什么都没有。
字段可以是问题,也可以是实体类型,所以一个模型同时覆盖抽取式问答和命名实体识别。它在指令的引导下,把文本里的答案词标成 B、I 或 O,可处理最长 2048 个 token 的输入。
需要从英文文本里取出结构化数据、比如发票或笔记,又不想运行生成自由文本的语言模型的开发者。想试试指令引导的片段标注的 NLP 研究人员也适合。
| 行业 | 谁在用 | 怎么用 | 例子 |
|---|---|---|---|
| 财务与行政 | 后台团队 | 从文本里取出发票号和总额 | 询问应付总金额 |
| 软件 | 开发者 | 用一个模型取代单独的问答和实体模型 | 询问文本里提到的每家公司 |
| 研究 | NLP 研究人员 | 研究指令引导的片段标注 | 用你自己标注的文本来测试它 |
需要生成摘要或改写文本的人可以略过它,因为它只返回取自原文的片段。
| 使用场景 | 谁用 | 得到什么 |
|---|---|---|
| 从文档里抽取字段 | 开发者 | 每个字段对应的匹配片段列表 |
| 针对文本的问答 | 分析人员 | 回答每个问题的片段,或者一个空列表 |
| 实体列举 | NLP 团队 | 你所描述类型的每个实体,按原文写法 |
你需要装有 PyTorch 和 transformers 的 Python。
pip install -U huggingface_hub hf download tasksource/UltraBERT-150M-clairic-extraction
你传入一段文本和一个字典,字典把每个字段名映射到一条指令。指令可以是问题,也可以是实体类型。模型卡里的辅助函数会把模型的标签变成片段。
import torch
from transformers import AutoModelForTokenClassification, AutoTokenizer
name = "tasksource/UltraBERT-150M-clairic-extraction"
tok = AutoTokenizer.from_pretrained(name)
model = AutoModelForTokenClassification.from_pretrained(name, trust_remote_code=True).eval()
def extract(text, fields):
"""fields: {name: instruction}. Returns {name: [extracted spans]}, [] when the text has no answer."""
enc = tok(list(fields.values()), [text] * len(fields), truncation="only_second", max_length=2048,
padding=True, return_offsets_mapping=True, return_tensors="pt")
offsets = enc.pop("offset_mapping")
with torch.no_grad():
tags = model(**enc).logits.argmax(-1).tolist() # 0 = O, 1 = B, 2 = I
out = {}
for f, field in enumerate(fields):
spans, start, seq = [], None, enc.sequence_ids(f) + [None]
for i, tag in enumerate(tags[f] + [0]):
if start is not None and (seq[i] != 1 or tag != 2):
spans.append(text[offsets[f][start][0]:offsets[f][i - 1][1]].strip().rstrip(",;:"))
start = None
if seq[i] == 1 and tag in (1, 2) and start is None:
start = i
out[field] = spans
return out
text = "Invoice INV-2291 from Acme Corp to Globex, issued 3 March 2025. Total due: $1,240.50. Contact: billing@acme.com."
print(extract(text, {
"invoice_number": "The invoice number.",
"companies": "Every company mentioned in the text, as written.",
"total": "The total amount due.",
"phone": "The contact phone number.",
}))
# {'invoice_number': ['INV-2291'], 'companies': ['Acme Corp', 'Globex'], 'total': ['$1,240.50'], 'phone': []}模型卡还提供了一个 int8 ONNX 导出文件,大小 204 MB,而 fp32 是 604 MB。它接收 input_ids 和 attention_mask,返回 O、B、I 三类的 logits。构造它的输入时,依次放 endoftext 标记、指令、sep 标记,再放文本。
| 工具 | 作用 |
|---|---|
| extract | 模型卡里的辅助函数,把模型的标签变成每个字段的片段 |
| AutoModelForTokenClassification | 加载抽取模型,要把 trust_remote_code 设为 True |
| onnx/model_quantized.onnx | 供 Python 或浏览器里的 onnxruntime 使用的 int8 导出文件 |
你传入一句关于发票的话,询问发票号、提到的每家公司、应付总额和一个电话号码。它返回每个字段找到的片段。文本里没有号码时,电话字段会返回空列表。
可以把它看作会听指令的荧光笔。你告诉它要找什么,它就在文本里标出匹配的词。第一次尝试可以用上面的示例脚本,配上你自己的短文本。
从底层看,它是 UltraBERT-150M 在类型化决策数据集的抽取部分上训练出来的,其中的问答和片段标注数据被改写成了指令、文本和片段三元组。ONNX 文件把线性层权重量化到每 32 个一块 8 位,普通的动态 int8 会让模型失效,所以请用模型卡里的文件。
模型卡在每个来源 20 行的小型评测里,把 ONNX 文件和 PyTorch 做了比较。两者的标签在 99.6% 的 token 上一致。
按你用简短指令描述的字段,从文本里抽取答案,比如发票号或公司名,并返回匹配的片段。一个 150M 模型同时覆盖抽取式问答和实体识别。
由 tasksource 在 Hugging Face 上制作。这些说明是 Mindket 根据它的模型页面和模型卡写的,模型自己的文件和许可证在 Hugging Face 上。
它是什么:UltraBERT-150M-clairic-extraction 是建立在 UltraBERT-150M 之上的 150M 参数抽取模型。你给它一段文本和一组字段,每个字段带一条简短指令,它就返回回答每个字段的片段。一个字段可能返回一个答案、一个列表,或者什么都没有。
字段可以是问题,也可以是实体类型,所以一个模型同时覆盖抽取式问答和命名实体识别。它在指令的引导下,把文本里的答案词标成 B、I 或 O,可处理最长 2048 个 token 的输入。
适合谁:需要从英文文本里取出结构化数据、比如发票或笔记,又不想运行生成自由文本的语言模型的开发者。想试试指令引导的片段标注的 NLP 研究人员也适合。
行业 | 谁在用 | 怎么用 | 例子
财务与行政 | 后台团队 | 从文本里取出发票号和总额 | 询问应付总金额
软件 | 开发者 | 用一个模型取代单独的问答和实体模型 | 询问文本里提到的每家公司
研究 | NLP 研究人员 | 研究指令引导的片段标注 | 用你自己标注的文本来测试它
需要生成摘要或改写文本的人可以略过它,因为它只返回取自原文的片段。
用在哪里:
使用场景 | 谁用 | 得到什么
从文档里抽取字段 | 开发者 | 每个字段对应的匹配片段列表
针对文本的问答 | 分析人员 | 回答每个问题的片段,或者一个空列表
实体列举 | NLP 团队 | 你所描述类型的每个实体,按原文写法
如何设置:你需要装有 PyTorch 和 transformers 的 Python。
pip install -U huggingface_hub
hf download tasksource/UltraBERT-150M-clairic-extraction
如何使用:你传入一段文本和一个字典,字典把每个字段名映射到一条指令。指令可以是问题,也可以是实体类型。模型卡里的辅助函数会把模型的标签变成片段。
import torch
from transformers import AutoModelForTokenClassification, AutoTokenizer
name = "tasksource/UltraBERT-150M-clairic-extraction"
tok = AutoTokenizer.from_pretrained(name)
model = AutoModelForTokenClassification.from_pretrained(name, trust_remote_code=True).eval()
def extract(text, fields):
"""fields: {name: instruction}. Returns {name: [extracted spans]}, [] when the text has no answer."""
enc = tok(list(fields.values()), [text] * len(fields), truncation="only_second", max_length=2048,
padding=True, return_offsets_mapping=True, return_tensors="pt")
offsets = enc.pop("offset_mapping")
with torch.no_grad():
tags = model(**enc).logits.argmax(-1).tolist() # 0 = O, 1 = B, 2 = I
out = {}
for f, field in enumerate(fields):
spans, start, seq = [], None, enc.sequence_ids(f) + [None]
for i, tag in enumerate(tags[f] + [0]):
if start is not None and (seq[i] != 1 or tag != 2):
spans.append(text[offsets[f][start][0]:offsets[f][i - 1][1]].strip().rstrip(",;:"))
start = None
if seq[i] == 1 and tag in (1, 2) and start is None:
start = i
out[field] = spans
return out
text = "Invoice INV-2291 from Acme Corp to Globex, issued 3 March 2025. Total due: $1,240.50. Contact: billing@acme.com."
print(extract(text, {
"invoice_number": "The invoice number.",
"companies": "Every company mentioned in the text, as written.",
"total": "The total amount due.",
"phone": "The contact phone number.",
}))
# {'invoice_number': ['INV-2291'], 'companies': ['Acme Corp', 'Globex'], 'total': ['$1,240.50'], 'phone': []}
模型卡还提供了一个 int8 ONNX 导出文件,大小 204 MB,而 fp32 是 604 MB。它接收 input_ids 和 attention_mask,返回 O、B、I 三类的 logits。构造它的输入时,依次放 endoftext 标记、指令、sep 标记,再放文本。
工具 | 作用
extract | 模型卡里的辅助函数,把模型的标签变成每个字段的片段
AutoModelForTokenClassification | 加载抽取模型,要把 trust_remote_code 设为 True
onnx/model_quantized.onnx | 供 Python 或浏览器里的 onnxruntime 使用的 int8 导出文件
示例:你传入一句关于发票的话,询问发票号、提到的每家公司、应付总额和一个电话号码。它返回每个字段找到的片段。文本里没有号码时,电话字段会返回空列表。
新手与专家:可以把它看作会听指令的荧光笔。你告诉它要找什么,它就在文本里标出匹配的词。第一次尝试可以用上面的示例脚本,配上你自己的短文本。
从底层看,它是 UltraBERT-150M 在类型化决策数据集的抽取部分上训练出来的,其中的问答和片段标注数据被改写成了指令、文本和片段三元组。ONNX 文件把线性层权重量化到每 32 个一块 8 位,普通的动态 int8 会让模型失效,所以请用模型卡里的文件。
给出文本和带指令的字段
把每条指令和文本配成一对
模型把答案词标成 B、I 或 O
从文本 token 上读出片段
注意事项:模型卡在每个来源 20 行的小型评测里,把 ONNX 文件和 PyTorch 做了比较。两者的标签在 99.6% 的 token 上一致。
Title: 模型卡评测里的 F1
问答 F1,ONNX int8: 0.730
问答 F1,PyTorch fp16: 0.728
列表 F1,ONNX int8: 0.701
列表 F1,PyTorch fp16: 0.700
用 Hugging Face 的命令行下载它的文件:
pip install -U huggingface_hub
hf download tasksource/UltraBERT-150M-clairic-extraction
然后按它的模型卡使用它。这个工具包里没有会自己运行的东西。
README.md 8 KB
同一分类里与本产品共有标签最多的已上架 Hugging Face 模型。
| 产品 | 最近 30 天下载 | 点赞 | 参数量 | 许可证 | 最近更新 |
|---|---|---|---|---|---|
| UltraBERT-150M-clairic-extraction 本页 | 138 | 5 | 151M | apache-2.0 | |
| bert-base-NER共有 token-classification · onnx · transformers | 1,038,928 | 750 | 108M | mit | |
| OpenAI Privacy Filter共有 token-classification · onnx · transformers | 102,911 | 1,831 | 1.4B | apache-2.0 | |
| cbx-indic-pii-extractor-58M共有 token-classification · onnx · safetensors | 96 | 4 | 57.6M | apache-2.0 | |
| cbx-indic-pii-extractor-17M共有 token-classification · onnx · safetensors | 76 | 3 | 16.7M | apache-2.0 | |
| AstrLink Guard共有 token-classification · onnx | 408 | 29 | — | apache-2.0 |
alchaincyf · 技能
把你在 AI 智能体里写的一句话需求,变成一份完成的设计:发布动画、可点击的应用原型、可编辑的幻灯片、信息图,或一组小红书图片。可在多种智能体中使用。
op7418 · 技能
能生成单文件 HTML 幻灯片、幻灯片配图和多平台封面的技能,有两套视觉风格,还带演讲者模式用于排练。适合使用 Claude Code 或 Codex 的演讲者。
alirezarezvani · 技能
为 Claude Code 和其他编程智能体提供 411 个现成技能,按角色分组,从工程、产品到营销、财务和合规。以插件方式安装。适合开发者和业务团队。
block · 工具包
可自行托管的工作空间,人和 AI 智能体在同样的房间里协作,基于 Nostr 中继,把每个动作记录为签名事件。适合想自己运行中继的团队。
backnotprop · 工具包
把你的 AI 编程智能体的计划、规格和代码改动在浏览器里打开,让你加批注或评论,并把反馈直接发回给智能体。
alibaba · 工具包
用 AI 智能体审查 Git 改动:它会读取文件、搜索代码库,再写出对应到具体行的审查意见。适合想在命令行里自动做代码审查的开发者。