Tutorial: Como afinar o BERT para a Sumarização Extractiva

Tutorial: Como afinar o BERT para a Sumarização Extractiva

    Originally published by Skim AI's Machine Learning Researcher, Chris Tran

1. Introdução

A sumarização é há muito um desafio no Processamento de Linguagem Natural. Para gerar uma versão resumida de um documento, mantendo as informações mais importantes, é necessário um modelo capaz de extrair com precisão os pontos-chave, evitando informações repetitivas. Felizmente, trabalhos recentes em PNL, como os modelos Transformer e o pré-treinamento de modelos de linguagem, fizeram avançar o estado da arte da sumarização.

Neste artigo, vamos explorar o BERTSUM, uma variante simples do BERT, para a sumarização extractiva de Sumarização de texto com codificadores pré-treinados (Liu et al., 2019). Em seguida, num esforço para tornar a sumarização extractiva ainda mais rápida e mais pequena para dispositivos com poucos recursos, iremos afinar o DistilBERT (Sanh et al., 2019) e MobileBERT (Sun et al., 2019), duas versões lite recentes do BERT, e discutimos as nossas conclusões.

2. Sumarização extractiva

Existem dois tipos de compactação: abstrativo e compactação extractiva. A sumarização abstractiva significa basicamente reescrever os pontos-chave, enquanto a sumarização extractiva gera um resumo copiando diretamente os trechos/sentenças mais importantes de um documento.

A sumarização abstractiva é mais difícil para os seres humanos e também mais dispendiosa em termos computacionais para as máquinas. No entanto, a melhor forma de resumir depende do objetivo do utilizador final. Se estiver a escrever um ensaio, o resumo abstrato pode ser a melhor escolha. Por outro lado, se estiver a fazer uma investigação e precisar de obter um resumo rápido do que está a ler, a sumarização extractiva será mais útil para essa tarefa.

Nesta secção, vamos explorar a arquitetura do nosso modelo de sumarização extractiva. O resumidor BERT tem 2 partes: um codificador BERT e um classificador de resumo.

Codificador BERT

A arquitetura geral da BERTSUM

O nosso codificador BERT é o codificador BERT-base pré-treinado da tarefa de modelação de linguagem mascarada (Devlin et at., 2018). A tarefa de sintetização extractiva é um problema de classificação binária ao nível da frase. Queremos atribuir a cada frase uma etiqueta $y_i \in {0, 1}$ indicando se a frase deve ser incluída no resumo final. Por conseguinte, é necessário acrescentar um token [CLS] antes de cada frase. Depois de passarmos uma vez pelo codificador, a última camada oculta destas [CLS] serão utilizados como representações das nossas frases.

Classificador de Sumarização

Depois de obter a representação vetorial de cada frase, podemos utilizar uma camada simples de feed forward como classificador para devolver uma pontuação a cada frase. No artigo, o autor fez experiências com um classificador linear simples, uma rede neuronal recorrente e um pequeno modelo transformador com 3 camadas. O classificador Transformer produz os melhores resultados, mostrando que as interacções entre frases através do mecanismo de auto-atenção são importantes para selecionar as frases mais importantes.

Assim, no codificador, aprendemos as interacções entre tokens no nosso documento, enquanto no classificador de resumo, aprendemos as interacções entre frases.

3. Tornar a compactação ainda mais rápida

Os modelos transformadores atingem o desempenho mais avançado na maioria dos bechmarks de PNL; no entanto, a sua formação e a realização de previsões a partir deles são computacionalmente dispendiosas. Num esforço para tornar a sumarização mais leve e rápida para ser implementada em dispositivos com poucos recursos, modifiquei o códigos-fonte fornecido pelos autores de BERTSUM para substituir o codificador BERT por DistilBERT e MobileBERT. As camadas de resumo não são alteradas.

Eis as perdas de treino destas 3 variantes: TensorBoard

Apesar de ser 40% mais pequeno do que a base BERT, o DistilBERT tem as mesmas perdas de formação que a base BERT, enquanto o MobileBERT tem um desempenho ligeiramente pior. A tabela seguinte mostra o seu desempenho no conjunto de dados CNN/DailyMail, o tamanho e o tempo de execução de uma passagem para a frente:

Modelos ROUGE-1 ROUGE-2 ROUGE-L Tempo de inferência* Tamanho Parâmetros
bert-base 43.23 20.24 39.63 1.65 s 475 MB 120.5 M
destilador 42.84 20.04 39.31 925 ms 310 MB 77.4 M
mobilebert 40.59 17.98 36.99 609 ms 128 MB 30.8 M

*Tempo médio de execução de uma passagem para a frente numa única GPU num computador portátil padrão do Google Colab

Sendo 45% mais rápido, o DistilBERT tem quase o mesmo desempenho que o BERT-base. O MobileBERT mantém o desempenho de 94% do BERT-base, sendo 4x mais pequeno do que o BERT-base e 2,5x mais pequeno do que o DistilBERT. No documento do MobileBERT, mostra-se que o MobileBERT supera significativamente o DistilBERT no SQuAD v1.1. No entanto, não é o caso da sumarização extractiva. Mas este é ainda um resultado impressionante para o MobileBERT com um tamanho de disco de apenas 128 MB.

4. Vamos resumir

Todos os pontos de controlo pré-treinados, detalhes de formação e instruções de configuração podem ser encontrados em este repositório GitHub. Além disso, implementei uma demonstração do BERTSUM com o codificador MobileBERT.

Aplicação Web: https://extractive-summarization.herokuapp.com/

Código:

importar torch
from models.model_builder import ExtSummarizer
from ext_sum import summarize

# Carregar modelo
model_type = 'mobilebert' #@param ['bertbase', 'distilbert', 'mobilebert']
checkpoint = torch.load(f'checkpoints/{model_type}_ext.pt', map_location='cpu')
model = ExtSummarizer(checkpoint=checkpoint, bert_type=model_type, device='cpu')

# Resumo de execução
input_fp = 'raw_data/input.txt'
result_fp = 'results/summary.txt'
summary = summarize(input_fp, result_fp, model, max_length=3)
print(resumo)

Amostra de resumo

Original: https://www.cnn.com/2020/05/22/business/hertz-bankruptcy/index.html

Ao declarar falência, a Hertz afirma que pretende manter-se em atividade, reestruturando as suas dívidas e emergindo como uma empresa
e emergir como uma empresa financeiramente mais saudável. A empresa aluga automóveis desde 1918, quando se estabeleceu com uma dúzia de Ford Model Ts.
Ford Modelo Ts, e sobreviveu à Grande Depressão, à paragem virtual da produção automóvel dos EUA durante a Segunda Guerra Mundial
e a numerosos choques nos preços do petróleo. "O impacto da Covid-19 na procura de viagens foi súbito e dramático, causando um
O impacto da Covid-19 na procura de viagens foi súbito e dramático, causando um declínio abrupto nas receitas da empresa e nas suas reservas futuras", afirmou o comunicado da empresa.

5. Conclusão

Neste artigo, explorámos o BERTSUM, uma variante simples do BERT, para a sumarização extractiva do documento Sumarização de texto com codificadores pré-treinados (Liu et al., 2019). Em seguida, em um esforço para tornar o resumo extrativo ainda mais rápido e menor para dispositivos com poucos recursos, ajustamos o DistilBERT (Sanh et al., 2019) e o MobileBERT (Sun et al., 2019) nos conjuntos de dados CNN/DailyMail.

DistilBERT retains BERT-base's performance in extractive summarization while being 45% smaller. MobileBERT is 4x smaller and 2.7x faster than BERT-base yet retains 94% of its performance.

Por fim, implementámos uma demonstração da aplicação Web do MobileBERT para resumo extrativo em https://extractive-summarization.herokuapp.com/.

Referências

Let’s Discuss Your Idea

    Related Posts

    Ready To Supercharge Your Business

    LET’S
    TALK
    pt_PTPortuguês