edia_we_es / interfaces /interface_WordExplorer.py
LMartinezEXEX's picture
Added config for centralization.
421e27d
import gradio as gr
import pandas as pd
import matplotlib.pyplot as plt
from modules.module_connection import WordExplorerConnector
from modules.module_logsManager import HuggingFaceDatasetSaver
from tool_info import TOOL_INFO
plt.rcParams.update({'font.size': 14})
def interface(
embedding, # Class Embedding instance
available_logs: bool,
max_neighbors: int,
lang: str="es",
) -> gr.Blocks:
# -- Load examples ---
if lang == 'es':
from examples.examples_es import examples_explorar_relaciones_entre_palabras
elif lang == 'en':
from examples.examples_en import examples_explorar_relaciones_entre_palabras
# --- Init logs ---
log_callback = HuggingFaceDatasetSaver(
available_logs=available_logs,
dataset_name=f"logs_edia_we_{lang}"
)
# --- Init vars ---
connector = WordExplorerConnector(
embedding=embedding
)
# --- Load language ---
labels = pd.read_json(
f"language/{lang}.json"
)["WordExplorer_interface"]
# --- Interface ---
interface = gr.Blocks()
with interface:
gr.Markdown(
value=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(
value=labels["plotNeighbours"]["title"]
)
n_neighbors = gr.Slider(
minimum=0,
maximum=max_neighbors,
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=25,
label=labels["options"]["font-size"]
)
with gr.Row():
btn_plot = gr.Button(
value=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(
value=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="logs_word_explorer"
)
btn_plot.click(
fn=lambda *args: log_callback.flag(
flag_data=args,
flag_option="word_explorer",
username="vialibre",
),
inputs=save_field,
outputs=None,
preprocess=False
)
return interface