Spaces:
GIZ
/
Running on CPU Upgrade

File size: 4,039 Bytes
22b8e0b
cc5c327
 
22b8e0b
 
72e4dad
cc5c327
2a8e40d
 
22b8e0b
 
 
 
 
72e4dad
22b8e0b
 
 
 
72e4dad
22b8e0b
 
 
 
 
 
 
72e4dad
22b8e0b
 
72e4dad
 
cc5c327
72e4dad
8c4c590
72e4dad
 
 
 
 
 
 
 
 
 
 
22b8e0b
72e4dad
22b8e0b
a4bf4e8
 
ed0fd13
 
97216b9
fb38e55
 
cc5c327
72e4dad
 
a4bf4e8
 
72e4dad
 
 
cc5c327
 
 
 
72e4dad
cc5c327
72e4dad
 
 
 
 
 
cc5c327
a4bf4e8
72e4dad
a4bf4e8
72e4dad
 
3d34c75
cc5c327
a4bf4e8
97216b9
a4bf4e8
 
 
efb11f2
a4bf4e8
048a702
 
 
 
 
 
22b8e0b
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
# set path
import glob, os, sys; 
sys.path.append('../utils')

import streamlit as st
import json
import logging
from utils.lexical_search import runLexicalPreprocessingPipeline, lexical_search
from utils.semantic_search import runSemanticPreprocessingPipeline, semantic_search

def app():

    with st.container():
        st.markdown("<h1 style='text-align: center;  \
                      color: black;'> Search</h1>", 
                      unsafe_allow_html=True)
        st.write(' ')
        st.write(' ')

    with st.expander("ℹ️ - About this app", expanded=False):

        st.write(
            """     
            The *Keyword Search* app is an easy-to-use interface \ 
            built in Streamlit for doing keyword search in \
            policy document - developed by GIZ Data and the \
            Sustainable Development Solution Network.
            """)

        st.markdown("")
    
    with st.sidebar:
        with open('docStore/sample/keywordexample.json','r') as json_file:
            keywordexample = json.load(json_file)
        
        genre = st.radio("Select Keyword Category", list(keywordexample.keys()))
        if genre == 'Food':
            keywordList = keywordexample['Food']
        elif genre == 'Climate':
            keywordList = keywordexample['Climate']
        elif genre == 'Social':
            keywordList = keywordexample['Social']
        elif genre == 'Nature':
            keywordList = keywordexample['Nature']
        elif genre == 'Implementation':
            keywordList = keywordexample['Implementation']
        else:
            keywordList = None
        
        searchtype = st.selectbox("Do you want to find exact macthes or similar meaning/context",
                                 ['Exact Matches', 'Similar context/meaning'])
        # if searchtype == 'Similar context/meaning':
        #     show_answers = st.sidebar.checkbox("Show context")



    
    with st.container():
        if keywordList is not None:
            queryList = st.text_input("You selcted the {} category we \
                        will look for these keywords in document".format(genre),
                                    value="{}".format(keywordList))
        else:
            queryList = st.text_input("Please enter here your question and we will look \
                                        for an answer in the document OR enter the keyword you \
                                        are looking for and we will \
                                        we will look for similar context \
                                        in the document.",
                                    placeholder="Enter keyword here")
        
        if st.button("Find them"):

            if queryList == "":
                st.info("🤔 No keyword provided, if you dont have any, please try example sets from sidebar!")
                logging.warning("Terminated as no keyword provided")
            else:
                if 'filepath' in st.session_state:
                    
                    if searchtype == 'Exact Matches':
                        paraList = runLexicalPreprocessingPipeline()
                        logging.info("performing lexical search")
                        with st.spinner("Performing Exact matching search (Lexical search) for you"):
                            st.markdown("##### Top few lexical search (TFIDF) hits #####")
                            lexical_search(queryList,paraList)
                    else:
                        
                        paraList = runSemanticPreprocessingPipeline()
                        logging.info("starting semantic search")
                        with st.spinner("Performing Similar/Contextual search"):
                            semantic_search(queryList,paraList)

                else:
                    st.info("🤔 No document found, please try to upload it at the sidebar!")
                    logging.warning("Terminated as no document provided")