brightly-ai / app.py
beweinreich's picture
first
9189e38
raw
history blame
No virus
1.69 kB
import gradio as gr
import pandas as pd
from algo import Algo
from db.db_utils import get_connection
db_conn = get_connection()
algo = Algo(db_conn)
# Function to process the input
def process_input(input_text, csv_file):
if csv_file is not None:
# Read the uploaded CSV file
df = pd.read_csv(csv_file.name)
# Check if 'description' column exists
if 'description' in df.columns:
descriptions = df['description'].tolist()
results = algo.match_words(descriptions)
else:
return pd.DataFrame({"Error": ["CSV file must have a 'description' column"]})
else:
# Process the single input text
results = algo.match_words([input_text])
df = pd.DataFrame(results, columns=["input_word", "cleaned_word", 'matching_word', 'dictionary_word', 'similarity_score', 'confidence_score', 'similar_words', 'is_food', 'food_nonfood_score'])
# Filter to only required columns
df_filtered = df[["input_word", "dictionary_word", "similarity_score", "is_food", "food_nonfood_score"]]
return df_filtered
# Gradio interface
with gr.Blocks() as demo:
with gr.Column():
with gr.Row():
input_text = gr.Textbox(label="Enter a food item", placeholder="e.g. apple")
csv_input = gr.File(label="Upload a CSV file (optional)")
submit_button = gr.Button("Submit")
output_table = gr.DataFrame(label="Processed Results")
input_text.submit(fn=process_input, inputs=[input_text, csv_input], outputs=output_table)
submit_button.click(fn=process_input, inputs=[input_text, csv_input], outputs=output_table)
demo.launch()
db_conn.close()