***** Novidade em 1º de novembro de 2020: bluebert pode ser encontrado em huggingface *****
***** Novo 5 de dezembro de 2019: NCBI_BERT foi renomeado para bluebert *****
***** Novo 11 de julho de 2019: textos PubMed pré-processados *****
Carregamos os textos pré-processados do PubMed que foram usados para pré-treinar os modelos bluebert .
Este repositório fornece códigos e modelos de bluebert , pré-treinados em resumos e notas clínicas do PubMed (MIMIC-III). Consulte nosso artigo Aprendizagem por transferência em processamento de linguagem natural biomédica: uma avaliação de BERT e ELMo em dez conjuntos de dados de benchmarking para obter mais detalhes.
Os pesos, vocabulário e arquivos de configuração bluebert pré-treinados podem ser baixados em:
Os pesos pré-treinados também podem ser encontrados no Huggingface:
Os conjuntos de dados de benchmark podem ser baixados em https://github.com/ncbi-nlp/BLUE_Benchmark
Presumimos que o modelo bluebert foi baixado em $ bluebert _DIR
e o conjunto de dados foi baixado em $DATASET_DIR
.
Adicione o diretório local a $PYTHONPATH
se necessário.
export PYTHONPATH=. ; $PYTHONPATH
python bluebert /run_ bluebert _sts.py
--task_name= ' sts '
--do_train=true
--do_eval=false
--do_test=true
--vocab_file= $ bluebert _DIR /vocab.txt
--bert_config_file= $ bluebert _DIR /bert_config.json
--init_checkpoint= $ bluebert _DIR /bert_model.ckpt
--max_seq_length=128
--num_train_epochs=30.0
--do_lower_case=true
--data_dir= $DATASET_DIR
--output_dir= $OUTPUT_DIR
python bluebert /run_ bluebert _ner.py
--do_prepare=true
--do_train=true
--do_eval=true
--do_predict=true
--task_name= " bc5cdr "
--vocab_file= $ bluebert _DIR /vocab.txt
--bert_config_file= $ bluebert _DIR /bert_config.json
--init_checkpoint= $ bluebert _DIR /bert_model.ckpt
--num_train_epochs=30.0
--do_lower_case=true
--data_dir= $DATASET_DIR
--output_dir= $OUTPUT_DIR
O nome da tarefa pode ser
bc5cdr
: tarefa química ou de doença BC5CDRclefe
: tarefa ShARe/CLEFEpython bluebert /run_ bluebert .py
--do_train=true
--do_eval=false
--do_predict=true
--task_name= " chemprot "
--vocab_file= $ bluebert _DIR /vocab.txt
--bert_config_file= $ bluebert _DIR /bert_config.json
--init_checkpoint= $ bluebert _DIR /bert_model.ckpt
--num_train_epochs=10.0
--data_dir= $DATASET_DIR
--output_dir= $OUTPUT_DIR
--do_lower_case=true
O nome da tarefa pode ser
chemprot
: tarefa BC6 ChemProtddi
: tarefa DDI 2013i2b2_2010
: tarefa I2B2 2010python bluebert /run_ bluebert _multi_labels.py
--task_name= " hoc "
--do_train=true
--do_eval=true
--do_predict=true
--vocab_file= $ bluebert _DIR /vocab.txt
--bert_config_file= $ bluebert _DIR /bert_config.json
--init_checkpoint= $ bluebert _DIR /bert_model.ckpt
--max_seq_length=128
--train_batch_size=4
--learning_rate=2e-5
--num_train_epochs=3
--num_classes=20
--num_aspects=10
--aspect_value_list= " 0,1 "
--data_dir= $DATASET_DIR
--output_dir= $OUTPUT_DIR
python bluebert /run_ bluebert .py
--do_train=true
--do_eval=false
--do_predict=true
--task_name= " mednli "
--vocab_file= $ bluebert _DIR /vocab.txt
--bert_config_file= $ bluebert _DIR /bert_config.json
--init_checkpoint= $ bluebert _DIR /bert_model.ckpt
--num_train_epochs=10.0
--data_dir= $DATASET_DIR
--output_dir= $OUTPUT_DIR
--do_lower_case=true
Fornecemos textos PubMed pré-processados que foram usados para pré-treinar os modelos bluebert . O corpus contém aproximadamente 4.000 milhões de palavras extraídas da versão do código ASCII do PubMed. Outras operações incluem
x00
- x7F
Abaixo está um trecho de código para mais detalhes.
value = value . lower ()
value = re . sub ( r'[rn]+' , ' ' , value )
value = re . sub ( r'[^x00-x7F]+' , ' ' , value )
tokenized = TreebankWordTokenizer (). tokenize ( value )
sentence = ' ' . join ( tokenized )
sentence = re . sub ( r"s'sb" , "'s" , sentence )
Posteriormente, usamos o código a seguir para gerar dados de pré-treinamento. Consulte https://github.com/google-research/bert para obter mais detalhes.
python bert/create_pretraining_data.py
--input_file=pubmed_uncased_sentence_nltk.txt
--output_file=pubmed_uncased_sentence_nltk.tfrecord
--vocab_file=bert_uncased_L-12_H-768_A-12_vocab.txt
--do_lower_case=True
--max_seq_length=128
--max_predictions_per_seq=20
--masked_lm_prob=0.15
--random_seed=12345
--dupe_factor=5
Usamos o código a seguir para treinar o modelo BERT. Por favor, não inclua init_checkpoint
se você estiver pré-treinando do zero. Consulte https://github.com/google-research/bert para obter mais detalhes.
python bert/run_pretraining.py
--input_file=pubmed_uncased_sentence_nltk.tfrecord
--output_dir= $ bluebert _DIR
--do_train=True
--do_eval=True
--bert_config_file= $ bluebert _DIR /bert_config.json
--init_checkpoint= $ bluebert _DIR /bert_model.ckpt
--train_batch_size=32
--max_seq_length=128
--max_predictions_per_seq=20
--num_train_steps=20000
--num_warmup_steps=10
--learning_rate=2e-5
@InProceedings{peng2019transfer,
author = {Yifan Peng and Shankai Yan and Zhiyong Lu},
title = {Transfer Learning in Biomedical Natural Language Processing: An Evaluation of BERT and ELMo on Ten Benchmarking Datasets},
booktitle = {Proceedings of the 2019 Workshop on Biomedical Natural Language Processing (BioNLP 2019)},
year = {2019},
pages = {58--65},
}
Este trabalho foi apoiado pelos Programas de Pesquisa Intramural dos Institutos Nacionais de Saúde, Biblioteca Nacional de Medicina e Centro Clínico. Este trabalho foi apoiado pela Biblioteca Nacional de Medicina dos Institutos Nacionais de Saúde sob o prêmio número K99LM013001-01.
Agradecemos também aos autores do BERT e do ELMo por disponibilizarem publicamente os dados e códigos.
Gostaríamos de agradecer ao Dr. Sun Kim pelo processamento dos textos do PubMed.
Esta ferramenta mostra os resultados de pesquisas realizadas no Ramo de Biologia Computacional, NCBI. As informações produzidas neste site não se destinam ao uso diagnóstico direto ou à tomada de decisões médicas sem revisão e supervisão de um profissional clínico. Os indivíduos não devem alterar o seu comportamento de saúde apenas com base nas informações produzidas neste site. O NIH não verifica de forma independente a validade ou utilidade das informações produzidas por esta ferramenta. Se você tiver dúvidas sobre as informações produzidas neste site, consulte um profissional de saúde. Mais informações sobre a política de isenção de responsabilidade do NCBI estão disponíveis.