Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 17
How to use DivyaMereddy007/RecipeBert_v5originalCopy_of_TrainSetenceTransforme-Finetuning_v5_DistilledBert with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("DivyaMereddy007/RecipeBert_v5originalCopy_of_TrainSetenceTransforme-Finetuning_v5_DistilledBert")
sentences = [
"Cheeseburger Potato Soup [\"6 baking potatoes\", \"1 lb. of extra lean ground beef\", \"2/3 c. butter or margarine\", \"6 c. milk\", \"3/4 tsp. salt\", \"1/2 tsp. pepper\", \"1 1/2 c (6 oz.) shredded Cheddar cheese, divided\", \"12 sliced bacon, cooked, crumbled and divided\", \"4 green onion, chopped and divided\", \"1 (8 oz.) carton sour cream (optional)\"] [\"Wash potatoes; prick several times with a fork.\", \"Microwave them with a wet paper towel covering the potatoes on high for 6-8 minutes.\", \"The potatoes should be soft, ready to eat.\", \"Let them cool enough to handle.\", \"Cut in half lengthwise; scoop out pulp and reserve.\", \"Discard shells.\", \"Brown ground beef until done.\", \"Drain any grease from the meat.\", \"Set aside when done.\", \"Meat will be added later.\", \"Melt butter in a large kettle over low heat; add flour, stirring until smooth.\", \"Cook 1 minute, stirring constantly. Gradually add milk; cook over medium heat, stirring constantly, until thickened and bubbly.\", \"Stir in potato, ground beef, salt, pepper, 1 cup of cheese, 2 tablespoons of green onion and 1/2 cup of bacon.\", \"Cook until heated (do not boil).\", \"Stir in sour cream if desired; cook until heated (do not boil).\", \"Sprinkle with remaining cheese, bacon and green onions.\"]",
"Nolan'S Pepper Steak [\"1 1/2 lb. round steak (1-inch thick), cut into strips\", \"1 can drained tomatoes, cut up (save liquid)\", \"1 3/4 c. water\", \"1/2 c. onions\", \"1 1/2 Tbsp. Worcestershire sauce\", \"2 green peppers, diced\", \"1/4 c. oil\"] [\"Roll steak strips in flour.\", \"Brown in skillet.\", \"Salt and pepper.\", \"Combine tomato liquid, water, onions and browned steak. Cover and simmer for one and a quarter hours.\", \"Uncover and stir in Worcestershire sauce.\", \"Add tomatoes, green peppers and simmer for 5 minutes.\", \"Serve over hot cooked rice.\"]",
"Fresh Strawberry Pie [\"1 baked pie shell\", \"1 qt. cleaned strawberries\", \"1 1/2 c. water\", \"4 Tbsp. cornstarch\", \"1 c. sugar\", \"1/8 tsp. salt\", \"4 Tbsp. strawberry jello\"] [\"Mix water, cornstarch, sugar and salt in saucepan.\", \"Stir constantly and boil until thick and clear.\", \"Remove from heat and stir in jello.\", \"Set aside to cool.\", \"But don't allow it to set. Layer strawberries in baked crust.\", \"Pour cooled glaze over. Continue layering berries and glaze.\", \"Refrigerate.\", \"Serve with whipped cream.\"]",
"Vegetable-Burger Soup [\"1/2 lb. ground beef\", \"2 c. water\", \"1 tsp. sugar\", \"1 pkg. Cup-a-Soup onion soup mix (dry)\", \"1 lb. can stewed tomatoes\", \"1 (8 oz.) can tomato sauce\", \"1 (10 oz.) pkg. frozen mixed vegetables\"] [\"Lightly brown beef in soup pot.\", \"Drain off excess fat.\", \"Stir in tomatoes, tomato sauce, water, frozen vegetables, soup mix and sugar.\", \"Bring to a boil.\", \"Reduce heat and simmer for 20 minutes. Serve.\"]"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from sentence-transformers/distilbert-base-nli-mean-tokens. 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': 128, 'do_lower_case': False}) with Transformer model: DistilBertModel
(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("DivyaMereddy007/RecipeBert_v5originalCopy_of_TrainSetenceTransforme-Finetuning_v5_DistilledBert")
# Run inference
sentences = [
'Watermelon Rind Pickles ["7 lb. watermelon rind", "7 c. sugar", "2 c. apple vinegar", "1/2 tsp. oil of cloves", "1/2 tsp. oil of cinnamon"] ["Trim off green and pink parts of watermelon rind; cut to 1-inch cubes.", "Parboil until tender, but not soft.", "Drain. Combine sugar, vinegar, oil of cloves and oil of cinnamon; bring to boiling and pour over rind.", "Let stand overnight.", "In the morning, drain off syrup.", "Heat and put over rind.", "The third morning, heat rind and syrup; seal in hot, sterilized jars.", "Makes 8 pints.", "(Oil of cinnamon and clove keeps rind clear and transparent.)"]',
'Summer Chicken ["1 pkg. chicken cutlets", "1/2 c. oil", "1/3 c. red vinegar", "2 Tbsp. oregano", "2 Tbsp. garlic salt"] ["Double recipe for more chicken."]',
'Summer Spaghetti ["1 lb. very thin spaghetti", "1/2 bottle McCormick Salad Supreme (seasoning)", "1 bottle Zesty Italian dressing"] ["Prepare spaghetti per package.", "Drain.", "Melt a little butter through it.", "Marinate overnight in Salad Supreme and Zesty Italian dressing.", "Just before serving, add cucumbers, tomatoes, green peppers, mushrooms, olives or whatever your taste may want."]',
]
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]
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
Cheeseburger Potato Soup ["6 baking potatoes", "1 lb. of extra lean ground beef", "2/3 c. butter or margarine", "6 c. milk", "3/4 tsp. salt", "1/2 tsp. pepper", "1 1/2 c (6 oz.) shredded Cheddar cheese, divided", "12 sliced bacon, cooked, crumbled and divided", "4 green onion, chopped and divided", "1 (8 oz.) carton sour cream (optional)"] ["Wash potatoes; prick several times with a fork.", "Microwave them with a wet paper towel covering the potatoes on high for 6-8 minutes.", "The potatoes should be soft, ready to eat.", "Let them cool enough to handle.", "Cut in half lengthwise; scoop out pulp and reserve.", "Discard shells.", "Brown ground beef until done.", "Drain any grease from the meat.", "Set aside when done.", "Meat will be added later.", "Melt butter in a large kettle over low heat; add flour, stirring until smooth.", "Cook 1 minute, stirring constantly. Gradually add milk; cook over medium heat, stirring constantly, until thickened and bubbly.", "Stir in potato, ground beef, salt, pepper, 1 cup of cheese, 2 tablespoons of green onion and 1/2 cup of bacon.", "Cook until heated (do not boil).", "Stir in sour cream if desired; cook until heated (do not boil).", "Sprinkle with remaining cheese, bacon and green onions."] |
Quick Barbecue Wings ["chicken wings (as many as you need for dinner)", "flour", "barbecue sauce (your choice)"] ["Clean wings.", "Flour and fry until done.", "Place fried chicken wings in microwave bowl.", "Stir in barbecue sauce.", "Microwave on High (stir once) for 4 minutes."] |
0.5 |
Broccoli Dip For Crackers ["16 oz. sour cream", "1 pkg. dry vegetable soup mix", "10 oz. pkg. frozen chopped broccoli, thawed and drained", "4 to 6 oz. Cheddar cheese, grated"] ["Mix together sour cream, soup mix, broccoli and half of cheese.", "Sprinkle remaining cheese on top.", "Bake at 350\u00b0 for 30 minutes, uncovered.", "Serve hot with vegetable crackers."] |
Spaghetti Sauce To Can ["1/2 bushel tomatoes", "1 c. oil", "1/4 c. minced garlic", "6 cans tomato paste", "3 peppers (2 sweet and 1 hot)", "1 1/2 c. sugar", "1/2 c. salt", "1 Tbsp. sweet basil", "2 Tbsp. oregano", "1 tsp. Italian seasoning"] ["Cook ground or chopped peppers and onions in oil for 1/2 hour. Cook tomatoes and garlic as for juice.", "Put through the mill.", "(I use a food processor and do my tomatoes uncooked.", "I then add the garlic right to the juice.)", "Add peppers and onions to juice and remainder of ingredients.", "Cook approximately 1 hour.", "Put in jars and seal.", "Yields 7 quarts."] |
0.1 |
Cheeseburger Potato Soup ["6 baking potatoes", "1 lb. of extra lean ground beef", "2/3 c. butter or margarine", "6 c. milk", "3/4 tsp. salt", "1/2 tsp. pepper", "1 1/2 c (6 oz.) shredded Cheddar cheese, divided", "12 sliced bacon, cooked, crumbled and divided", "4 green onion, chopped and divided", "1 (8 oz.) carton sour cream (optional)"] ["Wash potatoes; prick several times with a fork.", "Microwave them with a wet paper towel covering the potatoes on high for 6-8 minutes.", "The potatoes should be soft, ready to eat.", "Let them cool enough to handle.", "Cut in half lengthwise; scoop out pulp and reserve.", "Discard shells.", "Brown ground beef until done.", "Drain any grease from the meat.", "Set aside when done.", "Meat will be added later.", "Melt butter in a large kettle over low heat; add flour, stirring until smooth.", "Cook 1 minute, stirring constantly. Gradually add milk; cook over medium heat, stirring constantly, until thickened and bubbly.", "Stir in potato, ground beef, salt, pepper, 1 cup of cheese, 2 tablespoons of green onion and 1/2 cup of bacon.", "Cook until heated (do not boil).", "Stir in sour cream if desired; cook until heated (do not boil).", "Sprinkle with remaining cheese, bacon and green onions."] |
Tuna Macaroni Casserole ["1 box macaroni and cheese", "1 can tuna, drained", "1 small jar pimentos", "1 medium onion, chopped"] ["Prepare macaroni and cheese as directed.", "Add drained tuna, pimento and onion.", "Mix.", "Serve hot or cold."] |
0.6 |
CosineSimilarityLoss with these parameters:{
"loss_fct": "torch.nn.modules.loss.MSELoss"
}
per_device_train_batch_size: 16per_device_eval_batch_size: 16num_train_epochs: 5multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_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: Nonelearning_rate: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1num_train_epochs: 5max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.0warmup_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: 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}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: Falsebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robin| Epoch | Step | Training Loss |
|---|---|---|
| 4.5455 | 500 | 0.0279 |
@INPROCEEDINGS{10973364,
author={Mereddy, Divya and Beedareddy, Jeevan Sai Reddy},
booktitle={2024 IEEE/WIC International Conference on Web Intelligence and Intelligent Agent Technology (WI-IAT)},
title={Enabling Next-Generation Smart Homes Through Bert Personalized Food Recommendations - RecipeBERT},
year={2024},
volume={},
number={},
pages={796-803},
keywords={Adaptation models;Analytical models;Reviews;Semantics;Smart homes;Manuals;Transformers;Recommender systems;Next generation networking;Testing;Personalized food recommendations;BERT;SBERT;RecipeBERT},
doi={10.1109/WI-IAT62293.2024.00130}}
@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",
}