algerian-law-marbert

A MARBERTv2 encoder domain-adapted on Algerian family-law text (Darja + MSA + Facebook legal Q&A), producing 768-dimensional embeddings for Algerian legal information retrieval.

Fine-tuned from UBC-NLP/MARBERTv2 with CachedMultipleNegativesRankingLoss on 1,000 (question → article) triplet pairs sourced from real Algerian Facebook legal-advice groups, aligned to the Algerian Family Code (Law No. 84-11). Queries are written in Darja (Algerian dialect) and Arabizi; documents are law articles in Modern Standard Arabic. This model is the shared backbone for the two-stage legal retrieval system:

Architecture MARBERTv2 (BERT-base, 768 dim, 12 layers)
Task Semantic similarity / dense retrieval
Languages Darja · Arabizi · MSA · Code-switched
Domain Algerian family law (Droit de la famille algérien)
Training data 1,000 triplets from Facebook legal-advice groups
Best eval metric cosine_accuracy = 0.741 (TripletEvaluator, 112-sample eval set)
License Apache 2.0

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: UBC-NLP/MARBERTv2
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 768 dimensions
  • Similarity Function: Cosine Similarity
  • Supported Modality: Text

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'BertModel'})
  (1): Pooling({'embedding_dimension': 768, 'pooling_mode': 'mean', 'include_prompt': True})
)

Usage

Direct Usage (Sentence Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load this model and run inference.

from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("sentence_transformers_model_id")
# Run inference
sentences = [
    'عندي اب تاعي ما عايش معانا ما يصرف عليها هرب وخلانا ويجي مشهر لشهر يسبنا ويسب الام تاعي ويروح مرضها رجعها تشرب دوا وتروح لطبيب تع اعصاب ومحبش يطلقها يقلها نخليها هكاك معلقة تتعذبي وزيد دورو ميمدهولناش انا وختي نقراو انا نخدم نصرف على روحي وختي وماما يصرف غليهم خويا مسكيت صغير عليا عمرو 20 سنة غير يبريكولي ولي يجيبها يحطهالنا حبيت نطلقها باش تتهنا منوا باسكو كرهلنا حياتنا هكا ميزيد يجي لينا ما يزيد يسبنا انا عندي سوتنونس عاذ لعام كرهلي حياتي مخااني نقرى ما هناني يضلي يعيطلي ويسب فيا ويرخس فيا نديرو روجوتي يزيد يعيطلي بنوامر وحدوخرين اعطوني حل كيفاه نرفد عليه طلاق لضرر',
    'المادة 53',
    'المادة 54',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.2787, 0.1867],
#         [0.2787, 1.0000, 0.4629],
#         [0.1867, 0.4629, 1.0000]])

Evaluation

Metrics

Triplet

Metric Value
cosine_accuracy 0.7411

Training Details

Training Dataset

Unnamed Dataset

  • Size: 1,000 training samples
  • Columns: anchor, positive, and negative
  • Approximate statistics based on the first 1000 samples:
    anchor positive negative
    type string string string
    details
    • min: 9 tokens
    • mean: 57.4 tokens
    • max: 512 tokens
    • min: 4 tokens
    • mean: 4.81 tokens
    • max: 8 tokens
    • min: 4 tokens
    • mean: 4.0 tokens
    • max: 5 tokens
  • Samples:
    anchor positive negative
    سلام عليكم حبا ندير باش يزيدوني في بدل الاجار كفاش ندير انا 600 مراهش تكفي لاكراء ولكراء راه غالي المادة 79 المادة 80
    سؤالي لأهل الاختصاص فقط...عندي عامين طلاق وطليقي لحد الآن ماعطانيش التعويض نتاع الطلاق وحق العدة....كيفاش نطالب بيهم...أعطوني جواب قانوني من فضلكم؟؟؟؟ المادة 61 المادة 79
    عند زواج الأم هل القاضي يستدعي الاطفال لتخييرهم عند من يريدون البقاء عند امهم او ابيهم بإعتبار سن التميز 12 سنة وهل التنازل عن الحضانة للجدة ام الأم أثناء زواج الأم يمنع الأب من اخذ الحضانة المادة 79 المادة 80
  • Loss: CachedMultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "mini_batch_size": 32,
        "gather_across_devices": false,
        "directions": [
            "query_to_doc"
        ],
        "partition_mode": "joint",
        "hardness_mode": null,
        "hardness_strength": 0.0
    }
    

Evaluation Dataset

Unnamed Dataset

  • Size: 112 evaluation samples
  • Columns: anchor, positive, and negative
  • Approximate statistics based on the first 112 samples:
    anchor positive negative
    type string string string
    details
    • min: 13 tokens
    • mean: 67.54 tokens
    • max: 418 tokens
    • min: 4 tokens
    • mean: 4.9 tokens
    • max: 8 tokens
    • min: 4 tokens
    • mean: 4.01 tokens
    • max: 5 tokens
  • Samples:
    anchor positive negative
    سلام في طلاق تعسفي نقدر نقلو منطلقش لازم تديرلي داري وحدي نقدر نحكلو على مشاكل و بلي مش نحوس نتطلق المادة 49 المادة 52
    سلام وعليكم خاوتي بغيتكم ترشدوني نا قدمت طلب رجوع لبيت الزوجية للزوج وهو مبغاش رفع عليا زود خطرات قضية طلاق وميحضرش الجلسات ونا رحت شكيت بيه بشكوى الاهمال العائلي 10 ماي جلسة لاولى واليوم بلغني بلي رفع قضية طلاق جديده وضرك نقدر نشارعو بلاشي مندير محامي ونجيب حقي المادة 48 المادة 55
    فهموني فطلاق بالنشوز من فضلكم واسكو لمرا تسقط عليها الحضانة في هاذ لحالة ولا لا المادة 67 المادة 66
  • Loss: CachedMultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "mini_batch_size": 32,
        "gather_across_devices": false,
        "directions": [
            "query_to_doc"
        ],
        "partition_mode": "joint",
        "hardness_mode": null,
        "hardness_strength": 0.0
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • per_device_train_batch_size: 16
  • per_device_eval_batch_size: 16
  • learning_rate: 2e-05
  • num_train_epochs: 15
  • warmup_steps: 0.1
  • fp16: True

All Hyperparameters

Click to expand
  • do_predict: False
  • prediction_loss_only: True
  • per_device_train_batch_size: 16
  • per_device_eval_batch_size: 16
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 15
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: None
  • warmup_ratio: None
  • warmup_steps: 0.1
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • enable_jit_checkpoint: False
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • use_cpu: False
  • seed: 42
  • data_seed: None
  • bf16: False
  • fp16: True
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: -1
  • ddp_backend: None
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • group_by_length: False
  • length_column_name: length
  • project: huggingface
  • trackio_space_id: trackio
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: None
  • hub_always_push: False
  • hub_revision: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • auto_find_batch_size: False
  • full_determinism: False
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_num_input_tokens_seen: no
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • use_liger_kernel: False
  • liger_kernel_config: None
  • eval_use_gather_object: False
  • average_tokens_across_devices: True
  • use_cache: False
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Framework Versions

  • Python: 3.12.13
  • Sentence Transformers: 5.4.1
  • Transformers: 5.0.0
  • PyTorch: 2.10.0+cu128
  • Accelerate: 1.13.0
  • Datasets: 4.0.0
  • Tokenizers: 0.22.2

Citation

BibTeX

Sentence Transformers

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}

CachedMultipleNegativesRankingLoss

@misc{gao2021scaling,
    title={Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup},
    author={Luyu Gao and Yunyi Zhang and Jiawei Han and Jamie Callan},
    year={2021},
    eprint={2101.06983},
    archivePrefix={arXiv},
    primaryClass={cs.LG}
}
Downloads last month
51
Safetensors
Model size
0.2B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for 81melody/algerian-law-marbert

Finetuned
(35)
this model
Finetunes
1 model

Papers for 81melody/algerian-law-marbert

Evaluation results