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

使用Pandas统计IOB语料标签、合并IOB前缀及过滤无效标签的方法

解决方法

你可以按以下步骤同时实现过滤无效标签和聚合同类型实体统计:

第一步:过滤不需要的标签

直接用布尔索引排除值为O和空字符串的标签,写法比mask/where更直观:

# 过滤掉O标签和空标签
valid_tags = data['Tag'][~data['Tag'].isin(['O', ''])]

第二步:提取实体类型、分组求和

IOB格式的标签均为前缀-实体类型结构,通过字符串切割提取实体类型后分组计数即可:

# 去掉B-、I-前缀,提取实体类型
entity_type = valid_tags.str.split('-').str[-1]
# 统计各实体类型总数
result = entity_type.value_counts().reset_index()
result.columns = ['Label', 'Total']

对应你的数据的输出结果示例:

LabelTotal
LOCATION637
PERSON378
INSTALLATION218
ORGANISATION218
TITLE183
EVENT10

如果你需要在已经生成的df基础上修改,可直接使用以下代码:

# 过滤O和空标签
df_filtered = df[~df['Label'].isin(['O', ''])].copy()
# 提取实体类型
df_filtered['Label'] = df_filtered['Label'].str.split('-').str[-1]
# 同类型标签求和
result = df_filtered.groupby('Label', as_index=False)['Total'].sum()

问题单独说明

  • 排除O和空标签:用isin搭配取反符~做布尔索引是最简洁的实现方式,之前mask/where操作失败大概率是条件写反或者没有赋值生效。
  • 合并IOB前缀:所有合法实体标签都符合前缀-类型的格式,用split('-')取最后一段就能得到统一的实体类型,再分组求和即可完成聚合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:36:02