如何更新现有的 spacy 模型?
How to update an existing spacy model?
我正在为我的硕士论文开发命名实体识别功能。
我想利用“en_core_web_sm”语言包,训练识别产品的能力。
在训练模型之前,未经训练的模型 ("en_core_web_sm") 能够识别不同的实体,例如 'PERSON'、'ORG'、'GPE'、'DATE',...
在“验证语句”中。偶尔会识别产品,但通常标签不正确。
训练模型后,仅识别出 'PRODUCT' 类型的实体,但没有识别出其他实体,尽管应该识别出人员、组织等。
我感觉我的模型忘记了其他实体,训练后只“知道”产品实体。
这是我的训练代码:
#nlp = spacy.load("en_core_web_lg")
nlp = spacy.load("en_core_web_sm")
ner = nlp.get_pipe("ner")
optimizer = nlp.create_optimizer()
#other_pipes = [pipe for pipe in nlp.pipe_names if pipe != "ner"]
pipe_exceptions = ["ner", "trf_wordpiecer", "trf_tok2vec"]
other_pipes = [pipe for pipe in nlp.pipe_names if pipe not in pipe_exceptions]
losses = {}
with nlp.disable_pipes(*other_pipes): # only train NER
for itn in range(100):
print(itn)
random.shuffle(TRAIN_DATA)
losses = {}
for text, annotations in TRAIN_DATA:
doc = nlp.make_doc(text)
example = Example.from_dict(doc, annotations)
nlp.update([example], drop=0.35, sgd=optimizer, losses=losses)
print(losses)
如何更新默认的“en_core_web_sm”模型以保持识别 PERSON、DATE、ORG 等的能力,同时调整经过训练的 PRODUCT 部分?
我运行确实陷入了灾难性的遗忘问题。我也通过提供其他实体标记的训练数据解决了这个问题。
我正在为我的硕士论文开发命名实体识别功能。 我想利用“en_core_web_sm”语言包,训练识别产品的能力。
在训练模型之前,未经训练的模型 ("en_core_web_sm") 能够识别不同的实体,例如 'PERSON'、'ORG'、'GPE'、'DATE',... 在“验证语句”中。偶尔会识别产品,但通常标签不正确。 训练模型后,仅识别出 'PRODUCT' 类型的实体,但没有识别出其他实体,尽管应该识别出人员、组织等。
我感觉我的模型忘记了其他实体,训练后只“知道”产品实体。
这是我的训练代码:
#nlp = spacy.load("en_core_web_lg")
nlp = spacy.load("en_core_web_sm")
ner = nlp.get_pipe("ner")
optimizer = nlp.create_optimizer()
#other_pipes = [pipe for pipe in nlp.pipe_names if pipe != "ner"]
pipe_exceptions = ["ner", "trf_wordpiecer", "trf_tok2vec"]
other_pipes = [pipe for pipe in nlp.pipe_names if pipe not in pipe_exceptions]
losses = {}
with nlp.disable_pipes(*other_pipes): # only train NER
for itn in range(100):
print(itn)
random.shuffle(TRAIN_DATA)
losses = {}
for text, annotations in TRAIN_DATA:
doc = nlp.make_doc(text)
example = Example.from_dict(doc, annotations)
nlp.update([example], drop=0.35, sgd=optimizer, losses=losses)
print(losses)
如何更新默认的“en_core_web_sm”模型以保持识别 PERSON、DATE、ORG 等的能力,同时调整经过训练的 PRODUCT 部分?
我运行确实陷入了灾难性的遗忘问题。我也通过提供其他实体标记的训练数据解决了这个问题。