Text Classification
Transformers
Safetensors
Spanish
xlm-roberta
spanish
conflict-detection
text-embeddings-inference
Instructions to use gefero/conflict_detection_ROBERTA_based with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use gefero/conflict_detection_ROBERTA_based with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="gefero/conflict_detection_ROBERTA_based")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("gefero/conflict_detection_ROBERTA_based") model = AutoModelForSequenceClassification.from_pretrained("gefero/conflict_detection_ROBERTA_based", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| library_name: transformers | |
| tags: | |
| - text-classification | |
| - spanish | |
| - conflict-detection | |
| - xlm-roberta | |
| language: | |
| - es | |
| # Model Card for XLM-RoBERTa Spanish Conflict Detection Classifier | |
| <!-- Quick summary of what the model is/does. --> | |
| A fine-tuned XLM-RoBERTa model for detecting social conflict mentions in Spanish news articles. The model is trained on the "Conflicto Social en Noticias" dataset and achieves 91.07% macro-F1 score on test data, making it suitable for automated content classification and conflict-related news filtering. | |
| ## Model Details | |
| ### Model Description | |
| <!-- Longer summary of what this model is. --> | |
| This is a binary text classification model based on **FacebookAI/xlm-roberta-base** fine-tuned to detect whether Spanish news articles discuss social conflict or not. The model was trained using a rigorous multi-seed approach (10 random seeds) to ensure robustness and generalization. | |
| The classification task is binary: | |
| - **CONFLICTO** (1): News articles that discuss social conflict | |
| - **NO_CONFLICTO** (0): News articles that do not discuss social conflict | |
| The model achieved strong performance across multiple evaluation runs, with consistent metrics indicating reliable predictions on unseen test data. | |
| ### Model Details | |
| - **Developed by:** Germán Rosati (Factor~Data, SICSS-Buenos Aires) | |
| - **Model type:** Transformer-based text classification | |
| - **Language(s) (NLP):** Spanish (es) | |
| - **License:** MIT | |
| - **Finetuned from model:** [FacebookAI/xlm-roberta-base](https://huggingface.co/FacebookAI/xlm-roberta-base) | |
| ### Model Sources | |
| - **Repository:** https://github.com/gefero/factor_data_tuto_NLP_SICSS | |
| - **Dataset:** [agusnieto77/conflicto-social-noticias-4034](https://huggingface.co/datasets/agusnieto77/conflicto-social-noticias-4034) | |
| ## Uses | |
| ### Direct Use | |
| This model can be used for: | |
| - **Automated news classification:** Identify news articles discussing social conflict in Spanish-language sources | |
| - **Content moderation:** Flag conflict-related content for review or categorization | |
| - **News aggregation:** Filter and organize news by conflict relevance | |
| - **Research and analytics:** Systematic analysis of conflict coverage in news media | |
| - **Social media monitoring:** Detect posts discussing social conflict | |
| ### Downstream Use [optional] | |
| This model can be integrated into: | |
| - News recommendation systems to provide conflict-focused news feeds | |
| - Content management systems for automated news categorization | |
| - Data pipelines for media analysis research | |
| - Misinformation detection systems (as a conflict-detection component) | |
| ### Out-of-Scope Use | |
| This model is **not suitable for:** | |
| - Languages other than Spanish (though XLM-RoBERTa is multilingual, the model was fine-tuned only on Spanish data) | |
| - Content moderation decisions without human review (should be used as a scoring/filtering tool, not final arbiter) | |
| - Real-time moderation of live content streams without performance testing in your specific domain | |
| - Classification of informal text, social media, or user-generated content not resembling news articles (model trained on news) | |
| ## Bias, Risks, and Limitations | |
| ### Limitations | |
| 1. **Language:** Model trained exclusively on Spanish news articles. Performance on other languages or dialects is unknown. | |
| 2. **Domain:** Model trained on news articles. Performance on other text types (social media, academic text, etc.) may be degraded. | |
| 3. **Temporal bias:** Dataset represents a specific time period. Linguistic evolution and emerging conflict narratives may not be captured. | |
| 4. **Class balance:** Dataset contains both conflict and non-conflict examples. Performance may vary based on class distribution in your specific use case. | |
| 5. **Truncation:** Text is truncated to 256 tokens (matching model's training setup). Very long articles may lose important context. | |
| 6. **Context sensitivity:** "Conflict" detection is based on textual patterns. Sarcasm, irony, or indirect references may be misclassified. | |
| ### Risks and Biases | |
| - **Labeling bias:** Model inherits any biases present in the original dataset annotation process | |
| - **Geographic bias:** News sources and conflict types in training data may not represent all Spanish-speaking regions equally | |
| - **Media bias:** Model trained on news articles, which may have their own coverage biases | |
| - **Potential overreach:** Model might flag articles mentioning conflict in non-concerning contexts (e.g., historical analysis, conflict resolution discussion) | |
| ### Recommendations | |
| 1. **Always validate:** Test the model on your specific data before production deployment | |
| 2. **Human review:** Use model predictions as a starting point for human review, not as final decisions | |
| 3. **Monitor performance:** Track model performance over time and across different domains | |
| 4. **Document decisions:** Keep clear records of how the model is being used and any adjustments made | |
| 5. **Consider context:** Combine model predictions with other signals for robust classification decisions | |
| ## How to Get Started with the Model | |
| ### Installation | |
| ```bash | |
| pip install transformers torch | |
| ``` | |
| ### Quickstart - Using the Pipeline API | |
| ```python | |
| from transformers import pipeline | |
| # Initialize the model | |
| classifier = pipeline( | |
| "text-classification", | |
| model="gefero/conflict_detection_ROBERTA_based" | |
| ) | |
| # Classify text | |
| texts = [ | |
| "El gobierno anunció nuevas políticas de seguridad social", | |
| "Miles de personas protestaron en las calles contra las medidas económicas" | |
| ] | |
| results = classifier(texts) | |
| for text, result in zip(texts, results): | |
| print(f"Text: {text[:50]}...") | |
| print(f"Label: {result['label']} (score: {result['score']:.4f})\n") | |
| ``` | |
| ### Quickstart - Using the Model Directly | |
| ```python | |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification | |
| import torch | |
| model_name = "gefero/conflict_detection_ROBERTA_based" | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForSequenceClassification.from_pretrained(model_name) | |
| # Prepare input | |
| text = "Manifestantes se enfrentan con la policía" | |
| inputs = tokenizer( | |
| text, | |
| truncation=True, | |
| padding="max_length", | |
| max_length=256, | |
| return_tensors="pt" | |
| ) | |
| # Get predictions | |
| with torch.no_grad(): | |
| outputs = model(**inputs) | |
| logits = outputs.logits | |
| predictions = torch.argmax(logits, dim=-1) | |
| confidence = torch.softmax(logits, dim=-1).max().item() | |
| labels = {0: "NO_CONFLICTO", 1: "CONFLICTO"} | |
| print(f"Prediction: {labels[predictions.item()]} (confidence: {confidence:.4f})") | |
| ``` | |
| ## Training Details | |
| ### Training Data | |
| - **Dataset:** [agusnieto77/conflicto-social-noticias-4034](https://huggingface.co/datasets/agusnieto77/conflicto-social-noticias-4034) | |
| - **Language:** Spanish (es) | |
| - **Domain:** News articles | |
| - **Splits used:** | |
| - Training set: 70% (~2,823 examples) | |
| - Development set: 10% (~403 examples) | |
| - Test set: 20% (~806 examples) | |
| ### Training Procedure | |
| #### Preprocessing | |
| - **Tokenization:** XLM-RoBERTa tokenizer | |
| - **Max length:** 256 tokens (increased from default 128 to capture longer articles) | |
| - **Truncation:** Long articles truncated to max_length | |
| - **Padding:** Padded to max_length for batch processing | |
| #### Training Hyperparameters | |
| - **Base model:** FacebookAI/xlm-roberta-base | |
| - **Learning rate:** 2e-5 | |
| - **Batch size:** 16 (training), 64 (evaluation) | |
| - **Epochs:** 5 | |
| - **Weight decay:** 0.01 | |
| - **Warmup steps:** 0.1 (proportion of total training steps) | |
| - **Evaluation strategy:** Evaluate at the end of each epoch | |
| - **Best model selection:** Based on macro-F1 on development set | |
| - **Hardware:** GPU with FP16 (mixed precision) when available | |
| - **Random seeds:** 10 seeds [0, 1, 7, 13, 42, 100, 123, 2024, 31337, 65535] for robust evaluation | |
| #### Training Details | |
| - **Framework:** Hugging Face Transformers | |
| - **Optimizer:** AdamW (default) | |
| - **Metric for best model:** macro-F1 (average of precision and recall across both classes) | |
| - **Multi-seed training:** Model was trained 10 times with different random seeds to ensure robustness and to provide confidence intervals on performance metrics | |
| ## Evaluation | |
| ### Testing Data, Factors & Metrics | |
| #### Testing Data | |
| - **Split:** Test set (20% of original data, stratified split) | |
| - **Size:** ~806 examples | |
| - **Language:** Spanish | |
| - **Domain:** News articles from the original dataset | |
| #### Metrics | |
| - **Macro-F1** (primary metric): Average F1-score across both classes | |
| - Used for model selection during training | |
| - Balances precision and recall | |
| - Better for imbalanced or binary classification tasks | |
| - **Accuracy:** Overall correctness of predictions | |
| - **F1-CONFLICTO:** F1-score specifically for the CONFLICTO class (conflict-related news) | |
| - **Precision:** True positives / (true positives + false positives) | |
| - **Recall:** True positives / (true positives + false negatives) | |
| ### Results | |
| #### Official Test Results (10 runs with different seeds) | |
| | Metric | Mean | Std Dev | Min | Max | | |
| |--------|------|---------|-----|-----| | |
| | **Test Macro-F1** | 0.9107 | 0.0071 | 0.8999 | 0.9204 | | |
| | **Test Accuracy** | 0.9394 | 0.0053 | 0.9319 | 0.9468 | | |
| | **Test F1-CONFLICTO** | 0.8602 | 0.0108 | 0.8433 | 0.8746 | | |
| | **Test Precision** | 0.8807 | 0.0296 | 0.8307 | 0.9182 | | |
| | **Test Recall** | 0.8419 | 0.0247 | 0.8156 | 0.8883 | | |
| #### Per-Seed Results | |
| | Seed | Dev Macro-F1 | Test Macro-F1 | Test Accuracy | Test F1-CONFLICTO | Test Precision | Test Recall | | |
| |------|--------------|---------------|---------------|-------------------|----------------|-------------| | |
| | 0 | 0.9113 | 0.9007 | 0.9332 | 0.8439 | 0.8743 | 0.8156 | | |
| | 1 | 0.9116 | 0.8999 | 0.9319 | 0.8433 | 0.8605 | 0.8268 | | |
| | 7 | 0.8975 | 0.9092 | 0.9381 | 0.8580 | 0.8728 | 0.8436 | | |
| | 13 | 0.9187 | 0.9140 | 0.9431 | 0.8639 | 0.9182 | 0.8156 | | |
| | 42 | 0.9154 | 0.9127 | 0.9418 | 0.8622 | 0.9074 | 0.8212 | | |
| | 100 | 0.9219 | 0.9136 | 0.9394 | 0.8665 | 0.8457 | 0.8883 | | |
| | 123 | 0.9146 | 0.9194 | 0.9455 | 0.8736 | 0.8994 | 0.8492 | | |
| | 2024 | 0.9098 | 0.9125 | 0.9406 | 0.8629 | 0.8830 | 0.8436 | | |
| | 31337 | 0.9180 | 0.9204 | 0.9468 | 0.8746 | 0.9146 | 0.8380 | | |
| | 65535 | 0.9168 | 0.9050 | 0.9332 | 0.8533 | 0.8307 | 0.8771 | | |
| #### Summary | |
| The model demonstrates **excellent performance** with: | |
| - **High macro-F1 (0.91):** Balanced and strong predictions on both classes | |
| - **High accuracy (0.94):** Correct classification in 94% of cases | |
| - **Robust across seeds:** Low standard deviation indicates consistent generalization | |
| - **Strong conflict detection (F1-CONFLICTO: 0.86):** Reliably identifies conflict-related news | |
| ## Environmental Impact | |
| ### Compute Infrastructure | |
| #### Hardware | |
| - **GPU:** NVIDIA GPU (exact model unspecified, but typical for Colab) | |
| - **CPU:** Supporting processors on Colab infrastructure | |
| - **RAM:** Standard Colab allocation | |
| #### Training Time | |
| - **Per seed:** ~5-10 minutes (5 epochs per training run) | |
| - **Total:** ~50-100 minutes for 10 complete runs | |
| - **Cloud Platform:** Google Colaboratory (free tier) | |
| #### Carbon Emissions | |
| Estimated CO2 emissions for multi-seed training approach: **Low to minimal** (Colab's data centers use renewable energy sources). Individual training runs are short (~10 min each) and performed on highly optimized infrastructure. | |
| For detailed calculations, see [ML Impact Calculator](https://mlco2.github.io/impact#compute). | |
| ## Technical Specifications | |
| ### Model Architecture and Objective | |
| - **Architecture:** Transformer-based sequence classification | |
| - Base: XLM-RoBERTa (12 layers, 768 hidden dimensions, 110M parameters) | |
| - Task-specific layer: Linear classification head for 2 classes | |
| - **Objective:** Binary cross-entropy loss (standard for text classification) | |
| - **Multilingual base:** XLM-RoBERTa trained on 100+ languages, fine-tuned here for Spanish-specific conflict detection | |
| ### Input/Output | |
| - **Input:** Spanish text (news articles) | |
| - **Max length:** 256 tokens | |
| - **Output:** Class probabilities for [NO_CONFLICTO, CONFLICTO] | |
| ## Citation [optional] | |
| If you use this model in research, please cite: | |
| **BibTeX:** | |
| ```bibtex | |
| @software{rosati2024conflictdetection, | |
| author = {Rosati, Germán}, | |
| title = {XLM-RoBERTa Spanish Conflict Detection Classifier}, | |
| year = {2024}, | |
| publisher = {Hugging Face Hub}, | |
| url = {https://huggingface.co/gefero/conflict_detection_ROBERTA_based} | |
| } | |
| ``` | |
| **APA:** | |
| Rosati, G. (2024). XLM-RoBERTa Spanish Conflict Detection Classifier [Machine learning model]. Hugging Face Hub. Retrieved from https://huggingface.co/gefero/conflict_detection_ROBERTA_based | |
| ## Model Card Authors | |
| - **Germán Rosati** (Factor~Data, SICSS-Buenos Aires) | |
| ## Model Card Contact | |
| - **Email:** german.rosati@gmail.com | |
| - **GitHub:** https://github.com/gefero | |