当前位置: 首页 > 知识库问答 >
问题:

使用新实体训练Spacy模型后,训练好的NER模型保存在哪里

经骁
2023-03-14

我仍在学习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个子文件夹——词汇表、ner、标记器、解析器。还有2个文件meta.json和标记器。ner子文件夹有cfg、移动、模型。

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

nlp2=spacy。加载(输出方向)

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

共有1个答案

马奇略
2023-03-14

一般来说,我们建议将整个模型保存为一个文件夹,以确保一致地加载所有内容。单独加载模型文件是行不通的。它只包含神经网络的权重。需要其他一些文件来定义NLP管道的参数和设置

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

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

或者,如果加载了整个模型,则可以将其部分存储到磁盘:

nlp.to_disk(output_dir, exclude=["parser", "tagger"])
 类似资料:
  • 我正在使用Spacy来训练我的NER模型和新实体,我正在使用模型作为我的基础模型,因为我还想检测基本实体(,,,等等)。我在未标记的句子上运行了model,并将它们的注释添加到我的训练集中。 完成之后,现在我想为新实体创建训练数据。例如,我想添加一个名为的新实体。我有一大堆句子(除了那些之前用注释的句子)要注释。例如: “詹姆斯喜欢吃苹果”。 我的问题是:我是否仍然需要将“James”注释为,以及

  • 在之前的描述中,我们通常把机器学习模型和训练算法当作黑箱子来处理。如果你实践过前几章的一些示例,你惊奇的发现你可以优化回归系统,改进数字图像的分类器,你甚至可以零基础搭建一个垃圾邮件的分类器,但是你却对它们内部的工作流程一无所知。事实上,许多场合你都不需要知道这些黑箱子的内部有什么,干了什么。 然而,如果你对其内部的工作流程有一定了解的话,当面对一个机器学习任务时候,这些理论可以帮助你快速的找到恰

  • 在之前的描述中,我们通常把机器学习模型和训练算法当作黑箱子来处理。如果你实践过前几章的一些示例,你惊奇的发现你可以优化回归系统,改进数字图像的分类器,你甚至可以零基础搭建一个垃圾邮件的分类器,但是你却对它们内部的工作流程一无所知。事实上,许多场合你都不需要知道这些黑箱子的内部有什么,干了什么。 然而,如果你对其内部的工作流程有一定了解的话,当面对一个机器学习任务时候,这些理论可以帮助你快速的找到恰

  • 如何保存已训练的模型? 以后如何还原此保存的模型?

  • 我正在尝试为多个实体训练自定义NER模型。以下是示例训练数据: 方法采用字符串参数。这个参数有什么用途?还有,我如何为多个实体(例如,在我的例子中,,,)训练一个模型 }

  • 我一直在尝试与斯坦福核心NLP合作。我希望训练我自己的NER模型。从论坛上的SO和官网上描述了如何使用一个属性文件来实现这一点。我将如何通过API实现它?。 怎么做