Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use phi010402/finetune-alqac-question-generation with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("phi010402/finetune-alqac-question-generation")
sentences = [
"Trong trường hợp nào nghĩa vụ không được bù trừ?",
"Bản án sơ thẩm\n\n1. Tòa án ra bản án nhân danh nước Cộng hoà xã hội chủ nghĩa Việt Nam.\n\n2. Bản án gồm có phần mở đầu, phần nội dung vụ án và nhận định và phần quyết định của Tòa án, cụ thể như sau:\n\na) Trong phần mở đầu phải ghi rõ tên Tòa án xét xử sơ thẩm; số và ngày thụ lý vụ án; số bản án và ngày tuyên án; họ, tên của thành viên Hội đồng xét xử, Thư ký phiên tòa, Kiểm sát viên, người giám định, người phiên dịch; tên, địa chỉ của người khởi kiện, người bị kiện, người có quyền lợi, nghĩa vụ liên quan; cơ quan, tổ chức khởi kiện; người đại diện hợp pháp, người bảo vệ quyền và lợi ích hợp pháp của đương sự; đối tượng khởi kiện; số, ngày, tháng, năm của quyết định đưa vụ án ra xét xử; xét xử công khai hoặc xét xử kín; thời gian và địa điểm xét xử;\n\nb) Trong phần nội dung vụ án và nhận định của Tòa án phải ghi yêu cầu khởi kiện của người khởi kiện, khởi kiện của cơ quan, tổ chức; đề nghị, yêu cầu độc lập của người có quyền lợi, nghĩa vụ liên quan.\n\nTòa án phải căn cứ vào kết quả tranh tụng, các chứng cứ đã được xem xét tại phiên tòa để phân tích, đánh giá, nhận định đầy đủ, khách quan về các tình tiết của vụ án, những căn cứ pháp luật, án lệ (nếu có) mà Tòa án áp dụng để chấp nhận hoặc không chấp nhận yêu cầu, đề nghị của đương sự, người bảo vệ quyền và lợi ích hợp pháp của đương sự và giải quyết các vấn đề khác có liên quan;\n\nc) Trong phần quyết định phải ghi rõ các căn cứ pháp luật, quyết định của Hội đồng xét xử về từng vấn đề phải giải quyết trong vụ án, về áp dụng biện pháp khẩn cấp tạm thời, về án phí, chi phí tố tụng và quyền kháng cáo đối với bản án; trường hợp có quyết định phải thi hành ngay thì phải ghi rõ quyết định đó.\n\n3. Khi xét xử lại vụ án mà bản án, quyết định đã bị hủy một phần hoặc toàn bộ theo quyết định giám đốc thẩm, tái thẩm, Tòa án phải giải quyết vấn đề tài sản, nghĩa vụ đã được thi hành theo bản án, quyết định có hiệu lực pháp luật nhưng bị hủy và ghi rõ trong bản án.",
"Thành phần Hội đồng xét xử sơ thẩm\n\nHội đồng xét xử sơ thẩm gồm một Thẩm phán và 02 Hội thẩm nhân dân, trừ trường hợp quy định tại khoản 1 Điều 249 của Luật này. Hội đồng xét xử sơ thẩm có thể gồm 02 Thẩm phán và 03 Hội thẩm nhân dân trong trường hợp sau đây:\n\n1. Khiếu kiện quyết định hành chính, hành vi hành chính của Ủy ban nhân dân cấp tỉnh, Chủ tịch Ủy ban nhân dân cấp tỉnh liên quan đến nhiều đối tượng;\n\n2. Vụ án phức tạp.",
"Những trường hợp không được bù trừ nghĩa vụ\n\nNghĩa vụ không được bù trừ trong trường hợp sau đây:\n\n1. Nghĩa vụ đang có tranh chấp;\n\n2. Nghĩa vụ bồi thường thiệt hại do xâm phạm tính mạng, sức khoẻ, danh dự, nhân phẩm, uy tín;\n\n3. Nghĩa vụ cấp dưỡng;\n\n4. Nghĩa vụ khác do luật quy định."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from truro7/vn-law-embedding. 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': 512, 'do_lower_case': False}) with Transformer model: XLMRobertaModel
(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("phi010402/finetune-alqac-question-generation")
# Run inference
sentences = [
'Công dân có quyền lựa chọn nghề nghiệp như thế nào?',
'1. Công dân có quyền làm việc, lựa chọn nghề nghiệp, việc làm và nơi làm việc.\n\n2. Người làm công ăn lương được bảo đảm các điều kiện làm việc công bằng, an toàn; được hưởng lương, chế độ nghỉ ngơi.\n\n3. Nghiêm cấm phân biệt đối xử, cưỡng bức lao động, sử dụng nhân công dưới độ tuổi lao động tối thiểu.',
'Trách nhiệm đánh giá viên chức\n\n1. Người đứng đầu đơn vị sự nghiệp công lập có trách nhiệm tổ chức việc đánh giá viên chức thuộc thẩm quyền quản lý.\n\n2. Căn cứ vào điều kiện cụ thể, người đứng đầu đơn vị sự nghiệp công lập thực hiện việc đánh giá hoặc phân công, phân cấp việc đánh giá viên chức thuộc thẩm quyền quản lý. Người được giao thẩm quyền đánh giá viên chức phải chịu trách nhiệm trước người đứng đầu đơn vị sự nghiệp công lập về kết quả đánh giá.\n\n3. Người có thẩm quyền bổ nhiệm chịu trách nhiệm đánh giá viên chức quản lý trong đơn vị sự nghiệp công lập.\n\n4. Chính phủ quy định chi tiết trình tự, thủ tục đánh giá viên chức quy định tại Điều này.',
]
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 |
|---|---|
Quyết định phê duyệt kết quả thẩm định báo cáo đánh giá tác động môi trường là căn cứ để cơ quan có thẩm quyền thực hiện việc cấp giấy phép khai thác khoáng sản đối với dự án đầu tư khai thác khoáng sản? |
Quyết định phê duyệt kết quả thẩm định báo cáo đánh giá tác động môi trường |
Các hành vi nào bị nghiêm cấm trong quá trình cung cấp thông tin? |
Các hành vi bị nghiêm cấm |
Thời hạn công khai thông báo thụ lý vụ án của Tòa án là bao lâu kể từ ngày Tòa án thụ lý? |
Công khai thông tin về vụ án dân sự về bảo vệ quyền lợi người tiêu dùng vì lợi ích công cộng do tổ chức xã hội tham gia bảo vệ quyền lợi người tiêu dùng khởi kiện |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Hạ tầng bảo vệ môi trường của làng nghề bao gồm những gì? |
Bảo vệ môi trường làng nghề |
Công nhân nào được hưởng chính sách hỗ trợ về nhà lưu trú công nhân trong khu công nghiệp? |
Đối tượng được hưởng chính sách hỗ trợ về nhà lưu trú công nhân trong khu công nghiệp |
Khi nào Chủ tọa phiên tòa hỏi các bên có yêu cầu hỏi vấn đề gì nữa không? |
Kết thúc việc hỏi tại phiên tòa |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16num_train_epochs: 10warmup_ratio: 0.1bf16: Truebatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_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: 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: Falseuse_ipex: Falsebf16: Truefp16: 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}tp_size: 0fsdp_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: 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: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | Validation Loss |
|---|---|---|---|
| 0.0091 | 1 | 0.0461 | - |
| 1.3636 | 150 | 0.0337 | 0.0103 |
| 2.7273 | 300 | 0.0118 | 0.0100 |
| 4.0909 | 450 | 0.0084 | 0.0062 |
| 5.4545 | 600 | 0.0064 | 0.0035 |
| 6.8182 | 750 | 0.0055 | 0.0044 |
| 8.1818 | 900 | 0.0023 | 0.0060 |
| 9.5455 | 1050 | 0.003 | 0.0046 |
@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
intfloat/multilingual-e5-base