Перезагрузить языковую модель SpaCy на работающем скрипте - PullRequest
0 голосов
/ 16 июня 2019

Я разработал простую модель, в которой используется модель SpaCy en_core_web_lg. Структура проекта выглядит следующим образом:

/model/
    main.py
    app_functions.py
    SpaCy/
          SpaCy_clases.py

На SpaCy_clases.py у меня есть что-то вроде этого:

import spacy
nlp = spacy.load('en_core_web_lg')

class Spacy1():
   ...
   ...

class Spacy2():
   ...
   ...

Проблема, с которой я сталкиваюсь, заключается в следующей строке:

nlp = spacy.load('en_core_web_lg')  

Поскольку мне нужно импортировать модель в один и тот же файл, в котором я определяю классы, одна и та же модель используется все время, и я хочу иметь возможность это изменить.

Мне нужно иметь возможность изменить:

nlp = spacy.load('en_core_web_lg') 

Автор:

nlp = spacy.load('en_core_web_sm') 

Но если я сделаю это с некоторой переменной в main.py, это не будет иметь никакого значения вообще. Как я могу загрузить другую модель без необходимости останавливать программу и редактировать SpaCy_clases.py

Я хочу изменить модель в полном объеме проекта, так как она использовалась в несколько этапов. Но все классы, которые используют Spacy, определены в SpaCy_classes.py, все остальные файлы импортируют эти классы оттуда.

1 Ответ

1 голос
/ 19 июня 2019

Если вы используете только nlp в SpaCy_clases, то есть один способ.

from SpaCy import SpaCy_clases

# you want to change the nlp attribute of SpaCy_clases 
# if really really want to reload, which is bad practice 
SpaCy_clases.nlp = spacy.load('what_you_want')

действительно не рекомендую, но может работать. Вышеописанный способ изменить nlp на самом деле - использовать глобальную переменную с возможностью записи во многих файлах, что очень и очень плохо.

...