SPACY: извлечение фраз заглавными буквами в кавычках (греческий текст) - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть текст на греческом языке, и я хочу выделить фразы заглавными буквами в кавычках.

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

document = '''ΓΕΝΙΚΗ ΓΡΑΜΜΑΤΕΙΑ ΕΜΠΟΡΙΟΥ & ΠΡΟΣΤΑΣΙΑΣ ΚΑΤΑΝΑΛΩΤΗ ΓΕΝΙΚΗ Δ/ΝΣΗ ΑΓΟΡΑΣ Δ/ΝΣΗ ΕΤΑΙΡΕΙΩΝ ΤΜΗΜΑ ΕΠΟΠΤΕΙΑΣ ΕΙΣΗΓΜΕΝΩΝ Α.Ε. & ΑΘΛΗΤΙΚΩΝ Α.Ε. Ταχ. Δ/νση: Πλ. Κάνιγγος Ταχ. Κώδικας: 101 81 Πληροφορίες: Μ. Κανά Τηλέφωνο: 2103893566 Fax: 2103838981 e-mail: kana@gge.gr Αθήνα, 25.07.2019 Αρ. Πρωτ.: 1577914 ΑΝΑΚΟΙΝΩΣΗ Καταχώρισης στο Γενικό Εμπορικό Μητρώο στοιχείων της Ανώνυμης Εταιρείας με την επωνυμία «ΓΡΗΓΟΡΗΣ ΣΑΡΑΝΤΗΣ ΑΝΩΝΥΜΗ ΒΙΟΜΗΧΑΝΙΚΗ ΚΑΙ ΕΜΠΟΡΙΚΗ ΕΤΑΙΡΕΙΑ ΚΑΛΛΥΝΤΙΚΩΝ, ΕΝΔΥΜΑΤΩΝ, ΟΙΚΙΑΚΩΝ ΚΑΙ ΦΑΡΜΑΚΕΥΤΙΚΩΝ ΕΙΔΩΝ» Ανακοινώνεται ότι την 25 .07.2019 καταχωρίσθηκε στο Γενικό Εμπορικό Μητρώο (Γ.Ε.ΜΗ) με Κωδικό Αριθμό Καταχώρησης 1802156. η με αριθμό 780001/25.07.2019 απόφασή μας (ΑΔΑ: ΨΝΚ1465ΧΙ82ΒΜ), με την οποία εγκρίθηκε η τροποποίηση εν συνόλω του καταστατικού, της ανώνυμης εταιρείας με την επωνυμία «ΓΡΗΓΟΡΗΣ ΣΑΡΑΝΤΗΣ ΑΝΩΝΥΜΗ ΒΙΟΜΗΧΑΝΙΚΗ ΚΑΙ ΕΜΠΟΡΙΚΗ ΕΤΑΙΡΕΙΑ ΚΑΛΛΥΝΤΙΚΩΝ, ΕΝΔΥΜΑΤΩΝ, ΟΙΚΙΑΚΩΝ ΚΑΙ ΦΑΡΜΑΚΕΥΤΙΚΩΝ ΕΙΔΩΝ», και αριθμό ΓΕΜΗ 255201000 (πρώην ΑΡ. ΜΑΕ 13083/06/Β/86/27), σύμφωνα με την από 18-6-2019 απόφαση της Τακτικής Γενικής Συνέλευσης των μετόχων της, στο πλαίσιο της εναρμόνισης με το ν. 4548/2018 «Αναμόρφωση του δικαίου των ανωνύμων εταιρειών». Το εν λόγω καταστατικό με ημερομηνία 18/6/2019 αποτελείται από 28 άρθρα, ως αυτά διαλαμβάνονται στα κεφάλαια A έως H αυτού. Την ίδια ημερομηνία καταχωρίσθηκε στο Γενικό Εμπορικό Μητρώο ολόκληρο το νέο κείμενο καταστατικού μαζί με τις τροποποιήσεις του. Ο ΠΡΟΙΣΤΑΜΕΝΟΣ ΤΗΣ ΔΙΕΥΘΥΝΣΗΣ ΙΩΑΝΝΗΣ ΑΡΕΤΑΙΟΣ'''

Мой код следующее:

 nlp_el =  spacy.load('el_core_news_md')
 doc = nlp_el(document)
 pattern = [{'POS':'PUNCT', 'TEXT':'«'}, {'POS':'NOUN', 'IS_UPPER':True, 'OP': '?'}, {'POS':'PUNCT', 'TEXT':'»'}]
 # Add the pattern to the matcher and apply the matcher to the doc
 matcher.add("UPPER CASE", None, pattern)
 matches = matcher(doc)
 print("Total matches found:", len(matches))

# Iterate over the matches and print the span text
 for match_id, start, end in matches:
    print("Match found:", doc[start:end].text)

Вывод следующий, чего я не достиг:

enter image description here

Я ожидал изолировать следующая фраза:

«ΓΡΗΓΟΡΗΣ ΣΑΡΑΝΤΗΣ ΑΝΩΝΥΜΗ ΒΙΟΜΗΧΑΝΙΚΗ ΚΑΙ ΕΜΠΟΡΙΚΗ ΕΤΑΙΡΕΙΑ ΚΑΛΛΥΝΤΙΚΩΝ, ΕΝΔΥΜΑΤΩΝ, ΟΙΚΙΑΚΩΝ ΚΑΙ ΦΑΡΜΑΚΕΥΤΙΚΩΝ ΕΙΔΩΝ»

Как вы объясните ситуацию и что бы вы предложили исправить?

...