Um repositório leve para avaliação automática de modelos de diálogo usando 17 métricas .
? Escolha quais métricas você deseja que sejam calculadas
A avaliação pode ser executada automaticamente em um arquivo de resposta ou em um diretório contendo vários arquivos
? As métricas são salvas em um formato predefinido e fácil de processar
Execute este comando para instalar os pacotes necessários:
pip install -r requirements.txt
O arquivo principal pode ser chamado de qualquer lugar, mas ao especificar caminhos para diretórios você deve fornecê-los da raiz do repositório.
python code/main.py -h
Para a documentação completa visite o wiki.
Você deve fornecer o máximo possível de caminhos de argumentos necessários (imagem acima). Se você perder alguns, o programa ainda será executado, mas não calculará algumas métricas que requerem esses arquivos (ele imprimirá essas métricas). Se você tiver um arquivo de dados de treinamento, o programa pode gerar automaticamente um vocabulário e baixar embeddings fastText.
Se você não quiser calcular todas as métricas, você pode definir quais métricas devem ser calculadas no arquivo de configuração com muita facilidade.
Um arquivo será salvo no diretório onde estão os arquivos de resposta. A primeira linha contém os nomes das métricas e cada linha contém as métricas de um arquivo. O nome do arquivo é seguido pelos valores de métricas individuais separados por espaços. Cada métrica consiste em três números separados por vírgulas: média, desvio padrão e intervalo de confiança. Você pode definir o valor t do intervalo de confiança nos argumentos; o padrão é 95% de confiança.
Curiosamente, todas as 17 métricas melhoram até um certo ponto e depois estagnam sem que ocorra overfitting durante o treinamento de um modelo Transformer no DailyDialog. Verifique o apêndice do artigo para ver as figuras.
TRF é o modelo Transformer avaliado com perda mínima de validação e TRF-O é o modelo Transformer avaliado após 150 épocas de treinamento, onde as métricas começam a estagnar. RT significa respostas selecionadas aleatoriamente do conjunto de treinamento e GT significa respostas verdadeiras.
TRF é o modelo Transformer, enquanto RT significa respostas selecionadas aleatoriamente do conjunto de treinamento e GT significa respostas verdadeiras. Esses resultados são medidos no conjunto de testes em um ponto de verificação onde a perda de validação foi mínima.
TRF é o modelo Transformer, enquanto RT significa respostas selecionadas aleatoriamente do conjunto de treinamento e GT significa respostas verdadeiras. Esses resultados são medidos no conjunto de testes em um ponto de verificação onde a perda de validação foi mínima.
Novas métricas podem ser adicionadas criando uma classe para a métrica, que trata do cálculo dos dados fornecidos pela métrica. Verifique as métricas BLEU para ver um exemplo. Normalmente, a função init lida com qualquer configuração de dados necessária posteriormente, e update_metrics atualiza o ditado de métricas usando o exemplo atual dos argumentos. Dentro da classe você deve definir o dict self.metrics, que armazena listas de valores de métricas para um determinado arquivo de teste. Os nomes dessas métricas (chaves do dicionário) também devem ser adicionados no arquivo de configuração ao self.metrics. Finalmente você precisa adicionar uma instância da sua classe métrica ao self.objects. Aqui na inicialização você pode usar caminhos para arquivos de dados se sua métrica exigir alguma configuração. Depois disso, sua métrica deverá ser calculada e salva automaticamente.
No entanto, você também deve adicionar algumas restrições à sua métrica, por exemplo, se um arquivo necessário para o cálculo da métrica estiver faltando, o usuário deverá ser notificado, como aqui.
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE para obter detalhes.
Inclua um link para este repositório se você usá-lo em seu trabalho e considere citar o seguinte artigo:
@inproceedings{Csaky:2019,
title = "Improving Neural Conversational Models with Entropy-Based Data Filtering",
author = "Cs{'a}ky, Rich{'a}rd and Purgai, Patrik and Recski, G{'a}bor",
booktitle = "Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics",
month = jul,
year = "2019",
address = "Florence, Italy",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/P19-1567",
pages = "5650--5669",
}