Código Repo para o artigo Conll 2021 :
Mirrorwic: ao suscitar representações de palavras em contexto de modelos de idiomas pré-treinados
Por Qianchu Liu*, Fangyu Liu*, Nigel Collier, Anna Korhonen, Ivan Vulić
O Mirrorwic é uma abordagem totalmente não supervisionada para melhorar as representações de palavra em contexto (WIC) em modelos de linguagem pré-treinados, alcançados por meio de um procedimento de ajuste fino simples e eficiente direcionado a WIC. O método proposto aproveita apenas os textos brutos da Wikipedia, assumindo dados não anotados pelo sentido, e aprende representações de palavras com conhecimento do contexto dentro de uma configuração de aprendizado contrastivo padrão.
| modelo | WIC (dev) | USIM |
|---|---|---|
| Linha de base: BERT-BASE-ANCED | 68.49 | 54.52 |
| Mirrorwic-Bert-Base-Anced | 71.94 | 61.82 |
| Mirrorwic-Roberta-Base | 71.15 | 57.95 |
| Mirrorwic-Deberta-Base | 71.78 | 62.79 |
./train_data/en_wiki.txt fornece entrada de exemplo. Nos dados de saída, cada palavra de destino é marcada com colchetes e apagamento aleatório com mascaramento é aplicado. >> python get_mirrorwic_traindata.py
--data [input data]
--lg [language]
--random_er [random erasing length]Por exemplo.
>> python get_mirrorwic_traindata.py
--data ./train_data/en_wiki.txt
--lg en
--random_er 10 >> cd train_scripts
>> bash ./mirror_sentence.sh [CUDA] [training data] [base model] [dropout]Por exemplo.
>> bash ./mirror_wic.sh 1,0 ../train_data/en_wiki.txt.mirror.wic.re10 bert-base-uncased 0.4Faça o download dos dados de avaliação daqui e coloque a pasta no diretório raiz.
Em seguida, corra:
>> cd evaluation_scripts
>> bash ./eval.sh [task] [model] [cuda] [task] : wic , wic-tsv , usim , cosimlex , wsd , am2ico , xlwic
Por exemplo.
>> bash ./eval.sh usim cambridgeltl/mirrorwic-bert-base-uncased 0Você pode obter as incorporações Mirrorwic executando o seguinte:
>> from evaluation_scripts . src . helpers import get_embed
>> from transformers import AutoTokenizer , AutoModel
>> model = AutoModel . from_pretrained ( 'cambridgeltl/mirrorwic-bert-base-uncased' )
>> tokenizer = AutoTokenizer . from_pretrained ( 'cambridgeltl/mirrorwic-bert-base-uncased' )
>> texts = [ 'This is a [ sample ] .' , 'This is another [ sample ] .' ] #target words are indicated by brackets
>> embeddings = get_embed ( texts , tokenizer , model , flag = 'token' , layer_start = 9 , layer_end = 13 , maxlen = 64 ) # get the average embedding of the top 4 layers (layer 9 to layer 13) @inproceedings { liu2021mirrorwic ,
title = { MirrorWiC: On Eliciting Word-in-Context Representations from Pretrained Language Models } ,
author = { Liu, Qianchu and Liu, Fangyu and Collier, Nigel and Korhonen, Anna and Vuli{'c}, Ivan } ,
booktitle = " Proceedings of the 25rd Conference on Computational Natural Language Learning (CoNLL) "
year= { 2021 }
}O código é modificado com base no Mirror-Bert.