Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use akhooli/sbert_nli_test with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("akhooli/sbert_nli_test")
sentences = [
"ما هو متوسط مزايا الضمان الاجتماعي",
"الغرض الرئيسي من الدورة الشهرية هو تحضير الجسد الأنثوي للتكاثر أو الحمل. خلال هذا الوقت ، يتم تخصيب بويضة جديدة. إذا لم تكن المرأة حاملاً ، فسوف يسفك الرحم.",
"ما هو معدل الاستحقاق الشهري للعامل المتقاعد؟ متوسط استحقاق تقاعد الضمان الاجتماعي الشهري لشهر يناير 2016 هو 1،341 دولارًا. المبلغ يتغير شهريا. عندما تكون جاهزًا للتقدم بطلب للحصول على مزايا التقاعد ، استخدم تطبيق التقاعد عبر الإنترنت ، وهو الطريقة الأسرع والأسهل والأكثر ملاءمة للتقدم. معلومات اكثر. حقائق أساسية عن الضمان الاجتماعي.",
"لإعطائك فكرة عما قد تتلقاه ، لعام 2015 ، يبلغ متوسط مبلغ مخصصات SSDI 1165 دولارًا أمريكيًا في الشهر ، ولكن يمكنك الحصول على ما يصل إلى 2663 دولارًا أمريكيًا ، إذا كنت مهتمًا بكيفية حساب الضمان الاجتماعي لـ AIME و PIA ، فإليك الطريقة . كم ستعتمد إعانة إعاقة الضمان الاجتماعي على أرباحك المغطاة - الأجور التي دفعت عليها ضرائب الضمان الاجتماعي - قبل أن تصبح معاقًا."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from aubmindlab/bert-base-arabertv02. It maps sentences & paragraphs to a 768-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: BertModel
(1): Pooling({'word_embedding_dimension': 768, '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})
)
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 = [
'هل توجد مخازن في الجهاز الهضمي',
'1 إطلاق الماء والأحماض والإنزيمات والمخازن بواسطة الجهاز الهضمي والأعضاء الملحقة في تجويف الجهاز الهضمي. 2 الامتصاص. 3 حركة الجزيئات العضوية الصغيرة ، والإلكتروليتات ، والفيتامينات ، والمياه عبر ظهارة الجهاز الهضمي وإلى الدم والجهاز الليمفاوي والجهاز الهضمي (وتسمى أيضًا القناة الهضمية أو الجهاز الهضمي). 1 الجهاز الهضمي عبارة عن أنبوب مستمر يمتد من الفم إلى فتحة الشرج. 2 ويشمل الأعضاء التالية: 3 فم. 4 بلعوم. 5 مريء. 6 بطن. 7 ـ الأمعاء الدقيقة. 8 الأمعاء الغليظة.',
'بي دي إف. نص. أصلي. الإنسان كائن معقد لأن الإنسان يتكون من تريليونات من الخلايا والكثير من الأجهزة والأعضاء ، ومن بعض الأجهزة الرئيسية أجهزة الدورة الدموية والجهاز الهيكلي والجهاز الهضمي والجهاز العصبي والجهاز التنفسي. نص. أصلي. الإنسان كائن حي معقد لأن الإنسان يتكون من تريليونات من الخلايا والكثير من الأجهزة والأعضاء ، ومن بعض الأجهزة الرئيسية أجهزة الدورة الدموية والجهاز الهيكلي والجهاز الهضمي والجهاز العصبي والجهاز التنفسي.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
ar-nli-devTripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 0.738 |
| dot_accuracy | 0.295 |
| manhattan_accuracy | 0.763 |
| euclidean_accuracy | 0.708 |
| max_accuracy | 0.763 |
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16learning_rate: 2e-05num_train_epochs: 1warmup_ratio: 0.1fp16: Truebatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 1max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_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: Falsehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseeval_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: Nonedispatch_batches: Nonesplit_batches: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseeval_use_gather_object: Falsebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | ar-nli-dev_max_accuracy |
|---|---|---|---|
| 0 | 0 | - | 0.763 |
| 0.0640 | 100 | 1.2212 | - |
| 0.1280 | 200 | 0.4768 | - |
| 0.1919 | 300 | 0.4315 | - |
| 0.2559 | 400 | 0.3696 | - |
| 0.3199 | 500 | 0.3762 | - |
| 0.3839 | 600 | 0.327 | - |
| 0.4479 | 700 | 0.3332 | - |
| 0.5118 | 800 | 0.3227 | - |
| 0.5758 | 900 | 0.3311 | - |
| 0.6398 | 1000 | 0.2997 | - |
| 0.7038 | 1100 | 0.2991 | - |
| 0.7678 | 1200 | 0.2823 | - |
| 0.8317 | 1300 | 0.2663 | - |
| 0.8957 | 1400 | 0.2776 | - |
| 0.9597 | 1500 | 0.2651 | - |
@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
aubmindlab/bert-base-arabertv02