Sumarizace je velmi častá úloha, kterou by mnoho vývojářů rádo automatizovalo. Nebylo by například hezké automaticky vytvářet shrnutí každého článku na blogu, který píšete? Nebo automaticky shrnout dokumenty pro vaše zaměstnance? Existují tuny dobrých aplikací.
Modely založené na transformátorech, jako je Bart Large CNN, usnadňují shrnutí textu v jazyce Python. Tyto modely strojového učení se snadno používají, ale obtížně se škálují. Podívejme se, jak používat Bart Large CNN a jak optimalizovat jeho výkony.
Transformers je pokročilý framework Pythonu, který nedávno umožnil dosáhnout velmi pokročilých případů použití zpracování přirozeného jazyka, jako je například shrnutí textu.
Před Transformery a neuronovými sítěmi bylo k dispozici několik možností, ale žádná z nich nebyla skutečně uspokojivá.
V posledních letech bylo vytvořeno mnoho dobrých předtrénovaných modelů zpracování přirozeného jazyka založených na transformátorech pro různé případy použití. Bart Large CNN byl vydán společností Facebook a poskytuje vynikající výsledky pro sumarizaci textu.
Zde je návod, jak použít Bart Large CNN v kódu Pythonu.
Nejjednodušší způsob, jak použít Bart Large CNN, je stáhnout si ji z úložiště Hugging Face a použít pipeline pro sumarizaci textu z knihovny 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))
Výstup:
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.
Jak můžete vidět, jedná se o pouhé 4 řádky kódu Pythonu a kvalita shrnutí je velmi dobrá! Možná jste si ale všimli, že model je velký, takže jeho první stažení trvá dlouho.
Parametry min_length a max_length udávají minimální a maximální velikost souhrnu. Představují počet tokenů, nikoli slov. Tokenem může být v podstatě slovo, ale také interpunkce nebo podhesla. Obecně lze uvažovat, že 100 tokenů se zhruba rovná 75 slovům.
Důležitá poznámka: vstupní text nesmí být větší než 1024 tokenů (což se víceméně rovná 800 slovům), protože se jedná o interní omezení tohoto modelu. Pokud chcete shrnout větší kusy textu, je dobrou strategií shrnout několik částí textu nezávisle na sobě a poté výsledky znovu sestavit. Můžete dokonce provádět shrnutí shrnutí!
Tento model Bart Large CNN má však dva hlavní problémy.
Zaprvé, stejně jako mnoho jiných modelů hlubokého učení vyžaduje velké množství místa na disku a v paměti RAM (přibližně 1,5 GB!). A to lze stále považovat za malý model hlubokého učení ve srovnání s obrovskými modely, jako jsou GPT-3, GPT-J, T5 11B atd.
Ještě důležitější je, že je poměrně pomalý. Tento model vlastně provádí generování textu pod kapotou a generování textu je ze své podstaty pomalé. Pokud se snažíte shrnout text složený z 800 slov, zabere to na dobrém procesoru přibližně 20 sekund...
Řešením je nasazení Bartovy velké CNN na GPU. Například na NVIDIA Tesla T4 můžete očekávat zrychlení x10 a váš text o 800 slovech bude shrnut přibližně za 2 sekundy.
GPU jsou samozřejmě velmi drahé, takže je na vás, abyste si to spočítali a rozhodli se, zda se vám investice vyplatí!
Shrnutí textu pomocí Bart Large CNN lze velmi snadno použít v jednoduchém skriptu, ale co když jej chcete použít v produkčním prostředí pro velký objem požadavků?
Jak bylo uvedeno výše, prvním řešením by bylo postarat se o zajištění vlastního hardwaru s GPU a pracovat na některých produkčních optimalizacích, aby se sumarizace zrychlila.
Druhým řešením by bylo delegovat tento úkol na specializovanou službu, jako je NLP Cloud, která vám prostřednictvím rozhraní API poskytne model Bart Large CNN. Otestujte náš koncový bod API pro shrnutí zde!
V roce 2022 je možné provádět pokročilou sumarizaci textu v jazyce Python s velmi malým úsilím, a to díky Transformers a Bart Large CNN.
Shrnutí textu je velmi užitečná úloha, kterou dnes automatizuje stále více firem ve svých aplikacích. Jak vidíte, složitost vychází z výkonnostní stránky. Existují některé techniky, jak sumarizaci textu pomocí Bart Large CNN urychlit, ale to bude téma na další článek!
Doufám, že vám tento článek pomůže ušetřit čas při vašem dalším projektu! Neváhejte a vyzkoušejte si shrnutí textu na NLP Cloud!
Julien Salinas
Technický ředitel společnosti NLP Cloud