/ Модель

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

Контекст
514 токенов
Параметры
152 млн
Лицензия
Apache 2.0
Архитектура
roberta · dense

ner-gene-dna-rna-jnlpba-pubmed

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

Модель RoBERTa, дообученная на JNLPBA, размечает в англоязычных биомедицинских текстах ДНК, РНК, белки и клеточные сущности.

50скачиваний за 30 дней10лайковвеса обновлены5 ноя 2021

Бенчмарки

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

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

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

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

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

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

Модель raynardj/ner-gene-dna-rna-jnlpba-pubmed — модель распознавания именованных сущностей, разработанная сообществом raynardj. Она основана на RoBERTa, предварительно обученной на PubMed, и дообучена на наборе JNLPBA для разметки биомедицинских сущностей в тексте. Модель выделяет DNA, RNA, белки, клеточные линии и типы клеток; README также упоминает проверку на химических веществах и заболеваниях, но не приводит для них отдельные классы меток.

Модель содержит 151,8 млн параметров, принимает текст и возвращает метки токенов. Контекст составляет до 514 токенов. Она предназначена для извлечения биомедицинских сущностей из научных текстов, в частности из публикаций о генах и их продуктах. Поддержка английского подтверждается карточкой модели и набором данных JNLPBA.

Модель распространяется по лицензии Apache-2.0. Метки не используют префиксы B-/I-, поэтому вывод не сохраняет стандартное различение начала и продолжения сущности; для последовательных spans README предлагает дополнительную обработку.

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

  • выделение генов и ДНК в научных публикациях
  • поиск РНК и белков в биомедицинском тексте
  • извлечение названий клеточных линий и типов клеток
  • автоматическая разметка сущностей в корпусе PubMed
  • подготовка биомедицинских текстов для последующего анализа

Ограничения

Модель обучена на JNLPBA и размечает только указанные в карточке классы; README не описывает отдельные метки для химических веществ и заболеваний. Метки не содержат префиксов B-/I-, поэтому для восстановления границ сущностей может потребоваться постобработка.

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

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

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

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

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

Открыть на Hugging Face

NER to find Gene & Gene products

The model was trained on jnlpba dataset, pretrained on this pubmed-pretrained roberta model

All the labels, the possible token classes.

{"label2id": {
    "DNA": 2,
    "O": 0,
    "RNA": 5,
    "cell_line": 4,
    "cell_type": 3,
    "protein": 1
  }
 }

Notice, we removed the 'B-','I-' etc from data label.🗡

This is the template we suggest for using the model

from transformers import pipeline

PRETRAINED = "raynardj/ner-gene-dna-rna-jnlpba-pubmed"
ner = pipeline(task="ner",model=PRETRAINED, tokenizer=PRETRAINED)
ner("Your text", aggregation_strategy="first")

And here is to make your output more consecutive ⭐️

import pandas as pd
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(PRETRAINED)

def clean_output(outputs):
    results = []
    current = []
    last_idx = 0
    # make to sub group by position
    for output in outputs:
        if output["index"]-1==last_idx:
            current.append(output)
        else:
            results.append(current)
            current = [output, ]
        last_idx = output["index"]
    if len(current)>0:
        results.append(current)
    
    # from tokens to string
    strings = []
    for c in results:
        tokens = []
        starts = []
        ends = []
        for o in c:
            tokens.append(o['word'])
            starts.append(o['start'])
            ends.append(o['end'])

        new_str = tokenizer.convert_tokens_to_string(tokens)
        if new_str!='':
            strings.append(dict(
                word=new_str,
                start = min(starts),
                end = max(ends),
                entity = c[0]['entity']
            ))
    return strings

def entity_table(pipeline, **pipeline_kw):
    if "aggregation_strategy" not in pipeline_kw:
        pipeline_kw["aggregation_strategy"] = "first"
    def create_table(text):
        return pd.DataFrame(
            clean_output(
                pipeline(text, **pipeline_kw)
            )
        )
    return create_table

# will return a dataframe
entity_table(ner)(YOUR_VERY_CONTENTFUL_TEXT)

check our NER model on

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
RobertaForTokenClassification
Ревизия весов
231b91c

0 моделей