Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 14
How to use avinot/distilroberta-base-LoL-Champions with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("avinot/distilroberta-base-LoL-Champions")
sentences = [
"As senna, Watch your positioning at all times so she cannot land crucial spells on you.\n\nKeep the minion wave closer to your side of the map to force her to over-extend for farm.\n\nSenna is quite weak early, you might be able to abuse that to gain an early health advantage. But if you can’t, don’t worry.\n\nFocus on farming early on if you can’t get kills. Try to poke her down often: whenever she uses her Q, try and use yours.\n",
"As riven, Riven will begin to fall as the game continues, so she will have to accumulate an early lead on. She should rely on peaks to win the game. She will have a lot of articles during this phase of the game, which will let her dry a lot of damage if she manages to catch an enemy. Level 16 is a massive power peak, which means that she can completely decimate the enemies that are joined together. She will have to find flanks on the enemy frequently.",
"As senna, Watch your position at all times so it can't put crucial spells on you. Keep the minion wave closer to your side of the map to force it to overtake for the farm. Senna is weak enough early, you might be able to abuse it to gain an early health benefit. But if you can, don't worry. Focus on agriculture early if you can't get killed.",
"Against zac, Zac really has long cooling times on his engagement abilities. As a result, he can really use them as a tool of engagement or escape only once in a fight. If you know that he is without these abilities- try to fight him. Placing the vision around his entrances into the jungle and into the river will reduce his ability to get successful ganks. Note that Zac can gank from afar with his E however. The easiest way for Zac to kill the Crab Scuttle is by using his E. If you see him killing the Crab Scuttle, it will usually mean that his E is on cooldown and he will miss an escape tool."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from distilbert/distilroberta-base. It maps sentences & paragraphs to a 768-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: RobertaModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, '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("avinot/distilroberta-base-LoL-Champions")
# Run inference
sentences = [
'As mordekaiser, Another point in his Ultimate R will allow him to 1 v 1 target quite frequently. He should be able to secure picks even now.\n\nHe is pretty decent during late-game fights, as his AoE abilities will hurt a lot. His survivability is quite appreciable as well.\n\nHis tankiness will be massive during this phase of the game. He should be focused on absorbing a lot of damage for the enemy team while simultaneously picking off enemies when possible.',
'As mordekaiser, Another point in his Ultimate R will allow him to 1 v 1 target quite frequently. He should be able to secure the choices even now. He is quite decent during the fights at the end of the game, because his AoE abilities will do a lot of harm. His survival is just as appreciable. His tankness will be massive during this phase of the game. He should be focused on absorbing a lot of damage for the enemy team while simultaneously dropping enemies when possible.',
'As renekton, If you can get a murder or two, you can snowball your lead quite quickly. Every time your Ultimate t is up, you can look for aggressive games to try to kill the enemy. Your Ultimate t is an excellent trading tool that makes you much stronger. Keep the minion wave even or slightly closer to your side of the map early. This will allow you to run the enemy down while protecting yourself from the ganks. If you keep pushing when you are not forward, you will be unable to run the enemy down and you will be an easy target for the enemy Jungler.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
As sivir, Just like in the mid-game, you should stick with your Support throughout the later parts of the game. Do not go around the map alone as you will die easily. |
As sivir, Just like in the middle of the game, you have to stay with your support throughout the later parts of the game. Do not go around the map alone because you will die easily. Do not play super aggressive in team fights. Just kite and automatic attack the nearest enemy champion. If you walk too far forward, the enemy will concentrate and down you. Continue kiteing in team fights and systematically adapt your positioning. |
As nunu, After going in with your Ultimate R, be prepared to fall back and peel for your allies in late-game team fights. |
As nunu, After entering with your Ultimate R, be ready to fold and peel for your allies in the team fights at the end of the game. Play around your Ultimate R in the later parts of the game. Avoid fighting unless your Ultimate R is standing. Fighting without it will make the team fight a lot harder at the end of the game. Delaying the fights and being ready to disengage if it is still about to cool off. To make the enemy's attack easier, group with your team but stay away from the side. If you flank a bush not awarded, the enemy will find it harder to react to your all-in. Avoid separating or being away from your team in the end of the game as the enemy will force a fight while you are gone. |
As darius, Darius is one of the strongest early game champions in the game. You can use this advantage to gain an early lead. |
As darius, Darius is one of the first strongest game champions in the game. You can use this advantage to gain an early lead. Extended trades work in favor of Darius thanks to his passive. He will win almost all automatic attack battles. This makes him a great duelist in the bottom ELO as many players like to fight constantly. Is really good in team fights thanks to his Ultimate e that can be reset if he gets the shot of death with her. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
per_device_train_batch_size: 16per_device_eval_batch_size: 16num_train_epochs: 10multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_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: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1num_train_epochs: 10max_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: 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: Falsebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robin| Epoch | Step | Training Loss |
|---|---|---|
| 2.3474 | 500 | 1.9312 |
| 4.6948 | 1000 | 0.0145 |
| 7.0423 | 1500 | 0.0023 |
| 9.3897 | 2000 | 0.0003 |
@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}
}
Base model
distilbert/distilroberta-base