O resumo é uma tarefa muito comum que muitos programadores gostariam de automatizar. Por exemplo, não seria agradável criar automaticamente um resumo de cada artigo do blogue que está a escrever? Ou resumir automaticamente documentos para os seus empregados? Existem toneladas de boas aplicações.
Modelos baseados em transformadores como Bart Large CNN facilitam a síntese de texto em Python. Estes modelos de aprendizagem de máquinas são fáceis de usar mas difíceis de escalar. Vamos ver como usar Bart Large CNN e como optimizar os seus desempenhos.
Transformers é uma estrutura Python avançada que recentemente tornou possível alcançar casos de processamento de linguagem natural muito avançados, tais como a sumarização de texto.
Antes dos Transformers e redes neurais, havia algumas opções disponíveis, mas nenhuma delas era realmente satisfatória.
Muitos bons modelos de processamento de linguagem natural pré-formados foram criados nestes últimos anos, baseados em Transformadores, para vários casos de utilização. Bart Large CNN foi lançado pelo Facebook e dá excelentes resultados para sumarização de texto.
Eis como utilizar Bart Large CNN no seu código Python.
A forma mais simples de utilizar Bart Large CNN é descarregá-lo do repositório Hugging Face, e utilizar o gasoduto de sumário de texto da biblioteca 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))
Produção:
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.
Como pode, isto é apenas 4 linhas de código Python, e a qualidade do resumo é muito boa! Mas talvez tenha reparado que o modelo é grande, por isso leva tempo a descarregá-lo da primeira vez.
Os parâmetros comprimento_mínimo e comprimento_máximo indicam os tamanhos mínimo e máximo do seu resumo. Representam um número de fichas e não de palavras. Basicamente um símbolo pode ser uma palavra, mas também pontuação ou sub-palavras. Em geral, pode considerar que 100 fichas são aproximadamente iguais a 75 palavras.
Nota importante: o seu texto de entrada não pode ser maior que 1024 fichas (mais ou menos igual a 800 palavras) uma vez que esta é uma limitação interna deste modelo. Se quiser resumir partes maiores do texto, uma boa estratégia é resumir várias partes do texto de forma independente e depois reunir novamente os resultados. Pode até fazer resumos de resumos!
No entanto, existem 2 problemas principais com este modelo Bart Large CNN.
Primeiro, como muitos modelos de aprendizagem profunda, requer uma quantidade importante de espaço em disco e RAM (cerca de 1,5GB!). E isto ainda pode ser considerado como um pequeno modelo de aprendizagem profunda em comparação com modelos enormes como GPT-3, GPT-J, T5 11B, etc.
Ainda mais importante, é bastante lento. Este modelo está de facto a realizar a geração de texto sob o capô, e a geração de texto é inerentemente lenta. Se estiver a tentar resumir um pedaço de texto composto por 800 palavras, levará cerca de 20 segundos num bom CPU.
A solução consiste em instalar Bart grande CNN numa GPU. Por exemplo, num NVIDIA Tesla T4, pode esperar uma velocidade x10 e o seu texto de 800 palavras será resumido em cerca de 2 segundos.
Os GPUs são naturalmente muito caros, por isso cabe-lhe a si fazer as contas e decidir se o investimento vale a pena!
O resumo do texto com Bart Large CNN é muito fácil de utilizar num guião simples, mas e se quiser utilizá-lo em produção para um grande volume de pedidos?
Como mencionado acima, uma primeira solução seria cuidar do aprovisionamento do seu próprio hardware com uma GPU, e trabalhar em algumas optimizações de produção a fim de tornar a compactação mais rápida.
Uma segunda solução seria delegar esta tarefa a um serviço dedicado como o NLP Cloud que servirá o modelo Bart Large CNN para si através de uma API. Teste aqui o nosso ponto final da API de resumo!
Em 2022, é possível fazer um resumo avançado do texto em Python com muito pouco esforço, graças a Transformers e Bart Large CNN.
O sumário de texto é uma tarefa muito útil que cada vez mais empresas automatizam agora na sua aplicação. Como se pode ver, a complexidade vem do lado do desempenho. Existem algumas técnicas para acelerar o seu resumo de texto com Bart Large CNN, mas este será um tópico para outro artigo!
Espero que este artigo o ajude a poupar tempo para o seu próximo projecto! Sinta-se à vontade para experimentar o resumo do texto em NLP Cloud!
Julien Salinas
CTO em NLP Cloud