Обобщаването е много често срещана задача, която много разработчици биха искали да автоматизират. Например не би ли било хубаво автоматично да създавате резюме на всяка статия в блога, която пишете? Или пък автоматично да обобщавате документи за вашите служители? Съществуват тонове добри приложения.
Модели, базирани на трансформатори, като Bart Large CNN, улесняват обобщаването на текст в Python. Тези модели за машинно обучение са лесни за използване, но трудни за мащабиране. Нека видим как да използваме Bart Large CNN и как да оптимизираме неговите характеристики.
Transformers е усъвършенствана рамка на Python, която наскоро направи възможно постигането на много напреднали случаи на използване на обработка на естествен език, като например обобщаване на текст.
Преди появата на "Трансформърс" и невронните мрежи имаше няколко варианта, но нито един от тях не беше наистина задоволителен.
През последните години бяха създадени много добри предварително обучени модели за обработка на естествен език, базирани на трансформатори, за различни случаи на употреба. Bart Large CNN е пуснат от Facebook и дава отлични резултати за обобщаване на текст.
Ето как да използвате Bart Large CNN в кода си на Python.
Най-простият начин да използвате Bart Large CNN е да го изтеглите от хранилището Hugging Face и да използвате конвейера за обобщаване на текст от библиотеката 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))
Изход:
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.
Както можете да видите, това са само 4 реда код на Python, а качеството на обобщението е много добро! Но може би сте забелязали, че моделът е голям, така че изтеглянето му първия път отнема време.
Параметрите min_length и max_length посочват минималния и максималния размер на вашето резюме. Те представляват брой токени, а не думи. По принцип токенът може да бъде дума, но също така и препинателни знаци или подсловове. Като цяло можете да считате, че 100 токена са приблизително равни на 75 думи.
Важна забележка: входният ви текст не може да бъде по-голям от 1024 лексеми (приблизително равно на 800 думи), тъй като това е вътрешно ограничение на този модел. Ако искате да обобщите по-големи части от текста, добра стратегия е да обобщите няколко части от текста независимо една от друга и след това да обедините резултатите. Можете дори да извършвате обобщения на обобщения!
Има обаче два основни проблема с този модел на Bart Large CNN.
Първо, подобно на много модели за дълбоко обучение, той изисква значително количество дисково пространство и оперативна памет (около 1,5 GB!). И това все още може да се счита за малък модел за дълбоко обучение в сравнение с огромни такива като GPT-3, GPT-J, T5 11B и др.
Още по-важно е, че той е доста бавен. Този модел всъщност извършва генериране на текст под капака, а генерирането на текст по своята същност е бавно. Ако се опитвате да обобщите текст, състоящ се от 800 думи, това ще отнеме около 20 секунди на добър процесор...
Решението е да разположите Bart голям CNN на графичен процесор. Например, на NVIDIA Tesla T4 можете да очаквате ускорение х10 и вашият текст от 800 думи ще бъде обобщен за около 2 секунди.
Графичните процесори, разбира се, са много скъпи, така че вие трябва да направите изчисленията и да решите дали инвестицията си заслужава!
Обобщаването на текст с Bart Large CNN е много лесно за използване в прост скрипт, но какво става, ако искате да го използвате в производството за голям обем заявки?
Както беше споменато по-горе, първото решение би било да се погрижите за осигуряването на собствен хардуер с графичен процесор и да работите върху някои оптимизации за производство, за да направите обобщаването по-бързо.
Второто решение е да делегирате тази задача на специализирана услуга като NLP Cloud, която ще обслужва модела Bart Large CNN за вас чрез API. Тествайте нашата крайна точка на API за обобщаване тук!
В 2022 г. е възможно да се извършва разширено обобщаване на текст в Python с много малко усилия, благодарение на Transformers и Bart Large CNN.
Обобщаването на текст е много полезна задача, която все повече компании автоматизират в своите приложения. Както можете да видите, сложността идва от страна на производителността. Съществуват някои техники, за да ускорите обобщаването на текст с Bart Large CNN, но това ще бъде тема за друга статия!
Надявам се, че тази статия ще ви помогне да спестите време за следващия си проект! Не се колебайте да изпробвате обобщаването на текст в NLP Cloud!
Julien Salinas
Технически директор в NLP Cloud