Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use Cloyne/sup-SimCSE-VietNamese-phobert-base with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Cloyne/sup-SimCSE-VietNamese-phobert-base")
sentences = [
"Chủ tịch Ủy ban nhân dân xã có quyền ra quyết định cưỡng chế tháo dỡ công trình xây dựng trên đất nông nghiệp khi chưa chuyển mục đích sử dụng đất hay không?",
"Đối tượng, điều kiện kéo dài tuổi phục vụ tại ngũ\n1. Đối tượng:\na) Quân nhân chuyên nghiệp có trình độ cao đẳng trở lên đang đảm nhiệm các chức danh: Kỹ thuật viên, Nhân viên Kỹ thuật, Huấn luyện viên, Nghệ sĩ, Nhạc sĩ, Diễn viên làm việc đúng chuyên ngành đào tạo ở các cơ sở nghiên cứu, nhà trường, bệnh viện, trung tâm thể dục thể thao, đoàn nghệ thuật, nhà máy, doanh nghiệp quốc phòng; đơn vị đóng quân ở địa bàn vùng sâu, vùng xa, biên giới, hải đảo.\nb) Quân nhân chuyên nghiệp đang làm việc thuộc các chuyên ngành hẹp được đào tạo công phu hoặc chuyên ngành Quân đội chưa đào tạo được; thợ bậc cao.\nc) Quân nhân chuyên nghiệp đang đảm nhiệm chức vụ chỉ huy, quản lý ở các nhà máy, doanh nghiệp quốc phòng.\nd) Quân nhân chuyên nghiệp không thuộc đối tượng quy định tại điểm a, điểm b, điểm c khoản này do Bộ trưởng Bộ Quốc phòng quyết định.\n2. Điều kiện:\nQuân nhân chuyên nghiệp thuộc đối tượng quy định tại khoản 1 Điều này được kéo dài tuổi phục vụ tại ngũ khi có đủ các điều kiện sau:\na) Đơn vị có biên chế và nhu cầu sử dụng;\nb) Hết hạn tuổi phục vụ tại ngũ cao nhất theo cấp bậc quân hàm quy định tại khoản 2 Điều 17 Luật Quân nhân chuyên nghiệp, công nhân và viên chức quốc phòng; chưa có người thay thế; tự nguyện tiếp tục phục vụ tại ngũ;\nc) Có đủ phẩm chất chính trị, đạo đức, sức khỏe để hoàn thành nhiệm vụ được giao;\nd) Có trình độ chuyên môn kỹ thuật, nghiệp vụ giỏi; tay nghề cao; chất lượng, hiệu quả công tác tốt.",
"Thi hành quyết định cưỡng chế\n1. Người ra quyết định cưỡng chế có trách nhiệm gửi ngay quyết định cưỡng chế cho các cá nhân, tổ chức liên quan và tổ chức thực hiện việc cưỡng chế thi hành quyết định xử phạt của mình và của cấp dưới.\n...\"",
"Trình tự, thủ tục đăng ký tài khoản định danh điện tử đối với công dân Việt Nam\n1. Đăng ký tài khoản định danh điện tử mức độ 1 qua ứng dụng VNelD đối với công dân đã có thẻ Căn cước công dân gắn chíp điện tử\na) Công dân sử dụng thiết bị di động tải và cài đặt ứng dụng VNelD.\nb) Công dân sử dụng ứng dụng VNelD để nhập thông tin về số định danh cá nhân và số điện thoại hoặc địa chỉ thư điện tử; cung cấp các thông tin theo hướng dẫn trên ứng dụng VNelD; thu nhận ảnh chân dung bằng thiết bị di động và gửi yêu cầu đề nghị cấp tài khoản định danh điện tử tới cơ quan quản lý định danh và xác thực điện tử qua ứng dụng VNelD.\nc) Cơ quan quản lý định danh điện tử thông báo kết quả đăng ký tài khoản qua ứng dụng VNelD hoặc tin nhắn SMS hoặc địa chỉ thư điện tử.\n2. Đăng ký tài khoản định danh điện tử mức độ 2\na) Đối với công dân đã được cấp thẻ Căn cước công dân gắn chíp điện tử:\nCông dân đến Công an xã, phường, thị trấn hoặc nơi làm thủ tục cấp thẻ Căn cước công dân để làm thủ tục cấp tài khoản định danh điện tử. Công dân xuất trình thẻ Căn cước công dân gắn chíp điện tử, cung cấp thông tin về số điện thoại hoặc địa chỉ thư điện tử và đề nghị bổ sung thông tin được tích hợp vào tài khoản định danh điện tử.\nCán bộ tiếp nhận nhập thông tin công dân cung cấp vào hệ thống định danh và xác thực điện tử; chụp ảnh chân dung, thu nhận vân tay của công dân đến làm thủ tục để xác thực với Cơ sở dữ liệu căn cước công dân và khẳng định sự đồng ý đăng ký tạo lập tài khoản định danh điện tử.\nCơ quan quản lý định danh điện tử thông báo kết quả đăng ký tài khoản qua ứng dụng VNelD hoặc tin nhắn SMS hoặc địa chỉ thư điện tử.\nb) Cơ quan Công an tiến hành cấp tài khoản định danh điện tử mức độ 2 cùng với cấp thẻ Căn cước công dân với trường hợp công dân chưa được cấp Căn cước công dân gắn chíp điện tử."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from VoVanPhuc/sup-SimCSE-VietNamese-phobert-base on the csv 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': 256, '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("Cloyne/SimCSE-finetuned-vietnamese-legal-documents")
# Run inference
sentences = [
'NLĐ ký nhiều hợp đồng lao động thì đóng BHYT như thế nào?',
'"Sửa đổi, bổ sung một số điều của Luật bảo hiểm y tế:\n...\n6. Sửa đổi, bổ sung Điều 12 như sau:\n“Điều 12. Đối tượng tham gia bảo hiểm y tế\n1. Nhóm do người lao động và người sử dụng lao động đóng, bao gồm:\na) Người lao động làm việc theo hợp đồng lao động không xác định thời hạn, hợp đồng lao động có thời hạn từ đủ 3 tháng trở lên; người lao động là người quản lý doanh nghiệp hưởng tiền lương; cán bộ, công chức, viên chức (sau đây gọi chung là người lao động);\nb) Người hoạt động không chuyên trách ở xã, phường, thị trấn theo quy định của pháp luật.=\n...\n4. Nhóm được ngân sách nhà nước hỗ trợ mức đóng, bao gồm:\na) Người thuộc hộ gia đình cận nghèo;\nb) Học sinh, sinh viên.\n5. Nhóm tham gia bảo hiểm y tế theo hộ gia đình gồm những người thuộc hộ gia đình, trừ đối tượng quy định tại các khoản 1, 2, 3 và 4 Điều này.\n6. Chính phủ quy định các đối tượng khác ngoài các đối tượng quy định tại các khoản 3, 4 và 5 Điều này; quy định việc cấp thẻ bảo hiểm y tế đối với đối tượng do Bộ Quốc phòng, Bộ Công an quản lý và đối tượng quy định tại điểm 1 khoản 3 Điều này; quy định lộ trình thực hiện bảo hiểm y tế, phạm vi quyền lợi, mức hưởng bảo hiểm y tế, khám bệnh, chữa bệnh bảo hiểm y tế, quản lý, sử dụng phần kinh phí dành cho khám bệnh, chữa bệnh bảo hiểm y tế, giám định bảo hiểm y tế, thanh toán, quyết toán bảo hiểm y tế đối với các đối tượng quy định tại điểm a khoản 3 Điều này.”',
'Hồ sơ, thủ tục xác định trường hợp được bồi thường\n[...]\n3. Trong thời hạn 05 ngày làm việc, kể từ ngày nhận được đơn và các giấy tờ hợp lệ, nếu xác định yêu cầu thuộc trách nhiệm giải quyết của mình thì Sở Y tế phải thụ lý và thông báo bằng văn bản về việc thụ lý đơn cho người bị thiệt hại hoặc thân nhân của người bị thiệt hại (sau đây gọi tắt là người bị thiệt hại). Trường hợp hồ sơ không đầy đủ thì Sở Y tế có văn bản hướng dẫn người bị thiệt hại bổ sung.\n4. Trong thời hạn 15 ngày, kể từ ngày nhận được đơn yêu cầu của người bị thiệt hại, Sở Y tế phải hoàn thành việc xác định nguyên nhân gây tai biến, mức độ tổn thương và thông báo bằng văn bản cho người yêu cầu đồng thời báo cáo Bộ Y tế.',
]
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]
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Nội dung lồng ghép vấn đề bình đẳng giới trong xây dựng văn bản quy phạm pháp luật được quy định thế nào? |
Nội dung lồng ghép vấn đề bình đẳng giới trong xây dựng văn bản quy phạm pháp luật |
Điều kiện để giáo viên trong cơ sở giáo dục mầm non, tiểu học ngoài công lập bị ảnh hưởng bởi Covid-19 được hưởng chính sách hỗ trợ là gì? |
Điều kiện được hưởng |
Nguyên tắc áp dụng phụ cấp ưu đãi nghề y tế thế nào? |
Nguyên tắc áp dụng |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Toà án cấp nào có thẩm quyền giải quyết việc đòi tài sản đã cho người khác vay theo hợp đồng cho vay? |
"Điều 35. Thẩm quyền của Tòa án nhân dân cấp huyện |
Những phiếu bầu nào được xem là không hợp lệ? |
Phiếu bầu không hợp lệ |
Đề nghị tạm đình chỉ chấp hành quyết định áp dụng biện pháp đưa vào trường giáo dưỡng cho học sinh cần đảm bảo nguyên tắc gì? |
Nguyên tắc xét duyệt, đề nghị giảm thời hạn, tạm đình chỉ chấp hành quyết định, miễn chấp hành phần thời gian còn lại cho học sinh trường giáo dưỡng, trại viên cơ sở giáo dục bắt buộc |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 32num_train_epochs: 4warmup_ratio: 0.1fp16: Truebatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 16per_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: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 4max_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: Falseuse_liger_kernel: Falseeval_use_gather_object: Falsebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | train loss |
|---|---|---|---|
| 0.0665 | 500 | 0.2809 | 0.2215 |
| 0.1331 | 1000 | 0.1307 | 0.1547 |
| 0.1996 | 1500 | 0.0978 | 0.1366 |
| 0.2662 | 2000 | 0.1054 | 0.1221 |
| 0.3327 | 2500 | 0.0824 | 0.1215 |
| 0.3993 | 3000 | 0.0776 | 0.1223 |
| 0.4658 | 3500 | 0.0797 | 0.1161 |
| 0.5323 | 4000 | 0.0774 | 0.1070 |
| 0.5989 | 4500 | 0.0661 | 0.1007 |
| 0.6654 | 5000 | 0.059 | 0.0945 |
| 0.7320 | 5500 | 0.0674 | 0.0889 |
| 0.7985 | 6000 | 0.0495 | 0.0783 |
| 0.8651 | 6500 | 0.0587 | 0.0822 |
| 0.9316 | 7000 | 0.0585 | 0.0868 |
| 0.9981 | 7500 | 0.0482 | 0.0733 |
| 1.0647 | 8000 | 0.0459 | 0.0786 |
| 1.1312 | 8500 | 0.0487 | 0.0691 |
| 1.1978 | 9000 | 0.0335 | 0.0719 |
| 1.2643 | 9500 | 0.0365 | 0.0711 |
| 1.3308 | 10000 | 0.0279 | 0.0668 |
| 1.3974 | 10500 | 0.0235 | 0.0675 |
| 1.4639 | 11000 | 0.0206 | 0.0599 |
| 1.5305 | 11500 | 0.0175 | 0.0653 |
| 1.5970 | 12000 | 0.0144 | 0.0664 |
| 1.6636 | 12500 | 0.0167 | 0.0598 |
| 1.7301 | 13000 | 0.0173 | 0.0583 |
| 1.7966 | 13500 | 0.0127 | 0.0540 |
| 1.8632 | 14000 | 0.0164 | 0.0595 |
| 1.9297 | 14500 | 0.014 | 0.0552 |
| 1.9963 | 15000 | 0.0114 | 0.0535 |
| 2.0628 | 15500 | 0.0097 | 0.0552 |
| 2.1294 | 16000 | 0.0111 | 0.0549 |
| 2.1959 | 16500 | 0.0076 | 0.0544 |
| 2.2624 | 17000 | 0.009 | 0.0589 |
| 2.3290 | 17500 | 0.0084 | 0.0543 |
| 2.3955 | 18000 | 0.0049 | 0.0520 |
| 2.4621 | 18500 | 0.0068 | 0.0505 |
| 2.5286 | 19000 | 0.0037 | 0.0489 |
| 2.5952 | 19500 | 0.0031 | 0.0461 |
| 2.6617 | 20000 | 0.0041 | 0.0496 |
| 2.7282 | 20500 | 0.0051 | 0.0464 |
| 2.7948 | 21000 | 0.0029 | 0.0475 |
| 2.8613 | 21500 | 0.0032 | 0.0458 |
| 2.9279 | 22000 | 0.003 | 0.0449 |
| 2.9944 | 22500 | 0.0035 | 0.0458 |
| 3.0610 | 23000 | 0.0033 | 0.0443 |
| 3.1275 | 23500 | 0.0032 | 0.0416 |
| 3.1940 | 24000 | 0.002 | 0.0449 |
| 3.2606 | 24500 | 0.0022 | 0.0447 |
| 3.3271 | 25000 | 0.0017 | 0.0430 |
| 3.3937 | 25500 | 0.002 | 0.0418 |
| 3.4602 | 26000 | 0.0019 | 0.0415 |
| 3.5268 | 26500 | 0.0008 | 0.0406 |
| 3.5933 | 27000 | 0.0007 | 0.0414 |
| 3.6598 | 27500 | 0.0008 | 0.0416 |
| 3.7264 | 28000 | 0.0011 | 0.0418 |
| 3.7929 | 28500 | 0.0006 | 0.0416 |
| 3.8595 | 29000 | 0.0005 | 0.0417 |
| 3.9260 | 29500 | 0.0007 | 0.0413 |
| 3.9925 | 30000 | 0.0008 | 0.0412 |
@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
VoVanPhuc/sup-SimCSE-VietNamese-phobert-base