ruBERT-tiny2 detección de emociones rusas

Aniemore
Clasificación de texto

ruBERT-tiny2 es un modelo de clasificación de emociones multiclase en ruso. Utiliza transformers y PyTorch, y ha sido entrenado para detectar emociones como neutralidad, felicidad, tristeza, entusiasmo, miedo, ira y disgusto en textos rusos.

Como usar

import torch
from transformers import BertForSequenceClassification, AutoTokenizer

LABELS = ['neutral', 'felicidad', 'tristeza', 'entusiasmo', 'miedo', 'ira', 'disgusto']
tokenizer = AutoTokenizer.from_pretrained('Aniemore/rubert-tiny2-russian-emotion-detection')
model = BertForSequenceClassification.from_pretrained('Aniemore/rubert-tiny2-russian-emotion-detection')

@torch.no_grad()
def predict_emotion(text: str) -> str:
    """
    Tomamos el texto de entrada, lo tokenizamos, lo pasamos por el modelo y luego devolvemos la etiqueta predicha.
    :param text: El texto a ser clasificado
    :type text: str
    :return: La emoción predicha
    """
    inputs = tokenizer(text, max_length=512, padding=True, truncation=True, return_tensors='pt')
    outputs = model(**inputs)
    predicted = torch.nn.functional.softmax(outputs.logits, dim=1)
    predicted = torch.argmax(predicted, dim=1).numpy()
    return LABELS[predicted[0]]

@torch.no_grad()
def predict_emotions(text: str) -> list:
    """
    Toma una cadena de texto, la tokeniza, la introduce al modelo y devuelve un diccionario de emociones y sus probabilidades.
    :param text: El texto que quieres clasificar
    :type text: str
    :return: Un diccionario de emociones y sus probabilidades.
    """
    inputs = tokenizer(text, max_length=512, padding=True, truncation=True, return_tensors='pt')
    outputs = model(**inputs)
    predicted = torch.nn.functional.softmax(outputs.logits, dim=1)
    emotions_list = {}
    for i in range(len(predicted.numpy()[0].tolist())):
        emotions_list[LABELS[i]] = predicted.numpy()[0].tolist()[i]
    return emotions_list

# Ejemplo de uso
simple_prediction = predict_emotion("Какой же сегодня прекрасный день, братья")
not_simple_prediction = predict_emotions("Какой же сегодня прекрасный день, братья")

print(simple_prediction)
print(not_simple_prediction)

Funcionalidades

Clasificación de texto
Transformers
PyTorch
Safetensors
Clasificación de emociones en ruso
Reconocimiento de emociones multiclase

Casos de uso

Detección de emociones en textos rusos
Análisis de sentimientos en tiempo real
Monitoreo de emociones en redes sociales
Estudios psicológicos y sociológicos