使用spaCy构建自定义模型时遇到错误

问题

根据官方指南,我试图添加一个额外的训练数据集,并在本地CPU环境中训练模型。

但我没有更改base_config.cfg和config.cfg文件的内容。

我该如何修复这些错误来构建并评估模型呢?

错误

我不确定第一个是否是一个问题,并且我不知道如何填写config.cfg文件。

  1. 即使执行了下方“至今的步骤”部分的代码,config.cfg文件仍然为空。

  2. 执行训练命令时显示了错误消息。

ℹ 使用CPU✘ 解析配置覆盖时出错paths -> train   不是可以被覆盖的部分值

代码

$ python3 -m spacy train config.cfg --output ./output --paths.train train.spacy --paths.dev train.spacy

至今的步骤

$ python3 -m spacy init fill-config base_config.cfg config.cfg#之前的输出configparser.DuplicateSectionError: 读取'<string>'时发生错误 [第90行]: 部分'paths'已存在#当前输出  File "/usr/local/lib/python3.9/site-packages/spacy/util.py", line 137, in get    raise RegistryError(catalogue.RegistryError: [E893] 在函数注册表'architectures'中找不到函数'spacy.MultiHashEmbed.v2'。如果您使用的是自定义函数,请确保代码可用。如果该函数由第三方包提供,例如spacy-transformers,请确保包已安装在您的环境中。可用名称: spacy-legacy.MaxoutWindowEncoder.v1, spacy-legacy.MishWindowEncoder.v1, spacy-legacy.TextCatEnsemble.v1, spacy-legacy.Tok2Vec.v1, spacy-legacy.WandbLogger.v1, spacy.CharacterEmbed.v1, spacy.EntityLinker.v1, spacy.HashEmbedCNN.v1, spacy.MaxoutWindowEncoder.v2, spacy.MishWindowEncoder.v2, spacy.MultiHashEmbed.v1, spacy.PretrainCharacters.v1, spacy.PretrainVectors.v1, spacy.Tagger.v1, spacy.TextCatBOW.v1, spacy.TextCatCNN.v1, spacy.TextCatEnsemble.v2, spacy.TextCatLowData.v1, spacy.Tok2Vec.v2, spacy.Tok2VecListener.v1, spacy.TorchBiLSTMEncoder.v1, spacy.TransitionBasedParser.v1, spacy.TransitionBasedParser.v2

即使执行了上述代码,config.cfg文件仍然为空。

base_config.cfg官方指南的表格中下载

# 这是一个自动生成的部分配置。要与'spacy train'一起使用,# 您可以运行spacy init fill-config来自动填充所有默认设置:# python -m spacy init fill-config ./base_config.cfg ./config.cfg[paths]train = nulldev = null[system]gpu_allocator = null[nlp]lang = "en"pipeline = ["tok2vec","ner"]batch_size = 1000[components][components.tok2vec]factory = "tok2vec"[components.tok2vec.model]@architectures = "spacy.Tok2Vec.v2"[components.tok2vec.model.embed]@architectures = "spacy.MultiHashEmbed.v2"width = ${components.tok2vec.model.encode.width}attrs = ["ORTH", "SHAPE"]rows = [5000, 2500]include_static_vectors = false[components.tok2vec.model.encode]@architectures = "spacy.MaxoutWindowEncoder.v2"width = 96depth = 4window_size = 1maxout_pieces = 3[components.ner]factory = "ner"[components.ner.model]@architectures = "spacy.TransitionBasedParser.v2"state_type = "ner"extra_state_tokens = falsehidden_width = 64maxout_pieces = 2use_upper = truenO = null[components.ner.model.tok2vec]@architectures = "spacy.Tok2VecListener.v1"width = ${components.tok2vec.model.encode.width}[corpora][corpora.train]@readers = "spacy.Corpus.v1"path = ${paths.train}max_length = 0[corpora.dev]@readers = "spacy.Corpus.v1"path = ${paths.dev}max_length = 0[training]dev_corpus = "corpora.dev"train_corpus = "corpora.train"[training.optimizer]@optimizers = "Adam.v1"[training.batcher]@batchers = "spacy.batch_by_words.v1"discard_oversize = falsetolerance = 0.2[training.batcher.size]@schedules = "compounding.v1"start = 100stop = 1000compound = 1.001[initialize]vectors = ${paths.vectors}

回答:

看起来您是重复粘贴了配置文件还是其他什么原因?从错误信息中可以看出,它提到您有两个[paths]部分。在您的文件中大约一半的地方有一个这样的注释:

# 这是一个自动生成的部分配置。要与'spacy train'一起使用

尝试删除从那里开始到文件末尾的所有内容,然后再试一次。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注