ViSoBERT: Hate Speech Detection for Vietnamese Text

This model is a fine-tuned version of uitnlp/visobert on the ViHSD (Vietnamese Hate Speech Detection Dataset) for classifying Vietnamese text into three categories: CLEAN, OFFENSIVE, and HATE.

Model Details

  • Base Model: uitnlp/visobert
  • Description: ViSoBERT fine-tuned cho bร i toรกn phรขn loแบกi Hate Speech tiแบฟng Viแป‡t
  • Architecture: ViSoBERT (BERT ฤ‘ฦฐแปฃc pretrain trรชn dแปฏ liแป‡u mแบกng xรฃ hแป™i Viแป‡t Nam)
  • Dataset: ViHSD (Vietnamese Hate Speech Detection Dataset)
  • Fine-tuning Framework: HuggingFace Transformers + PyTorch
  • Task: Hate Speech Classification (3 classes)

Hyperparameters

  • Batch size: 32
  • Learning rate: 2e-5
  • Epochs: 100
  • Max sequence length: 256
  • Weight decay: 0.01
  • Warmup steps: 500
  • Early stopping patience: 5
  • Optimizer: AdamW
  • Learning rate scheduler: Cosine with warmup

Dataset

Model was trained on ViHSD (Vietnamese Hate Speech Detection Dataset) containing ~10,000 Vietnamese comments from social media.

Label Descriptions:

  • CLEAN (0): Normal content without offensive language
  • OFFENSIVE (1): Mildly offensive or inappropriate content
  • HATE (2): Hate speech, extremist language, severe threats

Evaluation Results

The model was evaluated on test set with the following metrics:

  • Accuracy: 0.9372
  • Macro-F1: 0.8241
  • Weighted-F1: 0.9379
  • Macro-Precision: 0.8160
  • Macro-Recall: 0.8357

Basic Usage

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# Load model and tokenizer
model_name = "visolex/visobert-hsd"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(
    model_name
)

# Classify text
text = "Vฤƒn bแบฃn tiแบฟng Viแป‡t cแบงn phรขn loแบกi"
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)

with torch.no_grad():
    outputs = model(**inputs)
    predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
    predicted_label = torch.argmax(predictions, dim=-1).item()

# Label mapping
label_names = {
    0: "CLEAN",
    1: "OFFENSIVE",
    2: "HATE"
}

print(f"Predicted label: {label_names[predicted_label]}")
print(f"Confidence scores: {predictions[0].tolist()}")

Training Details

Training Data

  • Dataset: ViHSD (Vietnamese Hate Speech Detection Dataset)
  • Total samples: ~10,000 Vietnamese comments from social media
  • Training split: ~70%
  • Validation split: ~15%
  • Test split: ~15%

Training Configuration

  • Framework: PyTorch + HuggingFace Transformers
  • Optimizer: AdamW
  • Learning Rate: 2e-5
  • Batch Size: 32
  • Max Length: 256 tokens
  • Epochs: 100 (with early stopping patience: 5)
  • Weight Decay: 0.01
  • Warmup Steps: 500

Contact & Support

License

This model is distributed under the MIT License.

Acknowledgments


Downloads last month
16
Safetensors
Model size
97.6M params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for visolex/visobert-hsd

Base model

uitnlp/visobert
Finetuned
(55)
this model

Space using visolex/visobert-hsd 1

Collection including visolex/visobert-hsd

Evaluation results