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

如何从标注文本数组中提取指定标签?尝试正则未成功

解决标注语句的目标标签提取问题

核心思路

针对你遇到的多种标注格式(带->、Label:、Answer:、Classification:等),不用纠结匹配特定前缀,直接锁定目标标签集合进行精准匹配——因为你的目标标签是固定的7个,这比匹配所有可能的前缀更可靠。

具体实现代码

import re

# 固定目标标签集合(避免拼写错误)
TARGET_TAGS = {'race_ethnicity', 'ageism', 'gender', 'religion', 'occupation', 'lgbtq', 'no_bias'}

def extract_tag(annotation):
    # 转小写避免大小写不匹配(比如标注里写的是Gender)
    anno_lower = annotation.lower()
    # 遍历目标标签,用单词边界匹配避免部分命中(比如gender不会匹配gendered)
    for tag in TARGET_TAGS:
        if re.search(rf'\b{tag}\b', anno_lower):
            return tag
    # 若未匹配到目标标签,可返回None或自定义占位符
    return None

# 处理你的108条标注数组
original_annotations = [
    "Label: race_ethnicity",
    "Answer -> gender",
    "Classification: no_bias",
    # ... 剩余105条内容
]

# 生成最终标签数组
result_tags = [extract_tag(anno) for anno in original_annotations]

为什么之前的方法可能失败?

  • 字符串分割:只处理了单一分隔符(比如只按:分割,没考虑->),且未处理前后空格、大小写差异
  • 正则匹配:写的规则太局限(比如只匹配Label: 开头的内容),没覆盖所有标注格式

调试技巧

如果有部分条目提取失败,先打印这些条目的原始内容,检查:

  1. 是否存在拼写错误(比如标注里写的是race_ethinicity而非race_ethnicity)
  2. 是否有特殊格式(比如标签被包裹在引号里,可调整正则为rf'["\']{tag}["\']')
  3. 是否存在多标签情况(可在函数里添加逻辑返回第一个匹配的标签)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:43:38