--- language: - az license: apache-2.0 tags: - token-classification - ner - xlm-roberta - azerbaijani - multilingual library_name: transformers pipeline_tag: token-classification datasets: - LocalDoc/azerbaijani-ner-dataset metrics: - precision - recall - f1 base_model: xlm-roberta-large model-index: - name: XLM-RoBERTa Large Azerbaijani NER results: - task: type: token-classification name: Named Entity Recognition dataset: type: LocalDoc/azerbaijani-ner-dataset name: Azerbaijani NER Dataset metrics: - type: precision name: Precision value: 0.7831 - type: recall name: Recall value: 0.7284 - type: f1 name: F1 value: 0.7548 --- # Azerbaijani Named Entity Recognition with XLM-RoBERTa Large Fine-tuned version of `xlm-roberta-large` for Named Entity Recognition (NER) on Azerbaijani text. Recognizes 12 entity types including persons, locations, organizations, dates, and more. **Hugging Face**: [IsmatS/xlm_roberta_large_az_ner](https://huggingface.co/IsmatS/xlm_roberta_large_az_ner) ## Quick Start ```python from transformers import AutoTokenizer, AutoModelForTokenClassification, pipeline model_name = "IsmatS/xlm_roberta_large_az_ner" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForTokenClassification.from_pretrained(model_name) ner = pipeline("ner", model=model, tokenizer=tokenizer, aggregation_strategy="simple") text = "Shahla Khuduyeva və Pasha Sığorta şirkəti haqqında məlumat." entities = ner(text) for e in entities: print(f"{e['entity_group']:15} {e['word']:25} ({e['score']:.2f})") ``` **Output:** ``` PERSON Shahla Khuduyeva (0.97) ORGANISATION Pasha Sığorta (0.95) ``` ## Model Details | Property | Value | |----------|-------| | **Base Model** | `xlm-roberta-large` (355M parameters) | | **Task** | Named Entity Recognition (NER) | | **Language** | Azerbaijani (`az`) | | **Dataset** | [LocalDoc/azerbaijani-ner-dataset](https://huggingface.co/datasets/LocalDoc/azerbaijani-ner-dataset) | | **License** | Apache 2.0 | ## Supported Entity Types | Entity | Description | Example | |--------|-------------|---------| | PERSON | Person names | İlham Əliyev | | LOCATION | Geographic locations | Bakı, Azərbaycan | | ORGANISATION | Companies, institutions | SOCAR, Bakı Dövlət Universiteti | | DATE | Dates and periods | 2024-cü il, sentyabr | | TIME | Time expressions | səhər saat 9:00 | | MONEY | Monetary values | 150 manat | | PERCENTAGE | Percentage values | 18% | | FACILITY | Buildings, landmarks | Heydər Əliyev Mərkəzi | | PRODUCT | Products and items | - | | EVENT | Events | - | | LAW | Legal documents | - | | ART | Artworks | - | ## Performance ### Best Checkpoint (Epoch 6) | Metric | Value | |--------|-------| | Precision | 0.7831 | | Recall | 0.7284 | | **F1** | **0.7548** | ### Training History | Epoch | Train Loss | Val Loss | Precision | Recall | F1 | |-------|-----------|----------|-----------|--------|-----| | 1 | 0.4075 | 0.2538 | 0.7689 | 0.7214 | 0.7444 | | 2 | 0.2556 | 0.2497 | 0.7835 | 0.7245 | 0.7528 | | 3 | 0.2144 | 0.2488 | 0.7509 | 0.7489 | 0.7499 | | 4 | 0.1934 | 0.2571 | 0.7686 | 0.7404 | 0.7542 | | 5 | 0.1698 | 0.2757 | 0.7458 | 0.7537 | 0.7497 | | 6 | 0.1526 | 0.2881 | **0.7831** | **0.7284** | **0.7548** | | 7 | 0.1443 | 0.3034 | 0.7585 | 0.7381 | 0.7481 | ### Entity-Level Metrics (Epoch 7) | Entity | Precision | Recall | F1 | Support | |--------|-----------|--------|----|---------| | ART | 0.41 | 0.19 | 0.26 | 1828 | | DATE | 0.53 | 0.49 | 0.51 | 834 | | EVENT | 0.67 | 0.51 | 0.58 | 63 | | FACILITY | 0.74 | 0.68 | 0.71 | 1134 | | LAW | 0.62 | 0.58 | 0.60 | 1066 | | LOCATION | 0.81 | 0.79 | 0.80 | 8795 | | MONEY | 0.59 | 0.56 | 0.58 | 555 | | ORGANISATION | 0.70 | 0.69 | 0.70 | 554 | | PERCENTAGE | 0.80 | 0.82 | 0.81 | 3502 | | PERSON | 0.90 | 0.82 | 0.86 | 7007 | | PRODUCT | 0.83 | 0.84 | 0.84 | 2624 | | TIME | 0.60 | 0.53 | 0.57 | 1584 | **Overall**: Micro Avg F1 = 0.75 | Weighted Avg F1 = 0.74 ## Training Configuration ```python TrainingArguments( learning_rate=2e-5, per_device_train_batch_size=128, per_device_eval_batch_size=128, num_train_epochs=12, weight_decay=0.005, fp16=True, metric_for_best_model="f1", load_best_model_at_end=True, ) ``` - **Optimizer**: AdamW - **Early stopping**: patience=5 on F1 - **Infrastructure**: Google Colab A100 GPU ## Usage ### Installation ```bash pip install transformers torch ``` ### Inference ```python from transformers import AutoTokenizer, AutoModelForTokenClassification, pipeline import torch model_name = "IsmatS/xlm_roberta_large_az_ner" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForTokenClassification.from_pretrained(model_name) device = 0 if torch.cuda.is_available() else -1 ner = pipeline("ner", model=model, tokenizer=tokenizer, aggregation_strategy="simple", device=device) # Single text text = "Bakı şəhərində Azərbaycan Respublikasının prezidenti İlham Əliyev." results = ner(text) for e in results: print(f"[{e['entity_group']}] {e['word']} (score: {e['score']:.3f})") ``` ### Batch Inference ```python texts = [ "Bakı şəhərində İlham Əliyev çıxış etdi.", "SOCAR şirkəti 2024-cü ildə rekord gəlir əldə etdi.", "Heydər Əliyev Beynəlxalq Hava Limanı yeni terminalı açıldı.", ] results = ner(texts) for text, entities in zip(texts, results): print(f"\nText: {text}") for e in entities: print(f" [{e['entity_group']}] {e['word']}") ``` ## Dataset Trained on [LocalDoc/azerbaijani-ner-dataset](https://huggingface.co/datasets/LocalDoc/azerbaijani-ner-dataset) with 25 entity categories annotated in IOB2 format. ```python from datasets import load_dataset dataset = load_dataset("LocalDoc/azerbaijani-ner-dataset") ``` ## Model Comparison | Model | F1 | Parameters | |-------|-----|-----------| | [mBERT Azerbaijani NER](https://huggingface.co/IsmatS/mbert-az-ner) | 0.677 | 180M | | [XLM-RoBERTa Base Azerbaijani NER](https://huggingface.co/IsmatS/xlm-roberta-az-ner) | 0.752 | 125M | | **XLM-RoBERTa Large Azerbaijani NER** (this model) | **0.755** | **355M** | | [Azeri-Turkish BERT NER](https://huggingface.co/IsmatS/azeri-turkish-bert-ner) | 0.736 | 110M | ## Files ``` xlm_roberta_large_az_ner/ ├── README.md # This file ├── config.json # Model configuration ├── model-001.safetensors # Model weights ├── sentencepiece.bpe.model # SentencePiece tokenizer ├── special_tokens_map.json # Special token mappings ├── tokenizer.json # Tokenizer vocabulary ├── tokenizer_config.json # Tokenizer configuration ├── xlm_roberta_large.ipynb # Training notebook └── xlm_roberta_large.py # Training script ``` ## Citation ```bibtex @model{samadov2024xlm_large_az_ner, author = {Ismat Samadov}, title = {XLM-RoBERTa Large Azerbaijani NER}, year = {2024}, publisher = {Hugging Face}, url = {https://huggingface.co/IsmatS/xlm_roberta_large_az_ner} } ``` ## License Apache 2.0 — see [LICENSE](LICENSE) for details.