Model 如何使用Spacy训练NER并将其集成到原始模型中

Model 如何使用Spacy训练NER并将其集成到原始模型中,model,named-entity-recognition,spacy,Model,Named Entity Recognition,Spacy,我正在尝试使用Spacy使用我自己的数据来训练NER。我的问题是如何将经过培训的NER集成到原始的模型中?这样就可以方便地持续培训并用于我的申请。我没有找到任何样品 我在下面找到了一些类似的例子来训练NER,但似乎所有这些都不能保存经过训练的模型并将其重新集成到Spacy中。有些保存在内存中,有些将NER模型保存到其他文件夹中。。。那么如何以适当的方式满足我的需求呢?谢谢你 我正在使用spacy 1.7.3 spaCy文档在此讨论了如何更新现有模型: 我自己还没有做过,所以不确定这是否容易做/

我正在尝试使用Spacy使用我自己的数据来训练NER。我的问题是如何将经过培训的NER集成到原始的模型中?这样就可以方便地持续培训并用于我的申请。我没有找到任何样品

我在下面找到了一些类似的例子来训练NER,但似乎所有这些都不能保存经过训练的模型并将其重新集成到Spacy中。有些保存在内存中,有些将NER模型保存到其他文件夹中。。。那么如何以适当的方式满足我的需求呢?谢谢你

我正在使用spacy 1.7.3


spaCy文档在此讨论了如何更新现有模型:


我自己还没有做过,所以不确定这是否容易做/遵循,但无论如何,这似乎是一个好的开始

要向实体识别器提供培训示例,首先需要创建GoldParse类的实例。您可以以隔离格式或作为标记标记指定注释

import spacy
import random
from spacy.gold import GoldParse
from spacy.language import EntityRecognizer

train_data = [
    ('Who is Chaka Khan?', [(7, 17, 'PERSON')]),
    ('I like London and Berlin.', [(7, 13, 'LOC'), (18, 24, 'LOC')])
]

nlp = spacy.load('en', entity=False, parser=False)
ner = EntityRecognizer(nlp.vocab, entity_types=['PERSON', 'LOC'])

for itn in range(5):
    random.shuffle(train_data)
    for raw_text, entity_offsets in train_data:
        doc = nlp.make_doc(raw_text)
        gold = GoldParse(doc, entities=entity_offsets)

        nlp.tagger(doc)
        ner.update(doc, gold)
ner.model.end_training()
为了简化这一点,您可以尝试以下代码

doc = Doc(nlp.vocab, [u'rats', u'make', u'good', u'pets'])
gold = GoldParse(doc, [u'U-ANIMAL', u'O', u'O', u'O'])
ner = EntityRecognizer(nlp.vocab, entity_types=['ANIMAL'])
ner.update(doc, gold)

我意识到这是一个很晚才添加的内容,但当我偶然发现这篇文章并碰巧找到答案时,我也遇到了同样的问题。基本上,只需将nlp值设置为培训模型所在的目录:

nlp = spacy.load('/model')