brightly-ai / app.py
beweinreich's picture
some updates to algo
1c28270
raw
history blame
No virus
2.02 kB
import gradio as gr
import pandas as pd
import psycopg2
from algo import Algo
from psycopg2.extras import DictCursor
from db.db_utils import get_connection
db_conn = get_connection()
db_cursor = db_conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
algo = Algo(db_conn)
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, None]])
print(f" - result -> {results}")
df = pd.DataFrame(results, columns=["input_word", "cleaned_word", 'matching_word', 'dictionary_word', 'sr_legacy_food_category', 'wweia_category', 'dry_matter_content',
'water_content', 'similarity_score', 'confidence_score', 'similar_words', 'is_food', 'food_nonfood_score'])
# Filter to only required columns
df_filtered = df[["input_word", "dictionary_word", "is_food", "sr_legacy_food_category", 'wweia_category', 'dry_matter_content', "water_content", "similarity_score", "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,], outputs=output_table)
submit_button.click(fn=process_input, inputs=[input_text,], outputs=output_table)
demo.launch()
db_cursor.close()
db_conn.close()