Uma introdução suave ao cálculo da pontuação BLEU para texto em Python

Uma introdução suave ao cálculo da pontuação BLEU para texto em Python

BLEU, ou Bilingual Evaluation Understudy, é uma pontuação para comparar uma tradução de texto candidata a uma ou mais traduções de referência.

Embora desenvolvido para tradução, pode ser usado para avaliar o texto gerado para um conjunto de tarefas de processamento de linguagem natural.

Neste tutorial, você descobrirá a pontuação BLEU para avaliar e pontuar o texto candidato usando a biblioteca NLTK em Python.

Depois de concluir este tutorial, você saberá:

  • Uma introdução suave à pontuação BLEU e uma intuição do que está sendo calculado.
  • Como você pode calcular pontuações BLEU em Python usando a biblioteca NLTK para frases e documentos.
  • Como você pode usar um conjunto de pequenos exemplos para desenvolver uma intuição de como as diferenças entre um candidato e o texto de referência afetam a pontuação final do BLEU.

Comece seu projeto com meu novo livro Deep Learning for Natural Language Processing, incluindo tutoriais passo a passo e a Código-fonte Python arquivos para todos os exemplos.

Vamos começar.

  • Maio / 2019: Atualizado para refletir as mudanças na API em NLTK 3.4.1+.
Uma introdução suave ao cálculo da pontuação BLEU para texto em Python

Uma introdução suave ao cálculo da pontuação BLEU para texto em Python
Foto de Bernard Spragg. NZ, alguns direitos reservados.

Visão geral do tutorial

Este tutorial é dividido em 4 partes; eles estão:

  1. Pontuação de Understudy de Avaliação Bilíngue
  2. Calcular pontuações BLEU
  3. Pontuações BLEU cumulativas e individuais
  4. Exemplos trabalhados

Precisa de ajuda com Deep Learning for Text Data?

Faça meu curso intensivo de e-mail gratuito de 7 dias agora (com código).

Clique para se inscrever e também obter uma versão gratuita do Ebook em PDF do curso.

Comece Seu Crash-Course GRÁTIS Agora

Pontuação de Understudy de Avaliação Bilíngue

O Bilingual Evaluation Understudy Score, ou BLEU para breve, é uma métrica para avaliar uma sentença gerada para uma sentença de referência.

Uma combinação perfeita resulta em uma pontuação de 1,0, enquanto uma incompatibilidade perfeita resulta em uma pontuação de 0,0.

A pontuação foi desenvolvida para avaliar as previsões feitas por sistemas automáticos de tradução automática. Não é perfeito, mas oferece 5 benefícios atraentes:

  • É rápido e barato calcular.
  • É fácil de entender.
  • É independente do idioma.
  • Ele se correlaciona altamente com a avaliação humana.
  • Foi amplamente adotado.

A pontuação BLEU foi proposta por Kishore Papineni, et al. em seu artigo de 2002 “BLEU: um Método para Avaliação Automática de Tradução Automática“.

A abordagem funciona contando n-gramas correspondentes na tradução candidata para n-gramas no texto de referência, onde 1 grama ou unigrama seria cada token e uma comparação de bigrama seria cada par de palavras. A comparação é feita independentemente da ordem das palavras.

A principal tarefa de programação para um implementador BLEU é comparar n-gramas do candidato com os n-gramas da tradução de referência e contar o número de correspondências. Essas correspondências são independentes da posição. Quanto mais correspondências, melhor será a tradução candidata.

- BLEU: um Método para Avaliação Automática de Tradução Automática, 2002.

A contagem de n-gramas correspondentes é modificada para garantir que leve em consideração a ocorrência das palavras no texto de referência, não recompensando uma tradução candidata que gere uma abundância de palavras razoáveis. Isso é referido no artigo como precisão modificada de n gramas.

Infelizmente, os sistemas de MT podem supergerar palavras "razoáveis", resultando em traduções improváveis, mas de alta precisão […] Intuitivamente, o problema é claro: uma palavra de referência deve ser considerada esgotada após a identificação de uma palavra candidata correspondente. Formalizamos essa intuição como a precisão unigrama modificada.

- BLEU: um Método para Avaliação Automática de Tradução Automática, 2002.

A pontuação é para comparar sentenças, mas uma versão modificada que normaliza n-gramas por sua ocorrência também é proposta para melhor pontuar blocos de sentenças múltiplas.

Primeiro calculamos as correspondências de n-gram frase por frase. Em seguida, adicionamos as contagens de n-gram cortadas para todas as sentenças candidatas e dividimos pelo número de n-gramas candidatas no corpus de teste para calcular uma pontuação de precisão modificada, pn, para todo o corpus de teste.

- BLEU: um Método para Avaliação Automática de Tradução Automática, 2002.

Uma pontuação perfeita não é possível na prática, pois uma tradução teria que corresponder exatamente à referência. Isso nem mesmo é possível por tradutores humanos. O número e a qualidade das referências usadas para calcular a pontuação BLEU significa que comparar as pontuações entre os conjuntos de dados pode ser problemático.

A métrica BLEU varia de 0 a 1. Poucas traduções atingirão uma pontuação de 1, a menos que sejam idênticas a uma tradução de referência. Por esse motivo, mesmo um tradutor humano não pontuará necessariamente 1. […] em um corpus de teste de cerca de 500 sentenças (40 notícias gerais), um tradutor humano pontuou 0,3468 contra quatro referências e 0,2571 contra duas referências.

- BLEU: um Método para Avaliação Automática de Tradução Automática, 2002.

Além da tradução, podemos usar a pontuação BLEU para outros problemas de geração de idioma com métodos de aprendizagem profunda, como:

  • Geração de linguagem.
  • Geração de legenda de imagem.
  • Resumo do texto.
  • Reconhecimento de fala.

E muito mais.

Calcular pontuações BLEU

A biblioteca Python Natural Language Toolkit, ou NLTK, fornece uma implementação da pontuação BLEU que você pode usar para avaliar seu texto gerado em relação a uma referência.

Pontuação BLEU da frase

O NLTK fornece a função frase_bleu () para avaliar uma frase candidata em relação a uma ou mais frases de referência.

As frases de referência devem ser fornecidas como uma lista de frases em que cada referência é uma lista de tokens. A frase candidata é fornecida como uma lista de tokens. Por exemplo:

A execução deste exemplo imprime uma pontuação perfeita, pois o candidato corresponde exatamente a uma das referências.

Pontuação Corpus BLEU

O NLTK também fornece uma função chamada corpus_bleu () para calcular a pontuação BLEU para várias sentenças, como um parágrafo ou um documento.

As referências devem ser especificadas como uma lista de documentos, onde cada documento é uma lista de referências e cada referência alternativa é uma lista de tokens, por exemplo, uma lista de listas de listas de tokens. Os documentos candidatos devem ser especificados como uma lista em que cada documento é uma lista de tokens, por exemplo, uma lista de listas de tokens.

Isto é um pouco confuso; aqui está um exemplo de duas referências para um documento.

Executar o exemplo imprime uma pontuação perfeita como antes.

Pontuações BLEU cumulativas e individuais

Os cálculos de pontuação BLEU em NLTK permitem que você especifique o peso de diferentes n-gramas no cálculo da pontuação BLEU.

Isso dá a você a flexibilidade de calcular diferentes tipos de pontuação BLEU, como pontuações n-gramas individuais e cumulativas.

Vamos dar uma olhada.

Pontuações individuais de N-Gram

Uma pontuação individual de N-gram é a avaliação de apenas combinar gramas de uma ordem específica, como palavras simples (1 grama) ou pares de palavras (2 gramas ou bigrama).

Os pesos são especificados como uma tupla, onde cada índice se refere à ordem do grama. Para calcular a pontuação BLEU apenas para correspondências de 1 grama, você pode especificar um peso de 1 para 1 grama e 0 para 2, 3 e 4 (1, 0, 0, 0). Por exemplo:

Executar este exemplo imprime uma pontuação de 0,5.

Podemos repetir este exemplo para n-gramas individuais de 1 a 4 da seguinte maneira:

Executar o exemplo fornece os seguintes resultados.

Embora possamos calcular as pontuações BLEU individuais, não é assim que o método deveria ser usado e as pontuações não têm muito significado ou parecem tão interpretáveis.

Pontuações cumulativas de N-Gram

Pontuações cumulativas referem-se ao cálculo de pontuações de n-gramas individuais em todas as ordens de 1 a n e ponderando-as calculando a média geométrica ponderada.

Por padrão, o frase_bleu () e corpus_bleu () pontuações calculam a pontuação BLEU cumulativa de 4 gramas, também chamada de BLEU-4.

Os pesos para o BLEU-4 são 1/4 (25%) ou 0,25 para cada uma das pontuações de 1 grama, 2 gramas, 3 gramas e 4 gramas. Por exemplo:

Executar este exemplo imprime a seguinte pontuação:

O BLEU de 1 grama cumulativo e individual usa os mesmos pesos, por exemplo (1, 0, 0, 0). Os pesos de 2 gramas atribuem ...

Você também pode estar interessado em