Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pandas as pd | |
| from src.process_data import * | |
| CITATION_TEXT = open(f"pages/citation.bib", "r").read() | |
| languages = ["All", "Bengali", "English", "French", "German", "Italian", "Polish", "Russian", "Spanish"] | |
| datasets = ["All", "CaFE", "CREMA-D", "EMNS", "Emozionalmente", "eNTERFACE", "JL-Corpus", "MESD", "nEMO", "Oreau", "PAVOQUE", "RAVDESS", "RESD", "SUBESCO"] | |
| emotions = [ | |
| "All", "anger", "anxiety", "apology", "assertiveness", | |
| "calm", "concern", "disgust", "encouragement", "enthusiasm", | |
| "excitement", "fear", "happiness", "neutral", "poker", | |
| "sadness", "sarcasm", "surprise", | |
| ] | |
| metric = ["f1_macro", "accuracy", "weighted_f1"] | |
| def app(): | |
| with gr.Blocks(theme=gr.themes.Soft(primary_hue="pink", secondary_hue="purple")) as demo: | |
| gr.Markdown(open("pages/header.md", "r").read(), container=True) | |
| with gr.Tabs(): | |
| with gr.Tab("π Leaderboard", elem_classes='tab-item'): | |
| with gr.Tab("Overall Results", elem_classes='tab-item'): | |
| gr.Markdown(open("pages/overall-results.md", "r").read(), elem_classes='tab-item', container=True) | |
| overall_table = gr.Dataframe(show_row_numbers=True, pinned_columns=2) | |
| with gr.Tab("Results per Language", elem_classes='tab-item'): | |
| gr.Markdown(open("pages/results-per-language.md", "r").read(), elem_classes='tab-item', container=True) | |
| languages_filter = gr.CheckboxGroup(choices=languages, label="Select columns", value=languages) | |
| select_lang_metric = gr.Radio(metric, value='f1_macro', label="Select metric") | |
| lang_table = gr.Dataframe(show_row_numbers=True, pinned_columns=2) | |
| with gr.Tab("Results per Dataset", elem_classes='tab-item'): | |
| gr.Markdown(open("pages/results-per-dataset.md", "r").read(), elem_classes='tab-item', container=True) | |
| dataset_filter = gr.CheckboxGroup(choices=datasets, label="Select columns", value=datasets) | |
| select_ds_metric = gr.Radio(metric, value='f1_macro', label="Select metric") | |
| dataset_table = gr.Dataframe(show_row_numbers=True, pinned_columns=2) | |
| with gr.Tab("Results per Emotion", elem_classes='tab-item'): | |
| gr.Markdown(open("pages/results-per-emotion.md", "r").read(), elem_classes='tab-item', container=True) | |
| emo_filter = gr.CheckboxGroup(choices=emotions, label="Select columns", value=emotions) | |
| emotion_table = gr.Dataframe(show_row_numbers=True, pinned_columns=2) | |
| df_state = gr.State() | |
| def update_leaderboards(languages=[], datasets=[], emotions=[], select_lang_metric="f1_macro", select_ds_metric="f1_macro"): | |
| df = pd.read_json("results.jsonl", lines=True) | |
| lang_dict = build_lang_dict(df) | |
| ds_dict = build_ds_dict(df) | |
| emo_dict = build_emo_dict(df) | |
| overall = overall_leaderboard(df) | |
| by_lang = leaderboard_per_group(lang_dict, languages, metric=select_lang_metric) | |
| by_dataset = leaderboard_per_group(ds_dict, datasets, metric=select_ds_metric) | |
| by_emotion = leaderboard_per_group(emo_dict, emotions) | |
| return overall, by_lang, by_dataset, by_emotion, "Loaded successfully." | |
| demo.load( | |
| update_leaderboards, | |
| inputs=[languages_filter, dataset_filter, emo_filter], | |
| outputs=[overall_table, lang_table, dataset_table, emotion_table, df_state] | |
| ) | |
| def on_change(selected_languages, selected_lang_metric, selected_datasets, selected_ds_metric, selected_emotions): | |
| return update_leaderboards(languages=selected_languages, select_lang_metric=selected_lang_metric, datasets=selected_datasets, select_ds_metric=selected_ds_metric, emotions=selected_emotions) | |
| languages_filter.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], | |
| [overall_table, lang_table, dataset_table, emotion_table]) | |
| select_lang_metric.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], | |
| [overall_table, lang_table, dataset_table, emotion_table]) | |
| dataset_filter.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], | |
| [overall_table, lang_table, dataset_table, emotion_table]) | |
| select_ds_metric.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], | |
| [overall_table, lang_table, dataset_table, emotion_table]) | |
| emo_filter.change(on_change, [languages_filter, select_lang_metric, dataset_filter, select_ds_metric, emo_filter], | |
| [overall_table, lang_table, dataset_table, emotion_table]) | |
| with gr.Tab("π About", elem_classes='tab-item'): | |
| gr.Markdown(open("pages/about.md", "r").read(), elem_classes='tab-item') | |
| with gr.Tab("π’ Evaluate your model", elem_classes='tab-item'): | |
| gr.Markdown(open("pages/evaluate.md", "r").read(), elem_classes='tab-item') | |
| with gr.Tab("π¬ Submit here!", elem_classes='tab-item'): | |
| gr.Markdown(open("pages/submit.md", "r").read(), elem_classes='tab-item') | |
| with gr.Column(): | |
| with gr.Accordion("π Citation", open=False, elem_classes='tab-item'): | |
| citation_button = gr.Textbox( | |
| label="", | |
| value=CITATION_TEXT, | |
| lines=20, | |
| elem_id="citation-button", | |
| show_copy_button=True, | |
| ) | |
| return demo | |
| if __name__ == "__main__": | |
| demo = app() | |
| demo.launch() |