import streamlit as st import pandas as pd import json import numpy as np #from fuzzywuzzy import fuzz import pinecone from sentence_transformers import SentenceTransformer pinecone.init(api_key='f5112f8c-f27d-4af1-b427-0c0953c113b5', environment='asia-southeast1-gcp') #model = SentenceTransformer('all-mpnet-base-v2',device='cpu') loaded_model = SentenceTransformer(r"finetiuned_model") def process_string(s): return s.lower().replace('&', 'and') index = pinecone.Index('ingradientsearch') # Create a Streamlit app def main(): st.set_page_config(page_title="Ingradients Matching App", page_icon=":smiley:", layout="wide") st.title("Ingradients name matching App :smiley:") st.header("Matches using embeddings (semantic search)") st.write("Enter a ingradient name:") st.write("e.g. Chicken") input_string = st.text_input("") input_string = process_string(input_string) if st.button("Enter"): st.write("Top 5 matches using semantic search:") xq = model.encode([input_string]).tolist() result = index.query(xq, top_k=5, includeMetadata=True) Ingredient=[] Group=[] score=[] for matches in result['matches']: Ingredient.append(matches['metadata']['Ingredient']) #Group.append(matches['metadata']['Group']) score.append(matches['score']) final_result= pd.DataFrame(list(zip(Ingredient, Group, score)), columns =['Ingredient','score' ]) st.dataframe(final_result) if __name__ == "__main__": main()