Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 16
How to use DashReza7/sentence-transformers_paraphrase-multilingual-MiniLM-L12-v2_FINETUNED_on_torob_data_v2_3 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("DashReza7/sentence-transformers_paraphrase-multilingual-MiniLM-L12-v2_FINETUNED_on_torob_data_v2_3")
sentences = [
"گوشی a 21 s",
"FIFA 21 اکانت قانونی FIFA 21 Standard Edition مخصوص XBOX Series S/X",
"روکش صندلی چرم طرح بی ام و مناسب پژو پارس صندلی قدیم کد BMW69",
"هایلایتر پودری وت اند وایلد مدل مگا گلو شماره E319B هایلایتر پودری مگا گلو وت اند وایلد مدل E319B Blossom Glow wet n wild megaglo highlighting powder هایلایتر پودری مگا گلو وت اند وایلد مدل E321B Precious Petals هایلایتر وت اند وایلد پودری مگا گلو هایلایتر پودری مگا گلو شماره 319B وت اند وایلد / هایلایتر پودری مگا گلو وت اند وایلد هایلایتر پودری مگا گلو شماره 321B وت اند وایلد هایلایتر وت اند وایلد | هایلایتر پودری وت اند وایلید megaglot هایلایتر پودری وت اند وایلد مگا گلو"
]
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 384-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': 128, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 384, '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})
)
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("DashReza7/sentence-transformers_paraphrase-multilingual-MiniLM-L12-v2_FINETUNED_on_torob_data_v2_3")
# Run inference
sentences = [
'هندزفری بلوتوث جبرا ',
'هدست بلوتوث جبرا Mini هندزفری بلوتوث جبرا Jabra Mini Bluetooth Handsfree هدست بلوتوث جبرا مدل Mini هندزفری بلوتوث جبرا MINI',
'گاز پیک نیک 5 کیلویی شیدا گاز',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
BinaryClassificationEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 0.855 |
| cosine_accuracy_threshold | 0.773 |
| cosine_f1 | 0.8741 |
| cosine_f1_threshold | 0.7387 |
| cosine_precision | 0.8377 |
| cosine_recall | 0.9138 |
| cosine_ap | 0.9044 |
| dot_accuracy | 0.8117 |
| dot_accuracy_threshold | 18.6845 |
| dot_f1 | 0.8382 |
| dot_f1_threshold | 18.0047 |
| dot_precision | 0.7927 |
| dot_recall | 0.8894 |
| dot_ap | 0.8808 |
| manhattan_accuracy | 0.8519 |
| manhattan_accuracy_threshold | 54.22 |
| manhattan_f1 | 0.8715 |
| manhattan_f1_threshold | 57.2776 |
| manhattan_precision | 0.8347 |
| manhattan_recall | 0.9118 |
| manhattan_ap | 0.8995 |
| euclidean_accuracy | 0.8519 |
| euclidean_accuracy_threshold | 3.4671 |
| euclidean_f1 | 0.8718 |
| euclidean_f1_threshold | 3.6643 |
| euclidean_precision | 0.837 |
| euclidean_recall | 0.9096 |
| euclidean_ap | 0.8997 |
| max_accuracy | 0.855 |
| max_accuracy_threshold | 54.22 |
| max_f1 | 0.8741 |
| max_f1_threshold | 57.2776 |
| max_precision | 0.8377 |
| max_recall | 0.9138 |
| max_ap | 0.9044 |
eval_strategy: stepsper_device_train_batch_size: 64per_device_eval_batch_size: 64learning_rate: 2e-05num_train_epochs: 1warmup_ratio: 0.1fp16: Trueoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_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: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 1max_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: Falsebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | loss | max_ap |
|---|---|---|---|---|
| 0.0711 | 500 | 0.0318 | - | - |
| 0.1422 | 1000 | 0.0201 | - | - |
| 0.2133 | 1500 | 0.0183 | - | - |
| 0.2844 | 2000 | 0.0171 | 0.0166 | 0.8756 |
| 0.3555 | 2500 | 0.0164 | - | - |
| 0.4266 | 3000 | 0.0161 | - | - |
| 0.4977 | 3500 | 0.0155 | - | - |
| 0.5688 | 4000 | 0.0153 | 0.0147 | 0.8955 |
| 0.6399 | 4500 | 0.015 | - | - |
| 0.7110 | 5000 | 0.0145 | - | - |
| 0.7821 | 5500 | 0.0144 | - | - |
| 0.8532 | 6000 | 0.0143 | 0.0138 | 0.9044 |
| 0.9243 | 6500 | 0.0141 | - | - |
| 0.9954 | 7000 | 0.0139 | - | - |
@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",
}
@inproceedings{hadsell2006dimensionality,
author={Hadsell, R. and Chopra, S. and LeCun, Y.},
booktitle={2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'06)},
title={Dimensionality Reduction by Learning an Invariant Mapping},
year={2006},
volume={2},
number={},
pages={1735-1742},
doi={10.1109/CVPR.2006.100}
}