File size: 1,470 Bytes
6d4ab66
 
 
 
 
 
 
 
 
 
 
 
 
2eac9d9
6d4ab66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74f86f4
 
 
 
6d4ab66
74f86f4
 
 
3850ad8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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()