Sumarizácia je veľmi častá úloha, ktorú by mnohí vývojári chceli automatizovať. Nebolo by napríklad pekné automaticky vytvoriť zhrnutie každého článku na blogu, ktorý píšete? Alebo automaticky sumarizovať dokumenty pre vašich zamestnancov? Existujú tony dobrých aplikácií.
Modely založené na transformátoroch, ako napríklad Bart Large CNN, uľahčujú sumarizáciu textu v jazyku Python. Tieto modely strojového učenia sa ľahko používajú, ale ťažko škálujú. Pozrime sa, ako používať Bart Large CNN a ako optimalizovať jeho výkony.
Transformers je pokročilý rámec jazyka Python, ktorý nedávno umožnil dosiahnuť veľmi pokročilé prípady použitia spracovania prirodzeného jazyka, ako je napríklad sumarizácia textu.
Pred Transformátormi a neurónovými sieťami bolo k dispozícii niekoľko možností, ale žiadna z nich nebola skutočne uspokojivá.
V posledných rokoch bolo vytvorených mnoho dobrých predtrénovaných modelov spracovania prirodzeného jazyka založených na transformátoroch pre rôzne prípady použitia. Bart Large CNN bola vydaná spoločnosťou Facebook a poskytuje vynikajúce výsledky pri sumarizácii textu.
Tu je návod na použitie Bart Large CNN v kóde Pythonu.
Najjednoduchší spôsob, ako používať Bart Large CNN, je stiahnuť si ho z úložiska Hugging Face a použiť pipeline na sumarizáciu textu z knižnice 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.
Ako môžete vidieť, ide len o 4 riadky kódu Pythonu a kvalita zhrnutia je veľmi dobrá! Možno ste si však všimli, že model je veľký, takže jeho prvé stiahnutie trvá dlho.
Parametre min_length a max_length udávajú minimálnu a maximálnu veľkosť súhrnu. Predstavujú počet tokenov, nie slov. Tokenom môže byť v podstate slovo, ale aj interpunkcia alebo podheslá. Vo všeobecnosti môžete uvažovať, že 100 tokenov sa približne rovná 75 slovám.
Dôležité upozornenie: váš vstupný text nemôže byť väčší ako 1024 tokenov (čo sa viac-menej rovná 800 slovám), pretože ide o interné obmedzenie tohto modelu. Ak chcete sumarizovať väčšie časti textu, dobrou stratégiou je sumarizovať niekoľko častí textu nezávisle a potom výsledky opäť spojiť. Môžete dokonca vykonávať súhrny súhrnov!
Tento model Bart Large CNN má však dva hlavné problémy.
Po prvé, podobne ako mnohé iné modely hlbokého učenia, aj tento si vyžaduje veľké množstvo miesta na disku a v pamäti RAM (približne 1,5 GB!). A to sa stále dá považovať za malý model hlbokého učenia v porovnaní s obrovskými modelmi, ako sú GPT-3, GPT-J, T5 11B atď.
A čo je ešte dôležitejšie, je pomerne pomalý. Tento model vlastne vykonáva generovanie textu pod kapotou a generovanie textu je zo svojej podstaty pomalé. Ak sa snažíte zhrnúť text zložený z 800 slov, na dobrom procesore to bude trvať približne 20 sekúnd...
Riešením je nasadiť Bartovu veľkú CNN na GPU. Napríklad na grafickom procesore NVIDIA Tesla T4 môžete očakávať zrýchlenie x10 a váš 800-slovný text bude zhrnutý približne za 2 sekundy.
GPU sú samozrejme veľmi drahé, takže je na vás, aby ste si to spočítali a rozhodli sa, či sa vám táto investícia oplatí!
Sumarizácia textu pomocou Bart Large CNN je veľmi jednoduchá na použitie v jednoduchom skripte, ale čo ak ju chcete použiť v produkcii pre veľký objem požiadaviek?
Ako bolo uvedené vyššie, prvým riešením by bolo postarať sa o zabezpečenie vlastného hardvéru s GPU a pracovať na niektorých produkčných optimalizáciách s cieľom zrýchliť sumarizáciu.
Druhým riešením by bolo delegovať túto úlohu na špecializovanú službu, ako je napríklad NLP Cloud, ktorá vám prostredníctvom API poskytne model Bart Large CNN. Otestujte náš koncový bod API pre sumarizáciu tu!
V roku 2022 je možné vykonávať pokročilú sumarizáciu textu v jazyku Python s veľmi malým úsilím vďaka aplikáciám Transformers a Bart Large CNN.
Sumarizácia textu je veľmi užitočná úloha, ktorú v súčasnosti automatizuje čoraz viac spoločností. Ako vidíte, zložitosť prichádza zo strany výkonu. Existujú niektoré techniky, ktoré umožňujú urýchliť sumarizáciu textu pomocou Bart Large CNN, ale to bude téma na ďalší článok!
Dúfam, že vám tento článok pomôže ušetriť čas pri vašom ďalšom projekte! Neváhajte a vyskúšajte sumarizáciu textu v službe NLP Cloud!
Julien Salinas
Technický riaditeľ spoločnosti NLP Cloud