Kokkuvõtete tegemine on väga levinud ülesanne, mida paljud arendajad sooviksid automatiseerida. Kas näiteks ei oleks tore luua automaatselt kokkuvõte igast blogiartiklist, mida kirjutate? Või teha automaatselt kokkuvõtteid dokumentidest oma töötajatele? Tonni häid rakendusi on olemas.
Transformaatoritel põhinevad mudelid, nagu Bart Large CNN, muudavad teksti kokkuvõtete tegemise Pythonis lihtsaks. Neid masinõppe mudeleid on lihtne kasutada, kuid neid on raske skaleerida. Vaatame, kuidas kasutada Bart Large CNNi ja kuidas optimeerida selle jõudlust.
Transformers on täiustatud Pythoni raamistik, mis võimaldas hiljuti saavutada väga arenenud loomuliku keeletöötluse kasutusjuhtumeid, näiteks teksti kokkuvõtteid.
Enne Transformersi ja närvivõrke oli saadaval paar võimalust, kuid ükski neist ei olnud tõeliselt rahuldav.
Viimastel aastatel on loodud palju häid eeltreenitud loomuliku keele töötlemise mudeleid, mis põhinevad Transformeritel ja on mõeldud erinevateks kasutusviisideks. Bart Large CNN on välja antud Facebooki poolt ja annab suurepäraseid tulemusi teksti kokkuvõtete tegemiseks.
Siin on kirjeldatud, kuidas kasutada Bart Large CNNi oma Pythoni koodis.
Lihtsaim viis Bart Large CNN-i kasutamiseks on laadida see alla Hugging Face'i repositooriumist ja kasutada teksti kokkuvõtete tegemise torujuhtme Transformersi raamatukogust:
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äljund:
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.
Nagu näete, on see vaid 4 rida Python-koodi ja kokkuvõtte kvaliteet on väga hea! Kuid te olete võib-olla märganud, et mudel on suur, nii et selle allalaadimine võtab esimesel korral aega.
Parameetrid min_length ja max_length näitavad kokkuvõtte minimaalset ja maksimaalset suurust. Need tähistavad märkide, mitte sõnade arvu. Põhimõtteliselt võib märgend olla sõna, aga ka kirjavahemärgid või allsõnad. Üldiselt võib arvata, et 100 märki on ligikaudu võrdne 75 sõnaga.
Oluline märkus: teie sisestatud tekst ei saa olla suurem kui 1024 märki (mis vastab enam-vähem 800 sõnale), kuna see on selle mudeli sisemine piirang. Kui soovite suuremaid tekstiosasid kokku võtta, on hea strateegia teha kokkuvõte mitmest tekstiosast sõltumatult ja seejärel tulemused uuesti kokku panna. Võite teha isegi kokkuvõtteid kokkuvõtete kohta!
Selle Bart Large CNNi mudeliga on aga 2 peamist probleemi.
Esiteks, nagu paljud süvaõppemudelid, nõuab see oluline kogus kettaruumi ja RAM-i (umbes 1,5 GB!). Ja seda võib ikkagi pidada väikeseks süvaõppe mudeliks võrreldes suurte mudelitega nagu GPT-3, GPT-J, T5 11B jne.
Veelgi olulisem on see, et see on üsna aeglane. See mudel teostab tegelikult teksti genereerimist kapoti all ja teksti genereerimine on loomupäraselt aeglane. Kui püüate teha kokkuvõtet 800 sõnast koosnevast tekstist, võtab see heal protsessoril umbes 20 sekundit...
Lahenduseks on Bart suure CNNi kasutamine GPUs. Näiteks NVIDIA Tesla T4-l võite oodata x10-list kiirendust ja teie 800-sõnalise teksti kokkuvõte valmib umbes 2 sekundiga.
GPU-d on muidugi väga kallid, nii et see on sinu otsustada, kas investeering on seda väärt!
Bart Large CNNi tekstide kokkuvõtte tegemine on väga lihtne kasutada lihtsa skripti abil, kuid mis siis, kui soovite seda kasutada tootmises suure hulga päringute puhul?
Nagu eespool mainitud, oleks esimene lahendus hoolitseda oma riistvara varustamise eest GPU-ga ja töötada mõningate tootmismeetodite optimeerimise kallal, et teha kokkuvõtete tegemine kiiremaks.
Teine lahendus oleks delegeerida see ülesanne spetsiaalsele teenusele nagu NLP Cloud, mis pakub Bart Large CNNi mudelit teie jaoks API kaudu. Testi meie kokkuvõtte API lõpp-punkti siin!
2022. aastal on tänu Transformersile ja Bart Large CNNile võimalik Pythonis väga väikese vaevaga teha täiustatud teksti kokkuvõtteid.
Teksti kokkuvõtete tegemine on väga kasulik ülesanne, mida üha enam ettevõtteid automatiseerib oma rakenduses. Nagu näete, tuleb keerukus tulemuslikkuse poole pealt. On olemas mõned tehnikad, et kiirendada teksti kokkuvõtete tegemist Bart Large CNNiga, kuid see on teise artikli teema!
Loodan, et see artikkel aitab teil oma järgmise projekti jaoks aega kokku hoida! Proovige julgelt teksti kokkuvõtete tegemist NLP Cloudis!
Julien Salinas
NLP Cloud tehnoloogiajuht