#python-3.x #machine-learning #nlp #cpu #spacy
Вопрос:
Вопрос
Следуя официальной инструкции, я пытаюсь добавить дополнительный обучающий набор данных и обучить модель в локальной среде процессора.
Но я не изменяю содержимое файлов base_config.cfg и config.cfg.
Как я могу исправить эти ошибки, чтобы построить модель и оценить ее?
Ошибка
Я не уверен, что первый из них является проблемой или нет, и я понятия не имею, как заполнить файл config.cfg.
- Файл config.cfg был пустым даже после выполнения кода в приведенном ниже разделе процедуры до сих пор.
- Сообщение об ошибке было показано при выполнении команды train.
ℹ Using CPU
✘ Error parsing config overrides
paths -> train not a section value that can be overwritten
Код
$ 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
#former output
configparser.DuplicateSectionError: While reading from '<string>' [line 90]: section 'paths' already exists
#current output
File "/usr/local/lib/python3.9/site-packages/spacy/util.py", line 137, in get
raise RegistryError(
catalogue.RegistryError: [E893] Could not find function 'spacy.MultiHashEmbed.v2' in function registry 'architectures'. If you're using a custom function, make sure the code is available. If the function is provided by a third-party package, e.g. spacy-transformers, make sure the package is installed in your environment.
Available names: 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 скачан из формы по официальной инструкции
# This is an auto-generated partial config. To use it with 'spacy train'
# you can run spacy init fill-config to auto-fill all default settings:
# python -m spacy init fill-config ./base_config.cfg ./config.cfg
[paths]
train = null
dev = 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 = 96
depth = 4
window_size = 1
maxout_pieces = 3
[components.ner]
factory = "ner"
[components.ner.model]
@architectures = "spacy.TransitionBasedParser.v2"
state_type = "ner"
extra_state_tokens = false
hidden_width = 64
maxout_pieces = 2
use_upper = true
nO = 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 = false
tolerance = 0.2
[training.batcher.size]
@schedules = "compounding.v1"
start = 100
stop = 1000
compound = 1.001
[initialize]
vectors = ${paths.vectors}
Ответ №1:
Похоже, вы дважды вставили конфигурацию или что-то в этом роде? Из ошибок вы заметите, что в нем говорится, что у вас есть два [paths]
раздела. Примерно в середине вашего файла есть такой комментарий:
# This is an auto-generated partial config. To use it with 'spacy train'
Попробуйте удалить все оттуда и вниз, а затем сделать это снова.
Комментарии:
1. Спасибо вам за ваш ответ. Исправлено дублирование содержимого файла base_config.cfg и изменен вывод для проблемы № 1. Однако файл config.cfg по-прежнему пуст, и сообщение об ошибке для проблемы № 2 такое же.
2. Ах, E893 все еще происходит? Может быть, вам нужно обновить spaCy. Попробуй
pip install -U spacy
.