Este repositório fornece código para treinamento e teste de modelos de ponta para correção de erro gramatical com a implementação oficial do Pytorch do seguinte artigo:
Gector - Correção de erro gramatical: TAG, não reescrever
Kostiantyn Omelianchuk, Vitaliy AtraSevych, Artem Chernodub, Oleksandr Skurzhanskyi
Gramática
15º workshop sobre uso inovador da PNL para a construção de aplicações educacionais (co-localizadas com o ACL 2020)
É baseado principalmente em AllenNLP e transformers .
O comando a seguir instala todos os pacotes necessários:
pip install -r requirements.txtO projeto foi testado usando o Python 3.7.
Todos os conjuntos de dados públicos do GEC usados no artigo podem ser baixados daqui.
Os conjuntos de dados criados sinteticamente podem ser gerados/baixados aqui.
Para treinar, os dados do modelo devem ser pré -processados e convertidos em formato especial com o comando:
python utils/preprocess_data.py -s SOURCE -t TARGET -o OUTPUT_FILE| Codificador pré -terenciado | Viés de confiança | Min Error Prob | Connl-2014 (teste) | BEA-2019 (teste) |
|---|---|---|---|---|
| Bert [link] | 0.1 | 0,41 | 61.0 | 68.0 |
| Roberta [link] | 0,2 | 0,5 | 64.0 | 71.8 |
| Xlnet [link] | 0,2 | 0,5 | 63.2 | 71.2 |
NOTA : As pontuações na tabela são diferentes das do artigo, pois a versão posterior dos Transformers é usada. Para reproduzir os resultados relatados no artigo, use esta versão do repositório.
Para treinar o modelo, basta executar:
python train.py --train_set TRAIN_SET --dev_set DEV_SET
--model_dir MODEL_DIRExistem muitos parâmetros a serem especificados entre eles:
cold_steps_count O número de épocas onde treinamos apenas a última camada lineartransformer_model {bert,distilbert,gpt2,roberta,transformerxl,xlnet,albert} Modelo Codificadortn_prob Probabilidade de obter frases sem erros; ajuda a equilibrar precisão/recallpieces_per_token Número máximo de subpainhas por token; ajuda a não tirar Cuda da memóriaEm nossos experimentos, tivemos 98/2 split de trem/dev.
Descrevemos todos os parâmetros que usamos para treinamento e avaliação aqui.
Para executar seu modelo no arquivo de entrada, use o seguinte comando:
python predict.py --model_path MODEL_PATH [MODEL_PATH ...]
--vocab_path VOCAB_PATH --input_file INPUT_FILE
--output_file OUTPUT_FILEEntre os parâmetros:
min_error_probability - probabilidade mínima de erro (como no papel)additional_confidence - Viés de confiança (como no papel)special_tokens_fix para reproduzir alguns resultados relatados de modelos pré -traidosPara avaliação, use M^2Scorer e Errant.
Este repositório também implementa o código do artigo a seguir:
Simplificação de texto marcando
Kostiantyn Omelianchuk, Vipul Raheja, Oleksandr Skurzhanskyi
Gramática
16º workshop sobre uso inovador da PNL para a construção de aplicações educacionais (co-localizado W EACL 2021)
Para pré -processamento, treinamento e teste de dados, a mesma interface que GEC pode ser usada. Para etapas de treinamento e avaliação, utils/filter_brackets.py é usado para remover o ruído. Durante a inferência, usamos --normalize sinalizador.
| Sari | Fkgl | ||
|---|---|---|---|
| Modelo | Turkcorpus | ATIVO | |
| TST-final [link] | 39.9 | 40.3 | 7.65 |
| TST-final + ajustes | 41.0 | 42.7 | 7.61 |
Parâmetros de ajustes de inferência:
iteration_count = 2
additional_keep_confidence = -0.68
additional_del_confidence = -0.84
min_error_probability = 0.04
Para avaliação, use o pacote FASSE.
NOTA : As pontuações na tabela estão muito próximas daquelas no papel, mas não as correspondem completamente devido aos dois motivos:
Se você achar que este trabalho é útil para sua pesquisa, cite nossos trabalhos:
@inproceedings{omelianchuk-etal-2020-gector,
title = "{GECT}o{R} {--} Grammatical Error Correction: Tag, Not Rewrite",
author = "Omelianchuk, Kostiantyn and
Atrasevych, Vitaliy and
Chernodub, Artem and
Skurzhanskyi, Oleksandr",
booktitle = "Proceedings of the Fifteenth Workshop on Innovative Use of NLP for Building Educational Applications",
month = jul,
year = "2020",
address = "Seattle, WA, USA → Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.bea-1.16",
pages = "163--170",
abstract = "In this paper, we present a simple and efficient GEC sequence tagger using a Transformer encoder. Our system is pre-trained on synthetic data and then fine-tuned in two stages: first on errorful corpora, and second on a combination of errorful and error-free parallel corpora. We design custom token-level transformations to map input tokens to target corrections. Our best single-model/ensemble GEC tagger achieves an F{_}0.5 of 65.3/66.5 on CONLL-2014 (test) and F{_}0.5 of 72.4/73.6 on BEA-2019 (test). Its inference speed is up to 10 times as fast as a Transformer-based seq2seq GEC system.",
}
@inproceedings{omelianchuk-etal-2021-text,
title = "{T}ext {S}implification by {T}agging",
author = "Omelianchuk, Kostiantyn and
Raheja, Vipul and
Skurzhanskyi, Oleksandr",
booktitle = "Proceedings of the 16th Workshop on Innovative Use of NLP for Building Educational Applications",
month = apr,
year = "2021",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2021.bea-1.2",
pages = "11--25",
abstract = "Edit-based approaches have recently shown promising results on multiple monolingual sequence transduction tasks. In contrast to conventional sequence-to-sequence (Seq2Seq) models, which learn to generate text from scratch as they are trained on parallel corpora, these methods have proven to be much more effective since they are able to learn to make fast and accurate transformations while leveraging powerful pre-trained language models. Inspired by these ideas, we present TST, a simple and efficient Text Simplification system based on sequence Tagging, leveraging pre-trained Transformer-based encoders. Our system makes simplistic data augmentations and tweaks in training and inference on a pre-existing system, which makes it less reliant on large amounts of parallel training data, provides more control over the outputs and enables faster inference speeds. Our best model achieves near state-of-the-art performance on benchmark test datasets for the task. Since it is fully non-autoregressive, it achieves faster inference speeds by over 11 times than the current state-of-the-art text simplification system.",
}