Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper
•
1908.10084
•
Published
•
12
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}) with Transformer model: 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("lizchu414/mpnet-base-all-pittsburgh-squad")
# Run inference
sentences = [
'"What cultural celebration will be honored at the 2024 Greater Pittsburgh Lunar New Year Gala, and what is the significance of this event in the community?"',
'Event Name: 2024 Greater Pittsburgh Lunar New Year Gala\nCategories: Arts + Culture, Community, Holidays, Nightlife\nDates: Feb 3, 2024 - Feb 3, 2024 | 4:00 pm - 9:00 pm\nLocation: PNC Theater, 350 Forbes Avenue, Pittsburgh, PA 15222',
"This page informs City of Pittsburgh residents about the city's Snow Angels program. This page is also where volunteers can sign up, and recipients can submit a request.\nCity Collection Equity Audit\nThe City of Pittsburgh is conducting an audit to identify inequity and bias in the City’s collection of public art and memorials.\nDavis Avenue Bridge\nDesign and construction for the new Davis Avenue Bridge between Brighton Heights and Riverview Park.\nSouth Side Park Public Art\nA new public art project is being planned in South Side Park. This is being done in coordination with the park’s Phase 1 renovations and funded by the Percent For Art.\nProjects that are no longer accepting feedback, but are now in the construction or development phase.\nPHAD Projects\nCurrent Projects – find out about ongoing projects underway throughout the city and learn how to apply for new projects each year.\nEmerald View Phase I Trails & Trailheads",
]
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]
pittsburghInformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.7375 |
| cosine_accuracy@3 | 0.9038 |
| cosine_accuracy@5 | 0.9369 |
| cosine_accuracy@10 | 0.9628 |
| cosine_precision@1 | 0.7375 |
| cosine_precision@3 | 0.3013 |
| cosine_precision@5 | 0.1874 |
| cosine_precision@10 | 0.0963 |
| cosine_recall@1 | 0.7375 |
| cosine_recall@3 | 0.9038 |
| cosine_recall@5 | 0.9369 |
| cosine_recall@10 | 0.9628 |
| cosine_ndcg@10 | 0.859 |
| cosine_mrr@10 | 0.8248 |
| cosine_map@100 | 0.8263 |
| dot_accuracy@1 | 0.7375 |
| dot_accuracy@3 | 0.9038 |
| dot_accuracy@5 | 0.9369 |
| dot_accuracy@10 | 0.9628 |
| dot_precision@1 | 0.7375 |
| dot_precision@3 | 0.3013 |
| dot_precision@5 | 0.1874 |
| dot_precision@10 | 0.0963 |
| dot_recall@1 | 0.7375 |
| dot_recall@3 | 0.9038 |
| dot_recall@5 | 0.9369 |
| dot_recall@10 | 0.9628 |
| dot_ndcg@10 | 0.859 |
| dot_mrr@10 | 0.8248 |
| dot_map@100 | 0.8263 |
eval_strategy: stepsper_device_eval_batch_size: 2eval_accumulation_steps: 1learning_rate: 2e-05warmup_ratio: 0.1fp16: Truebatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 8per_device_eval_batch_size: 2per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: 1torch_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: 3max_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 | Validation Loss | pittsburgh_dot_map@100 |
|---|---|---|---|---|
| 0 | 0 | - | - | 0.5984 |
| 0.8 | 100 | 0.587 | 0.1954 | 0.7780 |
| 1.592 | 200 | 0.1828 | 0.1805 | 0.8020 |
| 2.384 | 300 | 0.2224 | 0.1605 | 0.8263 |
@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