Samenvatten is een veel voorkomende taak die veel ontwikkelaars zouden willen automatiseren. Zou het bijvoorbeeld niet leuk zijn om automatisch een samenvatting te maken van elk blog artikel dat je aan het schrijven bent? Of automatisch documenten samen te vatten voor uw werknemers? Er bestaan tonnen goede toepassingen.
Transformer-gebaseerde modellen zoals Bart Large CNN maken het gemakkelijk om tekst samen te vatten in Python. Deze machine learning modellen zijn makkelijk te gebruiken maar moeilijk te schalen. Laten we eens kijken hoe we Bart Large CNN kunnen gebruiken en hoe we de prestaties kunnen optimaliseren.
Transformers is een geavanceerd Python-framework waarmee sinds kort zeer geavanceerde toepassingen van natuurlijke taalverwerking mogelijk zijn, zoals het samenvatten van teksten.
Vóór Transformers en neurale netwerken waren er een paar opties, maar geen daarvan was echt bevredigend.
Er zijn de laatste jaren veel goede voorgetrainde modellen voor natuurlijke taalverwerking gemaakt, gebaseerd op Transformers, voor verschillende gebruikssituaties. Bart Large CNN is uitgebracht door Facebook en geeft uitstekende resultaten voor tekstsamenvatting.
Hier is hoe je Bart Large CNN in je Python code kunt gebruiken.
De eenvoudigste manier om Bart Large CNN te gebruiken is door het te downloaden uit de Hugging Face repository, en de tekst samenvattings pipeline uit de Transformers bibliotheek te gebruiken:
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))
Uitgang:
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.
Zoals u kunt zien, is dit slechts 4 regels Python code, en de kwaliteit van de samenvatting is zeer goed! Maar je hebt misschien gemerkt dat het model groot is, dus het duurt even om het de eerste keer te downloaden.
De parameters min_length en max_length geven de minimum- en maximumgrootte van uw samenvatting aan. Zij vertegenwoordigen een aantal tokens, geen woorden. In principe kan een token een woord zijn, maar ook interpunctie of deelwoorden. In het algemeen kunt u ervan uitgaan dat 100 tokens ongeveer gelijk zijn aan 75 woorden.
Belangrijke opmerking: uw ingevoerde tekst kan niet groter zijn dan 1024 tokens (min of meer gelijk aan 800 woorden), aangezien dit een interne beperking van dit model is. Als u grotere stukken tekst wilt samenvatten, is een goede strategie om verschillende delen van de tekst onafhankelijk samen te vatten en dan de resultaten opnieuw samen te voegen. U kunt zelfs samenvattingen van samenvattingen maken!
Er zijn echter 2 grote problemen met dit Bart Large CNN model.
Ten eerste vereist het, zoals veel deep learning-modellen, een aanzienlijke hoeveelheid schijfruimte en RAM (ongeveer 1,5 GB!). En dit kan nog steeds worden beschouwd als een klein deep learning-model in vergelijking met enorme modellen zoals GPT-3, GPT-J, T5 11B, enz.
En nog belangrijker, het is behoorlijk traag. Dit model voert onder de motorkap tekstgeneratie uit, en tekstgeneratie is van nature traag. Als je een stuk tekst van 800 woorden probeert samen te vatten, duurt dat ongeveer 20 seconden op een goede CPU...
De oplossing is om Bart grote CNN op een GPU in te zetten. Op een NVIDIA Tesla T4 bijvoorbeeld, kun je een x10 speedup verwachten en zal je stuk tekst van 800 woorden in ongeveer 2 seconden zijn samengevat.
GPU's zijn natuurlijk erg duur, dus het is aan u om te rekenen en te beslissen of de investering het waard is!
Tekst samenvatten met Bart Large CNN is heel eenvoudig in een eenvoudig script, maar wat als je het in productie wilt gebruiken voor een groot volume aan verzoeken?
Zoals hierboven vermeld, zou een eerste oplossing zijn om te zorgen voor eigen hardware met een GPU, en te werken aan enkele productie-optimalisaties om het samenvatten sneller te maken.
Een tweede oplossing zou zijn om deze taak te delegeren aan een speciale dienst zoals NLP Cloud die het Bart Large CNN-model voor u serveert via een API. Test onze samenvattende API endpoint hier!
In 2022 is het mogelijk om geavanceerde tekstsamenvattingen in Python uit te voeren met zeer weinig inspanning, dankzij Transformers en Bart Large CNN.
Tekst samenvatten is een zeer nuttige taak die meer en meer bedrijven nu automatiseren in hun toepassing. Zoals je kan zien, komt de complexiteit van de performantie kant. Er bestaan enkele technieken om je tekstsamenvatting met Bart Large CNN te versnellen, maar dit zal een onderwerp zijn voor een ander artikel!
Ik hoop dat dit artikel u zal helpen tijd te besparen voor uw volgende project! Voel je vrij om tekstsamenvatting op NLP Cloud uit te proberen!
Julien Salinas
CTO bij NLP Cloud