如何训练自己的模型并用spacy进行测试

问题描述 投票:0回答:1

我使用下面的代码来训练已经存在的spacy ner模型。但是,我在测试中得不到正确的结果:

我错过了什么?

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

train_data = [
    ('Who is Rocky babu?', [(7, 16, '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)
        nlp.entity.update([doc], [gold])
Now, When i try to test the above model by using the below code, I don't get the expected output.

text = ['Who is Rocky babu?']

for a in text:
        doc = nlp(a)
        print("Entities", [(ent.text, ent.label_) for ent in doc.ents])
My output is as follows:

Entities []
whereas my expected output is as follows:

Entities [('Rocky babu', 'PERSON')]
Can someone please tell me what I'm missing ?
nltk spacy ner
1个回答
0
投票

你可以重试吗?

nlp = spacy.load('en_core_web_sm', entity=False, parser=False)

如果由于您没有安装该模型而出现错误,则可以运行

python -m spacy download en_core_web_sm

首先在命令行上。

并且当然要记住,对于模型的正确训练,您需要更多的示例才能使模型能够概括!

© www.soinside.com 2019 - 2024. All rights reserved.