Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 16
How to use TheMohanad1/Fine-Tuned-E5 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("TheMohanad1/Fine-Tuned-E5")
sentences = [
"ماذا تقول المادة الخامسة عشرة من الباب الثالث لنظام القضاء؟",
"نظام القضاء\nالباب الثالث المحاكم وولايتها\nالفصل الثالث محاكم الإستئناف\nالمادة الخامسة عشرة\n\n١- يكون في كل منطقة محكمة استئناف أو أكثر، وتباشر أعمالها من خلال دوائر متخصصة، تؤلف كل دائرة منها من ثلاثة قضاة، باستثناء الدائرة الجزائية التي تنظر في قضايا القتل والقطع والرجم والقصاص في النفس أو فيما دونها فتؤلف من خمسة قضاة، ولا تقل درجة القاضي في محكمة الاستئناف عن درجة قاضي استئناف، ويكون لكل دائرة رئيس.٢- يجوز إنشاء دائرة استئناف متخصصة أو أكثر في المحافظات التابعة للمنطقة التي فيها محكمة استئناف .٣- يسمى رئيس كل دائرة وأعضاؤها بقرار من رئيس محكمة الاستئناف ، ويتولى رئيس المحكمة - أو من ينيبه من أعضاء المحكمة - رئاسة الدائرة عند غياب رئيسها.",
"القواعد الخاصة بتنظيم شؤون الخبرة أمام المحاكم\nالترخيص للخبراء\n\nالمادة الحادية عشرة\n\nتعد الوحدة الاختبار الخاص بالترخيص.",
"نظام التنفيذ\nالباب الأول:\nالفصل الأول: اختصاصات قاضي التنفيذ\nالمادة الخامسة\n\nإذا تعددت الدوائر المختصة بالتنفيذ؛ فيكون لقاضي التنفيذ - الذي قام بأول إجراء تنفيذي - الإشراف على التنفيذ وتوزيع حصيلته، وله أن ينيب قاضي تنفيذ في دائرة أخرى للتنفيذ على مال المدين، وتحدد اللائحة الأحكام اللازمة لذلك."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from intfloat/multilingual-e5-large. It maps sentences & paragraphs to a 1024-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: XLMRobertaModel
(1): Pooling({'word_embedding_dimension': 1024, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
(2): Normalize()
)
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 = [
'وش تنص عليه المادة 546 من الباب 4 نظام المعاملات المدنية',
'نظام المعاملات المدنية\nالباب الرابع عقود المشاركة\nالفصل الأول عقد الشركة\nالمادة السادسة والأربعون بعد الخمسمائة\n\n١- للشركاء الاتفاق في عقد الشركة على كيفية إخراج أي من الشركاء منها وإجراءات ذلك.\n٢- لأيٍّ من الشركاء أن يطلب من المحكمة إخراج شريك أو أكثر من الشركة إذا كانت هناك أسباب مقبولة تدعو إلى ذلك.',
'الأدلة الإجرائية لنظام الإثبات\nأحكام عامة\n\nالمادة الرابعة والعشرون\n\nيتعين على المحكمة إثبات تعذر اتخاذ الإجراء إلكترونياً في المحضر قبل الانتقال أو الاستخلاف، وفق أحكام المادة (الحادية عشرة) من النظام.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
يعني لو موظف حكومي عطل تنفيذ حكم، ممكن يدخل السجن؟ |
نظام التنفيذ |
فلوس التكاليف القضائية اللي يدفعونها الناس وين تروح بالضبط؟ |
نظام التكاليف القضائية |
وش تقول المادة خمسة وثلاثين من نظام مكافحة جرائم الإرهاب وتمويله؟ |
نظام مكافحة جرائم الإرهاب وتمويله |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
per_device_train_batch_size: 64per_device_eval_batch_size: 64num_train_epochs: 5fp16: Truemulti_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_loss_only: Trueper_device_train_batch_size: 64per_device_eval_batch_size: 64per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1num_train_epochs: 5max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.0warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Falsefp16: Truefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torchoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseinclude_for_metrics: []eval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters: auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robin@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",
}
@misc{henderson2017efficient,
title={Efficient Natural Language Response Suggestion for Smart Reply},
author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
year={2017},
eprint={1705.00652},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
Base model
intfloat/multilingual-e5-large