Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use swardiantara/bert-tiny-yelp-k3-fixed-euclidean with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("swardiantara/bert-tiny-yelp-k3-fixed-euclidean")
sentences = [
"If I could give this place less than one star, I would. I have no idea who gave this place high reviews but they must either own the place or be time travelers from back in the day when this place might not have sucked. The decor is tired and grimy, the place reeked of smoke, and the bartender/server was surly, to put it mildly. We went there on a Saturday night with a mind to try the Irish food. Apparently, we were out of luck. I've always thought that the secrets of restaurant success is to actually stock food for people to eat. He told us before we ordered that they had no \\\"pies\\\". No chicken pot pie, no shepherds pie, etc. So, we gamely tried to order other things. We placed our order. My wife, for example, ordered the Irish stew and he came back 5 min later telling us they were out of that and even more things for several people in our party. At that point my wife picked out a third option, ham and cabbage, only to be told again that \\\"they were out\\\". At that point, realizing that the only food to be had in the place was what was crusted on the menus, we asked to pay for our drinks and left. They actually then gave us flack for not having enough to put it on a debit card. In short, unless you like your dinner with a side of disappointment and depression, I'd probably avoid this place like the plague. Speaking of the plague, I suppose we should thank Mr. Surly for inspiring us to walk out. I only have two bathrooms at my house and would've been hard pressed to accommodate several violently ill people at once.",
"This is an older retail store. I normally have a loving relationship with Eat 'n Park, but this one just didn't hit home for me. I came during the Sunday Brunch Buffet; my friend partook, I abstained after seeing the fare. I ordered two eggs over-easy with a side of toast. Getting beyond the murky, dated feel of the store, it was actually fairly clean on the interior and in the restrooms. \\n\\nI received my food and the eggs were cooked perfectly. Maybe not a big deal for some, but you would be surprised at how often over-easy comes out over-hard or, worse, uncooked. I think the real reason I enjoy Eat 'n Park most of the time is the normal salad bar items.",
"I might be in love. This place may have just blown my last crush away! I had driven by this rather nondescript place a million times thinking, \\\"I really need to stop in there and check it out\\\". I also had a fellow, respected cocktail-connoisseur tell me I had to go here for the amazing cocktails and ambiance...that was over a year ago. So I finally mosied in on a Thursday night and was IMPRESSED. Shady's has great tunes coming out of the jukebox, great bartenders that made fantastic beverages, and quite a friendly cool crowd. For all the beer people they also have a good variety of beers. Oh and did I mention it is INEXPENSIVE! I thought they screwed something up when the bill arrived because it was so FREAKING cheap. I went back Friday and Saturday just to confirm: Shady's is indeed AWESOME.",
"Will not come back. Food is average but the service is terrible. \\n\\nThe Pho is not impressive but OK and their egg rolls are made from refrigerated product with some unrecognizable stuff inside!!\\n\\nThe service is among the worst I've ever experienced. The waitress/owner gave a face like a stone and didn't even say a word when taking our order. The only one word we got there was a \\\"Thanks\\\" when she bring the check.... Since we were the only Asian customers there and all others were getting normal service, I may have to establish an assumption that the way you are treated is correlated to your looking. Unbelievable!"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from google/bert_uncased_L-2_H-128_A-2. It maps sentences & paragraphs to a 128-dimensional dense vector space and can be used for retrieval.
SentenceTransformer(
(0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'BertModel'})
(1): Pooling({'embedding_dimension': 128, 'pooling_mode': 'mean', '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("swardiantara/bert-tiny-yelp-k3-fixed-euclidean")
# Run inference
sentences = [
"This place is absolute garbage... Half of the tees are not available, including all the grass tees. It is cash only, and they sell the last bucket at 8, despite having lights. And if you finish even a minute after 8, don't plan on getting a drink. The vending machines are sold out (of course) and they sell drinks inside, but close the drawers at 8 on the dot. There are weeds grown all over the place. I noticed some sort of batting cage, but it looks like those are out of order as well. Someone should buy this place and turn it into what it should be.",
'\\"Absolute Perfect Dining!\\"\\n\\nBoth my husband and I ate at this restaurant on the fourth of July and were amazed at the views and all the firework displays all over Las Vegas. What a spectacular view this restaurant provided. The food, ambiance and service were superb. If you want to try something fun for dessert, try the three scoops of sorbet (raspberry, mango and orange) with mint and crystalized sugar. What a treat! Make sure you share this dessert as it is very large. In fact, everything they serve is large so make sure you have an appetite. We enjoyed ourselves and will definitely return. \\n\\n\\nVisited July 2013',
"This is an older retail store. I normally have a loving relationship with Eat 'n Park, but this one just didn't hit home for me. I came during the Sunday Brunch Buffet; my friend partook, I abstained after seeing the fare. I ordered two eggs over-easy with a side of toast. Getting beyond the murky, dated feel of the store, it was actually fairly clean on the interior and in the restrooms. \\n\\nI received my food and the eggs were cooked perfectly. Maybe not a big deal for some, but you would be surprised at how often over-easy comes out over-hard or, worse, uncooked. I think the real reason I enjoy Eat 'n Park most of the time is the normal salad bar items.",
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 128]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.9956, 0.9968],
# [0.9956, 1.0000, 0.9930],
# [0.9968, 0.9930, 1.0000]])
text_a, text_b, and label| text_a | text_b | label | |
|---|---|---|---|
| type | string | string | list |
| modality | text | text | |
| details |
|
|
|
| text_a | text_b | label |
|---|---|---|
dr. goldberg offers everything i look for in a general practitioner. he's nice and easy to talk to without being patronizing; he's always on time in seeing his patients; he's affiliated with a top-notch hospital (nyu) which my parents have explained to me is very important in case something happens and you need surgery; and you can get referrals to see specialists without having to see him first. really, what more do you need? i'm sitting here trying to think of any complaints i have about him, but i'm really drawing a blank. |
I might be in love. This place may have just blown my last crush away! I had driven by this rather nondescript place a million times thinking, "I really need to stop in there and check it out". I also had a fellow, respected cocktail-connoisseur tell me I had to go here for the amazing cocktails and ambiance...that was over a year ago. So I finally mosied in on a Thursday night and was IMPRESSED. Shady's has great tunes coming out of the jukebox, great bartenders that made fantastic beverages, and quite a friendly cool crowd. For all the beer people they also have a good variety of beers. Oh and did I mention it is INEXPENSIVE! I thought they screwed something up when the bill arrived because it was so FREAKING cheap. I went back Friday and Saturday just to confirm: Shady's is indeed AWESOME. |
[1.0, 0.0] |
dr. goldberg offers everything i look for in a general practitioner. he's nice and easy to talk to without being patronizing; he's always on time in seeing his patients; he's affiliated with a top-notch hospital (nyu) which my parents have explained to me is very important in case something happens and you need surgery; and you can get referrals to see specialists without having to see him first. really, what more do you need? i'm sitting here trying to think of any complaints i have about him, but i'm really drawing a blank. |
No, it's not worth it! Bellagio overcharged me and their accounting department never got back to me (I asked them for an itemized receipt 2 weeks ago). When I called them, I was (twice!) put on this music-less "dead" hold for 30-40 minutes. They're so full of themselves, they don't provide good customer service. Their wi-fi needed fixing when I stayed there. And by the way, the woman at the buffet was super rude to me. Finally, the famous waterworks never happened while I was standing outside in the cold waiting (though i asked the staff and they said they're up and running). No, don't waste your money! I won't and won't let my family and friends do that either. |
[0.0, 1.0] |
dr. goldberg offers everything i look for in a general practitioner. he's nice and easy to talk to without being patronizing; he's always on time in seeing his patients; he's affiliated with a top-notch hospital (nyu) which my parents have explained to me is very important in case something happens and you need surgery; and you can get referrals to see specialists without having to see him first. really, what more do you need? i'm sitting here trying to think of any complaints i have about him, but i'm really drawing a blank. |
Lidia, you should be ashamed! This spot wouldn't have lasted a year in NYC. Citizens of Pittsburgh, don't be fooled. Lidia's is average at best. I ate here when it opened,a and again 4 years later. Nothing has changed. We did have some great bar nibbles, quality cocktails, and a good bottle of wine off of a pretty good list, but the food and service lacked. For starters we were served ice cold meatballs and limp soggy salads. The took away everything and only brought back fresh salads (mind you, we were one of about 10 tables being served that evening!). The entrees were dull and lacked seasoning. The servers were confused (how many times does it take to ask fro fresh pepper?) and our waiter seemed to hand off our table to another server. It's tough to find anything good here. Just another 'poser'. |
[0.0, 1.0] |
main.OrdinalProxyContrastiveLossper_device_train_batch_size: 1024learning_rate: 1e-05load_best_model_at_end: Trueper_device_train_batch_size: 1024num_train_epochs: 3max_steps: -1learning_rate: 1e-05lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_steps: 0optim: adamw_torchoptim_args: Noneweight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08optim_target_modules: Nonegradient_accumulation_steps: 1average_tokens_across_devices: Truemax_grad_norm: 1.0label_smoothing_factor: 0.0bf16: Falsefp16: Falsebf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Nonetorch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneuse_liger_kernel: Falseliger_kernel_config: Noneuse_cache: Falseneftune_noise_alpha: Nonetorch_empty_cache_steps: Noneauto_find_batch_size: Falselog_on_each_node: Truelogging_nan_inf_filter: Trueinclude_num_input_tokens_seen: nolog_level: passivelog_level_replica: warningdisable_tqdm: Falseproject: huggingfacetrackio_space_id: Nonetrackio_bucket_id: Nonetrackio_static_space_id: Noneper_device_eval_batch_size: 8prediction_loss_only: Trueeval_on_start: Falseeval_do_concat_batches: Trueeval_use_gather_object: Falseeval_accumulation_steps: Noneinclude_for_metrics: []batch_eval_metrics: Falsesave_only_model: Falsesave_on_each_node: Falseenable_jit_checkpoint: Falsepush_to_hub: Falsehub_private_repo: Nonehub_model_id: Nonehub_strategy: every_savehub_always_push: Falsehub_revision: Noneload_best_model_at_end: Trueignore_data_skip: Falserestore_callback_states_from_checkpoint: Falsefull_determinism: Falseseed: 42data_seed: Noneuse_cpu: Falseaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedataloader_drop_last: Falsedataloader_num_workers: 0dataloader_pin_memory: Truedataloader_persistent_workers: Falsedataloader_prefetch_factor: Noneremove_unused_columns: Truelabel_names: Nonetrain_sampling_strategy: randomlength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falseddp_static_graph: Noneddp_backend: Noneddp_timeout: 1800fsdp: Nonefsdp_config: Nonedeepspeed: Nonedebug: []skip_memory_metrics: Truedo_predict: Falseresume_from_checkpoint: Nonewarmup_ratio: Nonelocal_rank: -1prompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss |
|---|---|---|
| 0.0673 | 500 | 0.2328 |
| 0.1346 | 1000 | 0.0745 |
| 0.2020 | 1500 | 0.0679 |
| 0.2693 | 2000 | 0.0652 |
| 0.3366 | 2500 | 0.0630 |
| 0.4039 | 3000 | 0.0613 |
| 0.4713 | 3500 | 0.0604 |
| 0.5386 | 4000 | 0.0589 |
| 0.6059 | 4500 | 0.0588 |
| 0.6732 | 5000 | 0.0578 |
| 0.7405 | 5500 | 0.0573 |
| 0.8079 | 6000 | 0.0570 |
| 0.8752 | 6500 | 0.0568 |
| 0.9425 | 7000 | 0.0561 |
| 1.0 | 7427 | - |
| 1.0098 | 7500 | 0.0564 |
| 1.0772 | 8000 | 0.0556 |
| 1.1445 | 8500 | 0.0561 |
| 1.2118 | 9000 | 0.0557 |
| 1.2791 | 9500 | 0.0551 |
| 1.3464 | 10000 | 0.0547 |
| 1.4138 | 10500 | 0.0549 |
| 1.4811 | 11000 | 0.0549 |
| 1.5484 | 11500 | 0.0548 |
| 1.6157 | 12000 | 0.0546 |
| 1.6830 | 12500 | 0.0540 |
| 1.7504 | 13000 | 0.0546 |
| 1.8177 | 13500 | 0.0541 |
| 1.8850 | 14000 | 0.0542 |
| 1.9523 | 14500 | 0.0540 |
| 2.0 | 14854 | - |
| 2.0197 | 15000 | 0.0537 |
| 2.0870 | 15500 | 0.0541 |
| 2.1543 | 16000 | 0.0543 |
| 2.2216 | 16500 | 0.0537 |
| 2.2889 | 17000 | 0.0540 |
| 2.3563 | 17500 | 0.0540 |
| 2.4236 | 18000 | 0.0540 |
| 2.4909 | 18500 | 0.0535 |
| 2.5582 | 19000 | 0.0536 |
| 2.6256 | 19500 | 0.0533 |
| 2.6929 | 20000 | 0.0535 |
| 2.7602 | 20500 | 0.0536 |
| 2.8275 | 21000 | 0.0532 |
| 2.8948 | 21500 | 0.0534 |
| 2.9622 | 22000 | 0.0539 |
| 3.0 | 22281 | - |
@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",
}
Base model
google/bert_uncased_L-2_H-128_A-2