vrashad's picture
Update README.md
f4fe75d verified
---
language: az
license: cc-by-4.0
library_name: transformers
tags:
- text-classification
- toxicity
- azerbaijani
- multi-label-classification
pipeline_tag: text-classification
datasets:
- LocalDoc/toxic_dataset_classification_azerbaijani
base_model:
- microsoft/mdeberta-v3-base
---
# Azerbaijani Toxicity Classifier
This is a multi-label text classification model fine-tuned to detect various types of toxicity in **Azerbaijani** text.
The model is based on `mDeBERTa-v3` and can identify the following categories:
- `toxicity` (Overall Toxicity)
- `severe_toxicity`
- `obscene`
- `threat`
- `insult`
- `identity_attack`
- `sexual_explicit`
## Model Description
This model is designed for content moderation and analysis of online communication in the Azerbaijani language. It takes a string of text as input and returns a probability score for each of the seven toxicity categories. This allows for nuanced moderation, distinguishing between general insults, threats, or sexually explicit content.
## How to Use
You can use this model directly with the `transformers` library.
First, make sure you have the necessary libraries installed:
```bash
pip install transformers torch
```
```python
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
def classify_toxicity():
text_to_classify = "Sən nə yaramaz adamsan"
model_id = "LocalDoc/azerbaijani_toxicity_classifier"
# The order of labels must match the model's output
label_names = [
'identity_attack',
'insult',
'obscene',
'severe_toxicity',
'sexual_explicit',
'threat',
'toxicity'
]
print(f"Loading model: {model_id}...")
try:
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
except Exception as e:
print(f"Error loading model. Make sure the repository '{model_id}' is public and contains the model files.")
print(f"Details: {e}")
return
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model.to(device)
model.eval()
print(f"Model loaded successfully on {device}.")
-
inputs = tokenizer(
text_to_classify,
truncation=True,
padding=True,
return_tensors='pt'
).to(device)
with torch.no_grad():
outputs = model(**inputs)
# Apply sigmoid to get probabilities for each category
probabilities = torch.sigmoid(outputs.logits).cpu().numpy()[0]
threshold = 0.5
overall_toxicity_score = probabilities[-1] # The last label is 'toxicity'
is_toxic = overall_toxicity_score > threshold
print("\n" + "="*50)
print("TOXICITY ANALYSIS RESULTS")
print("="*50)
print(f"Text: {text_to_classify}")
status = "TOXIC" if is_toxic else "NOT TOXIC"
print(f"\nOverall Status: {status} (Confidence: {overall_toxicity_score:.3f})")
print("\nCategory Scores:")
for i, category in enumerate(label_names):
score = probabilities[i]
formatted_name = category.replace('_', ' ').capitalize()
print(f" - {formatted_name:<20}: {score:.4f}")
print("="*50)
if __name__ == "__main__":
classify_toxicity()
```
```bash
==================================================
TOXICITY ANALYSIS RESULTS
==================================================
Text: Sən nə yaramaz adamsan
Overall Status: TOXIC (Confidence: 0.987)
Category Scores:
- Identity attack : 0.0004
- Insult : 0.9878
- Obscene : 0.0056
- Severe toxicity : 0.0002
- Sexual explicit : 0.0002
- Threat : 0.0006
- Toxicity : 0.9875
==================================================
```
## Intended Use & Limitations
This model is intended to be used as a tool for content moderation to help flag potentially harmful content for human review.
**Limitations:**
* The model may struggle with sarcasm, irony, or other forms of nuanced language.
* Its performance is dependent on the data it was trained on and may exhibit biases present in that data.
* It should not be used to make fully automated, final decisions about content or users without a human-in-the-loop.
## Training
The model was fine-tuned on a private dataset of Azerbaijani text labeled for the seven toxicity categories mentioned above. It was trained as a multi-label classification task, where each text can belong to one, multiple, or no categories.
## License
This model is licensed under the **Creative Commons Attribution 4.0 International (CC BY 4.0)** license. You are free to share and adapt the material for any purpose, even commercially, as long as you give appropriate credit. For more details, see the [license terms](https://creativecommons.org/licenses/by/4.0/).
## Contact
For more information, questions, or issues, please contact LocalDoc at [[email protected]].