Δυσκολεύεστε με το AI ή την ανάπτυξη πλήρους πακέτου; Οι ειδικοί μας είναι εδώ για να σας καθοδηγήσουν: εξατομικευμένες συμβουλές, τεχνική ενσωμάτωση και πολλά άλλα. Επικοινωνήστε μαζί μας στο [email protected].

Few-shot NER: Εξαγωγή οντοτήτων χωρίς σχολιασμό και εκπαίδευση με βάση το GPT

Τα προ-εκπαιδευμένα μοντέλα εξαγωγής οντοτήτων που βασίζονται στο spaCy ή το NLTK δίνουν εξαιρετικά αποτελέσματα, αλλά απαιτούν μια κουραστική διαδικασία σχολιασμού και εκπαίδευσης για την ανίχνευση μη γηγενών οντοτήτων όπως τίτλοι θέσεων εργασίας, αριθμοί ΦΠΑ, φάρμακα κ.λπ. Χάρη στα μεγάλα γλωσσικά μοντέλα όπως τα GPT-3, GPT-J και GPT-NeoX, είναι πλέον δυνατή η εξαγωγή οποιουδήποτε τύπου οντοτήτων χάρη στην εκμάθηση με λίγα βήματα, χωρίς σχολιασμό και εκπαίδευση. Σε αυτό το άρθρο, παρουσιάζουμε πώς να το κάνετε αυτό.

Η NER (εξαγωγή οντοτήτων) αφορά βασικά την εξαγωγή δομημένων πληροφοριών από ένα αδόμητο κείμενο. Εάν είστε νέοι στην NER, μπορείτε πρώτα να διαβάσετε τη σύντομη εισαγωγή μας: εισαγωγή στην NER.

NER με spaCy και NLTK: ο παραδοσιακός τρόπος

Το SpaCy έχει γίνει σχεδόν το de facto πρότυπο για το NER τα τελευταία χρόνια. (δείτε την ιστοσελίδα του spaCy). Το SpaCy είναι ένα πολύ ελκυστικό πλαίσιο επειδή είναι εύκολο στη χρήση και η ταχύτητά του το καθιστά κατάλληλο για χρήση στην παραγωγή.

Το SpaCy είναι ένα πλαίσιο επεξεργασίας φυσικής γλώσσας Python που προτείνει πολλά προ-εκπαιδευμένα μοντέλα σε πολλές γλώσσες, ώστε να είναι εύκολο να εξάγετε διάφορους τύπους οντοτήτων (εταιρείες, πόλεις, διευθύνσεις, ημερομηνίες κ.λπ.) στη δική σας γλώσσα χωρίς να χρειάζεται να εκπαιδεύσετε το δικό σας μοντέλο.

Το NLTK είναι επίσης μια ενδιαφέρουσα επιλογή για την εξαγωγή οντοτήτων με Python, αλλά προτείνει λιγότερες οντότητες από προεπιλογή και γενικά το NLTK δεν συνιστάται για παραγωγή (είναι περισσότερο ένα εκπαιδευτικό και ερευνητικό πλαίσιο).

Ωστόσο, θα συναντήσετε γρήγορα ένα όριο με αυτά τα πλαίσια: ο αριθμός των εγγενώς υποστηριζόμενων οντοτήτων είναι περιορισμένος. Οι περισσότερες εταιρείες θέλουν να αξιοποιήσουν την NER προκειμένου να εξάγουν συγκεκριμένες επιχειρηματικές πληροφορίες, όπως πληροφορίες προσώπων, οικονομικά δεδομένα, ιατρικές θεραπείες κ.λπ. Φυσικά, αυτές οι οντότητες δεν υποστηρίζονται εξ ορισμού από τα προ-εκπαιδευμένα μοντέλα του spaCy, οπότε για να το πετύχετε αυτό, πρέπει να δημιουργήσετε το δικό σας σύνολο δεδομένων και να εκπαιδεύσετε το δικό σας μοντέλο από αυτό.

Η εκπαίδευση του δικού σας μοντέλου spaCy είναι μια μακρά και κουραστική διαδικασία σχολιασμού: ένα ή περισσότερα άτομα πρέπει να συνεργαστούν για να δημιουργήσουν ένα τεράστιο σύνολο καλών παραδειγμάτων και να τα σχολιάσουν. Απαιτείται ένας πολύ μεγάλος όγκος παραδειγμάτων προκειμένου το μοντέλο να μάθει σωστά. Υπάρχουν καλά εργαλεία σχολιασμού (όπως το Prodigy της spaCy), αλλά εξακολουθεί να παραμένει μια επίπονη εργασία που οδηγεί πολλά έργα NLP σε ματαίωση.

Εικονογράφηση σχολίων

Καλά νέα: με την άνοδο των μεγάλων γλωσσικών μοντέλων, όπως το GPT-3, το GPT-J και το GPT-NeoX, είναι πλέον δυνατό να εξάγετε οποιεσδήποτε οντότητες χωρίς σχολιασμό και εκπαίδευση ενός νέου μοντέλου!

Παραγωγή κειμένου με GPT-3, GPT-J και GPT-NeoX

Μεγάλα γλωσσικά μοντέλα για την παραγωγή κειμένου άρχισαν να εμφανίζονται πρόσφατα με το GPT-3 (δείτε περισσότερα για το GPT-3 στην ιστοσελίδα του OpenAI). Όταν η OpenAI κυκλοφόρησε το μοντέλο GPT-3, το οποίο αποτελείται από 175 δισεκατομμύρια παραμέτρους, ήταν μια επανάσταση επειδή άνοιξε το δρόμο για πολλές πρωτοποριακές εφαρμογές τεχνητής νοημοσύνης που βασίζονται στην επεξεργασία φυσικής γλώσσας χωρίς να απαιτείται πρόσθετη εκπαίδευση.

Ο αρχικός στόχος των μοντέλων GPT, όπως το GPT-3, είναι η παραγωγή κειμένου: απλά δώστε μια είσοδο στο μοντέλο και αφήστε το να παράγει τα υπόλοιπα για εσάς. Με βάση την παραγωγή κειμένου, μπορεί να επιτευχθεί σχεδόν κάθε περίπτωση χρήσης επεξεργασίας φυσικής γλώσσας: ταξινόμηση, περίληψη, συνομιλιακή τεχνητή νοημοσύνη, παράφραση... και φυσικά εξαγωγή οντοτήτων!

Δεδομένου ότι το GPT-3 δεν είναι ένα μοντέλο ανοιχτού κώδικα, η κοινότητα ανοιχτού κώδικα έχει εργαστεί πάνω σε εναλλακτικές λύσεις για το GPT-3 και τώρα έχουμε 2 σπουδαία ισοδύναμα ανοιχτού κώδικα: GPT-J και GPT-NeoX. Δεν είναι ακόμα τόσο μεγάλα όσο το GPT-3, αλλά δεν υπάρχει αμφιβολία ότι είναι θέμα χρόνου να φτάσει η κοινότητα ανοιχτού κώδικα το OpenAI.

Η σωστή αξιοποίηση αυτών των μοντέλων απαιτεί μια νέα τεχνική που ονομάζεται "μάθηση λίγων βολών".

Μάθηση λίγων βολών

Αυτά τα μεγάλα μοντέλα GPT είναι τόσο μεγάλα που μπορούν πολύ γρήγορα να μάθουν από εσάς.

Ας πούμε ότι θέλετε το GPT-3 να δημιουργήσει μια σύντομη περιγραφή προϊόντος για εσάς. Ακολουθεί ένα παράδειγμα χωρίς εκμάθηση λίγων στιγμών:

Generate a product description containing these specific keywords: t-shirt, men, $50

Η απάντηση που θα λάβετε θα είναι άχρηστη. Θα μπορούσε να είναι κάτι τέτοιο για παράδειγμα:

Generate a product description containing these specific keywords: t-shirt, men, $50 and short.

The product description needs to be a few words long. Don’t use plurals, use the keywords in the order they are

Καλά νέα: μπορείτε να πετύχετε πολύ καλύτερα αποτελέσματα δίνοντας απλώς μερικά παραδείγματα στο μοντέλο!

Generate a product description containing specific keywords.

Keywords: shoes, women, $59
Result: Beautiful shoes for women at the price of $59.
###
Keywords: trousers, men, $69
Result: Modern trousers for men, for $69 only.
###
Keywords: gloves, winter, $19
Result: Amazingly hot gloves for cold winters, at $19.
###
Keywords: gpu, gaming, $1499
Result:

Το αποτέλεσμα θα είναι κάπως έτσι:

Generate a product description containing specific keywords.

Keywords: shoes, women, $59
Result: Beautiful shoes for women at the price of $59.
###
Keywords: trousers, men, $69
Result: Modern trousers for men, for $69 only.
###
Keywords: gloves, winter, $19
Result: Amazingly hot gloves for cold winters, at $19.
###
Keywords: gpu, gaming, $1,499
Result: The best gaming GPU on the market, at the price of $1,499 only.

Όπως μπορείτε να δείτε, η απόκριση του μοντέλου είναι τώρα απόλυτα στοχευμένη, χάρη στα 3 παραδείγματα που του δώσαμε αρχικά. Ωστόσο, αυτό το μοντέλο δεν είχε ποτέ εκπαιδευτεί σε αυτού του είδους την εργασία δημιουργίας περιγραφών προϊόντων. Αυτό είναι το νόημα της τεχνικής "μάθησης λίγων βολών": εκτελείτε "μάθηση μεταφοράς" εν κινήσει με μερικά μόνο παραδείγματα. Για να επιτύχετε αυτού του είδους το αποτέλεσμα, συνήθως περιμένετε να εκπαιδεύσετε ένα μοντέλο επεξεργασίας φυσικής γλώσσας με τόνους παραδειγμάτων, αλλά όχι εδώ.

Εξαγωγή οντοτήτων με μάθηση λίγων βολών

Τώρα θα πραγματοποιήσουμε εξαγωγή οντοτήτων χάρη στη μάθηση λίγων λήψεων.

Ας υποθέσουμε ότι θέλετε να εξάγετε τίτλους θέσεων εργασίας από ιστότοπους. Απλά δώστε μερικά παραδείγματα εξαγωγής τίτλων εργασίας πριν κάνετε το πραγματικό σας αίτημα:

Extract job titles from the following sentences.

Sentence: John Doe has been working for Microsoft for 20 years as a Linux Engineer.
Job title: Linux Engineer
###
Sentence: John Doe has been working for Microsoft for 20 years and he loved it.
Job title: none
###
Sentence: Marc Simoncini | Director | Meetic
Job title: Director
###
Sentence: Franck Riboud was born on 7 November 1955 in Lyon. He is the son of Antoine Riboud, who transformed the former European glassmaker BSN Group into a leading player in the food industry. He is the CEO at Danone.
Job title: CEO
###
Sentence: Damien is the CTO of Platform.sh, he was previously the CTO of Commerce Guys, a leading ecommerce provider.
Job title:

Το αποτέλεσμα θα είναι το εξής:

Extract job titles from the following sentences.

Sentence: John Doe has been working for Microsoft for 20 years as a Linux Engineer.
Job title: Linux Engineer
###
Sentence: John Doe has been working for Microsoft for 20 years and he loved it.
Job title: none
###
Sentence: Marc Simoncini | Director | Meetic
Job title: Director
###
Sentence: Franck Riboud was born on 7 November 1955 in Lyon. He is the son of Antoine Riboud, who transformed the former European glassmaker BSN Group into a leading player in the food industry. He is the CEO at Danone.
Job title: CEO
###
Sentence: Damien is the CTO of Platform.sh, he was previously the CTO of Commerce Guys, a leading ecommerce provider.
Job title: CTO

Όπως παρατηρήσατε, πρέπει να είμαστε έξυπνοι σχετικά με το πώς φτιάχνουμε τα παραδείγματά μας με λίγα πλάνα. Μπορεί να συμβεί να μη βρεθεί καθόλου τίτλος εργασίας, γι' αυτό και δημιουργήσαμε ένα παράδειγμα που επιστρέφει "none" (αποφεύγονται τα ψευδώς θετικά αποτελέσματα). Ίσως θέλετε να εξάγετε πολλούς τίτλους εργασίας ταυτόχρονα; Σε αυτή την περίπτωση είναι σημαντικό να δημιουργήσετε παραδείγματα που επιστρέφουν επίσης αρκετούς τίτλους εργασίας (για παράδειγμα, τίτλοι εργασίας που διαχωρίζονται με κόμμα).

Θα έχετε ακόμη καλύτερα αποτελέσματα προσθέτοντας ακόμη περισσότερα παραδείγματα. Και είναι σημαντικό τα παραδείγματά σας να είναι όσο το δυνατόν πιο κοντά στο πραγματικό τελικό αίτημά σας. Για παράδειγμα, αν γνωρίζετε ότι πρόκειται να αναλύσετε ολόκληρες παραγράφους αντί για απλές προτάσεις, είναι καλύτερο να δημιουργήσετε παραδείγματα και με παραγράφους.

Αν δεν έχετε πρόσβαση σε μοντέλο GPT, μπορείτε απλώς να χρησιμοποιήσετε το API του NLP Cloud. Διατίθενται διάφοροι πελάτες (Python, Go, Node.js, Ruby, PHP...). Ας δείξουμε εδώ ένα παράδειγμα χρησιμοποιώντας το GPT-J με τον πελάτη Python:

import nlpcloud

client = nlpcloud.Client("gpt-j", "your API token", gpu=True)
client.generation("""Extract job titles from the following sentences.

    Sentence: John Doe has been working for Microsoft for 20 years as a Linux Engineer.
    Job title: Linux Engineer
    ###
    Sentence: John Doe has been working for Microsoft for 20 years and he loved it.
    Job title: none
    ###
    Sentence: Marc Simoncini | Director | Meetic
    Job title: Director
    ###
    Sentence: Franck Riboud was born on 7 November 1955 in Lyon. He is the son of Antoine Riboud, who transformed the former European glassmaker BSN Group into a leading player in the food industry. He is the CEO at Danone.
    Job title: CEO
    ###
    Sentence: Damien is the CTO of Platform.sh, he was previously the CTO of Commerce Guys, a leading ecommerce provider.
    Job title:""",
top_p=0.1,
length_no_input=True,
remove_input=True,
end_sequence="###",
remove_end_sequence=True
)

Το αποτέλεσμα θα είναι: CTO

Επιτρέψτε μου να σας δώσω μια γρήγορη εξήγηση σχετικά με τις παραμέτρους δημιουργίας κειμένου που μόλις χρησιμοποιήσαμε.

Ορίσαμε μια πολύ χαμηλή ανώτατη τιμή p επειδή δεν θέλουμε το GPT-J να δημιουργήσει πολύ πρωτότυπα αποτελέσματα: θέλουμε απλώς να παραμείνει σε αυτό που είδε στο αίτημά σας.

"length_no_input" σημαίνει ότι η μέγιστη τιμή μήκους δεν πρέπει να λαμβάνει υπόψη το κείμενο εισόδου.

"remove_input" σημαίνει ότι το κείμενο εισόδου πρέπει να αφαιρεθεί από το αποτέλεσμα.

"end_sequence" σημαίνει ότι όταν το μοντέλο συναντήσει αυτόν τον χαρακτήρα, θα πρέπει να σταματήσει να παράγει κείμενο. Καθώς στα παραδείγματά μας με λίγα πλάνα προσθέσαμε το "###" στο τέλος κάθε απάντησης, το μοντέλο θα παράγει αυτόματα το "###" μετά τη δημιουργία της απάντησης και θα σταματήσει εκεί.

"remove_end_sequence" σημαίνει ότι θέλουμε να αφαιρέσουμε το "###" από την απάντηση.

Μπορείτε να δείτε περισσότερες λεπτομέρειες στην τεκμηρίωση του NLP Cloud: δείτε το εδώ.

Εκτιμήσεις επιδόσεων

Η εξαγωγή οντοτήτων με ένα μοντέλο GPT παρέχει μεγάλη ελευθερία, καθώς οποιαδήποτε νέα οντότητα μπορεί να εξαχθεί εν κινήσει, ακόμη και αν το μοντέλο δεν έχει εκπαιδευτεί γι' αυτό!

Ωστόσο, αυτό έχει κάποιο κόστος: αυτά τα μεγάλα γλωσσικά μοντέλα είναι τεράστια και σχετικά αργά.

Για παράδειγμα, αν θέλετε να χρησιμοποιήσετε GPT-J ή GPT-NeoX, θα χρειαστείτε μια τεράστια GPU με πολλή VRAM, όπως μια NVIDIA RTX A6000 ή A40. Και θα υπάρχει κάποια καθυστέρηση (η εξαγωγή μιας οντότητας διαρκεί περίπου 500ms). Αντίθετα, το spaCy ή το NLTK θα είναι πολύ πιο γρήγορο και λιγότερο δαπανηρό από άποψη υποδομής.

Συμπέρασμα

Το 2022, είναι δυνατόν να εκτελέσετε προηγμένη NER πολύ εύκολα χωρίς σχολιασμό και εκπαίδευση! Αυτό θα βοηθήσει σημαντικά τις εταιρείες να παραδώσουν ταχύτερα τα έργα εξαγωγής οντοτήτων και επιτρέπει επίσης πιο πρωτοποριακές εφαρμογές που βασίζονται στην επεξεργασία φυσικής γλώσσας.

Ωστόσο, τα μεγάλα γλωσσικά μοντέλα όπως τα GPT-3, GPT-J και GPT-NeoX είναι δαπανηρά, οπότε δεν θα πρέπει να υποτιμάτε το κόστος των σχετικών υποδομών.

Ελπίζω αυτό το άρθρο να σας βοηθήσει να εξοικονομήσετε χρόνο και χρήματα!

Julien Salinas
CTO στο NLP Cloud