You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Transformers Pipeline获取输入文本与NER结果配对?

实现输入文本与NER结果配对的方案

当然可以实现,以下是几种高效的解决办法,支持批量处理:

方法1:手动批量配对输入与结果

直接提取数据集中的文本列表,传递给pipeline后用zip将输入文本和结果一一对应,适合快速实现:

from transformers import pipeline
from datasets import load_dataset

model = ...
tokenizer = ...
# 设置batch_size开启批量处理,提升效率
pipe = pipeline("ner", model=model, tokenizer=tokenizer, batch_size=8)
dataset = load_dataset("my_ner_dataset", split="test")

# 提取所有输入文本
texts = [item["text"] for item in dataset]
# 批量获取NER结果
ner_results = pipe(texts)

# 配对输出
for text, entities in zip(texts, ner_results):
    print(text, entities)

如果数据集较小,也可以逐个遍历数据项处理:

for item in dataset:
    text = item["text"]
    entities = pipe(text)
    print(text, entities)

方法2:用Dataset.map实现高效批量处理

这是Hugging Face官方推荐的大数据集处理方式,会自动处理批量逻辑,还能直接把结果存入数据集:

from transformers import pipeline
from datasets import load_dataset

model = ...
tokenizer = ...
pipe = pipeline("ner", model=model, tokenizer=tokenizer, batch_size=8)
dataset = load_dataset("my_ner_dataset", split="test")

# 定义批量处理函数
def add_ner_annotations(examples):
    # examples["text"]是批量文本列表,pipe返回对应批量结果
    examples["ner_entities"] = pipe(examples["text"])
    return examples

# 应用批量处理
dataset_with_ner = dataset.map(add_ner_annotations, batched=True)

# 遍历获取配对数据
for item in dataset_with_ner:
    print(item["text"], item["ner_entities"])

说明

你原来用的KeyDataset只负责提取文本字段输入给pipeline,丢失了原始数据的关联,所以无法直接拿到输入文本。上面的两种方法都保留了输入与结果的对应关系,且支持批量处理,可根据数据集大小选择合适的方案。

内容的提问来源于stack exchange,提问作者Jing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:43:32