Отслеживая модель Spacy NER, я получаю исключение: «[E022] Не удалось найти переход с именем« B-COMPANY »в модели NER». - PullRequest
0 голосов
/ 28 апреля 2020

Для воспроизводимого примера я предоставлю данные игрушки и код:

Данные обучения следующие (19 записей):

to_train_ents  = [('  δηµοσίευσης  στο  διαδικτυακό  τόπο του Γ.Ε.ΜΗ. στοιχείων της ανώνυµης εταιρείας µε την επωνυµία «ΑΛΟΥΜΥΛ, ΒΙΟΜΗΧΑΝΙΑ ΑΛΟΥΜΙΝΙΟΥ ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ».    Την 25/07/2019 καταχωρίσθηκε στο Γενικό Εµπορικό Μητρώο (Γ.Ε.ΜΗ.) µε Κωδικό Αριθµό Καταχώρισης',
  {'entities': [(100, 146, 'B-COMPANY')]}),
 ('ΑΚΟΙΝΩΣΗ   Καταχώρισης στο Γενικό Εμπορικό Μητρώο στοιχείων της ανώνυμης εταιρείας με την επωνυμία «ΑΝΕΚ ΤΟΥΡΙΣΤΙΚΗ - ΞΕΝΟΔΟΧΕΙΑΚΗ - ΣΥΜΜΕΤΟΧΩΝ ΑΝΩΝΥΜΗ ΕΤΑΙΡΕΙΑ».  Την 18/12/2017 καταχωρίσθηκαν στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.), τα κατωτέρω στοιχεία της Ανώ',
  {'entities': [(100, 160, 'B-COMPANY')]}),
 ('ς στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.) στοιχείων της ανώνυμης τραπεζικής εταιρείας με την επωνυμία «ATTICA BANK ΑΝΩΝΥΜΗ ΤΡΑΠΕΖΙΚΗ ΕΤΑΙΡΕΙΑ»     Ανακοινώνεται ότι την 91-2020 καταχωρίσθηκε στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.) με Κωδικό Αρι',
  {'entities': [(100, 138, 'B-COMPANY')]}),
 ('Καταχώρισης στο Γενικό Εμπορικό Μητρώο στοιχείων της ανώνυμης τραπεζικής εταιρείας με την επωνυμία «ATTICA BANK ΑΝΩΝΥΜΗ ΤΡΑΠΕΖΙΚΗ ΕΤΑΙΡΕΙΑ». Ανακοινώνεται ότι την 18112019 καταχωρίστηκε στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.)  με Κωδικό Αριθ',
  {'entities': [(100, 138, 'B-COMPANY')]}),
 ('ΝΑΚΟΙΝΩΣΗ  Καταχώρισης στο Γενικό Εμπορικό Μητρώο στοιχείων της ανώνυμης εταιρείας με την επωνυμία «ΔΕΗ SOLAR SOLUTIONS ΑΝΩΝΥΜΗ ΕΤΑΙΡΕΙΑ», το διακριτικό τίτλο «ΔΕΗ SOLAR SOLUTIONS AE» και Αριθμό Γ.Ε.ΜΗ  129809601000.   Ο ΠΡΟΕΔΡΟΣ  ΤΟΥ Ε',
  {'entities': [(100, 136, 'B-COMPANY')]}),
 (' και δημοσίευσης στο διαδικτυακό τόπο του Γ.Ε.ΜΗ. στοιχείων της ανώνυμης εταιρείας με την επωνυμία «Ελληνικά Πετρέλαια Ανώνυμη Εταιρεία».  Την 111-2019 καταχωρίσθηκε στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.) με Κωδικό Αριθμό Καταχώρησης 162',
  {'entities': [(100, 135, 'B-COMPANY')]}),
 ('6806                                                     ΚΑΤΑΣΤΑΤΙΚΟ ΤΗΣ ΕΤΑΙΡΕΙΑΣ ΜΕ ΤΗΝ ΕΠΩΝΥΜΙΑ «ΕΛΛΗΝΙΚΑ ΠΕΤΡΕΛΑΙΑ ΑΝΩΝΥΜΗ ΕΤΑΙΡΕΙΑ»                                                   ΚΕΦΑΛΑΙΟ Α΄ Επωνυμία – Έδρα – Διάρκεια – Σκοπός ',
  {'entities': [(100, 135, 'B-COMPANY')]}),
 ('ΑΝΑΚΟΙΝΩΣΗ  Καταχώρισης στο Γενικό Εμπορικό Μητρώο στοιχείων της ανώνυμης εταιρείας με την επωνυμία FORTHNET ΑΝΩΝΥΜΗ ΕΤΑΙΡΕΙΑ ΣΥΝΔΡΟΜΗΤΙΚΗΣ ΤΗΛΕΟΡΑΣΗΣ, ΠΑΡΟΧΗΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΣΥΜΜΕΤΟΧΩΝ και το διακριτικό τίτλο FORTHNET MEDIA Α.Ε.  Την 13/11/2018 καταχωρίσθηκε στο Γενικό Εμπορικό Μητρώ',
  {'entities': [(99, 201, 'B-COMPANY')]}),
 ('ΝΑΚΟΙΝΩΣΗ  Καταχώρισης στο Γενικό Εμπορικό Μητρώο, στοιχείων της Ανώνυμης Εταιρείας με την επωνυμία FORTHNET ΑΝΩΝΥΜΗ ΕΤΑΙΡΕΙΑ ΣΥΝΔΡΟΜΗΤΙΚΗΣ ΤΗΛΕΟΡΑΣΗΣ, ΠΑΡΟΧΗΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΣΥΜΜΕΤΟΧΩΝ, το διακριτικό τίτλο FORTHNET MEDIA Α.Ε και αριθμό ΓΕΜΗ 124012301000.  Ο ΠΡΟΕΔΡΟΣ  ΤΟΥ ΕΜΠΟΡΙΚΟΥ & ',
  {'entities': [(99, 201, 'B-COMPANY')]}),
 ('και δημοσίευσης στο διαδικτυακό τόπο του Γ.Ε.ΜΗ., στοιχείων της ανώνυμης εταιρείας με την επωνυμία «JUMBO ΑΝΩΝΥΜΗ ΕΜΠΟΡΙΚΗ ΕΤΑΙΡΕΙΑ».  Ανακοινώνεται ότι την 11.12.2019 καταχωρίσθηκαν στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.), τα κατωτέρ',
  {'entities': [(100, 131, 'B-COMPANY')]}),
 ('ΝΑΚΟΙΝΩΣΗ  Καταχώρισης στο Γενικό Εμπορικό Μητρώο στοιχείων της Ανώνυμης Εταιρείας με την επωνυμία «JUMBO ΑΝΩΝΥΜΗ ΕΜΠΟΡΙΚΗ ΕΤΑΙΡΕΙΑ».      Ανακοινώνεται ότι την 11.12.2019 καταχωρίσθηκε στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.) με Κωδικ',
  {'entities': [(100, 131, 'B-COMPANY')]}),
 ('και δημοσίευσης στον διαδικτυακό τόπο του Γ.Ε.ΜΗ. στοιχείων της Ανώνυμης Εταιρείας με την επωνυμία «ΣΥΣΤΗΜΑΤΑ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΑΝΩΝΥΜΗ ΕΤΑΙΡΕΙΑ». Την 16.02.2016 καταχωρίστηκε στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.) με Κωδικό Αριθμό Καταχώρησης 56',
  {'entities': [(100, 143, 'B-COMPANY')]}),
 ('αι δημοσίευσης στον διαδικτυακό τόπο του Γ.Ε.ΜΗ., στοιχείων της Ανώνυμης Εταιρείας με την επωνυμία «ΠΛΑΙΣΙΟ COMPUTERS ΑΝΩΝΥΜΗ ΕΜΠΟΡΙΚΗ ΚΑΙ ΒΙΟΜΗΧΑΝΙΚΗ ΕΤΑΙΡΕΙΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΕΙΔΩΝ ΒΙΒΛΙΟΧΑΡΤΟΠΩΛΕΙΟΥ».      Ανακοινώνεται ότι την 07.08.2019 καταχωρίσθηκε, εκ νέου, στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ)',
  {'entities': [(100, 213, 'B-COMPANY')]}),
 ('  δημοσίευσης  στο  διαδικτυακό  τόπο του Γ.Ε.ΜΗ. στοιχείων της ανώνυμης εταιρείας με την επωνυμία «ΠΛΑΙΣΙΟ COMPUTERS ΑΝΩΝΥΜΗ ΕΜΠΟΡΙΚΗ ΚΑΙ ΒΙΟΜΗΧΑΝΙΚΗ ΕΤΑΙΡΕΙΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΕΙΔΩΝ ΒΙΒΛΙΟΧΑΡΤΟΠΩΛΕΙΟΥ». Την 18/06/2018 καταχωρίσθηκε στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.) µε Κωδικό Αριθµό Καταχώρισης 14',
  {'entities': [(100, 213, 'B-COMPANY')]}),
 ('µ. Πρωτ. :    1826463                           ΚΩΔΙΚΟΠΟΙΗΜΕΝΟ ΚΑΤΑΣΤΑΤΙΚΟ  ΤΗΣ ΑΝΩΝΥΜΗΣ ΕΤΑΙΡΕΙΑΣ «Quest Συμμετοχών Ανώνυμη Εταιρεία» Αρ. Γ.Ε.ΜΗ. 121763701000  ΚΕΦΑΛΑΙΟ  Α Σύσταση – Επωνυμία – ΄Εδρα – Διάρκεια Σκοπός  ΄Αρθρο 1 Η επω',
  {'entities': [(100, 133, 'B-COMPANY')]}),
 ('ΝΑΚΟΙΝΩΣΗ  Καταχώρισης στο Γενικό Εμπορικό Μητρώο στοιχείων της ανώνυμης εταιρείας με την επωνυμία «TITAN ΔΙΕΘΝΗΣ ΕΜΠΟΡΙΚΗ ΑΝΩΝΥΜΗ ΕΤΑΙΡΕΙΑ ΤΣΙΜΕΝΤΩΝ».  Ο ΠΡΟΕΔΡΟΣ ΤΟΥ ΕΜΠΟΡΙΚΟΥ & ΒΙΟΜΗΧΑΝΙΚΟΥ ΕΠΙΜΕΛΗΤΗΡΙΟΥ ΑΘΗΝΩΝ Ανακοινώνει ότι:  Την 10/06/2019 κα',
  {'entities': [(100, 149, 'B-COMPANY')]}),
 ('Καταχώρισης στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.), στοιχείων της Ανώνυμης Εταιρείας με την επωνυμία «TITAN ΔΙΕΘΝΗΣ ΕΜΠΟΡΙΚΗ ΑΝΩΝΥΜΗ ΕΤΑΙΡΕΙΑ ΤΣΙΜΕΝΤΩΝ» και αριθμό Γ.Ε.ΜΗ. 1604901000, (που είχε Αρ.ΜΑΕ. 29226/001/Β/93/0346).  Ο ΠΡΟΕΔΡΟΣ  ΤΟΥ ΕΜΠΟΡΙΚΟΥ ',
  {'entities': [(100, 149, 'B-COMPANY')]}),
 (' ΑΝΑΚΟΙΝΩΣΗ Καταχώρισης στο Γενικό Εμπορικό Μητρώο στοιχείων της ανώνυμης εταιρείας με την επωνυμία ΒΙΑΝΕΞ Α.Ε. ΑΝΩΝΥΜΟΣ ΕΜΠΟΡΟΒΙΟΜΗΧΑΝΙΚΗ ΤΟΥΡΙΣΤΙΚΗ ΞΕΝΟΔΟΧΕΙΑΚΗ ΚΑΙ ΝΑΥΤΙΛΙΑΚΗ ΑΝΩΝΥΜΟΣ ΕΤΑΙΡΕΙΑ και το διακριτικό τίτλο ΒΙΑΝΕΞ ΑΕ. Την 03/04/2019 καταχωρίσθηκε στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ.',
  {'entities': [(99, 194, 'B-COMPANY')]})]

Код следующий:

def train_model(to_train_ents, nlp):

    optimizer = nlp.begin_training()

    other_pipes = [pipe for pipe in nlp.pipe_names if pipe != 'ner']

    with nlp.disable_pipes(*other_pipes):

        for itn in range(20):

            losses = {}

            random.shuffle(to_train_ents)

            for item in to_train_ents:

                nlp.update([item[0]], 

                          [item[1]],

                          sgd = optimizer,

                        drop = 0.35,

                          losses = losses)


    return(nlp, losses)

Я использую греческую модель Spacy (md), которая устанавливается и загружается со следующим кодом:

!python -m spacy download el_core_news_md
nlp_el = spacy.load('el_core_news_md')

Затем я вызываю ранее определенную функцию train_model () и получаю следующая ошибка:

nlp_el , losses = train_model(to_train_ents, nlp_el)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-484-a059cf596651> in <module>
----> 1 nlp_el , losses = train_model(to_train_ents, nlp_el)

<ipython-input-471-56fdae8ff98f> in train_model(to_train_ents, nlp)
     23                         drop = 0.35,
     24 
---> 25                           losses = losses)
     26 
     27 

~\AppData\Roaming\Python\Python36\site-packages\spacy\language.py in update(self, docs, golds, drop, sgd, losses, component_cfg)
    450             kwargs = component_cfg.get(name, {})
    451             kwargs.setdefault("drop", drop)
--> 452             proc.update(docs, golds, sgd=get_grads, losses=losses, **kwargs)
    453             for key, (W, dW) in grads.items():
    454                 sgd(W, dW, key=key)

nn_parser.pyx in spacy.syntax.nn_parser.Parser.update()

nn_parser.pyx in spacy.syntax.nn_parser.Parser._init_gold_batch()

ner.pyx in spacy.syntax.ner.BiluoPushDown.preprocess_gold()

ner.pyx in spacy.syntax.ner.BiluoPushDown.lookup_transition()

KeyError: "[E022] Could not find a transition with the name 'B-COMPANY' in the NER model."

Как вы объясните ошибку и как я могу ее исправить?

1 Ответ

0 голосов
/ 29 апреля 2020

COMPANY необходимо добавить в модель NER:

ner = nlp.get_pipe("ner")
ner.add_label("COMPANY")

Это необходимо сделать для каждого типа сущности в ваших данных, которого еще нет в наборе меток предварительно обученного греческого языка. модель (для 2.2.5: EVENT, GPE, LO C, ORG, PERSON, PRODUCT)

Кроме того, вы переопределяете losses для каждой итерации. Вместо этого вы, вероятно, захотите распечатать / сохранить каждый l oop, чтобы вы могли проверить кривую потерь.

...