Могу ли я использовать инструменты командной строки spaCy для обучения модели NER, содержащей дополнительный тип сущности? - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь обучать модели spaCy, используя только python -m spacy train инструмент командной строки без написания собственного кода .

У меня есть тренировочный набор документов, к которым я добавил OIL_COMPANY палитры сущностей. Я использовал gold.docs_to_json для создания обучающих файлов в JSON -сериализуемом формате .

Я могу тренироваться, начиная с пустой модели. Однако, если я пытаюсь расширить существующую модель en_core_web_lg, я вижу следующую ошибку:

KeyError: "[E022] Could not find a transition with the name 'B-OIL_COMPANY' in the NER model."

Поэтому мне нужно иметь возможность указать инструменту командной строки добавить OIL_COMPANY в существующий список NER этикетки. Обсуждение в Обучении дополнительного типа сущности показывает, как это сделать в коде, вызывая add_label в конвейере NER, но я не вижу никакой опции командной строки, которая делает это .

Можно ли расширить существующую модель NER на новые объекты только с помощью инструментов обучения из командной строки, или мне нужно написать код?

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Инес ответил мне на форуме поддержки Prodigy.

Я думаю, что здесь происходит то, что команда spacy train ожидает базовую модель, которую вы хотите обновить уже добавьте все метки, которые вы хотите тренировать. (Он обрабатывает данные в виде потока, поэтому он не собирается скомпилировать все метки заранее и добавить их «на лету».) Если вы хотите обновить существующую предварительно обученную модель и добавить новую метку, вы можете просто добавить пометьте и сохраните базовую модель:

ner = nlp.get_pipe("ner") ner.add_label("YOUR_LABEL")
nlp.to_disk("./base-model")

Это не совсем написание кода, но это довольно близко.

0 голосов
/ 27 января 2020

См. эту ссылку для CLI в spaCy.

Обучите модель. Ожидаются данные в spaCy's JSON format. В каждую эпоху модель будет сохраняться в каталоге. Оценки точности и детали модели будут добавлены в meta.json, чтобы позволить упаковывать модель с помощью команды package.

python -m spacy train [lang] [output_path] [train_path] [dev_path]
[--base-model] [--pipeline] [--vectors] [--n-iter] [--n-early-stopping]
[--n-examples] [--use-gpu] [--version] [--meta-path] [--init-tok2vec]
[--parser-multitasks] [--entity-multitasks] [--gold-preproc] [--noise-level]
[--orth-variant-level] [--learn-tokens] [--textcat-arch] [--textcat-multilabel]
[--textcat-positive-label] [--verbose]
...