elimoralsmendox commited on
Commit
f9f6cc7
verified
1 Parent(s): 8000b29

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -19
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 las librer铆as
8
- import pandas as pd
9
- import numpy as np
10
  from sentence_transformers import SentenceTransformer
11
- from scipy.spatial.distance import cosine
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='/content/data_embeddings')
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
- if __name__ == "__main__":
121
- ui.launch(server_name="0.0.0.0", server_port=7860, enable_queue=True)
 
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)