Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use yoriis/ce-final with sentence-transformers:
from sentence_transformers import CrossEncoder
model = CrossEncoder("yoriis/ce-final")
query = "Which planet is known as the Red Planet?"
passages = [
"Venus is often called Earth's twin because of its similar size and proximity.",
"Mars, known for its reddish appearance, is often referred to as the Red Planet.",
"Jupiter, the largest planet in our solar system, has a prominent red spot.",
"Saturn, famous for its rings, is sometimes mistaken for the Red Planet."
]
scores = model.predict([(query, passage) for passage in passages])
print(scores)This is a Cross Encoder model trained 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-final")
# Get scores for pairs of texts
pairs = [
['ما الدعاء الوارد عند الدخول والخروج من المسجد؟', 'حديث عَنْ عُمَرَ بْنِ الخَطَّابِ رضي الله عنه، قَالَ: قَالَ رَسُولُ الله ﷺ: «مَا مِنْكُمْ مِنْ أَحَدٍ يَتَوَضَّأُ فَيُبْلِغُ - أَوْ فَيُسْبِغُ - الوَضُوءَ ثُمَّ يَقُولُ: أَشْهَدُ أَنْ لَا إِلَهَ إِلَّا الله وَأَنَّ مُحَمَّدًا عَبْدُ الله وَرَسُولُهُ إِلَّا فُتِحَتْ لَهُ أَبْوَابُ الجَنَّةِ الثَّمَانِيَةُ يَدْخُلُ مِنْ أَيِّهَا شَاءَ». رواه مسلم (234).'],
['ما حكم من لم يقرأ بفاتحة الكتاب ؟', 'حديث أبي أمامة رضي الله عنه قال: قال رسول الله ﷺ : (إن الله وملائكته يصلون على الصف الأول) قالوا: يا رسول الله وعلى الثاني؟ قال: (إن الله وملائكته يصلون على الصف الأول). قالوا: يا رسول الله وعلى الثاني؟ قال: (وعلى الثاني). أخرجه أحمد'],
['ما هي العلامة التي إذا ظهرت أغلق باب التوبة ؟', 'حديث ابْنِ عَبَّاسٍ رضي الله عنه قَالَ: «أُنْزِلَ عَلَى رَسُولِ الله ﷺ وَهُوَ ابْنُ أَرْبَعِينَ، فَمَكَثَ بِمَكَّةَ ثَلاَثَ عَشْرَةَ سَنَةً، ثُمَّ أُمِرَ بِالهِجْرَةِ فَهَاجَرَ إِلَى المَدِينَةِ، فَمَكَثَ بِهَا عَشْرَ سِنِينَ، ثُمَّ تُوُفِّيَ ﷺ ». رواه البخاري (3851)، ومسلم (2351).'],
['أين تصلى الفرائض ؟', 'حديث أَبِي هُرَيْرَةَ رضي الله عنه، أَنَّ النَّبِيَّ ﷺ قَالَ: «خَيْرُ يَوْمٍ طَلَعَتْ عَلَيْهِ الشَّمْسُ يَوْمُ الجُمُعَةِ، فِيهِ خُلِقَ آدَمُ، وَفِيهِ أُدْخِلَ الجَنَّةَ، وَفِيهِ أُخْرِجَ مِنْهَا». رواه مسلم (854).'],
['اذكر كيفية التيمم ؟', 'عن النبي ﷺ قال: (إن أول ما يحاسب عليه العبد يوم القيامة من عمله صلاته، فإن صلحت فقد أفلح ونجح، وإن فسدت فقد خاب وخسر، فإن انتقص من فريضته شيء قال الربّ عز وجل: انظروا هل لعبدي من تطوع فيكمل بها ما انتقص من الفريضة، ثم يكون سائر عمله على ذلك). سنن ابن ماجه والترمذي'],
]
scores = model.predict(pairs)
print(scores.shape)
# (5,)
# Or rank different texts based on similarity to a single text
ranks = model.rank(
'ما الدعاء الوارد عند الدخول والخروج من المسجد؟',
[
'حديث عَنْ عُمَرَ بْنِ الخَطَّابِ رضي الله عنه، قَالَ: قَالَ رَسُولُ الله ﷺ: «مَا مِنْكُمْ مِنْ أَحَدٍ يَتَوَضَّأُ فَيُبْلِغُ - أَوْ فَيُسْبِغُ - الوَضُوءَ ثُمَّ يَقُولُ: أَشْهَدُ أَنْ لَا إِلَهَ إِلَّا الله وَأَنَّ مُحَمَّدًا عَبْدُ الله وَرَسُولُهُ إِلَّا فُتِحَتْ لَهُ أَبْوَابُ الجَنَّةِ الثَّمَانِيَةُ يَدْخُلُ مِنْ أَيِّهَا شَاءَ». رواه مسلم (234).',
'حديث أبي أمامة رضي الله عنه قال: قال رسول الله ﷺ : (إن الله وملائكته يصلون على الصف الأول) قالوا: يا رسول الله وعلى الثاني؟ قال: (إن الله وملائكته يصلون على الصف الأول). قالوا: يا رسول الله وعلى الثاني؟ قال: (وعلى الثاني). أخرجه أحمد',
'حديث ابْنِ عَبَّاسٍ رضي الله عنه قَالَ: «أُنْزِلَ عَلَى رَسُولِ الله ﷺ وَهُوَ ابْنُ أَرْبَعِينَ، فَمَكَثَ بِمَكَّةَ ثَلاَثَ عَشْرَةَ سَنَةً، ثُمَّ أُمِرَ بِالهِجْرَةِ فَهَاجَرَ إِلَى المَدِينَةِ، فَمَكَثَ بِهَا عَشْرَ سِنِينَ، ثُمَّ تُوُفِّيَ ﷺ ». رواه البخاري (3851)، ومسلم (2351).',
'حديث أَبِي هُرَيْرَةَ رضي الله عنه، أَنَّ النَّبِيَّ ﷺ قَالَ: «خَيْرُ يَوْمٍ طَلَعَتْ عَلَيْهِ الشَّمْسُ يَوْمُ الجُمُعَةِ، فِيهِ خُلِقَ آدَمُ، وَفِيهِ أُدْخِلَ الجَنَّةَ، وَفِيهِ أُخْرِجَ مِنْهَا». رواه مسلم (854).',
'عن النبي ﷺ قال: (إن أول ما يحاسب عليه العبد يوم القيامة من عمله صلاته، فإن صلحت فقد أفلح ونجح، وإن فسدت فقد خاب وخسر، فإن انتقص من فريضته شيء قال الربّ عز وجل: انظروا هل لعبدي من تطوع فيكمل بها ما انتقص من الفريضة، ثم يكون سائر عمله على ذلك). سنن ابن ماجه والترمذي',
]
)
# [{'corpus_id': ..., 'score': ...}, {'corpus_id': ..., 'score': ...}, ...]
evalCrossEncoderClassificationEvaluator| Metric | Value |
|---|---|
| accuracy | 0.9325 |
| accuracy_threshold | 0.6693 |
| f1 | 0.8605 |
| f1_threshold | 0.2969 |
| precision | 0.8605 |
| recall | 0.8605 |
| average_precision | 0.9304 |
evalCrossEncoderClassificationEvaluator| Metric | Value |
|---|---|
| accuracy | 0.8686 |
| accuracy_threshold | 0.392 |
| f1 | 0.4375 |
| f1_threshold | 0.2153 |
| precision | 0.4922 |
| recall | 0.3937 |
| average_precision | 0.5103 |
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
ما الدعاء الوارد عند الدخول والخروج من المسجد؟ |
حديث عَنْ عُمَرَ بْنِ الخَطَّابِ رضي الله عنه، قَالَ: قَالَ رَسُولُ الله ﷺ: «مَا مِنْكُمْ مِنْ أَحَدٍ يَتَوَضَّأُ فَيُبْلِغُ - أَوْ فَيُسْبِغُ - الوَضُوءَ ثُمَّ يَقُولُ: أَشْهَدُ أَنْ لَا إِلَهَ إِلَّا الله وَأَنَّ مُحَمَّدًا عَبْدُ الله وَرَسُولُهُ إِلَّا فُتِحَتْ لَهُ أَبْوَابُ الجَنَّةِ الثَّمَانِيَةُ يَدْخُلُ مِنْ أَيِّهَا شَاءَ». رواه مسلم (234). |
0.0 |
ما حكم من لم يقرأ بفاتحة الكتاب ؟ |
حديث أبي أمامة رضي الله عنه قال: قال رسول الله ﷺ : (إن الله وملائكته يصلون على الصف الأول) قالوا: يا رسول الله وعلى الثاني؟ قال: (إن الله وملائكته يصلون على الصف الأول). قالوا: يا رسول الله وعلى الثاني؟ قال: (وعلى الثاني). أخرجه أحمد |
0.0 |
ما هي العلامة التي إذا ظهرت أغلق باب التوبة ؟ |
حديث ابْنِ عَبَّاسٍ رضي الله عنه قَالَ: «أُنْزِلَ عَلَى رَسُولِ الله ﷺ وَهُوَ ابْنُ أَرْبَعِينَ، فَمَكَثَ بِمَكَّةَ ثَلاَثَ عَشْرَةَ سَنَةً، ثُمَّ أُمِرَ بِالهِجْرَةِ فَهَاجَرَ إِلَى المَدِينَةِ، فَمَكَثَ بِهَا عَشْرَ سِنِينَ، ثُمَّ تُوُفِّيَ ﷺ ». رواه البخاري (3851)، ومسلم (2351). |
0.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.6596 | 500 | 0.5096 | 0.9076 |
| 1.0 | 758 | - | 0.9161 |
| 1.3193 | 1000 | 0.2928 | 0.9223 |
| 1.9789 | 1500 | 0.265 | 0.9267 |
| 2.0 | 1516 | - | 0.9269 |
| 2.6385 | 2000 | 0.2487 | 0.9287 |
| 3.0 | 2274 | - | 0.9293 |
| 3.2982 | 2500 | 0.2356 | 0.9299 |
| 3.9578 | 3000 | 0.2234 | 0.9304 |
| 4.0 | 3032 | - | 0.9304 |
| 0.9276 | 500 | 0.4632 | 0.4976 |
| 1.0 | 539 | - | 0.4973 |
| 1.8553 | 1000 | 0.3738 | 0.5022 |
| 2.0 | 1078 | - | 0.5055 |
| 2.7829 | 1500 | 0.369 | 0.5081 |
| 3.0 | 1617 | - | 0.5094 |
| 3.7106 | 2000 | 0.3657 | 0.5102 |
| 4.0 | 2156 | - | 0.5103 |
@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",
}