Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper
•
1908.10084
•
Published
•
9
This is a Cross Encoder model finetuned from NAMAA-Space/GATE-Reranker-V1 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/GTE-quqa-haqa")
# Get scores for pairs of texts
pairs = [
['هل ترك الصلاة تهاونا وكسلا كبيرة من الكبائر، ومن العلماء من قال بكفره، هل هذا الحكم له توجيهه من السنة النبوية؟', 'حديث طَارِقِ بْنِ شِهَابٍ رضي الله عنه، عَنِ النَّبِيِّ ﷺ قَالَ: «الجُمُعَةُ حَقٌّ وَاجِبٌ عَلَى كُلِّ مُسْلِمٍ فِي جَمَاعَةٍ إِلَّا أَرْبَعَةً: عَبْدٌ مَمْلُوكٌ، أَوِ امْرَأَةٌ، أَوْ صَبِيٌّ، أَوْ مَرِيضٌ». رواه أبو داود (1067)، وصححه الألباني في إرواء الغليل (592)، والوادعي في الصحيح المسند (517) .'],
['من هو النبي الذي كان يعمل نجارا ؟', 'عن أبي بن كعب رضي الله عنه قال: «إن رسول الله ﷺ كان يوتر فيقنت قبل الركوع». أخرجه ابن ماجه.'],
['ما سبب كراهية الصلاة على السجّاد المزخرف؟', 'ابن عباس رضي الله عنه عن النبي ﷺ أنه قال: (من سمع النداء فلم يأته، فلا صلاة له إلا من عذر). أخرجه ابن ماجه'],
['من هو الصحابي الذي قال فيه النبي ﷺ: «من خير ذي يمن وعلى وجهه مسحة ملك» ؟', 'حديث جَرِير بْن عَبْدِ الله البَجَلِيَّ رضي الله عنه، مَا رَآنِي رَسُولُ الله ﷺ قَطُّ إِلَّا تَبَسَّمَ فِي وَجْهِي قَالَ: وَقَالَ رَسُولُ الله ﷺ: «يَطْلُعُ عَلَيْكُمْ مِنْ هَذَا البَابِ رَجُلٌ مِنْ خَيْرِ ذِي يُمْنٍ، عَلَى وَجْهِهِ مِسْحَةُ مَلَكٍ، فَطَلَعَ جَرِيرُ بْنُ عَبْدِ الله». وهو في مسند الإمام أحمد (19179)، وهو في الصحيحة (3193)، وفي الصحيح المسند (262).'],
['ما فضل صلاة الليل؟', 'عَنْ أَبِي هُرَيْرَةَ رضي الله عنه، أَنَّ رَسُولَ الله ﷺ قَالَ: «لَيْسَ الشَّدِيدُ بِالصُّرَعَةِ إِنَّمَا الشَّدِيدُ الَّذِي يَمْلِكُ نَفْسَهُ عِنْدَ الغَضَبِ». رواه البخاري (6114)، ومسلم (2609).'],
]
scores = model.predict(pairs)
print(scores.shape)
# (5,)
# Or rank different texts based on similarity to a single text
ranks = model.rank(
'هل ترك الصلاة تهاونا وكسلا كبيرة من الكبائر، ومن العلماء من قال بكفره، هل هذا الحكم له توجيهه من السنة النبوية؟',
[
'حديث طَارِقِ بْنِ شِهَابٍ رضي الله عنه، عَنِ النَّبِيِّ ﷺ قَالَ: «الجُمُعَةُ حَقٌّ وَاجِبٌ عَلَى كُلِّ مُسْلِمٍ فِي جَمَاعَةٍ إِلَّا أَرْبَعَةً: عَبْدٌ مَمْلُوكٌ، أَوِ امْرَأَةٌ، أَوْ صَبِيٌّ، أَوْ مَرِيضٌ». رواه أبو داود (1067)، وصححه الألباني في إرواء الغليل (592)، والوادعي في الصحيح المسند (517) .',
'عن أبي بن كعب رضي الله عنه قال: «إن رسول الله ﷺ كان يوتر فيقنت قبل الركوع». أخرجه ابن ماجه.',
'ابن عباس رضي الله عنه عن النبي ﷺ أنه قال: (من سمع النداء فلم يأته، فلا صلاة له إلا من عذر). أخرجه ابن ماجه',
'حديث جَرِير بْن عَبْدِ الله البَجَلِيَّ رضي الله عنه، مَا رَآنِي رَسُولُ الله ﷺ قَطُّ إِلَّا تَبَسَّمَ فِي وَجْهِي قَالَ: وَقَالَ رَسُولُ الله ﷺ: «يَطْلُعُ عَلَيْكُمْ مِنْ هَذَا البَابِ رَجُلٌ مِنْ خَيْرِ ذِي يُمْنٍ، عَلَى وَجْهِهِ مِسْحَةُ مَلَكٍ، فَطَلَعَ جَرِيرُ بْنُ عَبْدِ الله». وهو في مسند الإمام أحمد (19179)، وهو في الصحيحة (3193)، وفي الصحيح المسند (262).',
'عَنْ أَبِي هُرَيْرَةَ رضي الله عنه، أَنَّ رَسُولَ الله ﷺ قَالَ: «لَيْسَ الشَّدِيدُ بِالصُّرَعَةِ إِنَّمَا الشَّدِيدُ الَّذِي يَمْلِكُ نَفْسَهُ عِنْدَ الغَضَبِ». رواه البخاري (6114)، ومسلم (2609).',
]
)
# [{'corpus_id': ..., 'score': ...}, {'corpus_id': ..., 'score': ...}, ...]
evalCrossEncoderClassificationEvaluator| Metric | Value |
|---|---|
| accuracy | 0.9347 |
| accuracy_threshold | 0.5419 |
| f1 | 0.8599 |
| f1_threshold | 0.5419 |
| precision | 0.9278 |
| recall | 0.8012 |
| average_precision | 0.9188 |
evalCrossEncoderClassificationEvaluator| Metric | Value |
|---|---|
| accuracy | 0.8665 |
| accuracy_threshold | 0.602 |
| f1 | 0.4424 |
| f1_threshold | 0.113 |
| precision | 0.4294 |
| recall | 0.4562 |
| average_precision | 0.4908 |
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
هل ترك الصلاة تهاونا وكسلا كبيرة من الكبائر، ومن العلماء من قال بكفره، هل هذا الحكم له توجيهه من السنة النبوية؟ |
حديث طَارِقِ بْنِ شِهَابٍ رضي الله عنه، عَنِ النَّبِيِّ ﷺ قَالَ: «الجُمُعَةُ حَقٌّ وَاجِبٌ عَلَى كُلِّ مُسْلِمٍ فِي جَمَاعَةٍ إِلَّا أَرْبَعَةً: عَبْدٌ مَمْلُوكٌ، أَوِ امْرَأَةٌ، أَوْ صَبِيٌّ، أَوْ مَرِيضٌ». رواه أبو داود (1067)، وصححه الألباني في إرواء الغليل (592)، والوادعي في الصحيح المسند (517) . |
0.0 |
من هو النبي الذي كان يعمل نجارا ؟ |
عن أبي بن كعب رضي الله عنه قال: «إن رسول الله ﷺ كان يوتر فيقنت قبل الركوع». أخرجه ابن ماجه. |
0.0 |
ما سبب كراهية الصلاة على السجّاد المزخرف؟ |
ابن عباس رضي الله عنه عن النبي ﷺ أنه قال: (من سمع النداء فلم يأته، فلا صلاة له إلا من عذر). أخرجه ابن ماجه |
0.0 |
BinaryCrossEntropyLoss with these parameters:{
"activation_fn": "torch.nn.modules.linear.Identity",
"pos_weight": null
}
eval_strategy: stepsnum_train_epochs: 4fp16: Trueoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 8per_device_eval_batch_size: 8per_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: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | eval_average_precision |
|---|---|---|---|
| 0.3298 | 500 | 0.4083 | 0.8871 |
| 0.6596 | 1000 | 0.2958 | 0.9043 |
| 0.9894 | 1500 | 0.2839 | 0.9092 |
| 1.0 | 1516 | - | 0.9091 |
| 1.3193 | 2000 | 0.2698 | 0.9129 |
| 1.6491 | 2500 | 0.2617 | 0.9152 |
| 1.9789 | 3000 | 0.2791 | 0.9163 |
| 2.0 | 3032 | - | 0.9160 |
| 2.3087 | 3500 | 0.2651 | 0.9159 |
| 2.6385 | 4000 | 0.2475 | 0.9172 |
| 2.9683 | 4500 | 0.264 | 0.9186 |
| 3.0 | 4548 | - | 0.9187 |
| 3.2982 | 5000 | 0.225 | 0.9180 |
| 3.6280 | 5500 | 0.2706 | 0.9186 |
| 3.9578 | 6000 | 0.2242 | 0.9188 |
| 4.0 | 6064 | - | 0.9188 |
| 0.4638 | 500 | 0.5074 | 0.4693 |
| 0.9276 | 1000 | 0.3909 | 0.4817 |
| 1.0 | 1078 | - | 0.4858 |
| 1.3915 | 1500 | 0.3806 | 0.4802 |
| 1.8553 | 2000 | 0.3638 | 0.4828 |
| 2.0 | 2156 | - | 0.4843 |
| 2.3191 | 2500 | 0.395 | 0.4828 |
| 2.7829 | 3000 | 0.347 | 0.4840 |
| 3.0 | 3234 | - | 0.4850 |
| 3.2468 | 3500 | 0.3614 | 0.4866 |
| 3.7106 | 4000 | 0.3483 | 0.4906 |
| 4.0 | 4312 | - | 0.4908 |
@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