Резюме - это очень распространенная задача, которую многие разработчики хотели бы автоматизировать. Например, было бы неплохо автоматически создавать резюме каждой статьи в блоге, которую вы пишете? Или автоматически резюмировать документы для ваших сотрудников? Существует множество хороших приложений.
Модели на основе трансформаторов, такие как 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 ГБ!). И это все еще можно считать небольшой моделью глубокого обучения по сравнению с такими огромными моделями, как GPT-3, GPT-J, T5 11B и т.д.
Что еще более важно, она довольно медленная. Эта модель фактически выполняет генерацию текста под капотом, а генерация текста по своей природе медленная. Если вы пытаетесь обобщить текст, состоящий из 800 слов, это займет около 20 секунд на хорошем процессоре...
Решение состоит в том, чтобы развернуть Bart large CNN на GPU. Например, на NVIDIA Tesla T4 вы можете рассчитывать на ускорение x10, и ваш текст из 800 слов будет обобщен примерно за 2 секунды.
Конечно, графические процессоры стоят очень дорого, поэтому вам решать, стоит ли вкладывать в них деньги!
Резюме текста с помощью Bart Large CNN очень легко использовать в простом сценарии, но что, если вы хотите использовать его в производстве для большого объема запросов?
Как уже упоминалось выше, первым решением было бы позаботиться о предоставлении собственного оборудования с GPU и поработать над некоторыми оптимизациями производства, чтобы сделать суммирование быстрее.
Вторым решением может быть делегирование этой задачи специализированному сервису, такому как NLP Cloud, который будет обслуживать модель Bart Large CNN для вас через API. Протестируйте нашу конечную точку API для подведения итогов здесь!
В 2022 году благодаря трансформерам и Bart Large CNN можно будет выполнять продвинутое резюмирование текста на Python без особых усилий.
Резюме текста - очень полезная задача, которую все больше компаний автоматизируют в своих приложениях. Как вы можете видеть, сложность возникает из-за производительности. Существуют некоторые методы, позволяющие ускорить резюмирование текста с помощью Bart Large CNN, но это тема для другой статьи!
Надеюсь, эта статья поможет вам сэкономить время для вашего следующего проекта! Попробуйте обобщение текста на NLP Cloud!
Julien Salinas
Технический директор NLP Cloud