File size: 7,151 Bytes
7d54e39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c27d381
7d54e39
fcc4f87
7d54e39
a542243
7d54e39
 
 
 
 
 
 
 
9c5c4cd
166f0aa
7d54e39
 
2d29665
7d54e39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74e7846
7d54e39
 
 
 
 
 
 
 
 
 
 
 
 
 
a542243
7d54e39
 
 
e680c4e
7d54e39
 
 
2d29665
 
 
 
 
 
 
 
3ffd36a
7d54e39
 
 
2d29665
3ffd36a
1d8cd60
b482195
7d54e39
 
aec3105
7d54e39
 
2d29665
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
import streamlit as st
import json
import time
from config import Config
from document_quieries import ExtractiveProposalQueries

extractive_query = ExtractiveProposalQueries(es_host = Config.es_host, es_index = Config.proposals_index,
                                  es_user = Config.es_user, es_password = Config.es_password,
                                  reader_name_or_path = Config.reader_model_name_or_path,
                                  use_gpu = Config.use_gpu)

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):
  query_result = extractive_query.search_by_query(query = question, retriever_top_k = retriever_top_k, reader_top_k = reader_top_k)
  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'], int(item.meta['page'])])
  
  return result

if __name__ == "__main__":
    # streamlit part starts here with title
    title = """
    <h1 style='
    text-align: center;
    color: #39AA35'>
    Ask2Democracy 🇨🇴 - Informe de la comisión de la verdad Junio 2022
    </h1>
    <p>
      El 28 de junio del 2022, la Comisión de la Verdad en Colombia liberó su informe final. Fue el resultado de más de 3 años de investigación sobre el conflicto armado interno durante los últimos 60 años. Apoyándose en un modelo de inteligencia artificial. Este espacio pretende ayudar a explorar las más de 6000 páginas que conforman más de 10 libros del Informe, comenzando por el de Hallazgos y recomendaciones.
    """
    st.markdown(title, unsafe_allow_html=True)
    # input form
    with st.form("my_form"):
        # here we have input space
        query = st.text_input("Ingresa la pregunta, frase abierta o tema que quieres explorar",
                              placeholder="Escribe tu consulta aquí...")
        # Every form must have a submit button.
        submitted = st.form_submit_button("Buscar")
    
    # on submit we execute search
    if(submitted):
        # 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}"
            # 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("---")
    else:
        st.markdown("""Cuanto más contexto le des a la pregunta, mejor funciona. puedes escribir consultas como: _**\"¿periodo con más detenciones arbitrarias registradas?\"**_,\_**\"¿cantidad de víctimas en la masacre de bojayá?\"**_,\
                    _**\"¿cuantas víctimas de desplazamiento en antioquia?\"**_""")
        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>
     <br>Con el apoyo de Manuela Gonima en comunicaciones 🇨🇴 <a href="https://www.instagram.com/mgcomunicacionesco/" target='_blank'/>Instagram</a> <a href="https://www.linkedin.com/in/manuela-gonima-carvajal" target='_blank'/>LinkedIn</a>
    </div>
        """, unsafe_allow_html=True)

        description = """
        <p>
        <h2>Sobre esta iniciativa</h2>
        Se enmarca en la construcción de ciudadanía, la creación de valor público y el fortalecimiento de la democracia participativa desde la invitación a la población a informarse, conocer, compartir y dialogar en torno a la memoria histórica y a la verdad del conflicto armado colombiano, partiendo del Informe de la Comisión de la Verdad, se espera incluir varias fuentes adicionales. Hace parte de un proyecto open-source que utiliza Inteligencia Artificial para contribuir al entendimiento de temas relevantes para el país.<a href= "https://github.com/jorge-henao/ask_to_democracy"> repo en github con FastAPI</a>
        </br></br>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>, con el apoyo de Manuela Gónima 🇨🇴 <a href="https://www.instagram.com/mgcomunicacionesco/" target='_blank'/>Instagram</a> <a href="https://www.linkedin.com/in/manuela-gonima-carvajal" target='_blank'/>LinkedIn</a>
        <h2>¿Cómo utilizar este espacio?</h2>
        Puedes escribir oraciones abiertas como “Masacres en Antioquia”, o una pregunta concreta como “¿cantidad de víctimas en la masacre de bojayá?”. No se trata de un sistema de búsquedas basado en palabras clave, por el contrario, puedes redactar preguntas más extensas y elaboradas. Cuanto más contexto le des a la pregunta, mejor funciona.        
        <h2>Beta disclaimer</h2>
        Las respuestas que arroja el sistema no han sido pregrabadas ni basadas en opiniones. Todas son respuestas extraídas del Informe final de la CEV, por un sistema en beta. Este explorador se basa en un modelo de inteligencia artificial entrenado para entender el lenguaje español, sin embargo, necesita de un mayor entrenamiento por lo que, en ocasiones, puede ser confuso y no tan preciso. 
        Si quieres apoyar escríbeme a <a href="mailto:jorge.henao@diezonce.co">jorge.henao@diezonce.co</a>
        </p>      
        """
        st.markdown(description, unsafe_allow_html=True)