Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 17
How to use shuaih777/music-crs-biencoder-personalized with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("shuaih777/music-crs-biencoder-personalized")
sentences = [
"[10s | male | Brazil]\nUser: I'm trying to find a song about someone going through a tough time in a relationship, maybe feeling misunderstood or distant.\nAssistant: Awesome! Glad you liked \"Halfway To Heaven.\" If you're looking for another great one from Céline Dio\nUser: One Heart\" is cool, and I love Céline Dion, but that's not really the vibe I'm looking for. I'm searching for something more like a sad or emotional ballad, not an upbeat song. It needs to be about difficulties in a relationship.\nAssistant: Awesome! If you're looking for something with a bit more emotion, you absolutely have to hear \"Think\nUser: Yes! \"Think Twice\" by Céline Dion is exactly the one I was trying to remember! The lyrics perfectly describe that distant feeling and relationship challenges. Thank you so much!\nAssistant: That's awesome to hear! Since you're really connecting with the emotional side, I think you'll adore\nUser: Oh, \"When I Fall In Love\" is so beautiful! I really like that one too, it's so full of feeling. Do you have any other really emotional power ballads, maybe from the 90s, by female artists?\nAssistant: That's great! It sounds like you're really enjoying Céline Dion's ballads. You should definitely che\nUser: Oh, \"Love Doesn't Ask Why\" is really good too! I love how emotional Céline Dion's songs are. Do you know any other artists from the 90s, maybe female singers with big voices, who sing similar emotional power ballads?",
"Black Mamba by The Academy Is... from Almost Here [love the lyrics, Punk, energetic, cool music, alternative rock, rockpop, the strokes, punkrock, post hardcore, nostalgia, band, power, illinois, Alternative, favorites] (2005)",
"Only One Road by Céline Dion from Original Album Classics, The Colour Of My Love [power voice, female, female singer, vocalization, emotive, female voice, female pop, pretty, romance, 90s, celion dion, Vocal, female artists, grilo, canadian] (1993)",
"Apocalyptic by Halestorm from Into The Wild Life, Apocalyptic [american, hard rock, 2015, core jessielou song, alternative metal, 2015 gif, rock, 2015 single, 2010s, halestorm gif, female vocalists, 10s, halestorm, Rock, music choice: rock] (2015)"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from BAAI/bge-large-en-v1.5. It maps sentences & paragraphs to a 1024-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': True}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 1024, '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})
(2): Normalize()
)
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("sentence_transformers_model_id")
# Run inference
sentences = [
'[20s | female | Germany]\nUser: Suggest some classic pop or dance tracks that bring back good memories.\nAssistant: Awesome! Glad you enjoyed "Thriller"! If you\'re looking to keep that energetic vibe going, how about\nUser: Oh, the Spice Girls! That definitely brings back memories, classic 90s pop. I like the energetic vibe. Can you suggest something similar, maybe still 90s but with a bit more of a dance beat?\nAssistant: Awesome, so glad you loved the Spice Girls! Sticking with that fun, upbeat 90s vibe, how about "MMMB\nUser: MMMBop is super nostalgic and fun, I remember that one! But it\'s not quite hitting that dance beat I was looking for. Could we try something with a stronger rhythm, still from the 90s or early 2000s, that\'s more geared for dancing?',
'The Nights by Avicii from The Days / Nights, Full Circle: The Live Anthology [Dance, 2014 releases, 2014 single, Pop, pop dance, house, playlista rmf fm, epic, 2014, 2010s, dance, hino, chillout, robbie williams, avicii fig] (2014)',
'Ziggy Stardust - 2012 Remastered Version by David Bowie from The Rise And Fall Of Ziggy Stardust And The Spiders From Mars, The Rise And Fall Of Ziggy Stardust And The Spiders From Mars (2012 Remastered Version) [Pop, classic rock] (1972)',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]
# 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 |
|---|---|
[30s |
male |
[20s |
male |
[60+ |
female |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
per_device_train_batch_size: 64per_device_eval_batch_size: 64multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_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: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1num_train_epochs: 3max_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}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: 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: round_robin| Epoch | Step | Training Loss |
|---|---|---|
| 0.2632 | 500 | 2.0753 |
| 0.5263 | 1000 | 1.4308 |
| 0.7895 | 1500 | 1.3659 |
| 1.0526 | 2000 | 1.3324 |
| 1.3158 | 2500 | 1.3118 |
| 1.5789 | 3000 | 1.2938 |
| 1.8421 | 3500 | 1.3031 |
| 2.1053 | 4000 | 1.2948 |
| 2.3684 | 4500 | 1.2999 |
| 2.6316 | 5000 | 1.2905 |
| 2.8947 | 5500 | 1.262 |
@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
BAAI/bge-large-en-v1.5