Views
No views yet
pip install -U sentence-transformers1from sentence_transformers import CrossEncoder
2
3# Download from the 🤗 Hub
4model = CrossEncoder("Oysiyl/reranker-ModernBERT-base-gooaq-bce")
5# Get scores for pairs of texts
6pairs = [
7 ['what do you do with a degree in criminal justice?', "['Police Patrol Officer. Job Description. ... ', 'Criminal Investigators & Special Agents. Job Description. ... ', 'Private Detective or Investigator. ... ', 'First-Line Police Supervisor. ... ', 'Correctional Officer. ... ', 'Probation and Parole Officers. ... ', 'Postsecondary Criminal Justice & Law Enforcement Teachers.']"],
8 ['what do you do with a degree in criminal justice?', "['Prison officer. ... ', 'Police officer. ... ', 'Detective. ... ', 'Criminologist. ... ', 'Probation officer. ... ', 'Forensic scientist. ... ', 'Crime Scene investigator. ... ', 'Court reporter.']"],
9 ['what do you do with a degree in criminal justice?', "A high school diploma is required to work as a detective. In some cases a bachelor's degree in criminal justice or law enforcement may be needed. Experience in law enforcement is usually required, but the amount varies by employer."],
10 ['what do you do with a degree in criminal justice?', "['Court Reporter. ... ', 'Criminal Intelligence Analyst. ... ', 'Forensic Accountant. ... ', 'Police Officer and Police Support Roles. ... ', 'Immigration, Customs and Border Roles. ... ', 'Prison Officer. ... ', 'Probation Officer. ... ', 'Scene of Crime Officer.']"],
11 ['what do you do with a degree in criminal justice?', "Crime Scene Investigator Education and Training Although a high school diploma or equivalent is a minimum requirement for some positions, many police departments and law enforcement agencies prefer a minimum of an associate's (two-year) or a bachelor's (four-year) degree in criminal justice or a natural science."],
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 do you do with a degree in criminal justice?',
20 [
21 "['Police Patrol Officer. Job Description. ... ', 'Criminal Investigators & Special Agents. Job Description. ... ', 'Private Detective or Investigator. ... ', 'First-Line Police Supervisor. ... ', 'Correctional Officer. ... ', 'Probation and Parole Officers. ... ', 'Postsecondary Criminal Justice & Law Enforcement Teachers.']",
22 "['Prison officer. ... ', 'Police officer. ... ', 'Detective. ... ', 'Criminologist. ... ', 'Probation officer. ... ', 'Forensic scientist. ... ', 'Crime Scene investigator. ... ', 'Court reporter.']",
23 "A high school diploma is required to work as a detective. In some cases a bachelor's degree in criminal justice or law enforcement may be needed. Experience in law enforcement is usually required, but the amount varies by employer.",
24 "['Court Reporter. ... ', 'Criminal Intelligence Analyst. ... ', 'Forensic Accountant. ... ', 'Police Officer and Police Support Roles. ... ', 'Immigration, Customs and Border Roles. ... ', 'Prison Officer. ... ', 'Probation Officer. ... ', 'Scene of Crime Officer.']",
25 "Crime Scene Investigator Education and Training Although a high school diploma or equivalent is a minimum requirement for some positions, many police departments and law enforcement agencies prefer a minimum of an associate's (two-year) or a bachelor's (four-year) degree in criminal justice or a natural science.",
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.7283 (+0.1972) |
| mrr@10 | 0.7272 (+0.2033) |
| ndcg@10 | 0.7716 (+0.1804) |
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.4489 (-0.0407) | 0.3159 (+0.0549) | 0.4904 (+0.0708) |
| mrr@10 | 0.4376 (-0.0399) | 0.4737 (-0.0262) | 0.5075 (+0.0808) |
| ndcg@10 | 0.5096 (-0.0309) | 0.3176 (-0.0074) | 0.5388 (+0.0382) |
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.4184 (+0.0284) |
| mrr@10 | 0.4729 (+0.0049) |
| ndcg@10 | 0.4553 (-0.0000) |
question, answer, and label| question | answer | label | |
|---|---|---|---|
| type | string | string | int |
| details |
|
|
|
| question | answer | label |
|---|---|---|
what do you do with a degree in criminal justice? | ['Police Patrol Officer. Job Description. ... ', 'Criminal Investigators & Special Agents. Job Description. ... ', 'Private Detective or Investigator. ... ', 'First-Line Police Supervisor. ... ', 'Correctional Officer. ... ', 'Probation and Parole Officers. ... ', 'Postsecondary Criminal Justice & Law Enforcement Teachers.'] | 1 |
what do you do with a degree in criminal justice? | ['Prison officer. ... ', 'Police officer. ... ', 'Detective. ... ', 'Criminologist. ... ', 'Probation officer. ... ', 'Forensic scientist. ... ', 'Crime Scene investigator. ... ', 'Court reporter.'] | 0 |
what do you do with a degree in criminal justice? | A high school diploma is required to work as a detective. In some cases a bachelor's degree in criminal justice or law enforcement may be needed. Experience in law enforcement is usually required, but the amount varies by employer. | 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: 16per_device_eval_batch_size: 16learning_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: 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: 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}tp_size: 0fsdp_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: 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.1374 (-0.4539) | 0.0392 (-0.5012) | 0.2824 (-0.0427) | 0.0371 (-0.4635) | 0.1196 (-0.3358) |
| 0.0000 | 1 | 1.3234 | - | - | - | - | - |
| 0.0277 | 1000 | 1.1925 | - | - | - | - | - |
| 0.0553 | 2000 | 0.9574 | - | - | - | - | - |
| 0.0830 | 3000 | 0.7563 | - | - | - | - | - |
| 0.1106 | 4000 | 0.7247 | 0.7171 (+0.1259) | 0.5045 (-0.0359) | 0.3093 (-0.0158) | 0.5701 (+0.0694) | 0.4613 (+0.0059) |
| 0.1383 | 5000 | 0.6744 | - | - | - | - | - |
| 0.1660 | 6000 | 0.6876 | - | - | - | - | - |
| 0.1936 | 7000 | 0.6446 | - | - | - | - | - |
| 0.2213 | 8000 | 0.6519 | 0.7319 (+0.1407) | 0.5106 (-0.0298) | 0.3346 (+0.0095) | 0.6054 (+0.1048) | 0.4835 (+0.0282) |
| 0.2490 | 9000 | 0.6339 | - | - | - | - | - |
| 0.2766 | 10000 | 0.6168 | - | - | - | - | - |
| 0.3043 | 11000 | 0.6005 | - | - | - | - | - |
| 0.3319 | 12000 | 0.6363 | 0.7463 (+0.1550) | 0.5087 (-0.0317) | 0.3075 (-0.0176) | 0.5757 (+0.0751) | 0.4640 (+0.0086) |
| 0.3596 | 13000 | 0.5882 | - | - | - | - | - |
| 0.3873 | 14000 | 0.5888 | - | - | - | - | - |
| 0.4149 | 15000 | 0.5824 | - | - | - | - | - |
| 0.4426 | 16000 | 0.5882 | 0.7487 (+0.1574) | 0.5277 (-0.0127) | 0.3215 (-0.0036) | 0.5609 (+0.0603) | 0.4701 (+0.0147) |
| 0.4702 | 17000 | 0.5661 | - | - | - | - | - |
| 0.4979 | 18000 | 0.5758 | - | - | - | - | - |
| 0.5256 | 19000 | 0.556 | - | - | - | - | - |
| 0.5532 | 20000 | 0.5524 | 0.7556 (+0.1644) | 0.5419 (+0.0014) | 0.3191 (-0.0059) | 0.6132 (+0.1125) | 0.4914 (+0.0360) |
| 0.5809 | 21000 | 0.5546 | - | - | - | - | - |
| 0.6086 | 22000 | 0.563 | - | - | - | - | - |
| 0.6362 | 23000 | 0.5369 | - | - | - | - | - |
| 0.6639 | 24000 | 0.5492 | 0.7570 (+0.1658) | 0.4779 (-0.0626) | 0.2881 (-0.0369) | 0.5079 (+0.0073) | 0.4246 (-0.0307) |
| 0.6915 | 25000 | 0.5443 | - | - | - | - | - |
| 0.7192 | 26000 | 0.5522 | - | - | - | - | - |
| 0.7469 | 27000 | 0.5323 | - | - | - | - | - |
| 0.7745 | 28000 | 0.5167 | 0.7695 (+0.1782) | 0.4941 (-0.0463) | 0.3167 (-0.0083) | 0.5194 (+0.0188) | 0.4434 (-0.0119) |
| 0.8022 | 29000 | 0.4998 | - | - | - | - | - |
| 0.8299 | 30000 | 0.5326 | - | - | - | - | - |
| 0.8575 | 31000 | 0.5262 | - | - | - | - | - |
| 0.8852 | 32000 | 0.5136 | 0.7682 (+0.1769) | 0.5004 (-0.0400) | 0.3273 (+0.0023) | 0.5318 (+0.0311) | 0.4531 (-0.0022) |
| 0.9128 | 33000 | 0.5145 | - | - | - | - | - |
| 0.9405 | 34000 | 0.5038 | - | - | - | - | - |
| 0.9682 | 35000 | 0.5236 | - | - | - | - | - |
| 0.9958 | 36000 | 0.5347 | 0.7716 (+0.1804) | 0.5096 (-0.0309) | 0.3176 (-0.0074) | 0.5388 (+0.0382) | 0.4553 (-0.0000) |
| -1 | -1 | - | 0.7716 (+0.1804) | 0.5096 (-0.0309) | 0.3176 (-0.0074) | 0.5388 (+0.0382) | 0.4553 (-0.0000) |
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}