Где сохраняется обученная модель NER после обучения модели Spacy с новыми объектами

Я все еще изучаю Python и создание моделей, и я новичок в НЛП с использованием Spacy. Я использовал https://spacy.io/usage/training#ner для обучения существующей модели Spacy. - en_core_web_sm.

Я обучил эту модель объектам, зависящим от моей предметной области.

def main(model="en_core_web_sm", new_model_name="new_ner_model", output_dir='/content/drive/My Drive/Data/new_model', n_iter=100):
.
.
(code to train the model)
.
.
    # save model to output directory
    if output_dir is not None:
        output_dir = Path(output_dir)
        if not output_dir.exists():
            output_dir.mkdir()
        nlp.meta["name"] = new_model_name  # rename model
        nlp.to_disk(output_dir)
        print("Saved model to", output_dir)

Теперь я предположил, что найду единственный файл модели в выходном каталоге. Вместо этого у меня есть 4 подпапки - voiceab, ner, tagger, parser. И 2 файла meta.json и токенизатор. В подпапке ner есть cfg, move, model.

Согласно упомянутому выше веб-сайту, для загрузки новой модели мне нужно использовать всю папку (выходной каталог), т.е.

nlp2 = spacy.load(output_dir)

Нужен ли весь каталог (это модель) или это двоичный файл с именем model во вложенной папке ner?


person shreyamurthyfa    schedule 13.11.2020    source источник


Ответы (1)


В общем, мы советуем сохранять всю модель в виде папки, чтобы убедиться, что все загружается обратно последовательно. просто загрузить model файл сам по себе не получится. Он просто содержит веса нейронной сети. Некоторые другие файлы необходимы для определения параметров и настройки вашего конвейера NLP и его различных компонентов. Например, вам всегда нужны данные словаря и т. Д.

Единственное, что вы можете сделать, - это отключить компоненты, которые вам не интересны. Это уменьшит размер папки на вашем диске и удалит лишние папки, которые вам не нужны. Например, если вас интересует только NER, вы можете:

nlp = spacy.load("en_core_web_sm", disable=["parser", "tagger"])`

Или, если вы загрузили всю модель, вы можете сохранить на диск только ее части:

nlp.to_disk(output_dir, exclude=["parser", "tagger"])
person Sofie VL    schedule 17.11.2020
comment
Спасибо @ sofie-vl. Это действительно помогло! Он уменьшил размер до трети от того, что было раньше. - person shreyamurthyfa; 18.11.2020
comment
Рад это слышать! - person Sofie VL; 19.11.2020