我开发了一个简单的模型,该模型利用了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中定义。所有其他文件都从那里导入这些类。
答案 0 :(得分:1)
如果您仅在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的方法实际上是在许多文件中使用全局可写变量,这是非常不好的事情。