/ Модель

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

Контекст
512 токенов
Параметры
137 млн
Лицензия
MIT
Архитектура
bert · dense
Базовая модель
bert-base-uncased
Библиотека
transformers
Опубликована
20 сен 2024

social-bias-ner

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

Модель на базе BERT выделяет в английском тексте токены с обобщениями, несправедливостью и стереотипами.

270скачиваний за 30 дней4лайкавеса обновлены28 окт 2024

Бенчмарки

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

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

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

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

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

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

Social Bias NER — модель на базе BERT, дообученная для многометочной классификации токенов в текстах. Она отмечает слова и фрагменты, связанные с обобщениями, несправедливостью и стереотипами; модель разработана в рамках проекта Fair-ly и связана с работой GUS-Net.

Модель основана на google-bert/bert-base-uncased, использует архитектуру BERT с классификационной головой для токенов и содержит 136,7 млн параметров. Она обрабатывает английский текст, принимает последовательности длиной до 512 токенов и предназначена для выявления языковых проявлений социального предубеждения в текстах. Для использования требуется Transformers; стандартный pipeline не поддерживает многометочную классификацию токенов напрямую, поэтому выход нужно обрабатывать отдельно.

Модель можно применять для анализа текстов и поддержки проверки формулировок на обобщения, несправедливость и стереотипы. Лицензия — MIT.

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

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

Ограничения

Модель обрабатывает английский текст и ограничена контекстом до 512 токенов. Для многометочной классификации требуется собственная обработка результатов, поскольку стандартный Transformers pipeline не предоставляет для неё готового класса.

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

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

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

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

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

Открыть на Hugging Face

Social Bias NER

This NER model is fine-tuned from BERT, for multi-label token classification of:

  • (GEN)eralizations
  • (UNFAIR)ness
  • (STEREO)types

You can try it out in spaces :).

How to Get Started with the Model

Transformers pipeline doesn't have a class for multi-label token classification, but you can use this code to load the model, and run it, and format the output.

import json
import torch
from transformers import BertTokenizerFast, BertForTokenClassification
import gradio as gr

# init important things
tokenizer = BertTokenizerFast.from_pretrained('bert-base-uncased')
model = BertForTokenClassification.from_pretrained('ethical-spectacle/social-bias-ner')
model.eval()
model.to('cuda' if torch.cuda.is_available() else 'cpu')

# ids to labels we want to display
id2label = {
    0: 'O',
    1: 'B-STEREO',
    2: 'I-STEREO',
    3: 'B-GEN',
    4: 'I-GEN',
    5: 'B-UNFAIR',
    6: 'I-UNFAIR'
}

# predict function you'll want to use if using in your own code
def predict_ner_tags(sentence):
    inputs = tokenizer(sentence, return_tensors="pt", padding=True, truncation=True, max_length=128)
    input_ids = inputs['input_ids'].to(model.device)
    attention_mask = inputs['attention_mask'].to(model.device)

    with torch.no_grad():
        outputs = model(input_ids=input_ids, attention_mask=attention_mask)
        logits = outputs.logits
        probabilities = torch.sigmoid(logits)
        predicted_labels = (probabilities > 0.5).int() # remember to try your own threshold

    result = []
    tokens = tokenizer.convert_ids_to_tokens(input_ids[0])
    for i, token in enumerate(tokens):
        if token not in tokenizer.all_special_tokens:
            label_indices = (predicted_labels[0][i] == 1).nonzero(as_tuple=False).squeeze(-1)
            labels = [id2label[idx.item()] for idx in label_indices] if label_indices.numel() > 0 else ['O']
            result.append({"token": token, "labels": labels})

    return json.dumps(result, indent=4)

GUS-Net Project Details:

Resources:

Please cite:

@article{powers2024gusnet,
  title={{GUS-Net: Social Bias Classification in Text with Generalizations, Unfairness, and Stereotypes}},
  author={Maximus Powers and Umang Mavani and Harshitha Reddy Jonala and Ansh Tiwari and Hua Wei},
  journal={arXiv preprint arXiv:2410.08388},
  year={2024},
  url={https://arxiv.org/abs/2410.08388}
}

Give our research group, Ethical Spectacle, a follow ;).

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей