CoolFace
Modelpublic

Xtiphyn/Cross-Lingual-Spam-Filter

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes9downloads
Model Card

XLM-Roberta Spam Classifier (EN-HI โž DE)

This model is a fine-tuned version of xlm-roberta-base for cross-lingual spam detection. It was trained on English and Hindi messages, and evaluated on German samples. The goal is to demonstrate zero-shot transfer in spam/ham classification across languages.


๐Ÿง  Model Description

  • โ€”Model Type: XLM-RoBERTa Base (Transformer encoder)
  • โ€”Task: Binary classification โ€“ spam vs. ham
  • โ€”Languages: Trained on English and Hindi, tested on German
  • โ€”Tokenizer: AutoTokenizer from transformers (xlm-roberta-base)
  • โ€”Framework: PyTorch + Hugging Face Trainer

Intended Uses & Limitations

Intended Uses:

  • โ€”Spam filtering in multilingual messaging systems
  • โ€”Research on cross-lingual text classification
  • โ€”Transfer learning studies involving high/low-resource languages

โš ๏ธ Limitations:

  • โ€”Trained on English and Hindi; evaluated on German and French. While results on French were promising, further benchmarking is recommended.
  • โ€”May underperform on mixed-language, informal, or code-switched inputs.

๐Ÿ“Š Performance

Evaluation Metrics (on German test set):

MetricScore
Accuracy0.99
Precision (ham)1.00
Recall (ham)0.99
F1-score (ham)1.00
Precision (spam)0.97
Recall (spam)0.98
F1-score (spam)0.97
Weighted F10.99

Confusion Matrix:

Predicted HamPredicted Spam
Actual Ham4795620
Actual Spam227533

๐Ÿ“š Dataset

The dataset is a multilingual corpus with parallel spam/ham messages in:

  • โ€”English
  • โ€”Hindi
  • โ€”German
  • โ€”French

For this training run:

  • โ€”Train set: English + Hindi
  • โ€”Test set: German

Labels:

  • โ€”"ham" โ†’ 0
  • โ€”"spam" โ†’ 1

โš™๏ธ Training Configuration

SettingValue
Epochs3
Batch Size32 (train), 8 (eval)
Learning Rate3e-5
OptimizerAdamW
Weight Decay0.01
SchedulerLinear
Eval StrategyEpoch-wise

Example Usage

python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

model_name = "Xtiphyn/Cross-Lingual-Spam-Filter"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

inputs = tokenizer("Sie haben eine kostenlose Reise gewonnen!", return_tensors="pt")
with torch.no_grad():
    logits = model(**inputs).logits
    prediction = torch.argmax(logits).item()

print("Label:", "Spam" if prediction == 1 else "Ham")


๐Ÿ› ๏ธ Environment
Transformers: 4.54.0

PyTorch: 2.6.0+cu124

Datasets: 4.0.0

Tokenizers: 0.21.2

๐Ÿšง Future Work
Incorporate code-switching and low-resource scripts

Made with โค๏ธ by Xtiphyn.