/ Модель

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

Контекст
514 токенов
Параметры
152 млн
Архитектура
roberta · dense
Опубликована
2 мар 2022

twitter-roberta-base-emotion

Классификация текстаТекст → label4 профессии

Модель Cardiff NLP на базе RoBERTa классифицирует эмоции в коротких сообщениях, включая твиты.

31 942скачиваний за 30 дней50лайковвеса обновлены28 мая 2023

Бенчмарки

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

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

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

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

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

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

cardiffnlp/twitter-roberta-base-emotion — модель Cardiff NLP для распознавания эмоций в сообщениях Twitter. Она основана на RoBERTa-base, предварительно обученной примерно на 58 млн твитов, и дообучена на бенчмарке TweetEval для классификации эмоций. Модель содержит около 151,8 млн параметров и принимает текст длиной до 514 токенов.

Модель присваивает тексту оценки по эмоциональным категориям, например радости, оптимизму, гневу и грусти. Её можно использовать для анализа тональности и эмоций в публикациях и коротких сообщениях на английском языке. Доступны варианты весов для PyTorch, TensorFlow и Flax. В README указана более новая модель семейства с расширенным набором эмоций; применимость текущей модели ограничена короткими сообщениями в стиле Twitter и метками её обучающего бенчмарка. Лицензия в предоставленных данных не указана.

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

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

Ограничения

Модель настроена на короткие сообщения в стиле Twitter и ограниченный набор эмоциональных категорий TweetEval; README указывает на более новую модель с расширенным набором эмоций. В предоставленных данных сведения о лицензии отсутствуют.

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

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

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

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

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

Открыть на Hugging Face

Twitter-roBERTa-base for Emotion Recognition

This is a RoBERTa-base model trained on ~58M tweets and finetuned for emotion recognition with the TweetEval benchmark.

New! We just released a new emotion recognition model trained with more emotion types and with a newer RoBERTa-based model. See twitter-roberta-base-emotion-multilabel-latest and TweetNLP for more details.

Example of classification

from transformers import AutoModelForSequenceClassification
from transformers import TFAutoModelForSequenceClassification
from transformers import AutoTokenizer
import numpy as np
from scipy.special import softmax
import csv
import urllib.request

# Preprocess text (username and link placeholders)
def preprocess(text):
    new_text = []
    for t in text.split(" "):
        t = '@user' if t.startswith('@') and len(t) > 1 else t
        t = 'http' if t.startswith('http') else t
        new_text.append(t)
    return " ".join(new_text)

# Tasks:
# emoji, emotion, hate, irony, offensive, sentiment
# stance/abortion, stance/atheism, stance/climate, stance/feminist, stance/hillary

task='emotion'
MODEL = f"cardiffnlp/twitter-roberta-base-{task}"

tokenizer = AutoTokenizer.from_pretrained(MODEL)

# download label mapping
mapping_link = f"https://raw.githubusercontent.com/cardiffnlp/tweeteval/main/datasets/{task}/mapping.txt"
with urllib.request.urlopen(mapping_link) as f:
    html = f.read().decode('utf-8').split("\n")
    csvreader = csv.reader(html, delimiter='\t')
labels = [row[1] for row in csvreader if len(row) > 1]

# PT
model = AutoModelForSequenceClassification.from_pretrained(MODEL)
model.save_pretrained(MODEL)

text = "Celebrating my promotion 😎"
text = preprocess(text)
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
scores = output[0][0].detach().numpy()
scores = softmax(scores)

# # TF
# model = TFAutoModelForSequenceClassification.from_pretrained(MODEL)
# model.save_pretrained(MODEL)

# text = "Celebrating my promotion 😎"
# encoded_input = tokenizer(text, return_tensors='tf')
# output = model(encoded_input)
# scores = output[0][0].numpy()
# scores = softmax(scores)

ranking = np.argsort(scores)
ranking = ranking[::-1]
for i in range(scores.shape[0]):
    l = labels[ranking[i]]
    s = scores[ranking[i]]
    print(f"{i+1}) {l} {np.round(float(s), 4)}")

Output:

1) joy 0.9382
2) optimism 0.0362
3) anger 0.0145
4) sadness 0.0112

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей