import gradio as gr import pandas as pd from SBERT_Multilingue import buscar_marcas_similares as modelo_sbert from BETO import buscar_marcas_similares as modelo_beto def buscar_marcas(marca_input, umbral=80.0): resultados = [] for modelo_func, nombre_modelo in [ (modelo_beto, "BETO"), (modelo_sbert, "SBERT") ]: try: salida = modelo_func(marca_input) for marca, similitud in salida: if similitud >= umbral: resultados.append({ "Marca": marca.strip().lower(), "Similitud (%)": round(similitud, 2), "Modelo": nombre_modelo }) except Exception as e: print(f"Error en {nombre_modelo}: {e}") if not resultados: return [] df = pd.DataFrame(resultados) df = df.sort_values("Similitud (%)", ascending=False) df = df.drop_duplicates(subset="Marca", keep="first") df["Marca"] = df["Marca"].str.title() df = df.reset_index(drop=True) df.index += 1 df.index.name = "Índice" return df.reset_index().to_dict(orient="records") with gr.Blocks() as app: texto = gr.Textbox(label="Marca a evaluar") umbral = gr.Slider(0, 100, value=80, label="Umbral mínimo de similitud (%)") salida = gr.JSON() boton = gr.Button("Buscar") boton.click(fn=buscar_marcas, inputs=[texto, umbral], outputs=salida) app.launch()