首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spacy的en_core_web_sm模型中添加新的命名实体?

在Spacy的en_core_web_sm模型中添加新的命名实体?
EN

Stack Overflow用户
提问于 2020-12-09 16:05:56
回答 1查看 754关注 0票数 1

下面是关于培训新的实体类型的示例:

https://spacy.io/usage/training#example-new-entity-type

当我不把一个现有的模型传递给它,并且正确地创建一个新的模型时,它工作得很好,它可以识别我的新命名实体。

代码语言:javascript
复制
 python.exe train-new-entity-type.py

当我将一个现有的模型传递给它(之前运行它一次创建),并在dir/my_model dir中正确地加载模型时,它也可以正常工作,该模型仍然识别我的新命名实体。

代码语言:javascript
复制
 python.exe train-new-entity-type.py -m dir/my_model

但是,我想训练一个新的实体类型,并将它添加到spacy的现有模型中,这样spacy将识别出它自己的受支持的命名实体以及我的新的实体类型,所以我尝试:

代码语言:javascript
复制
 python.exe train-new-entity-type.py -m en_core_web_sm

然而,这似乎不起作用。Spacy自己的受支持的命名实体已被识别,但它们是不正确的(vs只是单独使用en_core_web_sm而没有向其添加新的实体类型),而且我的新实体类型根本就没有被识别。

我做错了什么吗?这有可能(将命名实体添加到en_core_web_sm)吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-10 08:33:00

了解更新现有模型时的“灾难性遗忘”问题:https://spacy.io/usage/training#ner

更新现有模型可能很棘手,因此可能更容易为新的实体类型培训单独的模型,并使用自定义名称将NER组件添加到en_core_web_sm管道中。需要注意的主要事项是,您需要确保模型加载了相同的词汇表,这样您就不会遇到字符串存储方面的问题:

代码语言:javascript
复制
import spacy
nlp = spacy.load("en_core_web_sm")
custom_nlp = spacy.load("my_model", vocab=nlp.vocab)
nlp.add_pipe(custom_nlp.get_pipe("ner"), name="my_ner", before="ner")

将其添加到管道中(在现有的ner之前/之后)将确定哪个实体跨具有优先级,因为ner组件不会修改现有的实体跨度。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65220447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档