Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper
•
1908.10084
•
Published
•
12
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-quqa")
# Get scores for pairs of texts
pairs = [
['ما هو موقف القرآن من المثلية الجنسية؟', 'ولوطا إذ قال لقومه أتأتون الفاحشة وأنتم تبصرون {54} أئنكم لتأتون الرجال شهوة من دون النساء بل أنتم قوم تجهلون {55} فما كان جواب قومه إلا أن قالوا أخرجوا آل لوط من قريتكم إنهم أناس يتطهرون {56} فأنجيناه وأهله إلا امرأته قدرناها من الغابرين {57} وأمطرنا عليهم مطرا فساء مطر المنذرين {58}النمل'],
['هل ذكر القرآن أن التوراة تم تحريفها؟', 'يومئذ تحدث أخبارها{4} الزلزلة'],
['من رد آيات الله بعد أن رآها رأي العين آية تلو آية.. فحري أن يبتليه الله ببلاء يكون به لغيره عبرة وآية، أذكر الآية التی دلت على هذا المعنى؟.', 'إنهم كانوا قبل ذلك مترفين{45} وكانوا يصرون على الحنث العظيم{46} وكانوا يقولون أئذا متنا وكنا ترابا وعظاما أئنا لمبعوثون{47} أو آباؤنا الأولون{48} الواقعة.'],
['هل يجوز النذر لغير الله؟', 'إذ قالت امرأت عمران رب إني نذرت لك ما في بطني محررا فتقبل مني إنك أنت السميع العليم{35} آل عمران'],
['ما هي انواع الحيوانات في القرآن؟', 'قال فاذهب فإن لك في الحياة أن تقول لا مساس وإن لك موعدا لن تخلفه وانظر إلى إلهك الذي ظلت عليه عاكفا لنحرقنه ثم لننسفنه في اليم نسفا{97} طه'],
]
scores = model.predict(pairs)
print(scores.shape)
# (5,)
# Or rank different texts based on similarity to a single text
ranks = model.rank(
'ما هو موقف القرآن من المثلية الجنسية؟',
[
'ولوطا إذ قال لقومه أتأتون الفاحشة وأنتم تبصرون {54} أئنكم لتأتون الرجال شهوة من دون النساء بل أنتم قوم تجهلون {55} فما كان جواب قومه إلا أن قالوا أخرجوا آل لوط من قريتكم إنهم أناس يتطهرون {56} فأنجيناه وأهله إلا امرأته قدرناها من الغابرين {57} وأمطرنا عليهم مطرا فساء مطر المنذرين {58}النمل',
'يومئذ تحدث أخبارها{4} الزلزلة',
'إنهم كانوا قبل ذلك مترفين{45} وكانوا يصرون على الحنث العظيم{46} وكانوا يقولون أئذا متنا وكنا ترابا وعظاما أئنا لمبعوثون{47} أو آباؤنا الأولون{48} الواقعة.',
'إذ قالت امرأت عمران رب إني نذرت لك ما في بطني محررا فتقبل مني إنك أنت السميع العليم{35} آل عمران',
'قال فاذهب فإن لك في الحياة أن تقول لا مساس وإن لك موعدا لن تخلفه وانظر إلى إلهك الذي ظلت عليه عاكفا لنحرقنه ثم لننسفنه في اليم نسفا{97} طه',
]
)
# [{'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 |
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
ما هو موقف القرآن من المثلية الجنسية؟ |
ولوطا إذ قال لقومه أتأتون الفاحشة وأنتم تبصرون {54} أئنكم لتأتون الرجال شهوة من دون النساء بل أنتم قوم تجهلون {55} فما كان جواب قومه إلا أن قالوا أخرجوا آل لوط من قريتكم إنهم أناس يتطهرون {56} فأنجيناه وأهله إلا امرأته قدرناها من الغابرين {57} وأمطرنا عليهم مطرا فساء مطر المنذرين {58}النمل |
1.0 |
هل ذكر القرآن أن التوراة تم تحريفها؟ |
يومئذ تحدث أخبارها{4} الزلزلة |
0.0 |
من رد آيات الله بعد أن رآها رأي العين آية تلو آية.. فحري أن يبتليه الله ببلاء يكون به لغيره عبرة وآية، أذكر الآية التی دلت على هذا المعنى؟. |
إنهم كانوا قبل ذلك مترفين{45} وكانوا يصرون على الحنث العظيم{46} وكانوا يقولون أئذا متنا وكنا ترابا وعظاما أئنا لمبعوثون{47} أو آباؤنا الأولون{48} الواقعة. |
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 |
@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",
}