Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper
•
1908.10084
•
Published
•
12
This is a Cross Encoder model finetuned from aubmindlab/bert-base-arabertv02 using the sentence-transformers library. It computes scores for pairs of texts, which can be used for text reranking and semantic search.
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import CrossEncoder
# Download from the 🤗 Hub
model = CrossEncoder("yoriis/ce-tydi")
# Get scores for pairs of texts
pairs = [
['ونزل في المنافقين الذين تخلفوا لو كان ما دعوتهم إليه عرضا متاعا من الدنيا قريبا سهل المأخذ وسفرا قاصدا وسطا لاتبعوك طلبا للغنيمة ولكن بعدت عليهم الشقة المسافة فتخلفوا وسيحلفون بالله إذا رجعتم إليهم لو استطعنا الخروج لخرجنا معكم يهلكون أنفسهم بالحلف الكاذب والله يعلم إنهم لكاذبون في قولهم ذلك', 'وما كنت ترجو أن يلقىٰ إليك الكتاب إلا رحمة من ربك ۖ فلا تكونن ظهيرا للكافرين'],
['اليوم تجزى كل نفس بما كسبت لا ظلم اليوم إن الله سريع الحساب يحاسب جميع الخلق في قدر نصف نهار من أيام الدنيا لحديث بذلك', 'لا يؤمنون به حتىٰ يروا العذاب الأليم'],
['ومن يهد الله فما له من مضل أليس الله بعزيز غالب على أمره ذي انتقام من أعدائه بلى', 'ومن يهد الله فما له من مضل ۗ أليس الله بعزيز ذي انتقام'],
['ذلك يقدر قبله الأمر مبتدأ ومن يعظم شعائر الله فإنها أي فإن تعظيمها وهي البدن التي تهدى للحرم بأن تستحسن وتستمن من تقوى القلوب منهم وسميت شعائر لإشعارها بما تعرف به أنها هدي طعن حديد بسنامها', 'ذٰلك ومن يعظم شعائر الله فإنها من تقوى القلوب'],
['أي الجزاء وهو يوم القيامة وخص بالذكر لأنه لا ملك ظاهرا فيه لأحد إلا الله تعالى بدليل لمن الملك اليوم لله ومن قرأ مالك فمعناه الأمر كله في يوم القيامة أو هو موصوف بذلك دائما كغافر الذنب فصح وقوعه صفة لمعرفة', 'فأوحينا إليه أن اصنع الفلك بأعيننا ووحينا فإذا جاء أمرنا وفار التنور ۙ فاسلك فيها من كل زوجين اثنين وأهلك إلا من سبق عليه القول منهم ۖ ولا تخاطبني في الذين ظلموا ۖ إنهم مغرقون'],
]
scores = model.predict(pairs)
print(scores.shape)
# (5,)
# Or rank different texts based on similarity to a single text
ranks = model.rank(
'ونزل في المنافقين الذين تخلفوا لو كان ما دعوتهم إليه عرضا متاعا من الدنيا قريبا سهل المأخذ وسفرا قاصدا وسطا لاتبعوك طلبا للغنيمة ولكن بعدت عليهم الشقة المسافة فتخلفوا وسيحلفون بالله إذا رجعتم إليهم لو استطعنا الخروج لخرجنا معكم يهلكون أنفسهم بالحلف الكاذب والله يعلم إنهم لكاذبون في قولهم ذلك',
[
'وما كنت ترجو أن يلقىٰ إليك الكتاب إلا رحمة من ربك ۖ فلا تكونن ظهيرا للكافرين',
'لا يؤمنون به حتىٰ يروا العذاب الأليم',
'ومن يهد الله فما له من مضل ۗ أليس الله بعزيز ذي انتقام',
'ذٰلك ومن يعظم شعائر الله فإنها من تقوى القلوب',
'فأوحينا إليه أن اصنع الفلك بأعيننا ووحينا فإذا جاء أمرنا وفار التنور ۙ فاسلك فيها من كل زوجين اثنين وأهلك إلا من سبق عليه القول منهم ۖ ولا تخاطبني في الذين ظلموا ۖ إنهم مغرقون',
]
)
# [{'corpus_id': ..., 'score': ...}, {'corpus_id': ..., 'score': ...}, ...]
evalCrossEncoderClassificationEvaluator| Metric | Value |
|---|---|
| accuracy | 0.9953 |
| accuracy_threshold | 0.9396 |
| f1 | 0.993 |
| f1_threshold | 0.9252 |
| precision | 0.9949 |
| recall | 0.9911 |
| average_precision | 0.9991 |
evalCrossEncoderClassificationEvaluator| Metric | Value |
|---|---|
| accuracy | 0.9995 |
| accuracy_threshold | 0.9958 |
| f1 | 0.9984 |
| f1_threshold | 0.9834 |
| precision | 0.9968 |
| recall | 1.0 |
| average_precision | 0.9952 |
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
ونزل في المنافقين الذين تخلفوا لو كان ما دعوتهم إليه عرضا متاعا من الدنيا قريبا سهل المأخذ وسفرا قاصدا وسطا لاتبعوك طلبا للغنيمة ولكن بعدت عليهم الشقة المسافة فتخلفوا وسيحلفون بالله إذا رجعتم إليهم لو استطعنا الخروج لخرجنا معكم يهلكون أنفسهم بالحلف الكاذب والله يعلم إنهم لكاذبون في قولهم ذلك |
وما كنت ترجو أن يلقىٰ إليك الكتاب إلا رحمة من ربك ۖ فلا تكونن ظهيرا للكافرين |
0.0 |
اليوم تجزى كل نفس بما كسبت لا ظلم اليوم إن الله سريع الحساب يحاسب جميع الخلق في قدر نصف نهار من أيام الدنيا لحديث بذلك |
لا يؤمنون به حتىٰ يروا العذاب الأليم |
0.0 |
ومن يهد الله فما له من مضل أليس الله بعزيز غالب على أمره ذي انتقام من أعدائه بلى |
ومن يهد الله فما له من مضل ۗ أليس الله بعزيز ذي انتقام |
1.0 |
BinaryCrossEntropyLoss with these parameters:{
"activation_fn": "torch.nn.modules.linear.Identity",
"pos_weight": null
}
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16num_train_epochs: 4fp16: Trueoverwrite_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: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1num_train_epochs: 4max_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: Falsehub_revision: Nonegradient_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: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | eval_average_precision |
|---|---|---|---|
| 0.1884 | 500 | 0.3474 | 0.9981 |
| 0.3768 | 1000 | 0.1324 | 0.9988 |
| 0.5652 | 1500 | 0.0712 | 0.9984 |
| 0.7536 | 2000 | 0.058 | 0.9981 |
| 0.9420 | 2500 | 0.0466 | 0.9989 |
| 1.0 | 2654 | - | 0.9988 |
| 1.1304 | 3000 | 0.0426 | 0.9989 |
| 1.3188 | 3500 | 0.0357 | 0.9989 |
| 1.5072 | 4000 | 0.0362 | 0.9988 |
| 1.6956 | 4500 | 0.0314 | 0.9992 |
| 1.8839 | 5000 | 0.0273 | 0.9990 |
| 2.0 | 5308 | - | 0.9991 |
| 2.0723 | 5500 | 0.0302 | 0.9991 |
| 2.2607 | 6000 | 0.0265 | 0.9990 |
| 2.4491 | 6500 | 0.0262 | 0.9991 |
| 2.6375 | 7000 | 0.0249 | 0.9991 |
| 2.8259 | 7500 | 0.0284 | 0.9991 |
| 3.0 | 7962 | - | 0.9991 |
| 3.0143 | 8000 | 0.0252 | 0.9991 |
| 3.2027 | 8500 | 0.023 | 0.9991 |
| 3.3911 | 9000 | 0.022 | 0.9991 |
| 3.5795 | 9500 | 0.0244 | 0.9991 |
| 3.7679 | 10000 | 0.0219 | 0.9991 |
| 3.9563 | 10500 | 0.021 | 0.9991 |
| 4.0 | 10616 | - | 0.9991 |
| 0.2375 | 500 | 0.1926 | 0.9992 |
| 0.4751 | 1000 | 0.0086 | 0.9992 |
| 0.7126 | 1500 | 0.0048 | 0.9979 |
| 0.9501 | 2000 | 0.0042 | 0.9985 |
| 1.0 | 2105 | - | 0.9964 |
| 1.1876 | 2500 | 0.0039 | 0.9969 |
| 1.4252 | 3000 | 0.0034 | 0.9976 |
| 1.6627 | 3500 | 0.0038 | 0.9966 |
| 1.9002 | 4000 | 0.0035 | 0.9987 |
| 2.0 | 4210 | - | 0.9960 |
| 2.1378 | 4500 | 0.0028 | 0.9965 |
| 2.3753 | 5000 | 0.0029 | 0.9970 |
| 2.6128 | 5500 | 0.0025 | 0.9964 |
| 2.8504 | 6000 | 0.003 | 0.9967 |
| 3.0 | 6315 | - | 0.9951 |
| 3.0879 | 6500 | 0.0008 | 0.9952 |
| 3.3254 | 7000 | 0.0032 | 0.9972 |
| 3.5629 | 7500 | 0.0008 | 0.9949 |
| 3.8005 | 8000 | 0.0008 | 0.9952 |
| 4.0 | 8420 | - | 0.9952 |
@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",
}
Base model
aubmindlab/bert-base-arabertv02