我仍在学习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的二进制文件?
一般来说,我们建议将整个模型保存为一个文件夹,以确保一致地加载所有内容。单独加载模型
文件是行不通的。它只包含神经网络的权重。需要其他一些文件来定义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实现它?。 怎么做