Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper
•
1908.10084
•
Published
•
9
This is a sentence-transformers model finetuned from vinai/phobert-base. 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': 128, 'do_lower_case': False}) with Transformer model: RobertaModel
(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})
)
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("trongvox/phobert-semactic-retrival-food")
# Run inference
sentences = [
'Nguyên liệu: Cho 3 người\nCá mút đá 1 kg Ớt 1 muỗng canhLá chanh 20 gr Hành tím băm 2 muỗng cà phê Sa tế 2 muỗng canhDụng cụ thực hiện: Bếp nướng điện, tô, muỗng, dao,...\n\nCách làm Cá mút đá nướng sa tế:\nSơ chế cá mút đá:\nDùng một vật nhọn giữ cố định đầu của cá mút đá, sau đó dùng dao rạch phần bụng và loại bỏ hết phần ruột của cá ra.Tiếp theo dùng dao lóc thịt và bỏ phần da nhờn của cá đi. Tùy theo món ăn và kích thước cá mà chúng ta sẽ cắt thành những đoạn vừa ăn. Bên cạnh đó, bạn có thể mua cá mút đá chế biến sẵn và được giữ đông, chúng vẫn giữ được hương vị, độ tươi ngon. Đây là cách dễ dàng nhất bạn không phải tốn công chế biến cá mút đá. Mua về chỉ cần cắt nhỏ, ướp gia vị là có thể nấu được ngay.\nCách sơ chế cá sạch, hết nhớt\nCách 1: bạn hãy lấy giấm tưới lên thân cá, chờ trong vài phút để nhớt trên thân cá đông lại, lúc này bạn có thể dễ dàng dùng dao cạo hết lớp nhớt đã đông này đi đấy.Cách 2: sau khi mua cá về, dùng nước nóng già đổ lên thân cá. Chú ý không được để nước sôi vì sẽ làm tróc da và làm chín lớp cá bên ngoài đấy. Sau khi đổ đợi lớp nhớt đông lại và dùng dao cạo lớp nhớt đi sau đó rửa sạch. Để đảm bảo cá sạch nhớt, sau khi cạo cũng nên rửa lại bằng giấm hay chanh.Chú ý: Để loại bỏ nhớt, mùi tanh của cá do tiết thừa còn đọng lại khi bạn làm thịt cá, sau khi chế biến thịt thì bạn hãy rửa thật kĩ, đặc biệt là phần bụng và xương sống cá để loại bỏ máu đọng lại. Bằng cách như vậy thì cá của bạn sẽ bớt đi mùi tanh rất nhiều đấy!\nƯớp cá:\nCho cá vào tô cùng với 1 muỗng canh ớt, 20gr lá chanh, 2 muỗng cà phê hành tím băm và 2 muỗng canh sa tế. Dùng tay trộn đều cho cá thấm đều gia vị, sau đó ướp trong 15 phút.\nNướng cá:\nCho cá lên bếp nướng điện hoặc lên dĩa nướng với than, nướng đến khi cá vừa chín tới, không nướng quá chín làm cá khô, mất đi độ ngon của món ăn.\nThành phẩm: Thịt cá dai dai, gia vị đậm đà, cay cay của sa tế, nhất định sẽ gây ấn tượng cho cả gia đình bạn đấy!',
'Cá mút đá (cá ninja) nướng sa tế',
'Miến xào chả cá',
]
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]
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
Nguyên liệu: |
Thịt nai xào hành tây |
1.0 |
Là một trong những tín đồ của ăn vặt tại Di Linh mà bỏ qua Gạch Coffee thì quả là một thiếu sót lớn. Gạch Coffee có không gian nhỏ xinh, thích hợp với các bạn tuổi teen, lại có vị trí đắc địa ngay giữa trung tâm thị trấn Di Linh nên đây là một trong những địa điểm hẹn hò thường xuyên của các nhóm bạn thân trong những ngày rảnh rỗi. |
Cháo tôm, rau cải |
0.0 |
Nam o goc duong Phung Hung - Hang Bong, quan Com Tam Quan 1 noi tieng vi vi suon o day uop chuan vi Sai Gon. Khong gian quan rat sach se, co dieu hoa, thich hop de tu hop gia dinh. Do an cua Com tam Quan 1 rat chat luong va dam bao ve sinh. Neu ban chua tim duoc dia chi nhu y thi day la noi hua hen se cho ban nhieu trai nghiem an tuong. Nhan vien kha nhiet tinh va nhanh nhen, than thien va quan rat sach se va ve sinh cung la diem cong cua quan. Dia com trang tri kha don gian nhung chat luong do an cuc cao. Suat dac biet gom co suon, bi, cha, trung, dua chuot, ca rot, cu cai trang,... |
Cơm Tấm Quận 1 |
1.0 |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
per_device_train_batch_size: 16per_device_eval_batch_size: 16multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 16per_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: 3max_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: 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}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: 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: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robin| Epoch | Step | Training Loss |
|---|---|---|
| 0.2138 | 500 | 2.3128 |
| 0.4275 | 1000 | 2.0084 |
| 0.2138 | 500 | 1.7923 |
| 0.4275 | 1000 | 1.8473 |
| 0.6413 | 1500 | 1.8061 |
| 0.8551 | 2000 | 1.8079 |
@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
vinai/phobert-base