Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 19
How to use gpellejero/sodebur with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("gpellejero/sodebur")
sentences = [
"¿Cuál es la mejor época del año para visitar el PRC-BU 62 Valle de Losa?",
"Título: BTT | Ribera del Jerea\nZona: Merindades\nDuración: 12 h\nCoordenadas: 42.84819,-3.3346299999999998\nTipo de recurso: Rutas-Territorio Ciclista-BTT\n\nBTT | Ribera del Jerea\n\nComenzamos ruta en la localidad de Pedrosa de Tobalina, junto a la espectacular cascada del Peñón, formada por el río Jerea.Remontando dicho río realizamos la primera parte de la ruta, por caminos anchos junto al río, hasta llegar a Quintanilla Entrepeñas, a la que llegaremos tras atravesar un pequeño desfiladero.Tras esta localidad, nos desviamos, adentrándonos en zona montañosa, por pistas y caminos forestales de gran belleza, por los que atravesaremos la peña Redonda, rodeados en todo momento de extensos pinares y robledales y algunas zonas rocosas.Regresamos hacia la ribera del Jerea, en este caso río abajo y por la otra margen, recorriendo varios km de caminos rápidos y divertidos con bonitas vistas puntuales sobre el río, llegando casi hasta su desembocadura en el Ebro, donde de nuevo cambiamos el rumbo completamente, para introducirnos en un pequeño monte entre pinares, tras el cual volvemos nuevamente a la ribera del Jerea.Los últimos km los haremos disfrutando de los bosques y senderos de ribera de Santotis y Cadiñanos, donde pasaremos junto a su tan apreciada zona de baños. Continuaremos para finalizar la ruta en el punto de inicio, la Cascada del Peñón.\n \n\n\n\n\n\n\n\n\n\n bttmedia.jpg\n \n \n \n \n\n \n\n\n\n\nZonas de especial atención:\n-KM 1-4: Tramo por zona inundable del río Jerea. No realizar en caso de crecida fuerte. El tramo se puede evitar fácilmente saliendo a la carretera BU-550 hasta Quintanilla-Entrepeñas, donde se puede volver a la ruta y realizar normalmente hasta el final.-KM 25-27: Tramo de sendero, con zonas estrechas y algún paso donde apearse para sortear pasos de agua o rocas sin mucha dificultad.-KM 27,5: Paso junto a la presa de Cadiñanos, con un paso estrecho peatonal de acceso a la zona de baños. Pasar desmontados de la bici.\n\n\n\n\n\n\n\n\n logotipo_lineaverde_merindades.png",
"Título: PRC BU 41 Senda circular del Karst\nZona: Merindades\nDuración: 1 h\nCoordenadas: 42.942439,-3.000021\nTipo de recurso: Rutas-De senderos\n\nPRC BU 41 Senda circular del Karst\n\nEl Monumento Natural de Monte Santiago se asienta sobre un inmenso edificio kárstico que se mantiene geológicamente activo. Esto se traduce en numerosas manifestaciones a nivel geomorfológico y del paisaje que se pueden observar a lo largo de este itinerario con punto de partida en el paraje de Fuente Santiago, en el corazón del espacio protegido.La ruta comienza visitando la surgencia de Fuente Santiago, una dolina hundida o colapsada en la que brota un arroyo subterráneo, dando lugar al único punto de agua permanente del Monumento Natural. Este arroyo circula en superficie apenas 50 m hasta un sumidero por el que se cuela de nuevo en las entrañas del karst. Una pasarela de madera permite recorrer el fondo de la dolina, donde se han construido varios estanques con muros de piedra para retener el agua. Estos estanques constituyen puntos de cría de gran importancia para numerosas especies de anfibios, como el tritón alpino, la salamandra común o la rana bermeja.Al otro lado de la dolina, el sendero conecta con la pista forestal del mirador del Salto del Nervión, compartida con el sendero PR-BU 45 que articula toda la red de uso público del Monumento Natural. Esta pista tiene un trazado fácil, llano y de buen firme que discurre a través del hayedo. Pasada una caseta de piedra a orillas del camino, se puede ver, al sur de la pista forestal, un afloramiento de caliza profundamente erosionado en forma de canales de traza totalmente regular y rectilínea, hasta el punto que semejan una calzada empedrada hecha por el ser humano. Esta forma de erosión de la caliza corresponde a un tipo de lapiaz que se denomina “calzada de gigante”.Poco más adelante, la ruta deja atrás una intersección con la senda circular del Bosque (PRC-BU 43) antes de alcanzar el enclave de la Lobera de Santiago, donde se conserva la estructura de una ancestral trampa para la caza del lobo, formada por empalizadas y muros que confluían en un pozo. Un conjunto de grandes figuras recrea la escena de una batida con los mozos acosando al lobo.Pasada la lobera, la pista abandona la protección del bosque y sale a un descampado que se ve interrumpido bruscamente por los vertiginosos acantilados de sierra Salvada, que ponen al descubierto la estructura geológica del sustrato de Monte Santiago, formada por una sucesión de estratos sedimentarios de caliza. El camino conduce finalmente a un balcón colgado desde el que se sobrevuela el cañón de Délika con la misma perspectiva que tienen los buitres que pasan planeando frente al mirador. Numerosas surgencias brotan de las paredes que cierran el cañón dando nacimiento al río Nervión, aunque es en periodos de lluvias intensas, o después de fuertes tormentas, cuando este espectáculo alcanza su máximo esplendor, con saltos de agua que se precipitan al abismo con violencia y se deshilachaban en nubes de vapor por efecto del viento.Desde el mirador del Salto del Nervión, la ruta prosigue por una senda estrecha, compartida con el PRC-BU 42 (senda de los Miradores), que discurre siempre pegada a los acantilados y va descubriendo sucesivos rincones tan fotogénicos como vertiginosos. En este trayecto, se alcanza enseguida una segunda zona de la lobera, conocida como Foso Nuevo. Justo en este punto se encuentra una intersección, donde nuestro sendero se desvía al oeste hacia las entrañas del bosque. Por el contrario, el PRC-BU 42 prosigue por el borde del acantilado hacia el lugar de Esquina Rubén.Adentrándose en el hayedo, se atraviesa una zona de suelo irregular, con abundante afloramiento de caliza y gran presencia de la roca en superficie. En este trayecto, la senda pasa al lado de la boca de la cueva de Las Paúles, que se abre al fondo de una pequeña dolina. Poco más adelante, se alcanza un claro donde nuestro trazado se encuentra con la senda del Bosque (PRC-BU 43). Ambas rutas continúan por veredas independientes atravesando zonas despejadas del bosque en dirección a Fuente Santiago.Llegando ya a su destino final, la senda del Karst pasa al lado de las sugerentes ruinas de la iglesia de Santiago de Langrériz, testigo de un asentamiento monacal de tiempos medievales que siguió siendo utilizada como ermita para una romería popular hasta el siglo XVII antes de ser definitivamente abandonada.\n\n\n\n\n\n\n\n\n presentacion1.jpg\n \n \n \n \n\n \n\n\n\n\nInformación cedida por:",
"Título: PRC-BU 62 Valle de Losa\nZona: Merindades\nDuración: 4 h 40 min\nCoordenadas: 42.932392,-3.286861\nTipo de recurso: Rutas-De senderos\n\nPRC-BU 62 Valle de Losa\n\nEste agradable recorrido parte desde el aparcamiento de San Pantaleón de Losa. Desde allí ascenderemos a la ermita de San Pantaleón de Losa, una de las joyas del románico de las Merindades. Continuaremos nuestro recorrido siguiendo las indicaciones del PR hasta llegar a la lobera de la Barrerilla, continuaremos a Perex y desde aquí retornaremos al punto de partida."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]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}
}