File size: 2,141 Bytes
01b8e8e
 
 
101be32
01b8e8e
39503cb
01b8e8e
39503cb
 
 
 
 
 
01b8e8e
 
39503cb
101be32
39503cb
 
 
01b8e8e
39503cb
 
 
 
 
01b8e8e
 
 
39503cb
101be32
 
 
39503cb
 
01b8e8e
 
 
 
 
 
39503cb
101be32
01b8e8e
 
39503cb
01b8e8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39503cb
01b8e8e
39503cb
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
import streamlit as st
import core.pipelines as pipelines_functions
from inspect import getmembers, isfunction
from networkx.drawing.nx_agraph import to_agraph


def component_select_pipeline(container):
    pipeline_names, pipeline_funcs = list(
        zip(*getmembers(pipelines_functions, isfunction))
    )
    pipeline_names = [
        " ".join([n.capitalize() for n in name.split("_")]) for name in pipeline_names
    ]
    with container:
        selected_pipeline = st.selectbox(
            "Select pipeline",
            pipeline_names,
            index=pipeline_names.index("Keyword Search")
            if "Keyword Search" in pipeline_names
            else 0,
        )
        (
            st.session_state["search_pipeline"],
            st.session_state["index_pipeline"],
        ) = pipeline_funcs[pipeline_names.index(selected_pipeline)]()


def component_show_pipeline(container, pipeline):
    """Draw the pipeline"""
    with st.expander("Show pipeline"):
        graphviz = to_agraph(pipeline.graph)
        graphviz.layout("dot")
        st.graphviz_chart(graphviz.string())


def component_show_search_result(container, results):
    with container:
        for idx, document in enumerate(results):
            st.markdown(f"### Match {idx+1}")
            st.markdown(f"**Text**: {document['text']}")
            st.markdown(f"**Document**: {document['id']}")
            if document["score"] is not None:
                st.markdown(f"**Score**: {document['score']:.3f}")
            st.markdown("---")


def component_text_input(container):
    """Draw the Text Input widget"""
    with container:
        texts = []
        doc_id = 1
        with st.expander("Enter documents"):
            while True:
                text = st.text_input(f"Document {doc_id}", key=doc_id)
                if text != "":
                    texts.append({"text": text})
                    doc_id += 1
                    st.markdown("---")
                else:
                    break
        corpus = [
            {"text": doc["text"], "id": doc_id} for doc_id, doc in enumerate(texts)
        ]
        return corpus