Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper
•
1908.10084
•
Published
•
12
This is a sentence-transformers model finetuned from sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2. 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: BertModel
(1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': True, '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})
(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("gpellejero/sodebur")
# Run inference
sentences = [
'¿Hay rutas recomendadas para recorrer durante la Floración en Las Caderechas?',
'Título: Floración en Las Caderechas\nZona: Bureba\nDuración: \nCoordenadas: 42.767300730677,-3.4972729277385\nTipo de recurso: Naturaleza, Mucho más\n\nFloración en Las Caderechas\n\n',
'Título: Btt Dehesas Montijanas\nZona: Merindades\nDuración: 12 h\nCoordenadas: 43.03553,-3.4830100000000006\nTipo de recurso: Rutas-Territorio Ciclista-BTT\n\nBtt Dehesas Montijanas\n\nComenzamos ruta en la localidad de El Ribero de Montija.Desde el área recreativa y zona verde del pueblo, junto al río Cerneja, salimos callejeando hasta cruzar la carretera en dirección Norte, rodando entre dicho río y la montaña por caminos y pistas entre bosques de pino y roble.Unos km más adelante, cambiamos de rumbo totalmente transitando por caminos anchos sencillos entre los típicos prados montijanos, pasando por la bonita dehesa de Villasante, con ejemplares de robles centenarios.De ahí nos dirigimos al monte Edilla, donde haremos uno de los tramos más divertidos, por un sendero largo y revirado bajo un frondoso robledal y a orillas del río Trueba. Tras este bonito paso, volvemos a abrirnos a los praderíos, siempre por caminos de herradura y pista ancha, acercándonos a la gran dificultad de la ruta, la ascensión al monte de Bedón, con rampas duras que nos llevarán entre bonitos pinares y praderas altas.Tras un rápido descenso, llegamos a Bedón, donde afrontaremos una divertida trialera, con algunas zonas de pierda suelta y continuos sube y bajas, tras los que pasaremos por las extensas campas verdes de peña Horrero.TTras un bonito camino dominando las lagunas de Antuzanos, iremos descendiendo hacia la ribera del Trueba, por donde llegaremos cómodamente al punto final de ruta por caminos clásicos de herradura entre el río y las huertas de ribera.Zonas de especial atención:-KM 1: cruce de carretera nacional. Extremar precaución-KM 4-6: Tramo de pista y camino ancho con algunas roderas y charcos profundos creados por la lluvia. Transitar con precaución-KM 7: cruce de carretera nacional. Extremar precaución-KM 28-30: tramo por trialera técnica. Transitar con precaución-KM 36,5: cruce de carretera nacional. Extremar precaución\n\n\n\n\n\n\n\n\n btt-larga.jpg\n \n \n \n \n\n \n\n\n\n\n\n\n\n\n\n\n\n\n logotipo_lineaverde_merindades.png',
]
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]
valEmbeddingSimilarityEvaluator| Metric | Value |
|---|---|
| pearson_cosine | 0.8111 |
| spearman_cosine | 0.7896 |
sentence_0, sentence_1, and sentence_2| sentence_0 | sentence_1 | sentence_2 | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| sentence_0 | sentence_1 | sentence_2 |
|---|---|---|
¿Dónde están ubicadas las principales áreas de interés en el PRC-BU 142 Riberas de Medina? |
Título: PRC-BU 142 Riberas de Medina |
Título: Btt Dehesas Montijanas |
¿Cuál es la gastronomía típica de Mesanza? |
Título: Mesanza |
Título: PRC-BU 183 Sendero de Fuente Sagredo |
¿Qué recomendaciones tienes para visitar el Castillo Monasterio de Rodilla? |
Título: Castillo Monasterio de Rodilla |
Título: BTT |
TripletLoss with these parameters:{
"distance_metric": "TripletDistanceMetric.COSINE",
"triplet_margin": 0.7
}
eval_strategy: stepsper_device_train_batch_size: 32per_device_eval_batch_size: 32num_train_epochs: 0.1fp16: Truemulti_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 32per_device_eval_batch_size: 32per_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: 0.1max_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: Truefp16_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: 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 | val_spearman_cosine |
|---|---|---|
| 0.1026 | 12 | 0.7896 |
@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{hermans2017defense,
title={In Defense of the Triplet Loss for Person Re-Identification},
author={Alexander Hermans and Lucas Beyer and Bastian Leibe},
year={2017},
eprint={1703.07737},
archivePrefix={arXiv},
primaryClass={cs.CV}
}