Oppsummering er en veldig vanlig oppgave som mange utviklere ønsker å automatisere. Ville det for eksempel ikke være fint å automatisk lage et sammendrag av hver bloggartikkel du skriver? Eller automatisk oppsummere dokumenter for dine ansatte? Det finnes massevis av gode applikasjoner.
Transformatorbaserte modeller som Bart Large CNN gjør det enkelt å oppsummere tekst i Python. Disse maskinlæringsmodellene er enkle å bruke, men vanskelige å skalere. La oss se hvordan du bruker Bart Large CNN og hvordan du optimaliserer ytelsen.
Transformers er et avansert Python-rammeverk som nylig gjorde det mulig å oppnå svært avanserte bruksområder for naturlig språkbehandling som tekstoppsummering.
Før transformatorer og nevrale nettverk fantes det et par alternativer, men ingen av dem var virkelig tilfredsstillende.
Mange gode forhåndsopplærte modeller for naturlig språkbehandling har blitt opprettet de siste årene, basert på Transformers, for forskjellige brukstilfeller. Bart Large CNN er utgitt av Facebook og gir utmerkede resultater for tekstoppsummering.
Slik bruker du Bart Large CNN i Python-koden din.
Den enkleste måten å bruke Bart Large CNN på er å laste den ned fra Hugging Face-repositoriet, og bruke tekstoppsummeringsrørledningen fra Transformers-biblioteket:
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))
Produksjon:
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.
Som du kan se, er dette bare 4 linjer med Python-kode, og kvaliteten på sammendraget er veldig bra! Men du har kanskje lagt merke til at modellen er stor, så det tar tid å laste den ned første gang.
Parameterne min_length og max_length angir minimums- og maksimumsstørrelsen på sammendraget ditt. De representerer et antall symboler, ikke ord. I utgangspunktet kan et tegn være et ord, men også tegnsetting eller underord. Generelt kan du regne med at 100 tokens tilsvarer omtrent 75 ord.
Viktig merknad: Inngangsteksten din kan ikke være større enn 1024 tokens (mer eller mindre lik 800 ord), da dette er en intern begrensning i denne modellen. Hvis du vil oppsummere større tekststykker, er det en god strategi å oppsummere flere deler av teksten uavhengig av hverandre og deretter sette sammen resultatene på nytt. Du kan til og med lage sammendrag av sammendrag!
Det er imidlertid to hovedproblemer med denne Bart Large CNN-modellen.
For det første, som mange dype læringsmodeller, krever det en viktig mengde diskplass og RAM (rundt 1.5 GB!). Og dette kan fortsatt betraktes som en liten dyp læringsmodell sammenlignet med store som GPT-3, GPT-J, T5 11B, etc.
Enda viktigere er at den er ganske treg. Denne modellen utfører faktisk tekstgenerering under panseret, og tekstgenerering er iboende treg. Hvis du prøver å oppsummere et stykke tekst som består av 800 ord, vil det ta rundt 20 sekunder på en god CPU ...
Løsningen er å distribuere Bart store CNN på en GPU. For eksempel, på en NVIDIA Tesla T4, kan du forvente en x10 hastighet, og teksten på 800 ord vil bli oppsummert på rundt 2 sekunder.
GPU-er er selvfølgelig veldig dyre, så det er opp til deg å gjøre regnestykket og bestemme om investeringen er verdt det!
Tekstoppsummering med Bart Large CNN er veldig enkelt å bruke i et enkelt skript, men hva om du vil bruke det i produksjon for et stort volum av forespørsler?
Som nevnt ovenfor vil en første løsning være å ta vare på din egen maskinvare med en GPU, og jobbe med noen produksjonsoptimaliseringer for å gjøre oppsummeringen raskere.
En annen løsning ville være å delegere denne oppgaven til en dedikert tjeneste som NLP Cloud som vil betjene Bart Large CNN-modellen for deg gjennom en API. Test vårt oppsummerings-API-endepunkt her!
I 2022 er det mulig å utføre avansert tekstoppsummering i Python med svært liten innsats, takket være Transformers og Bart Large CNN.
Tekstoppsummering er en veldig nyttig oppgave som flere og flere selskaper nå automatiserer i applikasjonen sin. Som du kan se, kommer kompleksiteten fra ytelsessiden. Noen teknikker finnes for å øke hastigheten på tekstoppsummeringen din med Bart Large CNN, men dette vil være et tema for en annen artikkel!
Jeg håper denne artikkelen vil hjelpe deg med å spare tid til ditt neste prosjekt! Prøv gjerne tekstoppsummering på NLP Cloud!
François
Fullstack-ingeniør hos NLP Cloud