如何从Excel表格读取数据训练SpaCy自定义实体模型
问题解答
完全可以将大批量SpaCy训练数据存储在Excel中,只需在训练前将Excel内容转换为SpaCy要求的TRAIN_DATA格式即可,不会影响正常训练流程。
Excel存储规范
你可以按照以下规则设计Excel表格的列,降低后续格式转换的出错概率:
- 列1:
text,存储完整的待标注文本,比如Who is Shaka Khan? - 列2:
entity_start,存储实体的起始索引,需和SpaCy的索引规则保持一致,从0开始计数 - 列3:
entity_end,存储实体的结束索引,需符合SpaCy的左闭右开规则 - 列4:
entity_type,存储实体的类型标签,比如PERSON、LOC
如果一条文本对应多个实体,给每个实体单独占一行即可,text列重复填充同一段文本。
格式转换示例代码
你可以借助pandas读取Excel后批量转换为目标格式,参考代码如下:
import pandas as pd # 读取Excel训练数据 df = pd.read_excel("你的训练数据存储路径.xlsx") train_data = [] # 按文本内容分组,聚合同一段文本的所有实体 for text, group in df.groupby("text"): entities = [] for _, row in group.iterrows(): entities.append((row["entity_start"], row["entity_end"], row["entity_type"])) train_data.append((text, {"entities": entities}))
转换后得到的train_data就可以直接用于SpaCy模型训练,和你原本直接定义的TRAIN_DATA格式完全一致。
注意事项
- 要确保Excel中存储的实体起始、结束索引和SpaCy的索引规则完全匹配,避免出现实体偏移报错
- 如果数据体量极大,建议分批读取Excel内容进行转换,避免内存占用过高
- 转换完成后可以随机抽取几条数据和原Excel标注对照,确认格式转换没有出错
内容的提问来源于stack exchange,提问作者user17551439
相关产品推荐
相关产品推荐

