Update app.py
Browse files
app.py
CHANGED
@@ -1,25 +1,15 @@
|
|
|
|
1 |
import os
|
2 |
-
|
3 |
-
# Instalar las dependencias necesarias
|
4 |
os.system("pip install gradio sentence-transformers pandas numpy scipy chromadb")
|
5 |
-
os.system("echo $(ls ./)")
|
6 |
|
7 |
-
# Importar
|
8 |
-
import pandas as pd
|
9 |
-
import numpy as np
|
10 |
from sentence_transformers import SentenceTransformer
|
11 |
-
|
12 |
import chromadb
|
13 |
from chromadb.utils import embedding_functions
|
|
|
14 |
import gradio as gr
|
15 |
|
16 |
-
# Cargar base de datos de tr谩mites y servicios
|
17 |
-
file_path = 'Diagrama de decisi贸n.csv' # Aseg煤rate de subir este archivo
|
18 |
-
if not os.path.exists(file_path):
|
19 |
-
raise FileNotFoundError(f"El archivo {file_path} no se encontr贸 en el directorio actual.")
|
20 |
-
|
21 |
-
df = pd.read_csv(file_path, encoding='latin-1')
|
22 |
-
|
23 |
# Configuraci贸n de variables
|
24 |
EMBEDDING_LLM = "jinaai/jina-embeddings-v2-base-es" # Modelo de embedding utilizado
|
25 |
|
@@ -29,6 +19,17 @@ model = SentenceTransformer(
|
|
29 |
trust_remote_code=True,
|
30 |
)
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
# Crear una columna combinada para embeddings
|
33 |
df['text'] = df.apply(
|
34 |
lambda x: f"Tr谩mite: {x['Tr谩mite']}; Descripci贸n: {x['Descripci贸n']}; Palabras clave: {x['Tag (palabras clave)']}",
|
@@ -38,8 +39,8 @@ df['text'] = df.apply(
|
|
38 |
# Generar embeddings
|
39 |
df['embeddings'] = model.encode(df['text'], batch_size=64, show_progress_bar=True).tolist()
|
40 |
|
41 |
-
# Configurar cliente de ChromaDB persistente
|
42 |
-
client_persistent = chromadb.PersistentClient(path='
|
43 |
embedding_function = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=EMBEDDING_LLM)
|
44 |
|
45 |
# Crear o cargar colecci贸n en ChromaDB
|
@@ -63,6 +64,8 @@ db.add(
|
|
63 |
metadatas=df[['Tr谩mite', 'Descripci贸n', 'Tag (palabras clave)']].to_dict('records')
|
64 |
)
|
65 |
|
|
|
|
|
66 |
# Funci贸n para realizar consultas
|
67 |
def obtener_recomendaciones(preferencias, top_k=5):
|
68 |
# Convertir preferencias en embeddings
|
@@ -104,7 +107,7 @@ def procesar_recomendaciones(preferencias):
|
|
104 |
# Convertir los resultados a un DataFrame
|
105 |
return pd.DataFrame(resultados)
|
106 |
|
107 |
-
# Interfaz de Gradio
|
108 |
def interfaz(preferencias):
|
109 |
tabla_resultados = procesar_recomendaciones(preferencias)
|
110 |
return tabla_resultados
|
@@ -117,5 +120,5 @@ ui = gr.Interface(
|
|
117 |
description="Introduce tus preferencias para obtener resultados relevantes basados en similitud sem谩ntica."
|
118 |
)
|
119 |
|
120 |
-
|
121 |
-
|
|
|
1 |
+
# Instalar bibliotecas necesarias (solo se ejecutar谩 localmente en un Space)
|
2 |
import os
|
|
|
|
|
3 |
os.system("pip install gradio sentence-transformers pandas numpy scipy chromadb")
|
|
|
4 |
|
5 |
+
# Importar librer铆as necesarias
|
|
|
|
|
6 |
from sentence_transformers import SentenceTransformer
|
7 |
+
import pandas as pd
|
8 |
import chromadb
|
9 |
from chromadb.utils import embedding_functions
|
10 |
+
from datetime import datetime
|
11 |
import gradio as gr
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
# Configuraci贸n de variables
|
14 |
EMBEDDING_LLM = "jinaai/jina-embeddings-v2-base-es" # Modelo de embedding utilizado
|
15 |
|
|
|
19 |
trust_remote_code=True,
|
20 |
)
|
21 |
|
22 |
+
# Ruta del archivo CSV (debe estar disponible en el directorio del Space)
|
23 |
+
file_path = './Diagrama_de_decision.csv'
|
24 |
+
|
25 |
+
# Cargar la base de datos, especificando la codificaci贸n
|
26 |
+
df = pd.read_csv(
|
27 |
+
file_path,
|
28 |
+
index_col=0,
|
29 |
+
encoding='utf-8',
|
30 |
+
sep='|'
|
31 |
+
)
|
32 |
+
|
33 |
# Crear una columna combinada para embeddings
|
34 |
df['text'] = df.apply(
|
35 |
lambda x: f"Tr谩mite: {x['Tr谩mite']}; Descripci贸n: {x['Descripci贸n']}; Palabras clave: {x['Tag (palabras clave)']}",
|
|
|
39 |
# Generar embeddings
|
40 |
df['embeddings'] = model.encode(df['text'], batch_size=64, show_progress_bar=True).tolist()
|
41 |
|
42 |
+
# Configurar cliente de ChromaDB persistente (usando una ruta compatible con Spaces)
|
43 |
+
client_persistent = chromadb.PersistentClient(path='./data_embeddings')
|
44 |
embedding_function = embedding_functions.SentenceTransformerEmbeddingFunction(model_name=EMBEDDING_LLM)
|
45 |
|
46 |
# Crear o cargar colecci贸n en ChromaDB
|
|
|
64 |
metadatas=df[['Tr谩mite', 'Descripci贸n', 'Tag (palabras clave)']].to_dict('records')
|
65 |
)
|
66 |
|
67 |
+
print(f"N煤mero de registros en la colecci贸n: {db.count()}")
|
68 |
+
|
69 |
# Funci贸n para realizar consultas
|
70 |
def obtener_recomendaciones(preferencias, top_k=5):
|
71 |
# Convertir preferencias en embeddings
|
|
|
107 |
# Convertir los resultados a un DataFrame
|
108 |
return pd.DataFrame(resultados)
|
109 |
|
110 |
+
# Interfaz de Gradio con formato de tabla
|
111 |
def interfaz(preferencias):
|
112 |
tabla_resultados = procesar_recomendaciones(preferencias)
|
113 |
return tabla_resultados
|
|
|
120 |
description="Introduce tus preferencias para obtener resultados relevantes basados en similitud sem谩ntica."
|
121 |
)
|
122 |
|
123 |
+
# Ejecutar la aplicaci贸n
|
124 |
+
ui.launch(server_name="0.0.0.0", server_port=7860)
|