File size: 5,420 Bytes
554d184 23bce77 554d184 23bce77 b9b8d83 23bce77 92944d2 23bce77 92944d2 23bce77 92944d2 23bce77 92944d2 23bce77 92944d2 23bce77 92944d2 23bce77 554d184 23bce77 |
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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
import gradio as gr
import json
import os
import random
# Nombre del archivo JSON para almacenar la informaci贸n de la leaderboard
JSON_FILE = "dipromats2024-t2_leaderboard-data.json"
# Funci贸n para guardar los datos en el json leaderboard
def save_data(data):
with open(JSON_FILE, "w") as f:
json.dump(data, f, indent=4)
# Funci贸n para cargar los datos del json del leaderboard
def load_data():
if os.path.exists(JSON_FILE):
with open(JSON_FILE, "r") as f:
try:
return json.load(f)
except json.JSONDecodeError:
return []
return []
# Funci贸n para convertir el json del leaderboard en tabla
def update_table():
data = load_data()
table_data = []
for item in data:
table_data.append([item.get("team_name", ""), item.get("run_id", ""),
item.get("lenient_f1", ""), item.get("strict_f1", ""), item.get("average_f1", "")])
return table_data
# Funci贸n para evaluar los resultados
def evaluate_results(file_path):
lenient_f1=random.random()
strict_f1=random.random()
average_f1=(lenient_f1+strict_f1)/2
return lenient_f1, strict_f1, average_f1
# Funci贸n para procesar el archivo de resultados
def process_file(file_path, team_input, run_id, description, email):
warn=False
if not file_path:
gr.Warning("File cannot be blank")
warn=True
if not team_input:
gr.Warning("Team name cannot be blank")
warn=True
if not run_id:
gr.Warning("Run ID cannot be blank")
warn=True
if not file_path:
gr.Warning("File cannot be blank")
warn=True
if not description:
gr.Warning("Description cannot be blank")
warn=True
if not email:
gr.Warning("Email cannot be blank")
warn=True
if warn:
return gr.Button(visible=True), gr.Button(visible=False), None, None, None
lenient_f1, strict_f1, average_f1 = evaluate_results(file_path)
return gr.Button(visible=False), gr.Button(visible=True), lenient_f1, strict_f1, average_f1
# Funci贸n para subir los resultados al leaderboard
def update_leaderboard(email, team_input, run_id, description, lenient_f1, strict_f1, average_f1):
data = load_data()
data.append({
"email": email,
"team_name": team_input,
"run_id": run_id,
"description": description,
"lenient_f1": lenient_f1,
"strict_f1": strict_f1,
"average_f1": average_f1
})
save_data(data)
return update_table(), gr.Tabs(selected=0), gr.Button(visible=True), gr.Button(visible=False), "", "", "", "", None, None, None, None # Clear inputs
# Main
with gr.Blocks() as leaderboard:
gr.Markdown(
"""
# Dipromats 2024 Task 2 Leaderboard
# Automatic Detection of Narratives from Diplomats of Major Powers
This is...
You can...
""")
with gr.Tabs() as tabs:
# Tab Leaderboard
with gr.TabItem("Leaderboard", id=0):
gr.Markdown(
"""
#
# Leaderboard
""")
leaderboard_table = gr.Dataframe(headers=["Team", "Run ID", "Lenient F1", "Strict F1", "Average F1"],
value=update_table(),
interactive=False)
# Tab Evaluate
with gr.TabItem("Evaluate your results", id=1):
gr.Markdown(
"""
# Upload your results and get evaluated
Then you can decide to submit your results to the leaderboard or not.
Make sure that you upload a file with the json format described in...
""")
# Submission Form
with gr.Row():
with gr.Column():
with gr.Row():
team_input = gr.Textbox(label="Team Name")
run_id = gr.Textbox(label="Run ID")
email_input = gr.Textbox(label="Email (only for submission verification, it won't be shown)")
description_input = gr.Textbox(label="System description", lines=6)
file_input = gr.File(label="Upload a JSON file", file_types=[".json"], type="filepath", file_count="single")
evaluate_button = gr.Button("Evaluate")
# System results table
with gr.Row(visible=True):
lenient_f1 = gr.Number(label="Lenient F1", interactive=False)
strict_f1 = gr.Number(label="Strict F1", interactive=False)
average_f1 = gr.Number(label="Average F1", interactive=False)
# Submit to leaderboard
submit_button = gr.Button("Submit to leaderboard", visible=False)
evaluate_button.click(process_file,
inputs=[file_input, team_input, run_id, description_input, email_input],
outputs=[evaluate_button,submit_button,lenient_f1, strict_f1, average_f1])
submit_button.click(update_leaderboard,
inputs=[email_input, team_input, run_id, description_input, lenient_f1, strict_f1, average_f1],
outputs=[leaderboard_table, tabs, evaluate_button, submit_button, team_input, run_id, description_input, email_input, file_input,lenient_f1, strict_f1, average_f1])
leaderboard.launch() |