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

训练spaCy relation_extractor组件时触发[E002]错误求助

解决spaCy训练relation_extractor组件时的[E002]错误

问题原因

relation_extractor并非spaCy官方内置组件,你参考的教程中使用的是自定义开发的关系抽取组件,spaCy默认无法识别未注册的自定义组件,因此抛出找不到工厂的错误。

解决方案

1. 获取教程中的自定义组件代码

你需要拿到教程里对应relation_extractor组件的实现代码(通常是一个.py文件,比如rel_component.py或rel_model.py),里面包含用@Language.factory("relation_extractor")装饰的组件注册逻辑,这是让spaCy识别该组件的核心。

2. 在训练时加载自定义组件

有两种方式让spaCy加载这个自定义组件:

  • 方式一:修改配置文件
    在你的config.cfg中添加paths.code字段,指向自定义组件的代码文件路径:

    [paths]
    train = "train.spacy"
    dev = "dev.spacy"
    code = "./rel_component.py"  # 替换为你的组件文件实际路径
    

    之后再执行训练命令即可。

  • 方式二:训练命令中指定代码文件
    直接在训练命令末尾加上--code参数指定组件代码路径:

    python3 -m spacy train --output ./model config.cfg --paths.train train.spacy --paths.dev dev.spacy --code ./rel_component.py
    

3. 验证依赖与版本

  • 确保你安装的spaCy是v3.x版本(和教程版本匹配),可以用pip show spacy查看版本。
  • 确认spacy-transformers和en_core_web_trf的版本与spaCy兼容,避免版本不匹配导致的隐性问题。

4. 检查配置文件的组件顺序

确保配置文件中relation_extractor组件的位置在ner(实体识别)组件之后,因为关系抽取依赖已识别的实体:

[nlp]
pipeline = ["transformer", "ner", "relation_extractor"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:15:18