其中,使用新实体训练Spacy模型后保存的训练NER模型



我仍在学习Python和模型创建,对使用Spacy的NLP非常陌生。我曾经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个子文件夹-vocab,ner,tagger,parser。以及两个文件meta.json和tokenizerner子文件夹具有cfg、moves、model

根据上面提到的网站,要加载新模型,我需要使用整个文件夹(输出目录(,即

nlp2 = spacy.load(output_dir)

是否需要整个目录(即模型(,还是ner子文件夹中名为model的二进制文件?

通常,我们建议将整个模型保存为一个文件夹,以确保所有内容都一致地加载回。单独加载CCD_ 2文件是行不通的。它只包含神经网络的权重。需要一些其他文件来定义NLP管道的参数和设置&它的不同组成部分。例如,你总是需要vocab数据等。

你可以做的一件事是禁用你不感兴趣的组件。这将减少磁盘上的文件夹大小,并删除你不想要的多余文件夹。例如,如果你只对净入学率感兴趣,你可以做:

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

或者,如果你加载了整个模型,你可以把它的一部分存储到磁盘上:

nlp.to_disk(output_dir, exclude=["parser", "tagger"])

最新更新