2017-04-13 4 views
1

J'essaie de former NER avec mes propres données en utilisant Spacy. Ma question est de savoir comment intégrer mon NER qualifié dans le original modèle? de sorte qu'il pourrait être pratique d'être continuellement formé et utilisé pour mon application. Je n'ai trouvé aucun échantillon.Comment former NER et l'intégrer dans le modèle original en utilisant Spacy

J'ai trouvé quelques exemples similaires ci-dessous pour former NER, mais il semble que tout cela ne sauvegarde pas le modèle formé et ne l'intègre pas dans Spacy. Certains sont en mémoire, d'autres conservent le modèle NER dans un dossier supplémentaire ... Alors, comment le faire de façon appropriée pour répondre à ma demande? Je vous remercie !!!

J'utilise spacy 1.7.3

https://github.com/explosion/spaCy/blob/master/examples/training/train_ner.py https://github.com/explosion/spacy-dev-resources/blob/master/spacy-annotator/displacy/parse.py

Répondre

0

documentation Spacy explique comment mettre à jour un modèle pré-existant ici: https://spacy.io/docs/usage/training-ner

ont pas encore fait moi-même donc je ne sais si C'est facile à faire/à suivre, mais il semble que ce soit un bon point de départ, de toute façon.

0

Pour fournir des exemples d'apprentissage au programme de reconnaissance d'entité, vous devez d'abord créer une instance de la classe GoldParse. Vous pouvez spécifier vos annotations dans un format stand-off ou en tant que tags de jeton.

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() 

pour simplifier cela, vous pouvez essayer ce code

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) 

https://spacy.io/docs/usage/training-ner