Spaces:
Runtime error
Runtime error
File size: 7,649 Bytes
44c25e2 |
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
from random import randint
import streamlit as st
import streamlit as st
import json
import time
from config import Config
from pinecode_quieries import PinecodeProposalQueries
import logging
logging.basicConfig(format="%(levelname)s - %(name)s - %(message)s", level=logging.WARNING)
logging.getLogger("haystack").setLevel(logging.INFO)
extractive_query = PinecodeProposalQueries (index_name= Config.index_name,
api_key = Config.es_password,
environment = Config.pinecone_environment,
embedding_dim = Config.embedding_dim,
reader_name_or_path = Config.reader_model_name_or_path,
use_gpu = Config.use_gpu)
def reforma_salud_febrero_2023():
title = """
<h1 style='
text-align: center;
color: #39AA35'>
Ask2Democracy 🇨🇴 - Propuesta reforma a la salud 2023
</h1>
"""
st.markdown(title, unsafe_allow_html=True)
st.markdown("""<div align="right">
Creado por Jorge Henao 🇨🇴 <a href="https://twitter.com/jhenaotw" target='_blank'>Twitter</a> <a href="https://www.linkedin.com/in/henaojorge" target='_blank'/>LinkedIn</a> </div>
""", unsafe_allow_html=True)
question_samples_str = """¿Cuándo se implementará el Sistema de Salud?
¿Cómo se implementará el Sistema de Salud?
¿Qué es principio de interpretación y fundamento de la transición en relación al Sistema de Salud?
¿Qué se garantiza en todo momento con el nuevo Sistema de Salud?
¿Qué son los Centros de Atención Primaria Integrales y Resolutivos en Salud - CAPIRS?
¿Qué se garantiza durante el periodo de transición del nuevo Sistema de Salud?
¿Puede haber personas sin protección de su salud durante el periodo de transición?
¿Cuál es el derecho fundamental que se garantiza en todo momento durante la transición del nuevo Sistema de Salud?
¿En qué país se está implementando este Sistema de Salud?
¿Qué se debe realizar para garantizar la gestión de los recursos en el nivel nacional y desconcentrado?
¿Cómo se regirá el régimen de contratación de los contratos mencionados en el texto?
¿Qué son las cláusulas exorbitantes previstas en el estatuto General de Contratación de la administración pública?
¿Qué principios deben atender los contratos mencionados en el texto?
¿Cuál es el ámbito de aplicación de los contratos mencionados en el texto?
¿Quién tiene la responsabilidad de realizar la auditoría de las cuentas en relación a estos contratos?
¿Cuáles son las características que deben cumplir los contratos mencionados en el texto?
¿Qué se entiende por "coordinación" en el contexto de los contratos mencionados en el texto?
¿Qué objetivo se busca con los contratos mencionados en el texto?
¿Quién será el encargado de contratar los servicios de salud y otros requerimientos para el cumplimiento de su labor en el nivel regional?
¿Qué tipo de instituciones hospitalarias y ambulatorias se integran a la red de servicios del territorio?
¿Qué tarifas deben seguir las instituciones hospitalarias y ambulatorias para la prestación de servicios de salud?
¿Qué busca modular el régimen de tarifas y formas de pago para la prestación de servicios de salud?
¿Qué tipo de registro llevará el Fondo Regional de Salud?
¿Cuáles son algunas de las variables que se incluirán en el registro de cada servicio prestado y pagado?"""
question_samples = question_samples_str.splitlines()
def clear_submit():
st.session_state["submit"] = False
def fake_search(question, retriever_top_k, reader_top_k):
#p1_result = query.search_by_query(query = question, retriever_top_k = retriever_top_k, reader_top_k = reader_top_k, es_index = "informecomisionverdad")
result = []
p = """
La masacre de Bojayá fue perpetrada por el Frente José María Córdoba, de las FARC-EP, al lanzar un cilindro bomba que cayó en una iglesia en la que los pobladores se refugiaban del enfrentamiento de este grupo con el Bloque Élmer Cárdenas de las AUC. Las víctimas fueron 81 personas, 47 de ellas eran niñas, niños y adolescentes
"""
for i in range(0, reader_top_k):
result.append([[i+1],"81 personas", p[:250],"Las masacres","Comisión de la verdad - Informe de hallazgos y recomendaciones Junio 2022","5"])
return result
def search(question, retriever_top_k, reader_top_k):
filters = {"source_title": "Reforma de la salud 13 Febrero 2023"}
query_result = extractive_query.search_by_query(query = question,
retriever_top_k = retriever_top_k,
reader_top_k = reader_top_k,
filters = filters)
result = []
for i in range(0, len(query_result)):
item = query_result[i]
result.append([[i+1], item.answer, item.context[:200],
item.meta['title'], item.meta['source_title'], int(item.meta['page'])])
#result.append([[i+1], item.answer, item.context[:200], item.meta['title']])
return result
def search_and_show_results():
# set start time
stt = time.time()
# retrieve top 5 documents
results = search(query, retriever_top_k=5, reader_top_k=3)
# set endtime
ent = time.time()
# measure resulting time
elapsed_time = round(ent - stt, 2)
# show which query was entered, and what was searching time
st.write(f"**Resultados relacionados con:** \"{query}\" ({elapsed_time} sec.)")
# then we use loop to show results
for i, answer in enumerate(results):
# answer starts with header
st.subheader(f"{answer[1]}")
# cropped answer
doc = answer[2][:250] + "..."
# and url to the full answer
#url = f"https://www.comisiondelaverdad.co/sites/default/files/descargables/2022-06/Informe%20Final%20capi%CC%81tulo%20Hallazgos%20y%20recomendaciones.pdf#page={answer[5]+1}"
url = f"https://petro.presidencia.gov.co/Documents/230213-Reforma-salud.pdf"
# then we display it
#st.markdown(f'{doc}\n<br>Fuente: {answer[4]}\n<br>Capítulo: {answer[3]}\n<br>Página: {answer[5]}\n[**Lee más aquí**]({url})\n', unsafe_allow_html=True)
st.markdown(f"{doc}[**Lee más aquí**]({url})")
st.caption(f"Fuente: {answer[4]} - Capítulo: {answer[3]} - Página: {answer[5]}")
st.markdown("---")
#results = search("que es el adres", retriever_top_k=5, reader_top_k=3)
st.write(f"""<br><p>Cuanto más contexto le des a la pregunta mejores resultados se obtienen.
No es un sistema basado en palabras claves, puedes escribir preguntas elaboradas.
Una serie de modelos de lenguaje transformers intervienen en cada consulta para ayudar a entenderlas."""
,unsafe_allow_html=True)
selected_question = st.selectbox("Aquí algunos ejemplos:", question_samples)
query = st.text_area("Escribe tu pregunta", value = selected_question, on_change=clear_submit)
button = st.button("Buscar")
if button or st.session_state.get("submit"):
if not query:
st.error("¡escribe una pregunta!")
else:
st.session_state["submit"] = True
search_and_show_results() |