Views
No views yet

pip install -U sentence-transformers1from sentence_transformers import CrossEncoder
2
3# Download from the 🤗 Hub
4model = CrossEncoder("tomaarsen/reranker-ModernBERT-large-gooaq-bce")
5# Get scores for pairs of texts
6pairs = [
7 ['what are the characteristics and elements of poetry?', 'The elements of poetry include meter, rhyme, form, sound, and rhythm (timing). Different poets use these elements in many different ways.'],
8 ['what are the characteristics and elements of poetry?', "What's the first rule of writing poetry? That there are no rules — it's all up to you! Of course there are different poetic forms and devices, and free verse poems are one of the many poetic styles; they have no structure when it comes to format or even rhyming."],
9 ['what are the characteristics and elements of poetry?', "['Blank verse. Blank verse is poetry written with a precise meter—almost always iambic pentameter—that does not rhyme. ... ', 'Rhymed poetry. In contrast to blank verse, rhymed poems rhyme by definition, although their scheme varies. ... ', 'Free verse. ... ', 'Epics. ... ', 'Narrative poetry. ... ', 'Haiku. ... ', 'Pastoral poetry. ... ', 'Sonnet.']"],
10 ['what are the characteristics and elements of poetry?', 'The main component of poetry is its meter (the regular pattern of strong and weak stress). When a poem has a recognizable but varying pattern of stressed and unstressed syllables, the poetry is written in verse. ... There are many possible patterns of verse, and the basic pattern of each unit is called a foot.'],
11 ['what are the characteristics and elements of poetry?', "Some poetry may not make sense to you. But that's because poets don't write to be understood by others. They write because they must. The feelings and emotions that reside within them need to be expressed."],
12]
13scores = model.predict(pairs)
14print(scores.shape)
15# (5,)
16
17# Or rank different texts based on similarity to a single text
18ranks = model.rank(
19 'what are the characteristics and elements of poetry?',
20 [
21 'The elements of poetry include meter, rhyme, form, sound, and rhythm (timing). Different poets use these elements in many different ways.',
22 "What's the first rule of writing poetry? That there are no rules — it's all up to you! Of course there are different poetic forms and devices, and free verse poems are one of the many poetic styles; they have no structure when it comes to format or even rhyming.",
23 "['Blank verse. Blank verse is poetry written with a precise meter—almost always iambic pentameter—that does not rhyme. ... ', 'Rhymed poetry. In contrast to blank verse, rhymed poems rhyme by definition, although their scheme varies. ... ', 'Free verse. ... ', 'Epics. ... ', 'Narrative poetry. ... ', 'Haiku. ... ', 'Pastoral poetry. ... ', 'Sonnet.']",
24 'The main component of poetry is its meter (the regular pattern of strong and weak stress). When a poem has a recognizable but varying pattern of stressed and unstressed syllables, the poetry is written in verse. ... There are many possible patterns of verse, and the basic pattern of each unit is called a foot.',
25 "Some poetry may not make sense to you. But that's because poets don't write to be understood by others. They write because they must. The feelings and emotions that reside within them need to be expressed.",
26 ]
27)
28# [{'corpus_id': ..., 'score': ...}, {'corpus_id': ..., 'score': ...}, ...]gooaq-devCrossEncoderRerankingEvaluator with these parameters:
1{
2 "at_k": 10,
3 "always_rerank_positives": false
4}| Metric | Value |
|---|---|
| map | 0.7586 (+0.2275) |
| mrr@10 | 0.7576 (+0.2336) |
| ndcg@10 | 0.7946 (+0.2034) |
gooaq-devCrossEncoderRerankingEvaluator with these parameters:
1{
2 "at_k": 10,
3 "always_rerank_positives": true
4}| Metric | Value |
|---|---|
| map | 0.8176 (+0.2865) |
| mrr@10 | 0.8166 (+0.2926) |
| ndcg@10 | 0.8581 (+0.2669) |
NanoMSMARCO_R100, NanoNFCorpus_R100 and NanoNQ_R100CrossEncoderRerankingEvaluator with these parameters:
1{
2 "at_k": 10,
3 "always_rerank_positives": true
4}| Metric | NanoMSMARCO_R100 | NanoNFCorpus_R100 | NanoNQ_R100 |
|---|---|---|---|
| map | 0.5488 (+0.0592) | 0.3682 (+0.1072) | 0.6103 (+0.1907) |
| mrr@10 | 0.5443 (+0.0668) | 0.5677 (+0.0678) | 0.6108 (+0.1841) |
| ndcg@10 | 0.6323 (+0.0918) | 0.4136 (+0.0886) | 0.6570 (+0.1564) |
NanoBEIR_R100_meanCrossEncoderNanoBEIREvaluator with these parameters:
1{
2 "dataset_names": [
3 "msmarco",
4 "nfcorpus",
5 "nq"
6 ],
7 "rerank_k": 100,
8 "at_k": 10,
9 "always_rerank_positives": true
10}| Metric | Value |
|---|---|
| map | 0.5091 (+0.1190) |
| mrr@10 | 0.5743 (+0.1063) |
| ndcg@10 | 0.5676 (+0.1123) |
question, answer, and label| question | answer | label | |
|---|---|---|---|
| type | string | string | int |
| details |
|
|
|
| question | answer | label |
|---|---|---|
what are the characteristics and elements of poetry? | The elements of poetry include meter, rhyme, form, sound, and rhythm (timing). Different poets use these elements in many different ways. | 1 |
what are the characteristics and elements of poetry? | What's the first rule of writing poetry? That there are no rules — it's all up to you! Of course there are different poetic forms and devices, and free verse poems are one of the many poetic styles; they have no structure when it comes to format or even rhyming. | 0 |
what are the characteristics and elements of poetry? | ['Blank verse. Blank verse is poetry written with a precise meter—almost always iambic pentameter—that does not rhyme. ... ', 'Rhymed poetry. In contrast to blank verse, rhymed poems rhyme by definition, although their scheme varies. ... ', 'Free verse. ... ', 'Epics. ... ', 'Narrative poetry. ... ', 'Haiku. ... ', 'Pastoral poetry. ... ', 'Sonnet.'] | 0 |
BinaryCrossEntropyLoss with these parameters:
1{
2 "activation_fn": "torch.nn.modules.linear.Identity",
3 "pos_weight": 5
4}eval_strategy: stepsper_device_train_batch_size: 64per_device_eval_batch_size: 64learning_rate: 2e-05num_train_epochs: 1warmup_ratio: 0.1seed: 12bf16: Truedataloader_num_workers: 4load_best_model_at_end: Trueoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 64per_device_eval_batch_size: 64per_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: 12data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Truefp16: Falsefp16_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: 4dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Trueignore_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: Falsegradient_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: 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: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | gooaq-dev_ndcg@10 | NanoMSMARCO_R100_ndcg@10 | NanoNFCorpus_R100_ndcg@10 | NanoNQ_R100_ndcg@10 | NanoBEIR_R100_mean_ndcg@10 |
|---|---|---|---|---|---|---|---|
| -1 | -1 | - | 0.1279 (-0.4633) | 0.0555 (-0.4849) | 0.1735 (-0.1516) | 0.0686 (-0.4320) | 0.0992 (-0.3562) |
| 0.0001 | 1 | 1.2592 | - | - | - | - | - |
| 0.0221 | 200 | 1.1826 | - | - | - | - | - |
| 0.0443 | 400 | 0.7653 | - | - | - | - | - |
| 0.0664 | 600 | 0.6423 | - | - | - | - | - |
| 0.0885 | 800 | 0.6 | - | - | - | - | - |
| 0.1106 | 1000 | 0.5753 | 0.7444 (+0.1531) | 0.5365 (-0.0039) | 0.4249 (+0.0998) | 0.6111 (+0.1105) | 0.5242 (+0.0688) |
| 0.1328 | 1200 | 0.5313 | - | - | - | - | - |
| 0.1549 | 1400 | 0.5315 | - | - | - | - | - |
| 0.1770 | 1600 | 0.5195 | - | - | - | - | - |
| 0.1992 | 1800 | 0.5136 | - | - | - | - | - |
| 0.2213 | 2000 | 0.4782 | 0.7774 (+0.1862) | 0.6080 (+0.0676) | 0.4371 (+0.1120) | 0.6520 (+0.1513) | 0.5657 (+0.1103) |
| 0.2434 | 2200 | 0.5026 | - | - | - | - | - |
| 0.2655 | 2400 | 0.5011 | - | - | - | - | - |
| 0.2877 | 2600 | 0.4893 | - | - | - | - | - |
| 0.3098 | 2800 | 0.4855 | - | - | - | - | - |
| 0.3319 | 3000 | 0.4687 | 0.7692 (+0.1779) | 0.6181 (+0.0777) | 0.4273 (+0.1023) | 0.6686 (+0.1679) | 0.5713 (+0.1160) |
| 0.3541 | 3200 | 0.4619 | - | - | - | - | - |
| 0.3762 | 3400 | 0.4626 | - | - | - | - | - |
| 0.3983 | 3600 | 0.4504 | - | - | - | - | - |
| 0.4204 | 3800 | 0.4435 | - | - | - | - | - |
| 0.4426 | 4000 | 0.4573 | 0.7776 (+0.1864) | 0.6589 (+0.1184) | 0.4262 (+0.1012) | 0.6634 (+0.1628) | 0.5828 (+0.1275) |
| 0.4647 | 4200 | 0.4608 | - | - | - | - | - |
| 0.4868 | 4400 | 0.4275 | - | - | - | - | - |
| 0.5090 | 4600 | 0.4317 | - | - | - | - | - |
| 0.5311 | 4800 | 0.4427 | - | - | - | - | - |
| 0.5532 | 5000 | 0.4245 | 0.7795 (+0.1883) | 0.6021 (+0.0617) | 0.4387 (+0.1137) | 0.6560 (+0.1553) | 0.5656 (+0.1102) |
| 0.5753 | 5200 | 0.4243 | - | - | - | - | - |
| 0.5975 | 5400 | 0.4295 | - | - | - | - | - |
| 0.6196 | 5600 | 0.422 | - | - | - | - | - |
| 0.6417 | 5800 | 0.4165 | - | - | - | - | - |
| 0.6639 | 6000 | 0.4281 | 0.7859 (+0.1946) | 0.6404 (+0.1000) | 0.4449 (+0.1199) | 0.6458 (+0.1451) | 0.5770 (+0.1217) |
| 0.6860 | 6200 | 0.4155 | - | - | - | - | - |
| 0.7081 | 6400 | 0.4189 | - | - | - | - | - |
| 0.7303 | 6600 | 0.4066 | - | - | - | - | - |
| 0.7524 | 6800 | 0.4114 | - | - | - | - | - |
| 0.7745 | 7000 | 0.4111 | 0.7875 (+0.1963) | 0.6358 (+0.0954) | 0.4289 (+0.1038) | 0.6358 (+0.1351) | 0.5668 (+0.1114) |
| 0.7966 | 7200 | 0.3949 | - | - | - | - | - |
| 0.8188 | 7400 | 0.4019 | - | - | - | - | - |
| 0.8409 | 7600 | 0.395 | - | - | - | - | - |
| 0.8630 | 7800 | 0.3885 | - | - | - | - | - |
| 0.8852 | 8000 | 0.3991 | 0.7946 (+0.2034) | 0.6323 (+0.0918) | 0.4136 (+0.0886) | 0.6570 (+0.1564) | 0.5676 (+0.1123) |
| 0.9073 | 8200 | 0.3894 | - | - | - | - | - |
| 0.9294 | 8400 | 0.392 | - | - | - | - | - |
| 0.9515 | 8600 | 0.3853 | - | - | - | - | - |
| 0.9737 | 8800 | 0.3691 | - | - | - | - | - |
| 0.9958 | 9000 | 0.3784 | 0.7936 (+0.2024) | 0.6481 (+0.1077) | 0.4211 (+0.0961) | 0.6439 (+0.1433) | 0.5711 (+0.1157) |
| -1 | -1 | - | 0.7946 (+0.2034) | 0.6323 (+0.0918) | 0.4136 (+0.0886) | 0.6570 (+0.1564) | 0.5676 (+0.1123) |
1@inproceedings{reimers-2019-sentence-bert,
2 title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
3 author = "Reimers, Nils and Gurevych, Iryna",
4 booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
5 month = "11",
6 year = "2019",
7 publisher = "Association for Computational Linguistics",
8 url = "https://arxiv.org/abs/1908.10084",
9}