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

如何在单次Spacy训练中使用多个.spacy训练文件?

解决spaCy多训练文件传入的报错问题

问题原因

当你用"${TRAIN_SPACY_FILES[@]}"展开数组时,第二个及以后的文件路径会被当成独立的命令行参数,spaCy会把这些未以--开头的参数误认为是无效的配置覆盖项,从而触发报错。

解决方法

spaCy支持通过逗号分隔多个文件路径或glob通配符来指定多份训练/开发文件,具体两种实现方式如下:

方式1:数组转逗号分隔字符串

修改脚本中参数传递部分,把数组元素拼接成逗号分隔的单个字符串,让spaCy识别为一个完整的路径参数:

# 将训练文件数组转为逗号分隔的字符串
TRAIN_PATHS=$(IFS=,; echo "${TRAIN_SPACY_FILES[*]}")
# 将开发文件数组转为逗号分隔的字符串
DEV_PATHS=$(IFS=,; echo "${DEV_SPACY_FILES[*]}")

# 执行训练命令
python -m spacy train "$FILLED_CONFIG" --output "$OUTPUT_DIR" --gpu-id 0 --verbose \
  --paths.train "$TRAIN_PATHS" \
  --paths.dev "$DEV_PATHS"

方式2:使用glob通配符(文件路径有规律时适用)

如果你的训练/开发文件都在同一目录,且命名有统一规律(比如都以de_*-ud-train.spacy结尾),可以直接用shell通配符匹配所有目标文件:

python -m spacy train "$FILLED_CONFIG" --output "$OUTPUT_DIR" --gpu-id 0 --verbose \
  --paths.train "./training_data/de_*-ud-train.spacy" \
  --paths.dev "./training_data/de_*-ud-dev.spacy"

核心逻辑说明

spaCy的--paths.train和--paths.dev参数仅接受单个字符串值,这个值可以是:

  • 单个文件路径
  • 逗号分隔的多个文件路径
  • 符合shell glob规则的路径模式(会自动展开匹配到的所有文件)

通过以上方式传递参数,就能让spaCy正确识别所有训练/开发文件,避免参数解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:32:08