File size: 3,939 Bytes
a779273
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import pandas as pd
from tkinter import image_names

from tool_info import TOOL_INFO
from modules.module_logsManager import HuggingFaceDatasetSaver
from modules.module_connection import BiasWordExplorerConnector
from examples.examples import examples1_explorar_sesgo_en_palabras, examples2_explorar_sesgo_en_palabras

# --- Interface ---
def interface(embedding, available_logs, lang="spanish"):
    # --- Init logs ---
    log_callback = HuggingFaceDatasetSaver(
        available_logs=available_logs
    )
    # --- Init vars ---
    connector = BiasWordExplorerConnector(embedding=embedding)
    labels = pd.read_json(f"language/{lang}.json")["BiasWordExplorer_interface"]

    interface = gr.Blocks()
    with interface:
        gr.Markdown(labels["step1"])
        with gr.Row():
            with gr.Column():
                with gr.Row():
                    diagnose_list = gr.Textbox(lines=2, label=labels["wordListToDiagnose"])
                with gr.Row():
                    gr.Markdown(labels["step2&2Spaces"])
                with gr.Row():
                    wordlist_1 = gr.Textbox(lines=2, label=labels["wordList1"])
                    wordlist_2 = gr.Textbox(lines=2, label=labels["wordList2"])
                with gr.Row():
                    gr.Markdown(labels["step2&4Spaces"])
                with gr.Row():
                    wordlist_3 = gr.Textbox(lines=2, label=labels["wordList3"])
                    wordlist_4 = gr.Textbox(lines=2, label=labels["wordList4"])
            with gr.Column():
                with gr.Row():
                    bias2d = gr.Button(labels["plot2SpacesButton"])
                with gr.Row():
                    bias4d = gr.Button(labels["plot4SpacesButton"])
                with gr.Row():
                    err_msg = gr.Markdown(label='',visible=True)
                with gr.Row():
                    bias_plot = gr.Plot(label="", show_label=False)    
        with gr.Row():
            examples = gr.Examples(
                fn=connector.calculate_bias_2d,
                inputs=[wordlist_1, wordlist_2, diagnose_list],
                outputs=[bias_plot, err_msg],
                examples=examples1_explorar_sesgo_en_palabras,
                label=labels["examples2Spaces"]
            )
        with gr.Row():
            examples = gr.Examples(
                fn=connector.calculate_bias_4d,
                inputs=[wordlist_1, wordlist_2,
                        wordlist_3, wordlist_4, diagnose_list],
                outputs=[bias_plot, err_msg],
                examples=examples2_explorar_sesgo_en_palabras,
                label=labels["examples4Spaces"]
            )

        with gr.Row():
            gr.Markdown(TOOL_INFO)

        bias2d.click(
            fn=connector.calculate_bias_2d, 
            inputs=[wordlist_1,wordlist_2,diagnose_list],
            outputs=[bias_plot,err_msg]
        )
            
        bias4d.click(
            fn=connector.calculate_bias_4d,
            inputs=[wordlist_1,wordlist_2,wordlist_3,wordlist_4,diagnose_list],
            outputs=[bias_plot,err_msg]
        )

        # --- Logs ---
        save_field = [wordlist_1,wordlist_2,wordlist_3,wordlist_4,diagnose_list]
        log_callback.setup(components=save_field, flagging_dir="edia_bias_we_es")

        bias2d.click(
            fn=lambda *args: log_callback.flag(
                    flag_data=args, 
                    flag_option="plot_2d",
                    username="vialibre"
            ),
            inputs=save_field,
            outputs=None, 
            preprocess=False
        )
        
        bias4d.click(
            fn=lambda *args: log_callback.flag(
                    flag_data=args,
                    flag_option="plot_4d",
                    username="vialibre"
            ),
            inputs=save_field,
            outputs=None, 
            preprocess=False
        )
    return interface