Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 14
How to use RamsesDIIP/me5-large-construction-adapter with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("RamsesDIIP/me5-large-construction-adapter")
sentences = [
"Chapado de paramento vertical exterior a una altura <= 3 m, con piedra calcárea nacional con una cara apomazada, precio alto, de 30 mm de espesor con taladros para fijaciones y arista viva en los cuatro bordes y de 2501 a 6400 cm2, colocada con adhesivo C2 TE (UNE-EN 12004) y ganchos de acero inoxidable, y rejuntado con lechada CG2 (UNE-EN 13888)",
"Piso laminado de madera de cerezo, compuesto por tablas multicapa con un acabado de 2,5 a 2,9 mm de grosor, dimensiones superiores a 1900 mm de largo y 200 mm de ancho, con un espesor total de 14 mm, que incluye 3 listones por tabla y sistema de unión para encolar, instalado sobre una base de polietileno expandido de 3 mm.",
"Revestimiento de pared exterior a una altura máxima de 3 m, utilizando piedra caliza nacional con acabado pulido, de 30 mm de grosor, con perforaciones para fijaciones y bordes afilados, con dimensiones de 2501 a 6400 cm2, instalado con adhesivo C2 TE (UNE-EN 12004) y ganchos de acero inoxidable, y sellado con mortero CG2 (UNE-EN 13888).",
"Revestimiento de paramento interior a una altura > 3 m, con cerámica importada con acabado rugoso, precio bajo, de 15 mm de espesor sin perforaciones y arista redondeada en los bordes, y de 1000 a 2500 cm2, colocada con mortero convencional y sin rejuntado."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from intfloat/multilingual-e5-large. 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': False}) with Transformer model: XLMRobertaModel
(1): Pooling({'word_embedding_dimension': 1024, '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})
(2): Normalize()
(linear_adapter): MyLinearAdapter(
(linear): Linear(in_features=1024, out_features=1024, bias=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("RamsesDIIP/me5-large-construction-adapter")
# Run inference
sentences = [
'Vidrio aislante de luna incolora de 5 mm de espesor, cámara de aire de 10 mm y luna de 3+3 mm de espesor con 1 butiral de color estándard de luna de coloreado, clase 2 (B) 2 según UNE-EN 12600, colocado con perfiles conformados de neopreno sobre aluminio o PVC',
'Vidrio doble de 5 mm de espesor con cámara de aire de 10 mm y vidrio laminado de 3+3 mm, utilizando butiral estándar de color, clase 2 (B) 2 según UNE-EN 12600, instalado con marcos de neopreno sobre aluminio o PVC.',
'Vidrio templado de color azul de 6 mm de espesor, con una cámara de aire de 12 mm y luna de 4+4 mm de espesor, utilizando un butiral transparente, clase 1 (A) 1 según UNE-EN 12600, instalado con marcos de acero inoxidable.',
]
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]
validation-setTripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 0.9773 |
| dot_accuracy | 0.0568 |
| manhattan_accuracy | 0.9773 |
| euclidean_accuracy | 0.9773 |
| max_accuracy | 0.9773 |
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Hormigonado para riostras y pilarejos, con hormigón para armar autocompactante HA - 40 / AC / 20 / XC4 + XS1 + XA1 con una cantidad de cemento de 350 kg/m3 i relación agua cemento =< 0.45, colocado con cubilote |
Vertido de hormigón para vigas y columnas, utilizando hormigón autocompactante HA - 40 / AC / 20 / XC4 + XS1 + XA1 con una dosificación de cemento de 350 kg/m3 y una relación agua-cemento menor o igual a 0.45, aplicado con cubilote. |
Hormigonado para cimientos y muros, utilizando hormigón convencional de resistencia media con una cantidad de cemento de 300 kg/m3 y relación agua-cemento =< 0.50, vertido manualmente. |
Tapón extremo de polietileno, diámetro nominal DN 400, conexión hembra-hembra, de superficies interna lisa y externa lisa reforzada con nervios, de fabricación inyectada según norma UNE-EN 13476-3, apta para tubo de saneamiento enterrado sin presión de superficies interna lisa y externa perfilada según norma UNE-EN 13476-3, para doble unión elástica con anillas elastoméricas de estanquidad, colocado sobre lecho de arena de 15 cm de espesor, incluído el relleno del apoyo, con pisón vibrante eléctrico |
Tapón de polietileno de diámetro nominal DN 400, con conexión hembra-hembra, superficies internas y externas lisas, fabricado por inyección conforme a la norma UNE-EN 13476-3, adecuado para tubería de saneamiento enterrada sin presión, con doble unión elástica y anillas de sellado, instalado sobre un lecho de arena de 15 cm de grosor, incluyendo el relleno de soporte, utilizando un pisón vibrante eléctrico. |
Tapón de PVC, diámetro nominal DN 500, conexión macho-hembra, de superficies interna rugosa y externa lisa, de fabricación extruida según norma UNE-EN 1401, apto para tubo de desagüe superficial con superficies interna y externa lisas, para unión rígida con adhesivo, colocado sobre lecho de grava de 20 cm de espesor, excluido el relleno del soporte, con compactador manual. |
Vidrio aislante de luna incolora de 6+6 mm de espesor con 1 butiral de color estándard clase 2 (B) 2 según UNE-EN 12600, cámara de aire de 6 mm y luna de 8+8 mm de espesor con 1 butiral transparente de luna incolora, clase 2 (B) 2 según UNE-EN 12600, colocado con perfiles conformados de neopreno sobre aluminio o PVC |
Vidrio doble de 6+6 mm de espesor con butiral estándar de color clase 2 (B) 2 según UNE-EN 12600, con una cámara de aire de 6 mm y un vidrio de 8+8 mm de espesor con butiral transparente, clase 2 (B) 2 según UNE-EN 12600, instalado con marcos de neopreno sobre aluminio o PVC. |
Vidrio templado de color verde de 10+10 mm de espesor con 1 butiral de color personalizado clase 1 (A) 1 según UNE-EN 12600, cámara de aire de 8 mm y luna de 6+6 mm de espesor con 1 butiral opaco, clase 1 (A) 1 según UNE-EN 12600, instalado con marcos de acero inoxidable. |
TripletLoss with these parameters:{
"distance_metric": "TripletDistanceMetric.EUCLIDEAN",
"triplet_margin": 5
}
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Sistema de aislamiento térmico por el exterior (SATE) con aislamiento exterior para soporte de revestimiento delgado, con plancha de poliestireno expandido (EPS), de 40 mm de espesor, de 60 kPa de tensión a la compresión, de 1,05 m2·K/W de resistencia térmica, con una cara lisa y borde recto, fijada mecánicamente con mortero de cemento para uso corriente (GP) y taco y soporte de nylon, y revestida con morter de cemento para uso corriente (GP) con malla de fibra de vidrio revestida de PVC, de dimensiones 4x4 mm, con un peso mínimo de 160 g/m2 embebida, acabado exteriormente con enfoscado con mortero monocapa (OC) de cemento, de designación CSIII-W2, según la norma UNE-EN 998-1, colocado manualmente y acabado liso, con parte proporcional de protección de arista con cantonera de aluminio de 5 mm de espesor y 25 mm de desarrollo. No incluye la preparación del soporte. B2+R3 según CTE/DB-HS 2006 |
Sistema de aislamiento térmico exterior (SATE) con paneles de poliestireno expandido (EPS) de 40 mm, que ofrece una resistencia térmica de 1,05 m2·K/W, fijado con mortero de cemento y reforzado con malla de fibra de vidrio, terminado con un enfoscado monocapa de cemento, cumpliendo con la normativa UNE-EN 998-1. |
Sistema de impermeabilización de techos con membrana asfáltica de 3 mm de espesor, con una resistencia a la tracción de 200 N/5 cm, fijada mecánicamente con tornillos de acero inoxidable y sellada con masilla de poliuretano, y revestida con gravilla de 10 mm de diámetro, para mejorar la durabilidad y la estética del acabado, con un peso mínimo de 300 g/m2, colocada en capas cruzadas y con un acabado rugoso, sin incluir la preparación del soporte. B1+R2 según CTE/DB-HS 2006. |
Pared de cerramiento de dos caras vistas de 20 cm de espesor de bloque macizo de mortero cemento, de 400x90x200 mm, liso, blanco con componentes hidrofugantes, categoría I según la norma UNE-EN 771-3, tomado con mortero cemento 1:6 de cemento blanco de albañilería |
Muro de cerramiento de doble cara de 20 cm de grosor, construido con bloques macizos de mortero de cemento de dimensiones 400x90x200 mm, acabado liso y blanco, con aditivos hidrofugantes, clasificado como categoría I según la norma UNE-EN 771-3, unido con mortero de cemento 1:6 de cemento blanco para albañilería. |
Pared de soporte de una sola cara de 15 cm de espesor de ladrillo hueco de arcilla, de 300x150x200 mm, rugoso, rojo sin aditivos, categoría II según la norma UNE-EN 771-1, unida con mortero de cal 1:3 de cemento gris. |
Hormigonado de losas con hormigón para armar con aditivo hidrófugo HA - 30 / B / 20 / XC4 + XD3 + XF4 + XM2 con una cantidad de cemento de 350 kg/m3 i relación agua cemento =< 0.5, colocado con cubilote |
Vertido de losas utilizando hormigón armado con aditivo impermeabilizante HA - 30 / B / 20 / XC4 + XD3 + XF4 + XM2, con una dosificación de cemento de 350 kg/m3 y una relación agua-cemento menor o igual a 0.5, aplicado con cubilote. |
Hormigonado de columnas con hormigón para estructuras de soporte con aditivo retardante HR - 25 / A / 15 / XC2 + XD1 + XF2 + XM1 con una cantidad de cemento de 400 kg/m3 y relación agua cemento =< 0.6, vertido con bomba. |
TripletLoss with these parameters:{
"distance_metric": "TripletDistanceMetric.EUCLIDEAN",
"triplet_margin": 5
}
eval_strategy: stepsper_device_train_batch_size: 5per_device_eval_batch_size: 5learning_rate: 2e-05num_train_epochs: 5warmup_ratio: 0.1fp16: Truebatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 5per_device_eval_batch_size: 5per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 5max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_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}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: Falseeval_use_gather_object: Falsebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | Validation Loss | validation-set_max_accuracy |
|---|---|---|---|---|
| 0.7067 | 200 | 4.3691 | 3.3158 | 0.9318 |
| 1.4134 | 400 | 2.0025 | 1.2971 | 0.9716 |
| 2.1201 | 600 | 1.0978 | 1.1959 | 0.9716 |
| 2.8269 | 800 | 0.7522 | 0.6714 | 0.9943 |
| 3.5336 | 1000 | 0.5156 | 0.7532 | 0.9659 |
| 4.2403 | 1200 | 0.3121 | 0.5983 | 0.9773 |
| 4.9470 | 1400 | 0.2111 | 0.5432 | 0.9773 |
| 5.0 | 1415 | - | - | 0.9773 |
@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}
}
Base model
intfloat/multilingual-e5-large