Este repositório contém o código associado ao seguinte artigo:
Modelos de pré-treinamento não supervisionados especializados para similaridade semântica no nível da palavra (Anne Lauscher, Ivan Vulić, Edoardo Maria Ponti, Anna Korhonen, Goran Glavaš) https://arxiv.org/pdf/1909.02339.pdf
O modelo é diferente do código BERT original da maneira como compartilha as incorporações. Para isso, usamos um escopo variável condicionado. Isso é implementado em
conditioned_scope.pymodeling.py Linha 179 com cond_scope(is_shared=shared_embeddings): ...Treinamos Bert e Libert em um depósito da Wikipedia inglesa. Para isso, nós usamos
poc_pretraining_bert.shpoc_create_pretraining_data.sh As restrições lexico-semânticas foram dadas em um arquivo simples separado por espaço:
en_zymosis en_fermentation
en_zymosis en_fermentation
en_zymosis en_fermenting
en_zymosis en_fermenting
en_zymosis en_zymolysis
O código necessário para pré -processar essas restrições é fornecido em preprocess_wn.py .
create_data_syn_hyp_constraints )write_input_data_syn_hyp_constraints ) Libert é pré -terenciado do zero através de duas classes de objetivos (1) os objetivos "padrão" de Bert, MLM e NSP, e (2) classificação de relações lexicais. Portanto, fornecemos o script de pré -treinamento em duas variantes de acordo:
run_pretraining_bert.py implementa apenas os objetivos padrão (para comparação ao longo do processo de treinamento com Bert)run_pretraining_libert.py implementa os objetivos padrão mais o LRCIsso é demonstrado em
poc_pretraining_bert.shpos_pretraining_libert.shPara executar tarefas simples de classificação e regressão, por exemplo, para avaliação na cola, nos referimos aos seguintes scripts:
run_classifier_libert.pyrun_regression_libert.py Adaptamos os scripts originais do Bert Tensorflow, de modo que o escopo variável corresponda aos nossos modelos, para que o modelo seja carregado corretamente. Esse comportamento é controlado por meio de um parâmetro adicional original_model . Além disso, adicionamos suporte para configurações de busca de grade hiperparâmetro por meio desses scripts.
Como chamar os scripts é demonstrado em
poc_finetuning_bert.shpos_finetuning_libert.shPara as previsões, nos referimos a
poc_predictions_bert.shpos_predictions_libert.sh Para a avaliação de simplificação lexical, usamos o código BERT-LS: https://github.com/qiang2100/bert-ls. Para isso, tivemos que portar os modelos para Pytorch, o que foi feito através do Transformers Libray (apenas adapte o código de uma maneira que ele carrega as variáveis da Libert correcidamente.
O ponto de verificação Libert de 2 milhões de MLM+NSP Libert, que discutimos em nossos experimentos, está disponível para download aqui: https://drive.google.com/drive/folders/1ghvw7zdbgggqlnlgxxvohnjktdzbmpy?usp=Sharing.
O código é baseado no código original do Bert Tensorflow em: https://github.com/google-research/bert
Cite o papel da seguinte forma:
@misc{lauscher2019specializing,
title={Specializing Unsupervised Pretraining Models for Word-Level Semantic Similarity},
author={Anne Lauscher and Ivan Vulić and Edoardo Maria Ponti and Anna Korhonen and Goran Glavaš},
year={2019},
eprint={1909.02339},
archivePrefix={arXiv},
primaryClass={cs.CL}
}```