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

Πώς να συνοψίσετε κείμενο με την Python και τη μηχανική μάθηση

Η σύνοψη είναι μια πολύ συνηθισμένη εργασία που πολλοί προγραμματιστές θα ήθελαν να αυτοματοποιήσουν. Για παράδειγμα, δεν θα ήταν ωραίο να δημιουργείτε αυτόματα μια περίληψη για κάθε άρθρο που γράφετε σε ένα blog; Ή να συνοψίζετε αυτόματα έγγραφα για τους υπαλλήλους σας; Υπάρχουν τόνοι καλών εφαρμογών.

Τα μοντέλα που βασίζονται σε μετασχηματιστές, όπως το Bart Large CNN, καθιστούν εύκολη τη σύνοψη κειμένου στην Python. Αυτά τα μοντέλα μηχανικής μάθησης είναι εύκολα στη χρήση αλλά δύσκολα στην κλιμάκωση. Ας δούμε πώς να χρησιμοποιήσετε το Bart Large CNN και πώς να βελτιστοποιήσετε τις επιδόσεις του.

Περίληψη γραφής

Transformers και Bart Large CNN

Το Transformers είναι ένα προηγμένο πλαίσιο Python που πρόσφατα κατέστησε δυνατή την επίτευξη πολύ προηγμένων περιπτώσεων χρήσης επεξεργασίας φυσικής γλώσσας, όπως η σύνοψη κειμένου.

Πριν από τους Transformers και τα νευρωνικά δίκτυα, υπήρχαν μερικές επιλογές, αλλά καμία από αυτές δεν ήταν πραγματικά ικανοποιητική.

Πολλά καλά προ-εκπαιδευμένα μοντέλα επεξεργασίας φυσικής γλώσσας έχουν δημιουργηθεί τα τελευταία χρόνια, με βάση τους Transformers, για διάφορες περιπτώσεις χρήσης. Το Bart Large CNN έχει κυκλοφορήσει από το Facebook και δίνει εξαιρετικά αποτελέσματα για την περίληψη κειμένου.

Δείτε πώς μπορείτε να χρησιμοποιήσετε το Bart Large CNN στον κώδικα Python.

Περίληψη κειμένου στην Python

Ο απλούστερος τρόπος για να χρησιμοποιήσετε το Bart Large CNN είναι να το κατεβάσετε από το αποθετήριο Hugging Face και να χρησιμοποιήσετε τον αγωγό σύνοψης κειμένου από τη βιβλιοθήκη Transformers:

from transformers import pipeline

summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

article = """New York (CNN)When Liana Barrientos was 23 years old, she got married in Westchester County, New York.
A year later, she got married again in Westchester County, but to a different man and without divorcing her first husband.
Only 18 days after that marriage, she got hitched yet again. Then, Barrientos declared "I do" five more times, sometimes only within two weeks of each other.
In 2010, she married once more, this time in the Bronx. In an application for a marriage license, she stated it was her "first and only" marriage.
Barrientos, now 39, is facing two criminal counts of "offering a false instrument for filing in the first degree," referring to her false statements on the
2010 marriage license application, according to court documents.
Prosecutors said the marriages were part of an immigration scam.
On Friday, she pleaded not guilty at State Supreme Court in the Bronx, according to her attorney, Christopher Wright, who declined to comment further.
After leaving court, Barrientos was arrested and charged with theft of service and criminal trespass for allegedly sneaking into the New York subway through an emergency exit, said Detective
Annette Markowski, a police spokeswoman. In total, Barrientos has been married 10 times, with nine of her marriages occurring between 1999 and 2002.
All occurred either in Westchester County, Long Island, New Jersey or the Bronx. She is believed to still be married to four men, and at one time, she was married to eight men at once, prosecutors say.
Prosecutors said the immigration scam involved some of her husbands, who filed for permanent residence status shortly after the marriages.
Any divorces happened only after such filings were approved. It was unclear whether any of the men will be prosecuted.
The case was referred to the Bronx District Attorney\'s Office by Immigration and Customs Enforcement and the Department of Homeland Security\'s
Investigation Division. Seven of the men are from so-called "red-flagged" countries, including Egypt, Turkey, Georgia, Pakistan and Mali.
Her eighth husband, Rashid Rajput, was deported in 2006 to his native Pakistan after an investigation by the Joint Terrorism Task Force.
If convicted, Barrientos faces up to four years in prison.  Her next court appearance is scheduled for May 18."""

summary = summarizer(article, max_length=130, min_length=30))

Έξοδος:

Liana Barrientos, 39, is charged with two counts of "offering a false instrument for filing in the first degree" In total, she has been married 10 times, with nine of her marriages occurring between 1999 and 2002. She is believed to still be married to four men.

Όπως μπορείτε να δείτε, πρόκειται για μόνο 4 γραμμές κώδικα Python και η ποιότητα της περίληψης είναι πολύ καλή! Αλλά ίσως έχετε παρατηρήσει ότι το μοντέλο είναι μεγάλο, οπότε χρειάζεται χρόνος για να το κατεβάσετε την πρώτη φορά.

Οι παράμετροι min_length και max_length υποδεικνύουν το ελάχιστο και το μέγιστο μέγεθος της περίληψής σας. Αντιπροσωπεύουν έναν αριθμό tokens, όχι λέξεις. Βασικά, ένα token μπορεί να είναι μια λέξη, αλλά και σημεία στίξης ή υπολέξεις. Σε γενικές γραμμές μπορείτε να θεωρήσετε ότι 100 tokens αντιστοιχούν περίπου σε 75 λέξεις.

Σημαντική σημείωση: το κείμενο εισόδου σας δεν μπορεί να είναι μεγαλύτερο από 1024 tokens (περίπου ίσο με 800 λέξεις), καθώς πρόκειται για έναν εσωτερικό περιορισμό αυτού του μοντέλου. Αν θέλετε να συνοψίσετε μεγαλύτερα κομμάτια κειμένου, μια καλή στρατηγική είναι να συνοψίσετε ανεξάρτητα διάφορα μέρη του κειμένου και στη συνέχεια να επανασυνθέσετε τα αποτελέσματα. Μπορείτε ακόμη και να εκτελέσετε περιλήψεις περιλήψεων!

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

Υπάρχουν όμως 2 βασικά προβλήματα με αυτό το μοντέλο Bart Large CNN.

Πρώτον, όπως πολλά μοντέλα βαθιάς μάθησης, απαιτεί σημαντικό χώρο στο δίσκο και στη μνήμη RAM (περίπου 1,5 GB!). Και αυτό μπορεί ακόμα να θεωρηθεί ως ένα μικρό μοντέλο βαθιάς μάθησης σε σύγκριση με τεράστια μοντέλα όπως τα GPT-3, GPT-J, T5 11B κ.λπ.

Ακόμη πιο σημαντικό, είναι αρκετά αργή. Αυτό το μοντέλο εκτελεί στην πραγματικότητα παραγωγή κειμένου κάτω από την κουκούλα, και η παραγωγή κειμένου είναι εγγενώς αργή. Αν προσπαθείτε να συνοψίσετε ένα κείμενο που αποτελείται από 800 λέξεις, θα χρειαστεί περίπου 20 δευτερόλεπτα σε μια καλή CPU...

Η λύση είναι να αναπτυχθεί το μεγάλο CNN του Bart σε μια GPU. Για παράδειγμα, σε μια NVIDIA Tesla T4, μπορείτε να περιμένετε μια επιτάχυνση x10 και το κείμενο των 800 λέξεων θα συνοψίζεται σε περίπου 2 δευτερόλεπτα.

Οι GPU είναι φυσικά πολύ ακριβές, οπότε είναι στο χέρι σας να κάνετε τους υπολογισμούς και να αποφασίσετε αν η επένδυση αξίζει τον κόπο!

Αξιοποίηση ενός εξωτερικού API για την παραγωγή

Η σύνοψη κειμένου με το Bart Large CNN είναι πολύ εύκολο να χρησιμοποιηθεί σε ένα απλό σενάριο, αλλά τι γίνεται αν θέλετε να το χρησιμοποιήσετε στην παραγωγή για μεγάλο όγκο αιτημάτων;

Όπως αναφέρθηκε παραπάνω, μια πρώτη λύση θα ήταν να φροντίσετε για την προμήθεια του δικού σας υλικού με GPU και να εργαστείτε σε κάποιες βελτιστοποιήσεις παραγωγής προκειμένου να κάνετε τη σύνοψη ταχύτερη.

Μια δεύτερη λύση θα ήταν να αναθέσετε αυτό το έργο σε μια ειδική υπηρεσία όπως το NLP Cloud, η οποία θα σας εξυπηρετήσει το μοντέλο Bart Large CNN μέσω ενός API. Δοκιμάστε το τελικό σημείο του API σύνοψης εδώ!

Συμπέρασμα

Το 2022, είναι δυνατή η πραγματοποίηση προηγμένης περίληψης κειμένου στην Python με πολύ μικρή προσπάθεια, χάρη στους Transformers και το Bart Large CNN.

Η περίληψη κειμένου είναι μια πολύ χρήσιμη εργασία που όλο και περισσότερες εταιρείες αυτοματοποιούν πλέον στις εφαρμογές τους. Όπως μπορείτε να δείτε, η πολυπλοκότητα προέρχεται από την πλευρά των επιδόσεων. Υπάρχουν κάποιες τεχνικές προκειμένου να επιταχύνετε την περίληψη κειμένου με το Bart Large CNN, αλλά αυτό θα είναι θέμα για άλλο άρθρο!

Ελπίζω αυτό το άρθρο να σας βοηθήσει να εξοικονομήσετε χρόνο για το επόμενο έργο σας! Μη διστάσετε να δοκιμάσετε την περίληψη κειμένου στο NLP Cloud!

Julien Salinas
CTO στο NLP Cloud