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

如何通用化处理带标注的字典数据集,实现文本与标签对应输出?

批量处理带标注区间的文本数据集

需求说明

你有一个由字典构成的数据集,每个字典包含id、带转义字符的text,以及标注区间列表label(每个元素为[起始索引, 结束索引, 标签名])。需要将每条文本按标注区间分割,在对应文本片段后添加标签,输出指定格式的结果。

解决方案

下面是通用的批量处理代码,包含单条数据处理函数和数据集批量处理函数,同时处理文本中的HTML转义字符(比如"):

import html

def process_single_item(item):
    # 解码HTML转义字符,还原正常文本
    raw_text = html.unescape(item['text'])
    processed_lines = []
    for start_idx, end_idx, label in item['label']:
        # 截取标注区间内的文本并去除首尾空格
        text_segment = raw_text[start_idx:end_idx].strip()
        # 按示例格式调整标点:将原片段末尾的句号替换为逗号,添加标签后再加句号
        if text_segment.endswith('.'):
            formatted_line = f"{text_segment[:-1]} , {label}."
        else:
            formatted_line = f"{text_segment}, {label}"
        processed_lines.append(formatted_line)
    return processed_lines

def batch_process_dataset(dataset):
    all_outputs = []
    for entry in dataset:
        # 处理单条数据并收集结果
        entry_outputs = process_single_item(entry)
        all_outputs.extend(entry_outputs)
        # 每条数据的结果之间加空行分隔(可选,不需要可删除)
        all_outputs.append("")
    # 移除最后多余的空行
    return [line for line in all_outputs if line]

# 测试示例
if __name__ == "__main__":
    # 模拟你的数据集
    sample_dataset = [
        {
            'id': 2,
            'text': '"The hotel has many restaurants to enjoy a meal. My husband and I went to the Japanese restaurant and we only found sushi. Considering that it is an international hotel, they should have a larger variety of options.',
            'label': [[0, 46, 'general services'], [47, 214, 'japanese food']]
        },
        {
            'id': 3,
            'text': '"The gym is open 24 hours. The equipment is brand new and well-maintained.',
            'label': [[0, 22, 'fitness services'], [23, 65, 'fitness equipment']]
        }
    ]
    
    # 执行批量处理并打印结果
    final_results = batch_process_dataset(sample_dataset)
    for line in final_results:
        print(line)

关键说明

  1. 转义字符处理:使用html.unescape将文本中的"等HTML转义字符还原为正常字符,避免输出异常。如果你的文本没有转义字符,可以直接删除这一行。
  2. 格式调整:针对示例中“原文本句号→逗号+标签+句号”的格式要求,做了针对性的标点处理,确保输出和示例一致。
  3. 批量处理:batch_process_dataset函数遍历整个数据集,自动处理所有条目,无需手动指定索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:40:42