Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 16
How to use lizchu414/mpnet-base-all-pittsburgh-squad with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("lizchu414/mpnet-base-all-pittsburgh-squad")
sentences = [
"Question: Who is the dungeon master in the Knights of the Arcade comedy show, and how are the destinations and battles decided during the performance?",
"Event Name: Knights of the Arcade: Epic D&D Adventure\nCategories: Entertainment, Nightlife\nDates: Jun 29, 2024 - Jun 29, 2024 | 9:00 pm - 10:30 pm\nLocation: Arcade Comedy Theater, 943 Liberty Ave, Pittsburgh, PA 15222\nDescription: “Best Nerd Fantasy Come to Life” by Pittsburgh Magazine“A neo-geek wet dream” – Pittsburgh City PaperA comedy quest awaits! Knights of the Arcade is an award-winning comedy show that takes audiences on a wild, madcap adventure every month. A recurring cast of characters (a dwarf, a monk, a rogue, a sorcerer and a fighter) are joined by special guests and led by their maniacal dungeon master. Where they’re going, who they fight, and if they ultimately succeed is decided upon live dice that are rolled and projected on the theater wall.",
"The Pirates are also often referred to as the \"Bucs\" or the \"Buccos\" (derived from buccaneer, a synonym for pirate). Since 2001 the team has played its home games at PNC Park, a 39,000-seat stadium along the Allegheny River in Pittsburgh's North Side. The Pirates previously played at Forbes Field from 1909 to 1970 and at Three Rivers Stadium from 1970 to 2000. Since 1948 the Pirates' colors have been black, gold and white, derived from the flag of Pittsburgh and matching the other major professional sports teams in Pittsburgh, the Steelers and the Penguins.The Pittsburgh Pirates are an American professional baseball team based in Pittsburgh. The Pirates compete in Major League Baseball (MLB) as a member club of the National League (NL) Central Division. Founded as part of the American Association in 1881 under the name Pittsburgh Alleghenys, the club joined the National League in 1887 and was a member of the National League East from 1969 through 1993. The Pirates have won five World",
"STEELERS IN THE POSTSEASON (36-30)\nYear Record Game Date Opponent Attendance Steelers Opponent Result\n2015 10-6 AFC Wild Card Game 01/09/2016 at Cincinnati 63,257 18 16 W\nAFC Divisional Playoff 01/17/2016 at Denver 79,956 16 23 L\n2016# 11-5 AFC Wild Card Game 01/08/2017 Miami 66,726 30 12 W\nAFC Divisional Playoff 01/15/2017 at Kansas City 75,678 18 16 W\nAFC Championship Game 01/22/2017 at New England 66,829 36 17 L\n2017# 13-3 AFC Divisional Playoff 01/14/2018 Jacksonville 64,524 42 45 L\n2020# 12-4 AFC Wild Card Game 01/03/2021 Cleveland - 37 48 L\n2021 9-7-1 AFC Wild Card Game 01/16/2022 at Kansas City 73,253 21 42 L\n2023 10-7 AFC Wild Card Game 01/15/202 4 at Buffalo 70,040 17 31 L\n*AFC Central Champion\n#AFC North Champion\n+AFC ChampionSTEELERS IN THE POSTSEASON\n 2023 PITTSBURGH STEELERS\n 421\n STEELERS IN THE POSTSEASON"
]
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}) 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