/ Модель

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

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

twitter-roberta-base-irony

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

Модель Cardiff NLP на базе RoBERTa для классификации англоязычных твитов на ироничные и неироничные.

13 894скачиваний за 30 дней29лайковвеса обновлены2 авг 2023

Бенчмарки

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

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

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

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

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

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

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

Модель подходит для анализа тональности и стилистических особенностей англоязычных твитов, а также для исследовательских экспериментов с классификацией коротких сообщений. Доступны версии весов для PyTorch, TensorFlow и Flax, а интеграция с библиотекой TweetNLP упрощает использование. Карточка не сообщает лицензию, поэтому условия распространения и коммерческого использования следует проверять в репозитории модели.

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

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

Ограничения

Модель ориентирована на англоязычные твиты и классификацию по признаку иронии; качество на других жанрах и языках не подтверждено. Лицензия и условия коммерческого использования в предоставленной карточке не приведены.

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

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

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

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

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

Открыть на Hugging Face

Twitter-roBERTa-base for Irony Detection

This is a roBERTa-base model trained on ~58M tweets and finetuned for irony detection with the TweetEval benchmark. This model has integrated into the TweetNLP Python library.

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='irony'
MODEL = f"cardiffnlp/twitter-roberta-base-{task}"

tokenizer = AutoTokenizer.from_pretrained(MODEL)

# download label mapping
labels=[]
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 = "Great, it broke the first day..."
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 = "Great, it broke the first day..."
# 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) irony 0.914
2) non_irony 0.086

Reference

Please cite the reference paper if you use this model.

@inproceedings{barbieri-etal-2020-tweeteval,
    title = "{T}weet{E}val: Unified Benchmark and Comparative Evaluation for Tweet Classification",
    author = "Barbieri, Francesco  and
      Camacho-Collados, Jose  and
      Espinosa Anke, Luis  and
      Neves, Leonardo",
    booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2020",
    month = nov,
    year = "2020",
    address = "Online",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2020.findings-emnlp.148",
    doi = "10.18653/v1/2020.findings-emnlp.148",
    pages = "1644--1650"
}

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей