/ Модель

Характеристики

Контекст
512 токенов
Параметры
137 млн
Лицензия
MIT
Архитектура
bert · dense
Библиотека
transformers
Опубликована
19 мая 2023

BioNER

Разметка токеновТекст → label3 профессии

BioNER — англоязычная BERT-модель для поиска биомедицинских именованных сущностей по заданной метке, включая zero-shot распознавание и few-shot дообучение.

29скачиваний за 30 дней11лайковвеса обновлены21 июл 2023

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

BioNER — модель распознавания биомедицинских именованных сущностей, созданная в рамках исследовательского сотрудничества Bayer Pharma и Института исследований и разработок искусственного интеллекта Сербии. Это модель на архитектуре BERT, основанная на PubMedBERT, с 136,7 млн параметров; она принимает текстовый фрагмент и название искомого класса сущностей и помечает токены, относящиеся к этому классу.

Модель обучена на 26 классах биомедицинских сущностей и поддерживает поиск сущностей без отдельного обучения для каждого класса. Среди классов — заболевания, химические соединения, гены и белки, варианты последовательностей, клеточные типы, лекарства и их характеристики. Для новых классов README описывает возможность дообучения на небольшом числе примеров. Модель рассчитана на англоязычные биомедицинские тексты, работает с контекстом до 512 токенов и выдаёт бинарные метки токенов.

Модель подходит для извлечения сущностей из научных публикаций и клинических текстов. Доступна по лицензии MIT. Качество может зависеть от формулировки метки сущности и предметной области; для новых классов может потребоваться дообучение.

Сценарии применения

  • извлечение названий заболеваний из биомедицинских текстов
  • поиск химических соединений в научных публикациях
  • распознавание генов, белков и вариантов последовательностей
  • извлечение лекарств и их характеристик из клинических записей
  • поиск клеточных типов и организмов в научной литературе

Ограничения

Модель и заявленные обучающие наборы ориентированы на англоязычные биомедицинские тексты; заявленный максимальный контекст составляет 512 токенов. Для новых классов README рекомендует дообучение на примерах, а качество зависит от подходящей формулировки метки сущности.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Zero and few shot NER for biomedical texts

Model description

This model was created during the research collaboration between Bayer Pharma and The Institute for Artificial Intelligence Research and Development of Serbia. The model is trained on 26 biomedical Named Entity (NE) classes and can perform zero-shot inference. It also can be further fine-tuned for new classes with just few examples (few-shot learning). For more details about our method please see the paper named "From Zero to Hero: Harnessing Transformers for Biomedical Named Entity Recognition in Zero- and Few-shot Contexts". The model corresponds to PubMedBERT-based model, trained with 1 in the first segment (check paper for more details).

Model takes two strings as input. String1 is NE label that is being searched in second string. String2 is short text where one wants to searc for NE (represented by String1). Model outputs list of ones (corresponding to the found Named Entities) and zeros (corresponding to other non-NE tokens) of the Sring2.

Example of usage

from transformers import AutoTokenizer
from transformers import BertForTokenClassification

modelname = 'MilosKorsRad/BioNER'  # modelpath
tokenizer = AutoTokenizer.from_pretrained(modelname)  ## loading the tokenizer of the model
string1 = 'Drug'
string2 = 'No recent antibiotics or other nephrotoxins, and no symptoms of UTI with benign UA.'
encodings = tokenizer(string1, string2, is_split_into_words=False,
                      padding=True, truncation=True, add_special_tokens=True, return_offsets_mapping=False,
                      max_length=512, return_tensors='pt')

model0 = BertForTokenClassification.from_pretrained(modelname, num_labels=2)
prediction_logits = model0(**encodings)
print(prediction_logits)

Example of fine-tuning with few-shot learning

In order to fine-tune model with new entity using few-shots, the dataset needs to be transformed to torch.utils.data.Dataset, containing BERT tokens and set of 0s and 1s (1 is where the class is positive and should be predicted as the member of given NE class). After the dataset is created, the following can be done (for more details, please have a look at the code at GitHub - https://github.com/br-ai-ns-institute/Zero-ShotNER):

 for i in [train1shot, train10shot, train100shot]:
    training_args = TrainingArguments(
        output_dir='./Results'+class_unseen+'FewShot'+str(i),  # output folder (folder to store the results)
        num_train_epochs=10,                                   # number of training epochs
        per_device_train_batch_size=16,                        # batch size per device during training
        per_device_eval_batch_size=16,                         # batch size for evaluation
        weight_decay=0.01,                                     # strength of weight decay
        logging_dir='./Logs'+class_unseen+'FewShot'+str(i),    # folder to store the logs
        save_strategy='epoch',
        evaluation_strategy='epoch',
        load_best_model_at_end=True 
    )

    model0 = BertForTokenClassification.from_pretrained(model_path, num_labels=2)

    trainer = Trainer(
        model=model0,                # pre-trained model for fine-tuning
        args=training_args,          # training arguments defined above
        train_dataset=train_0shot,   # dataset class object for training
        eval_dataset=valid_dataset   # dataset class object for validation
    )

    start_time = time.time()
    trainer.train()
    total_time = time.time()-start_time

    model_path = os.path.join('Results', class_unseen, 'FewShot',str(i), 'Model')
    os.makedirs(model_path, exist_ok=True)
    model.save_pretrained(model_path)

    tokenizer_path = os.path.join('Results', class_unseen, 'FewShot', str(i), 'Tokenizer')
    os.makedirs(tokenizer_path, exist_ok=True)
    tokenizer.save_pretrained(tokenizer_path)

Available classes

The following datasets and entities were used for training and therefore they can be used as label in the first segment (as a first string). Note that multiword string have been merged.

  • NCBI
    • Specific Disease
    • Composite Mention
    • Modifier
    • Disease Class
  • BIORED
    • Sequence Variant
    • Gene Or Gene Product
    • Disease Or Phenotypic Feature
    • Chemical Entity
    • Cell Line
    • Organism Taxon
  • CDR
    • Disease
    • Chemical
  • CHEMDNER
    • Chemical
    • Chemical Family
  • JNLPBA
    • Protein
    • DNA
    • Cell Type
    • Cell Line
    • RNA
  • n2c2
    • Drug
    • Frequency
    • Strength
    • Dosage
    • Form
    • Reason
    • Route
    • ADE
    • Duration

On top of this, one can use the model for zero-shot learning with other classes, and also fine-tune it with few examples of other classes.

Code availibility

Code used for training and testing the model is available at https://github.com/br-ai-ns-institute/Zero-ShotNER

Citation

If you use this model, or are inspired by it, please cite in your paper the following paper:

Košprdić M.,Prodanović N., Ljajić A., Bašaragin B., Milošević N., 2023. From Zero to Hero: Harnessing Transformers for Biomedical Named Entity Recognition in Zero- and Few-shot Contexts. arXiv preprint arXiv:2305.04928. https://arxiv.org/abs/2305.04928

or in bibtex:

@misc{kosprdic2023transformerbased,
      title={From Zero to Hero: Harnessing Transformers for Biomedical Named Entity Recognition in Zero- and Few-shot Contexts}, 
      author={Miloš Košprdić and Nikola Prodanović and Adela Ljajić and Bojana Bašaragin and Nikola Milošević},
      year={2023},
      eprint={2305.04928},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · token-classification

Можно запустить

Подбираем GPU…

Класс архитектуры
BertForTokenClassification
Ревизия весов
ed03fce

0 моделей