Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 14
How to use stel42/bs-faq-mpnet-basev2-finetuned with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("stel42/bs-faq-mpnet-basev2-finetuned")
sentences = [
"cara registrasi medical check up gimana?",
"Pendaftaran MCU / Medical Check Up dapat dilakukan melalui Website https://www.siloamhospitals.com/MCU, melalui menu 'Medical Check Up' di aplikasi MySiloam, melalui Contact Center dengan menghubungi nomor 1-500-911 atau dengan ketik 'Live Agent'.",
"Lokasi tes laboratorium atau radiologi akan berbeda di setiap unit dan bisa langsung mengacu kepada petunjuk yang ada di rumah sakit.",
"Lokasinya di Jl. Cinere Raya No. 19 Puri Cinere, Depok"
]
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. 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("stel42/bs-faq-mpnet-basev2-finetuned")
# Run inference
queries = [
"RSUSW itu singkatan dari apa?",
]
documents = [
'RSU Syubbanul Wathon adalah kepanjangan dari RSUSW',
'Lokasinya di Jl. Magelang - Kopeng km 08 Tegalrejo Kabupaten Magelang 56192',
'Nama lain Siloam Hospitals Bangka Belitung adalah SHBB atau Siloam Pangkalan Baru',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 768] [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[0.8722, 0.2129, 0.0839]])
faq-testTripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 1.0 |
query, answer_positive, and answer_negative| query | answer_positive | answer_negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| query | answer_positive | answer_negative |
|---|---|---|
RS Jantung Diagram Cinere punya sebutan lain? |
Nama lain RS Jantung Diagram Cinere adalah SHCN atau Siloam Cinere |
Lokasinya di Jl. Kompol Maksum No.296, Peterongan, Kec. Semarang Sel., Kota Semarang, Jawa Tengah 50242 |
aplikasi mysiloam itu fungsinya apa |
Aplikasi MySiloam adalah aplikasi mobile untuk membantu pengguna menikmati kemudahan layanan kesehatan yang disediakan oleh Rumah Sakit Siloam. Beberapa fitur yang sudah membantu banyak orang adalah, pembuatan janji temu dokter, pemesanan tes dan layanan kesehatan, emergency, dan ambulance call. |
Lokasinya di JL. Mampang Prapatan XVI, Kel. Duren Tiga, Kec. Pancoran, Kota Adm. Jakarta Selatan, Prov. DKI Jakarta |
Mau ke Siloam Surabaya, alamatnya apa? |
Lokasinya di Jl. Raya Gubeng No.70, Gubeng, Kec. Gubeng, Kota SBY, Jawa Timur 60281 |
Ya, Anda dapat menanyakan kepada staff registrasi kami untuk mendapatkan perkiraan biaya sebelum perawatan Anda. Harap dicatat bahwa ada kemungkinan bahwa perkiraan biaya yang diberikan berbeda dari biaya akhir. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
query, answer_positive, and answer_negative| query | answer_positive | answer_negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| query | answer_positive | answer_negative |
|---|---|---|
SHPL ada di jalan apa? |
Lokasinya di Jl. POM IX, Lorok Pakjo, Kec. Ilir Bar. I, Kota Palembang, Sumatera Selatan 30137 |
Pendaftaran MCU / Medical Check Up melalui Pembayaran pada pendaftaran MCU / Medical Check Up dapat dilakukan dengan transfer ke rekening Bank, Credit Card, dan pembayaran cash pada saat melakukan registrasi. |
Dimana Siloam TB Simatupang? |
Lokasinya di Jl. RA. Kartini No. 8, Cilandak Jakarta Selatan |
Lama waktu yang dibutuhkan untuk menjalankan MCU / Medical Check Up sekitar 2-6 jam tergantung dari jenis paket pemeriksaan yang dijalankan. |
siloam putera bahagia disebut apa lagi? |
Nama lain Siloam Hospitals Putera Bahagia adalah SHCB atau Siloam Harjamukti |
Lokasinya di Jl. Kelapa Dua Raya No.1001, Klp. Dua, Kec. Klp. Dua, Kabupaten Tangerang, Banten 15810 |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
eval_strategy: stepsper_device_train_batch_size: 16learning_rate: 2e-05num_train_epochs: 10warmup_ratio: 0.1batch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 8per_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: 10max_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: Falsefp16_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}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_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: no_duplicatesmulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | Validation Loss | faq-test_cosine_accuracy |
|---|---|---|---|---|
| 0.2941 | 100 | 0.9634 | - | - |
| 0.5882 | 200 | 0.2638 | 0.1916 | - |
| 0.8824 | 300 | 0.1286 | - | - |
| 1.1765 | 400 | 0.0794 | 0.0689 | - |
| 1.4706 | 500 | 0.0314 | - | - |
| 1.7647 | 600 | 0.0236 | 0.0228 | - |
| 2.0588 | 700 | 0.0178 | - | - |
| 2.3529 | 800 | 0.0127 | 0.0207 | - |
| 2.6471 | 900 | 0.0112 | - | - |
| 2.9412 | 1000 | 0.0061 | 0.0268 | - |
| 0.5882 | 100 | 0.0189 | - | - |
| 1.1765 | 200 | 0.0173 | 0.0289 | - |
| 1.7647 | 300 | 0.0235 | - | - |
| 2.3529 | 400 | 0.0148 | 0.0212 | - |
| 2.9412 | 500 | 0.0111 | - | - |
| 3.5294 | 600 | 0.0099 | 0.0209 | - |
| 4.1176 | 700 | 0.0093 | - | - |
| 4.7059 | 800 | 0.0102 | 0.0247 | - |
| 5.2941 | 900 | 0.0076 | - | - |
| 5.8824 | 1000 | 0.0038 | 0.0148 | - |
| 6.4706 | 1100 | 0.0073 | - | - |
| 7.0588 | 1200 | 0.0031 | 0.0262 | - |
| 7.6471 | 1300 | 0.0045 | - | - |
| 8.2353 | 1400 | 0.0048 | 0.0235 | - |
| 8.8235 | 1500 | 0.0042 | - | - |
| 9.4118 | 1600 | 0.0052 | 0.0216 | - |
| 10.0 | 1700 | 0.0086 | - | - |
| -1 | -1 | - | - | 1.0 |
@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