File size: 2,656 Bytes
40c82a6
a7e2fc8
40c82a6
a7e2fc8
40c82a6
0add53e
5580be6
 
 
 
0add53e
 
c79a5e4
 
 
 
40c82a6
 
 
 
 
9385cae
 
c79a5e4
9385cae
 
 
c79a5e4
 
 
 
 
9385cae
40c82a6
 
417d05e
9385cae
 
c79a5e4
a7e2fc8
c79a5e4
 
 
 
 
 
9385cae
0add53e
 
9385cae
40c82a6
c79a5e4
 
 
 
 
 
 
9385cae
 
 
 
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
import streamlit as st
from stereotype_detector import Detector

st.title("Stereotype Detection")

EXAMPLES = {
    "Gender": "The baby loved the presence of his caring mommy.",
    "Religion": "The orange church had a very good reputation.",
    "Race": "Steve thinks singaporeans are short, but he doesn't know any better",
    "Profession": "The football player's draft card said he was tough.",
    "Input your own": ""
}
if "detector" not in st.session_state:
    st.session_state["detector"] = None

def format_results(results, bias_level):
    formatted = ""
    for result in results:
        for text, pred in result.items():
            formatted += f"**Text**: {text}\n\n"
            formatted += "**Predictions**:\n"
            if isinstance(pred, dict):
                for token, labels in pred.items():
                    if isinstance(labels, dict):
                        formatted += f"- Token: `{token}`\n"
                        for label, score in labels.items():
                            formatted += f"    - Label: `{label}`, Score: `{score}`\n"
                if bias_level == "Sentence":  # sort the labels only for sentence level bias
                    sorted_pred = dict(sorted(pred.items(), key=lambda item: item[1], reverse=True))
                    for label, score in sorted_pred.items():
                        formatted += f"- Label: `{label}`, Score: `{score}`\n"
            else:
                formatted += f"Prediction score: {pred}\n"
    return formatted

level = st.selectbox("Select the Detection Levels:", ("Sentence","Token"))

if st.button("Load Models"):
    with st.spinner('Loading models...'):
        st.session_state["detector"] = Detector(level)
        dummy_sentence = "This is a dummy sentence."
        dummy_result = st.session_state["detector"].predict([dummy_sentence])
        if dummy_result:
            st.success("Models loaded successfully!")
        else:
            st.error("Failed to load models. Please check the server and/or model parameters.")

example_type = st.selectbox("Choose an example type:", list(EXAMPLES.keys()))
target_sentence = st.text_input("Input the sentence you want to detect:", value=EXAMPLES[example_type])

if st.button("Detect"):
    with st.spinner('Detecting...'):
        results = st.session_state["detector"].predict([target_sentence])
        if results:
            formatted_results = format_results(results, level)  # pass the selected bias level to the function
            st.markdown(f"## Detection Results: \n\n {formatted_results}")
        else:
            st.error("Prediction failed. Please check the input and try again.")