Update app.py
Browse files
app.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
import gradio as gr
|
2 |
import pandas as pd
|
3 |
import json
|
4 |
-
from constants import BANNER, INTRODUCTION_TEXT, CITATION_TEXT, METRICS_TAB_TEXT, DIR_OUTPUT_REQUESTS, LEADERBOARD_CSS
|
5 |
from init import is_model_on_hub, upload_file, load_all_info_from_dataset_hub
|
6 |
from utils_display import AutoEvalColumn, fields, make_clickable_model, styled_error, styled_message
|
7 |
from datetime import datetime, timezone
|
@@ -11,6 +11,8 @@ LAST_UPDATED = "Nov 22th 2024"
|
|
11 |
column_names = {
|
12 |
"model": "Model",
|
13 |
"Average WER ⬇️": "Average WER ⬇️",
|
|
|
|
|
14 |
"RTFx": "RTFx ⬆️️",
|
15 |
"Bulgarian_female": "Bulgarian female",
|
16 |
"Bulgarian_male": "Bulgarian male",
|
@@ -48,6 +50,13 @@ column_names = {
|
|
48 |
"Vietnamese_male": "Vietnamese male",
|
49 |
}
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
eval_queue_repo, requested_models, csv_results = load_all_info_from_dataset_hub()
|
52 |
|
53 |
if not csv_results.exists():
|
@@ -72,6 +81,67 @@ for col in original_df.columns:
|
|
72 |
|
73 |
original_df.rename(columns=column_names, inplace=True)
|
74 |
original_df.sort_values(by='Average WER ⬇️', inplace=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
|
76 |
COLS = [c.name for c in fields(AutoEvalColumn)]
|
77 |
TYPES = [c.type for c in fields(AutoEvalColumn)]
|
@@ -80,14 +150,16 @@ TYPES = [c.type for c in fields(AutoEvalColumn)]
|
|
80 |
with gr.Blocks(css=LEADERBOARD_CSS) as demo:
|
81 |
# gr.HTML(BANNER, elem_id="banner")
|
82 |
# Write a header with the title
|
83 |
-
gr.Markdown("<h1>🤗
|
84 |
-
|
|
|
|
|
85 |
|
86 |
with gr.Tabs(elem_classes="tab-buttons") as tabs:
|
87 |
with gr.TabItem("🏅 Leaderboard", elem_id="od-benchmark-tab-table", id=0):
|
88 |
# Add column filter dropdown
|
89 |
column_filter = gr.Dropdown(
|
90 |
-
choices=["All"] + [v for k,v in column_names.items() if k != "model"],
|
91 |
label="Filter by column",
|
92 |
multiselect=True,
|
93 |
value=["All"],
|
@@ -104,8 +176,38 @@ with gr.Blocks(css=LEADERBOARD_CSS) as demo:
|
|
104 |
|
105 |
# Update table columns when filter changes
|
106 |
def update_table(cols):
|
107 |
-
|
108 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
selected_cols = ["Model"] + cols # Always include the Model column
|
110 |
return gr.Dataframe(value=original_df[selected_cols])
|
111 |
|
|
|
1 |
import gradio as gr
|
2 |
import pandas as pd
|
3 |
import json
|
4 |
+
from constants import BANNER, INTRODUCTION_TEXT, CITATION_TEXT, METRICS_TAB_TEXT, DIR_OUTPUT_REQUESTS, LEADERBOARD_CSS, EXPLANATION
|
5 |
from init import is_model_on_hub, upload_file, load_all_info_from_dataset_hub
|
6 |
from utils_display import AutoEvalColumn, fields, make_clickable_model, styled_error, styled_message
|
7 |
from datetime import datetime, timezone
|
|
|
11 |
column_names = {
|
12 |
"model": "Model",
|
13 |
"Average WER ⬇️": "Average WER ⬇️",
|
14 |
+
"Average Female WER ⬇️": "Average Female WER ⬇️",
|
15 |
+
"Average Male WER ⬇️": "Average Male WER ⬇️",
|
16 |
"RTFx": "RTFx ⬆️️",
|
17 |
"Bulgarian_female": "Bulgarian female",
|
18 |
"Bulgarian_male": "Bulgarian male",
|
|
|
50 |
"Vietnamese_male": "Vietnamese male",
|
51 |
}
|
52 |
|
53 |
+
african_cols = ["Ghanain English female", "Kenyan English female", "Kenyan English male", "Nigerian English female", "Nigerian English male"]
|
54 |
+
north_american_cols = ["Mainstream US English female", "Mainstream US English male"]
|
55 |
+
caribbean_cols = ["Jamaican English female", "Jamaican English male"]
|
56 |
+
latin_american_cols = ["Latin American female", "Latin American male"]
|
57 |
+
british_cols = ["Irish English female", "Irish English male", "Scottish English male", "Southern British English male"]
|
58 |
+
european_cols = ["Eastern European male", "European male", "French female", "Italian female", "Spanish female", "Spanish male", "Catalan female", "Bulgarian female", "Bulgarian male", "Lithuanian male", "Romanian female"]
|
59 |
+
asian_cols = ["Chinese female", "Chinese male", "Indonesian female", "Vietnamese female", "Vietnamese male", "Indian English female", "Indian English male"]
|
60 |
eval_queue_repo, requested_models, csv_results = load_all_info_from_dataset_hub()
|
61 |
|
62 |
if not csv_results.exists():
|
|
|
81 |
|
82 |
original_df.rename(columns=column_names, inplace=True)
|
83 |
original_df.sort_values(by='Average WER ⬇️', inplace=True)
|
84 |
+
female_cols = [col for col in original_df.columns if 'female' == col.split(' ')[-1]]
|
85 |
+
male_cols = [col for col in original_df.columns if 'male' == col.split(' ')[-1]]
|
86 |
+
|
87 |
+
# Create male DataFrame properly
|
88 |
+
male_df = original_df[['Model'] + male_cols].copy() # Create explicit copy with model column
|
89 |
+
male_df.loc[:, 'Average Male WER ⬇️'] = male_df[male_cols].mean(axis=1)
|
90 |
+
male_df.loc[:, 'Average Male WER ⬇️'] = male_df['Average Male WER ⬇️'].apply(formatter)
|
91 |
+
male_df = male_df[['Model', 'Average Male WER ⬇️'] + male_cols]
|
92 |
+
|
93 |
+
# Create female DataFrame properly
|
94 |
+
female_df = original_df[['Model'] + female_cols].copy() # Create explicit copy with model column
|
95 |
+
female_df.loc[:, 'Average Female WER ⬇️'] = female_df[female_cols].mean(axis=1)
|
96 |
+
female_df.loc[:, 'Average Female WER ⬇️'] = female_df['Average Female WER ⬇️'].apply(formatter)
|
97 |
+
female_df = female_df[['Model', 'Average Female WER ⬇️'] + female_cols]
|
98 |
+
|
99 |
+
african_df = original_df[['Model'] + african_cols].copy()
|
100 |
+
african_df.loc[:, 'Average African WER ⬇️'] = african_df[african_cols].mean(axis=1)
|
101 |
+
african_df.loc[:, 'Average African WER ⬇️'] = african_df['Average African WER ⬇️'].apply(formatter)
|
102 |
+
african_df = african_df[['Model', 'Average African WER ⬇️'] + african_cols]
|
103 |
+
|
104 |
+
north_american_df = original_df[['Model'] + north_american_cols].copy()
|
105 |
+
north_american_df.loc[:, 'Average North American WER ⬇️'] = north_american_df[north_american_cols].mean(axis=1)
|
106 |
+
north_american_df.loc[:, 'Average North American WER ⬇️'] = north_american_df['Average North American WER ⬇️'].apply(formatter)
|
107 |
+
north_american_df = north_american_df[['Model', 'Average North American WER ⬇️'] + north_american_cols]
|
108 |
+
|
109 |
+
caribbean_df = original_df[['Model'] + caribbean_cols].copy()
|
110 |
+
caribbean_df.loc[:, 'Average Caribbean WER ⬇️'] = caribbean_df[caribbean_cols].mean(axis=1)
|
111 |
+
caribbean_df.loc[:, 'Average Caribbean WER ⬇️'] = caribbean_df['Average Caribbean WER ⬇️'].apply(formatter)
|
112 |
+
caribbean_df = caribbean_df[['Model', 'Average Caribbean WER ⬇️'] + caribbean_cols]
|
113 |
+
|
114 |
+
latin_american_df = original_df[['Model'] + latin_american_cols].copy()
|
115 |
+
latin_american_df.loc[:, 'Average Latin American WER ⬇️'] = latin_american_df[latin_american_cols].mean(axis=1)
|
116 |
+
latin_american_df.loc[:, 'Average Latin American WER ⬇️'] = latin_american_df['Average Latin American WER ⬇️'].apply(formatter)
|
117 |
+
latin_american_df = latin_american_df[['Model', 'Average Latin American WER ⬇️'] + latin_american_cols]
|
118 |
+
|
119 |
+
british_df = original_df[['Model'] + british_cols].copy()
|
120 |
+
british_df.loc[:, 'Average British WER ⬇️'] = british_df[british_cols].mean(axis=1)
|
121 |
+
british_df.loc[:, 'Average British WER ⬇️'] = british_df['Average British WER ⬇️'].apply(formatter)
|
122 |
+
british_df = british_df[['Model', 'Average British WER ⬇️'] + british_cols]
|
123 |
+
|
124 |
+
european_df = original_df[['Model'] + european_cols].copy()
|
125 |
+
european_df.loc[:, 'Average European WER ⬇️'] = european_df[european_cols].mean(axis=1)
|
126 |
+
european_df.loc[:, 'Average European WER ⬇️'] = european_df['Average European WER ⬇️'].apply(formatter)
|
127 |
+
european_df = european_df[['Model', 'Average European WER ⬇️'] + european_cols]
|
128 |
+
|
129 |
+
asian_df = original_df[['Model'] + asian_cols].copy()
|
130 |
+
asian_df.loc[:, 'Average Asian WER ⬇️'] = asian_df[asian_cols].mean(axis=1)
|
131 |
+
asian_df.loc[:, 'Average Asian WER ⬇️'] = asian_df['Average Asian WER ⬇️'].apply(formatter)
|
132 |
+
asian_df = asian_df[['Model', 'Average Asian WER ⬇️'] + asian_cols]
|
133 |
+
|
134 |
+
|
135 |
+
# add average female and mal to original df and place it after average wer
|
136 |
+
original_df.insert(original_df.columns.get_loc('Average WER ⬇️') + 1, 'Average African WER ⬇️', african_df['Average African WER ⬇️'])
|
137 |
+
original_df.insert(original_df.columns.get_loc('Average WER ⬇️') + 1, 'Average North American WER ⬇️', north_american_df['Average North American WER ⬇️'])
|
138 |
+
original_df.insert(original_df.columns.get_loc('Average WER ⬇️') + 1, 'Average Caribbean WER ⬇️', caribbean_df['Average Caribbean WER ⬇️'])
|
139 |
+
original_df.insert(original_df.columns.get_loc('Average WER ⬇️') + 1, 'Average Latin American WER ⬇️', latin_american_df['Average Latin American WER ⬇️'])
|
140 |
+
original_df.insert(original_df.columns.get_loc('Average WER ⬇️') + 1, 'Average British WER ⬇️', british_df['Average British WER ⬇️'])
|
141 |
+
original_df.insert(original_df.columns.get_loc('Average WER ⬇️') + 1, 'Average European WER ⬇️', european_df['Average European WER ⬇️'])
|
142 |
+
original_df.insert(original_df.columns.get_loc('Average WER ⬇️') + 1, 'Average Asian WER ⬇️', asian_df['Average Asian WER ⬇️'])
|
143 |
+
original_df.insert(original_df.columns.get_loc('Average WER ⬇️') + 1, 'Average Female WER ⬇️', female_df['Average Female WER ⬇️'])
|
144 |
+
original_df.insert(original_df.columns.get_loc('Average WER ⬇️') + 1, 'Average Male WER ⬇️', male_df['Average Male WER ⬇️'])
|
145 |
|
146 |
COLS = [c.name for c in fields(AutoEvalColumn)]
|
147 |
TYPES = [c.type for c in fields(AutoEvalColumn)]
|
|
|
150 |
with gr.Blocks(css=LEADERBOARD_CSS) as demo:
|
151 |
# gr.HTML(BANNER, elem_id="banner")
|
152 |
# Write a header with the title
|
153 |
+
gr.Markdown("<h1>🤗 Testing Model Robustness on EdAcc</h1>", elem_classes="markdown-text")
|
154 |
+
|
155 |
+
|
156 |
+
gr.Markdown(EXPLANATION, elem_classes="markdown-text")
|
157 |
|
158 |
with gr.Tabs(elem_classes="tab-buttons") as tabs:
|
159 |
with gr.TabItem("🏅 Leaderboard", elem_id="od-benchmark-tab-table", id=0):
|
160 |
# Add column filter dropdown
|
161 |
column_filter = gr.Dropdown(
|
162 |
+
choices=["All", "Female", "Male", "African", "North American", "Caribbean", "Latin American", "British", "European", "Asian"] + [v for k,v in column_names.items() if k != "model"],
|
163 |
label="Filter by column",
|
164 |
multiselect=True,
|
165 |
value=["All"],
|
|
|
176 |
|
177 |
# Update table columns when filter changes
|
178 |
def update_table(cols):
|
179 |
+
# Dictionary mapping view names to their corresponding dataframes
|
180 |
+
view_mapping = {
|
181 |
+
"All": original_df,
|
182 |
+
"Female": female_df,
|
183 |
+
"Male": male_df,
|
184 |
+
"African": african_df,
|
185 |
+
"North American": north_american_df,
|
186 |
+
"Caribbean": caribbean_df,
|
187 |
+
"Latin American": latin_american_df,
|
188 |
+
"British": british_df,
|
189 |
+
"European": european_df,
|
190 |
+
"Asian": asian_df
|
191 |
+
}
|
192 |
+
|
193 |
+
# Handle special views
|
194 |
+
selected_special_views = [view for view in view_mapping.keys() if view in cols]
|
195 |
+
|
196 |
+
if selected_special_views:
|
197 |
+
# Start with the first selected view's columns
|
198 |
+
result_cols = set(view_mapping[selected_special_views[0]].columns)
|
199 |
+
|
200 |
+
# Take union of columns from all selected views
|
201 |
+
for view in selected_special_views[1:]:
|
202 |
+
result_cols.update(view_mapping[view].columns)
|
203 |
+
|
204 |
+
# Convert to list and ensure "Model" is first
|
205 |
+
result_cols = ["Model"] + sorted(list(result_cols - {"Model"}))
|
206 |
+
|
207 |
+
# Merge all relevant columns from original_df
|
208 |
+
return gr.Dataframe(value=original_df[result_cols])
|
209 |
+
|
210 |
+
# If no special view is selected, return filtered columns from original df
|
211 |
selected_cols = ["Model"] + cols # Always include the Model column
|
212 |
return gr.Dataframe(value=original_df[selected_cols])
|
213 |
|