manifesto-project/manifestoberta-xlm-roberta-56policy-topics-context-2023-1-1
Un modelo xlm-roberta-large afinado en aproximadamente 1,6 millones de declaraciones anotadas contenidas en el Corpus del Manifiesto (versión 2023a). El modelo puede usarse para categorizar cualquier tipo de texto en 56 diferentes temas políticos según el esquema de codificación del Proyecto Manifiesto (Manual 4). Funciona para todos los idiomas en los que el modelo xlm-roberta está preentrenado, aunque es importante notar que tendrá un mejor rendimiento para los 38 idiomas contenidos en el Corpus del Manifiesto. La variante del modelo de contexto incorpora además las oraciones circundantes de una declaración para mejorar los resultados de clasificación en oraciones ambiguas. Hemos modificado ligeramente la cabeza de Clasificación del modelo XLMRobertaModelForSequenceClassification (eliminamos la activación tanh y la capa lineal intermedia) ya que esto mejoró considerablemente el rendimiento del modelo para esta tarea.
Como usar
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
model = AutoModelForSequenceClassification.from_pretrained("manifesto-project/manifestoberta-xlm-roberta-56policy-topics-context-2023-1-1", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-large")
oración = "Estos principios están bajo amenaza."
contexto = "Los derechos humanos y el derecho internacional humanitario son pilares fundamentales de un sistema global seguro. Estos principios están bajo amenaza. Algunos de los estados más poderosos del mundo eligen vender armas a estados que abusan de los derechos humanos."
# Para oraciones sin contexto adicional, solo use la oración en sí misma como contexto.
# Ejemplo: contexto = "Estos principios están bajo amenaza."
inputs = tokenizer(oración,
contexto,
return_tensors="pt",
max_length=300, # limitamos la entrada a 300 tokens durante el afinamiento
padding="max_length",
truncation=True
)
logits = model(**inputs).logits
probabilities = torch.softmax(logits, dim=1).tolist()[0]
probabilities = {model.config.id2label[index]: round(probability * 100, 2) for index, probability in enumerate(probabilities)}
probabilities = dict(sorted(probabilities.items(), key=lambda item: item[1], reverse=True))
print(probabilities)
# {'201 - Libertad y Derechos Humanos': 90.76, '107 - Internacionalismo: Positivo': 5.82, '105 - Militar: Negativo': 0.66...}
predicted_class = model.config.id2label[logits.argmax().item()]
print(predicted_class)
# 201 - Libertad y Derechos Humanos
Funcionalidades
- Transformer
- Pytorch
- XLM-RoBERTa
- Clasificación de texto
- Código personalizado
- Licencia: bigscience-openrail-m
- Compatible con AutoTrain
- Región: EE.UU.
Casos de uso
- Clasificación de textos en 56 diferentes temas políticos según el esquema de codificación del Proyecto Manifiesto.
- Mejora en la clasificación de oraciones ambiguas mediante la inclusión del contexto circundante de las declaraciones.