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

如何循环合并同文本标注实体,生成SpaCy NER模型训练所需数据

问题分析

你现有代码的核心问题如下:

  • 外层循环遍历逻辑错误,没有正确遍历所有唯一文本
  • 实体列表没有按单条文本重置,会把所有文本的实体累计堆叠
  • list.append() 方法返回值为None,直接将其赋值给entities会导致字段值错误
  • 内层循环每次都往训练集里追加条目,导致同一段文本重复出现多次,而非合并所有实体后仅添加一次

正确实现

推荐直接用pandas的groupby方法按文本分组,逻辑更简洁且不会出现索引错位问题:

import pandas as pd

TRAIN = []
# 按Text字段分组,同一段文本的所有标注会聚合到同一个分组
for text, group in df.groupby("Text"):
    entities = []
    # 遍历当前文本的所有标注行,整理为spaCy要求的实体格式
    for _, row in group.iterrows():
        entities.append([row["start"], row["end"], row["ent"]])
    # 合并后加入训练集
    TRAIN.append([text, {"entities": entities}])

print(TRAIN)

运行后输出的结果和你要求的格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:48:03