Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use Trelis/multi-qa-MiniLM-L6-dot-v1-ft-pairs with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Trelis/multi-qa-MiniLM-L6-dot-v1-ft-pairs")
sentences = [
"What is the minimum force that players of both defending and attacking teams should use when making a touch?",
"touch football australia 2020 11 13. 5. 5 when possession changes after the half is touched or when the half places the ball on or over the try line ; or 13. 5. 6 in replacement of a penalty tap ; or 13. 5. 7 when so directed by the referee. 13. 6 a player is to perform a rollball seven ( 7 ) metres in - field under the following circumstances : 13. 6. 1 when a change of possession takes place due to a player in possession making contact with the sideline or any ground outside the field of play, prior to a touch being made ; or 13. 6. 2 when the ball not in possession of a player makes contact with the sideline or any ground outside the field of play. 13. 7 a player may not perform a tap in replacement of a rollball. ruling = the offending team must return to the mark and perform the rollball. 13. 8 an attacking player, other than the player performing the rollball, may receive the ball at the rollball and shall do so without delay. that player is referred to as the half. 13. 9 the half may control the ball with a foot prior to picking up the ball. 13. 10 a player",
"or passed and goes to ground during play, a change of possession results. ruling = the mark for the change of possession is where the ball makes initial contact with the ground. 9. 5 if the ball, while still under the control of the half, contacts the ground in the in - goal area, possession is lost. ruling = play will restart with a rollball at the nearest point on the seven ( 7 ) metre line. fit playing rules - 5th edition 8 copyright © touch football australia 2020 9. 6 if a player mishandles the ball and even if in an effort to gain control, the ball is accidentally knocked forward into any other player, a change of possession results. 10 the touch 10. 1 a touch may be made by either a defending player or a player in possession. 10. 2 a defending player may not claim a touch if contact has not been made. if a player claims a touch has been made, but the referee is unsure the touch will count. ruling = a penalty to the attacking team at the point of the infringement and the offending player sent to the sin bin. 10. 3 players of both defending and attacking teams are to use the minimum force necessary to make a touch. players must ensure that the",
"is normally forty - five minutes, inclusive of a five ( 5 ) minute half time. end of play when the referee indicates completion of the match. exclusion when a player is sent to the nearest sin bin area following three ( 3 ) penalties by the defending team upon entering their seven metre zone. the player is counted as a player on the field of play and cannot be replaced or interchanged. fit playing rules - 5th edition copyright © touch football australia 2020 1 fit federation of international touch field of play the playing area bounded by the sidelines and dead ball lines, both of which are out of bounds. see appendix 1. forced interchange when a player is required to undertake a compulsory interchange for an infringement ruled more serious than a penalty but less serious than a permanent interchange, sin bin or dismissal. forward a position or direction towards the dead ball line beyond the team ’ s attacking try line. full time the expiration of the second period of time allowed for play. half the player who takes possession following a rollball. half time the break in play between the two halves of a match. imminent about to occur, it is almost certain to occur. infringement the action of a player contrary to the rules of the game. in - goal area the area"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from sentence-transformers/multi-qa-MiniLM-L6-dot-v1. It maps sentences & paragraphs to a 384-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("Trelis/multi-qa-MiniLM-L6-dot-v1-ft-pairs")
# Run inference
sentences = [
'What is the ruling if a player in possession holds or impedes a defending player?',
'directly forward of the point of the infringement. 15. 5 after effecting the touch, the defending player must retire the required seven ( 7 ) metres or to the defending try line as indicated by the referee without interfering with the attacking team. ruling = a penalty to the attacking team ten ( 10 ) metres forward of the infringement or if on the defensive try line, on the seven ( 7 ) metre line. fit playing rules - 5th edition copyright © touch football australia 2020 13 16 obstruction 16. 1 a player in possession must not run or otherwise move behind other attacking players or the referee in an attempt to avoid an imminent touch. ruling = a penalty to the non - offending team at the point of the infringement. 16. 2 the player in possession is not to hold or otherwise impede a defending player in any way. ruling = a penalty to the non - offending team at the point of the infringement. 16. 3 an attacking player in support of the player in possession may move as necessary to achieve a supporting position but must not grab, hold, push or otherwise deliberately interfere with a defending player attempting to make a touch ruling = a penalty to the non - offending team at the point of the infringement or on the seven ( 7',
'. attacking team the team which has or is gaining possession. behind a position or direction towards a team ’ s defending try line. change of possession the act of moving control of the ball from one team to the other. dead / dead ball when the ball is out of play including the period following a try and until the match is recommenced and when the ball goes to ground and / or outside the boundaries of the field of play prior to the subsequent rollball. dead ball line the end boundaries of the field of play. there is one at each end of the field of play. see appendix 1. defending try line the line which a team has to defend to prevent a try. defending team the team without or which is losing possession. dismissal when a player is sent from the field of play for the rest of the match. drop - off a procedure used to determine a winner following equal scores at the expiration of normal duration. duration the length of time a competition match lasts, which is normally forty - five minutes, inclusive of a five ( 5 ) minute half time. end of play when the referee indicates completion of the match. exclusion when a player is sent to the nearest sin bin area following three ( 3 ) penalties by the',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16learning_rate: 0.0001num_train_epochs: 1lr_scheduler_type: constantwarmup_ratio: 0.3overwrite_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: Nonelearning_rate: 0.0001weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 1max_steps: -1lr_scheduler_type: constantlr_scheduler_kwargs: {}warmup_ratio: 0.3warmup_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: 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: 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: Falsehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseeval_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: Falsebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | loss |
|---|---|---|---|
| 0.1667 | 2 | 1.5903 | 1.1222 |
| 0.3333 | 4 | 1.3817 | 1.1956 |
| 0.5 | 6 | 0.8451 | 1.1244 |
| 0.6667 | 8 | 1.4958 | 1.1055 |
| 0.8333 | 10 | 1.3135 | 1.0260 |
| 1.0 | 12 | 1.7283 | 0.9734 |
@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",
}
@misc{henderson2017efficient,
title={Efficient Natural Language Response Suggestion for Smart Reply},
author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
year={2017},
eprint={1705.00652},
archivePrefix={arXiv},
primaryClass={cs.CL}
}