File size: 4,754 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
105
106
107
108
109
110
111
112
113
import gradio as gr 
import pandas as pd
import matplotlib.pyplot as plt

from tool_info import TOOL_INFO
from modules.module_connection import WordExplorerConnector
from modules.module_logsManager import HuggingFaceDatasetSaver
from examples.examples import examples_explorar_relaciones_entre_palabras

plt.rcParams.update({'font.size': 14})

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

    # --- Interface ---
    interface = gr.Blocks()
    with interface:
        gr.Markdown(labels["title"])
        with gr.Row():
            with gr.Column(scale=3):
                with gr.Row(equal_height=True):
                    with gr.Column(scale=5):
                        diagnose_list = gr.Textbox(lines=2, label=labels["wordListToDiagnose"])
                    with gr.Column(scale=1,min_width=10):
                        color_wordlist = gr.ColorPicker(label="",value='#000000',)
                with gr.Row():
                    with gr.Column(scale=5): 
                        wordlist_1 = gr.Textbox(lines=2, label=labels["wordList1"])
                    with gr.Column(scale=1,min_width=10): 
                        color_wordlist_1 = gr.ColorPicker(label="",value='#1f78b4')
                with gr.Row():
                    with gr.Column(scale=5): 
                        wordlist_2 = gr.Textbox(lines=2, label=labels["wordList2"])
                    with gr.Column(scale=1,min_width=10):     
                        color_wordlist_2 = gr.ColorPicker(label="",value='#33a02c')
                with gr.Row():
                    with gr.Column(scale=5):    
                        wordlist_3 = gr.Textbox(lines=2, label=labels["wordList3"])
                    with gr.Column(scale=1,min_width=10): 
                        color_wordlist_3 = gr.ColorPicker(label="",value='#e31a1c')
                with gr.Row():
                    with gr.Column(scale=5):    
                        wordlist_4 = gr.Textbox(lines=2, label=labels["wordList4"])
                    with gr.Column(scale=1,min_width=10): 
                        color_wordlist_4 = gr.ColorPicker(label="",value='#6a3d9a')
            with gr.Column(scale=4):
                with gr.Row():
                    with gr.Row():
                        gr.Markdown(labels["plotNeighbours"]["title"])
                        n_neighbors = gr.Slider(minimum=0,maximum=100,step=1,label=labels["plotNeighbours"]["quantity"])
                    with gr.Row():
                        alpha = gr.Slider(minimum=0.1,maximum=0.9, value=0.3, step=0.1,label=labels["options"]["transparency"])
                        fontsize=gr.Number(value=18, label=labels["options"]["font-size"])
                    with gr.Row():
                        btn_plot = gr.Button(labels["plot_button"])
                with gr.Row(): 
                    err_msg = gr.Markdown(label="", visible=True)
                with gr.Row():
                    word_proyections = gr.Plot(label="", show_label=False)

        with gr.Row():
            gr.Examples(
                fn=connector.plot_proyection_2d,
                inputs=[diagnose_list,wordlist_1,wordlist_2,wordlist_3,wordlist_4],
                outputs=[word_proyections,err_msg],
                examples=examples_explorar_relaciones_entre_palabras,
                label=labels["examples"]
            )

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

        btn_plot.click(
            fn=connector.plot_proyection_2d,
            inputs=[
                diagnose_list,
                wordlist_1,
                wordlist_2,
                wordlist_3,
                wordlist_4,
                color_wordlist,
                color_wordlist_1,
                color_wordlist_2,
                color_wordlist_3,
                color_wordlist_4,
                alpha,
                fontsize,
                n_neighbors
            ],
            outputs=[word_proyections,err_msg]
        )

        # --- Logs ---
        save_field = [diagnose_list,wordlist_1,wordlist_2,wordlist_3,wordlist_4]
        log_callback.setup(components=save_field, flagging_dir="edia_we_es")
        
        btn_plot.click(
            fn=lambda *args: log_callback.flag(
                    flag_data=args,
                    flag_option="explorar_palabras",
                    username="vialibre",
            ),
            inputs=save_field,
            outputs=None, 
            preprocess=False
        )
        return interface