Come riassumere il testo con Python e l'apprendimento automatico

Il riassunto è un compito molto comune che molti sviluppatori vorrebbero automatizzare. Per esempio, non sarebbe bello creare automaticamente un riassunto di ogni articolo del blog che stai scrivendo? O riassumere automaticamente i documenti per i vostri dipendenti? Esistono tonnellate di buone applicazioni.

I modelli basati su trasformatori come Bart Large CNN rendono facile riassumere il testo in Python. Questi modelli di apprendimento automatico sono facili da usare ma difficili da scalare. Vediamo come usare Bart Large CNN e come ottimizzare le sue prestazioni.

Scrittura riassuntiva

Trasformatori e Bart grande CNN

Transformers è un framework Python avanzato che recentemente ha reso possibile raggiungere casi d'uso molto avanzati di elaborazione del linguaggio naturale come la sintesi del testo.

Prima dei Transformers e delle reti neurali, erano disponibili un paio di opzioni, ma nessuna di esse era davvero soddisfacente.

Molti buoni modelli di elaborazione del linguaggio naturale pre-addestrati sono stati creati negli ultimi anni, basati su Transformers, per vari casi d'uso. Bart Large CNN è stato rilasciato da Facebook e dà ottimi risultati per la sintesi del testo.

Ecco come usare Bart Large CNN nel vostro codice Python.

Riassumere il testo in Python

Il modo più semplice per utilizzare Bart Large CNN è quello di scaricarlo dal repository di Hugging Face, e utilizzare la pipeline di sintesi del testo dalla libreria 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))

Uscita:

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.

Come potete vedere, si tratta solo di 4 righe di codice Python, e la qualità del riassunto è molto buona! Ma avrete notato che il modello è grande, quindi ci vuole tempo per scaricarlo la prima volta.

I parametri min_length e max_length indicano le dimensioni minime e massime del vostro sommario. Rappresentano un numero di token, non di parole. Fondamentalmente un token può essere una parola, ma anche la punteggiatura o le sottoparole. In generale puoi considerare che 100 token sono approssimativamente uguali a 75 parole.

Nota importante: il tuo testo di input non può essere più grande di 1024 token (più o meno pari a 800 parole), poiché questa è una limitazione interna di questo modello. Se vuoi riassumere pezzi di testo più grandi, una buona strategia è quella di riassumere diverse parti del testo in modo indipendente e poi riassemblare i risultati. È anche possibile eseguire riassunti di riassunti!

Considerazioni sulle prestazioni

Ci sono però 2 problemi principali con questo modello Bart Large CNN.

In primo luogo, come molti modelli di deep learning, richiede una quantità importante di spazio su disco e RAM (circa 1,5 GB!). E questo può ancora essere considerato come un piccolo modello di deep learning rispetto a quelli enormi come GPT-3, GPT-J, T5 11B, ecc.

Ancora più importante, è abbastanza lento. Questo modello sta effettivamente eseguendo la generazione di testo sotto il cofano, e la generazione di testo è intrinsecamente lenta. Se stai cercando di riassumere un pezzo di testo composto da 800 parole, ci vorranno circa 20 secondi su una buona CPU...

La soluzione è quella di implementare Bart grande CNN su una GPU. Per esempio, su una NVIDIA Tesla T4, ci si può aspettare un'accelerazione x10 e il vostro pezzo di testo di 800 parole sarà riassunto in circa 2 secondi.

Le GPU sono ovviamente molto costose, quindi sta a voi fare i conti e decidere se l'investimento vale la pena!

Sfruttare un'API esterna per la produzione

Il riassunto del testo con Bart Large CNN è molto facile da usare in un semplice script, ma cosa succede se volete usarlo in produzione per un grande volume di richieste?

Come menzionato sopra, una prima soluzione sarebbe quella di occuparsi del provisioning del proprio hardware con una GPU, e lavorare su alcune ottimizzazioni di produzione al fine di rendere la sintesi più veloce.

Una seconda soluzione sarebbe quella di delegare questo compito a un servizio dedicato come NLP Cloud che servirà il modello Bart Large CNN per voi attraverso un'API. Prova il nostro endpoint API di riassunto qui!

Conclusione

Nel 2022, è possibile eseguire un riassunto avanzato del testo in Python con pochissimo sforzo, grazie a Transformers e Bart Large CNN.

La sintesi del testo è un compito molto utile che sempre più aziende ora automatizzano nelle loro applicazioni. Come potete vedere, la complessità viene dal lato delle prestazioni. Esistono alcune tecniche per accelerare il riassunto del testo con Bart Large CNN, ma questo sarà un argomento per un altro articolo!

Spero che questo articolo vi aiuti a risparmiare tempo per il vostro prossimo progetto! Sentitevi liberi di provare il riassunto del testo su NLP Cloud!

Julien Salinas
CTO di NLP Cloud