在 运行 脚本上重新加载 SpaCy 语言模型
Reload SpaCy language model on a running script
我开发了一个使用 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 所有其他文件从那里导入这个 类。
如果你只在SpaCy_clases
中使用nlp
,那么有一种方法。
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的方法实际上是在很多文件中使用一个全局可写变量,这是非常非常糟糕的事情。
我开发了一个使用 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 所有其他文件从那里导入这个 类。
如果你只在SpaCy_clases
中使用nlp
,那么有一种方法。
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的方法实际上是在很多文件中使用一个全局可写变量,这是非常非常糟糕的事情。