Hur man sammanfattar text med Python och maskininlärning

Sammanfattning är en mycket vanlig uppgift som många utvecklare vill automatisera. Skulle det till exempel inte vara trevligt att automatiskt skapa en sammanfattning av varje bloggartikel du skriver? Eller automatiskt sammanfatta dokument för dina anställda? Det finns massor av bra program.

Transformatorbaserade modeller som Bart Large CNN gör det enkelt att sammanfatta text i Python. Dessa modeller för maskininlärning är lätta att använda men svåra att skala upp. Låt oss se hur man använder Bart Large CNN och hur man optimerar dess prestanda.

Sammanfattning

Transformers och Bart Large CNN

Transformers är ett avancerat Pythonramverk som nyligen gjorde det möjligt att uppnå mycket avancerade användningsområden för behandling av naturliga språk, t.ex. sammanfattning av text.

Före Transformers och neurala nätverk fanns det ett par alternativ, men inget av dem var riktigt tillfredsställande.

Många bra förtränade modeller för behandling av naturliga språk har skapats under de senaste åren, baserade på transformatorer, för olika användningsområden. Bart Large CNN har släppts av Facebook och ger utmärkta resultat för sammanfattning av text.

Så här använder du Bart Large CNN i din Pythonkod.

Sammanfattning av text i Python

Det enklaste sättet att använda Bart Large CNN är att ladda ner det från Hugging Face-förrådet och använda textresumtions-pipeline från 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))

Utgång:

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 är detta endast 4 rader Pythonkod, och kvaliteten på sammanfattningen är mycket bra! Men du kanske har märkt att modellen är stor så det tar tid att ladda ner den första gången.

Parametrarna min_length och max_length anger den minsta och största storleken på sammanfattningen. De representerar ett antal tecken, inte ord. I princip kan en token vara ett ord, men även interpunktion eller underord. I allmänhet kan du tänka dig att 100 tokens motsvarar ungefär 75 ord.

Viktigt att notera: din inmatningstext kan inte vara större än 1024 tokens (mer eller mindre lika med 800 ord) eftersom detta är en intern begränsning för den här modellen. Om du vill sammanfatta större textstycken är en bra strategi att sammanfatta flera delar av texten oberoende av varandra och sedan sammanställa resultaten. Du kan till och med utföra sammanfattningar av sammanfattningar!

Överväganden om prestanda

Det finns dock två huvudproblem med denna Bart Large CNN-modell.

För det första kräver den, som många andra modeller för djupinlärning, en stor mängd diskutrymme och RAM-minne (cirka 1,5 GB!). Detta kan fortfarande betraktas som en liten modell för djupinlärning jämfört med stora modeller som GPT-3, GPT-J, T5 11B osv.

Ännu viktigare är att den är ganska långsam. Den här modellen utför faktiskt textgenerering under huven, och textgenerering är av naturliga skäl långsam. Om du försöker sammanfatta en text som består av 800 ord tar det cirka 20 sekunder på en bra processor...

Lösningen är att använda Bart stora CNN på en GPU. På en NVIDIA Tesla T4 kan du till exempel förvänta dig en x10-höjning av hastigheten och din 800 ord långa text kommer att sammanfattas på cirka 2 sekunder.

GPU:er är förstås mycket dyra, så det är upp till dig att räkna på det och avgöra om investeringen är värd det!

Utnyttja ett externt API för produktion

Textsammanfattning med Bart Large CNN är mycket lätt att använda i ett enkelt skript, men vad händer om du vill använda det i produktionen för en stor mängd förfrågningar?

Som nämnts ovan skulle en första lösning vara att ta hand om att tillhandahålla din egen maskinvara med en GPU och arbeta med vissa produktionsoptimeringar för att göra sammanfattningen snabbare.

En annan lösning är att delegera uppgiften till en dedikerad tjänst som NLP Cloud som tillhandahåller Bart Large CNN-modellen för dig via ett API. Testa vår API-slutpunkt för sammanfattning här!

Slutsats

År 2022 är det möjligt att utföra avancerad sammanfattning av text i Python med mycket liten ansträngning, tack vare Transformers och Bart Large CNN.

Textsammanfattningar är en mycket användbar uppgift som allt fler företag nu automatiserar i sina tillämpningar. Som du kan se kommer komplexiteten från prestandasidan. Det finns vissa tekniker för att snabba upp din textsammanfattning med Bart Large CNN, men detta är ett ämne för en annan artikel!

Jag hoppas att den här artikeln hjälper dig att spara tid i ditt nästa projekt! Prova gärna sammanfattning av text på NLP Cloud!

Julien Salinas
CTO på NLP Cloud