Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 14
How to use anuario/enarm-mpnet-v5 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("anuario/enarm-mpnet-v5")
sentences = [
"Hallazgos clínicos de la sífilis terciaria",
"Alteración congénita del metabolismo de la bilirrubina que produce hiperbilirrubinemia no conjugada Síndrome de Gilbert (por lo general no mayor a 5 mg/dL) y síndrome de Cigler-Najjar",
"¿Cuál es la etiología del liquen plano? El liquen plano es una enfermedad autoinmunitaria de tipo inflamatorio. Algunos antígenos asociados con esta patología son la radiación ultravíoleta, la infección por virus de la hepatitis B y C, la presencia de amalgamas y metales como el oro o el mercurio en piezas dentales y múltiples fármacos. Se ha encontrado asociación del liquen plano con otras patologías autoinmunitarias como el vitiligo, la diabetes mellitus, la cirrosis biliar primaria, la enfermedad inflama",
"Hallazgos clínicos de la sífilis terciaria · Tabes dorsalis · Debilidad general · Gomas · Pupila de Argyll Robertson · Aortitis · Aneurismas de raíz aórtica"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from sentence-transformers/all-mpnet-base-v2 on the json dataset. 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': 384, 'do_lower_case': False, 'architecture': 'MPNetModel'})
(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})
(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 = [
'¿Está indicado el uso de quelantes?',
'¿Está indicado el uso de quelantes? La quelación mediante dimercaprol (BAL), succimero, DMPS o D-penicilamina está indicada en intoxicación por mercurio inorgánico, sólo la D-penicilamina es útil para los compuestos orgánicos ya que otros quelantes pueden potenciar la toxicidad del mercurio.',
'¿Cómo se realiza el diagnóstico de lipoma? El ultrasonido y la TAC de cuello demuestran lesiones hipodensas. La RM en Tl para lesiones profundas muestra hiperintensidad.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[ 1.0000, 0.8808, -0.0685],
# [ 0.8808, 1.0000, -0.0286],
# [-0.0685, -0.0286, 1.0000]])
enarm-irInformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 1.0 |
| cosine_accuracy@3 | 1.0 |
| cosine_accuracy@5 | 1.0 |
| cosine_accuracy@10 | 1.0 |
| cosine_precision@1 | 1.0 |
| cosine_precision@3 | 0.3333 |
| cosine_precision@5 | 0.2 |
| cosine_precision@10 | 0.1 |
| cosine_recall@1 | 1.0 |
| cosine_recall@3 | 1.0 |
| cosine_recall@5 | 1.0 |
| cosine_recall@10 | 1.0 |
| cosine_ndcg@10 | 1.0 |
| cosine_mrr@10 | 1.0 |
| cosine_map@100 | 1.0 |
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
¿Cuáles son las características clínicas de la enfermedad de Parkinson? |
¿Cuáles son las características clínicas de la enfermedad de Parkinson? Las características centrales de la enfermedad de Parkinson son un conjunto de hipocinesia y bradicinesia, temblor de reposo, inestabilidad postura] y rigidez.La voz se torna suave. Al inicio, la única queja puede ser una molestia en espalda, cuello, hombros o cadera. La rigidez ligera y la lentitud de los movimientos o la disminución del balanceo natural de un brazo al caminar se ignoran; el parpadeo infrecuente, como Pierre Marie lo s |
Cuando el vitíligo aparece después de los 40 años de edad, ¿qué se debe descartar? |
Cuando el vitíligo aparece después de los 40 años de edad, ¿qué se debe descartar? Cuando el vitiligo aparece después de los 40 años de edad se considera marcador de enfermedad sistémica en 50% de los casos. Entre las principales enfermedades sistémicas asociadas se encuentran: alteraciones tiroideas, diabetes mellitus, anemia, psoriasis y melanoma, entre otros. |
Cambios durante el embarazo en el sistema cutáneo |
Cambios durante el embarazo en el sistema cutáneo • Estrías. • Angiomas arañas, eritema palmar. • Hiperpigmentación en la línea media del abdomen, pezones, perineo y melasma. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Condición en la que se puede proceder con parto vaginal de un feto en posición de nalgas |
Condición en la que se puede proceder con parto vaginal de un feto en posición de nalgas Sólo cuando el parto es inminente, de lo contrario esto es una contraindicación |
Citarabina (ara-C) |
Citarabina (ara-C) I: leucemia linfocítica aguda, leucemia mielocítica aguda, linfoma no Hodgkin. MA: inhibe la polimerasa del DNA. EA: leucopenia, trombocitopenia, anemia megaloblástica. |
¿Cómo se elabora el diagnóstico de encefalitis herpética? |
¿Cómo se elabora el diagnóstico de encefalitis herpética? Se realiza por sospecha clínica y apoyo de estudios paraclinicos, como la PCR en LCR que es altamente específica para el virus herpes simple. La punción lumbar puede mostrar aumento en la cantidad de proteínas en el LCR (hiperproteinorraquia), hipercelularidad (pleocitosis) a expensas de linfocitos o neutrófilos en los primeros días del cuadro, eritrocitos y glucosa generalmente normal. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
eval_strategy: stepsper_device_train_batch_size: 32per_device_eval_batch_size: 32learning_rate: 2e-05num_train_epochs: 2warmup_ratio: 0.1fp16: Trueload_best_model_at_end: Trueoverwrite_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: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 2max_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: 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: Trueignore_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}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torchoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthproject: huggingfacetrackio_space_id: trackioddp_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: Falsehub_revision: Nonegradient_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: noneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Trueprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | Validation Loss | enarm-ir_cosine_ndcg@10 |
|---|---|---|---|---|
| 0.0026 | 1 | 0.6268 | - | - |
| 0.2564 | 100 | 0.0352 | - | - |
| 0.5128 | 200 | 0.0004 | - | - |
| 0.7692 | 300 | 0.0008 | - | - |
| 1.0256 | 400 | 0.0005 | - | - |
| 1.2821 | 500 | 0.0002 | 0.0002 | 1.0 |
| 1.5385 | 600 | 0.0002 | - | - |
| 1.7949 | 700 | 0.0005 | - | - |
@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
sentence-transformers/all-mpnet-base-v2