Steveeeeeeen HF Staff commited on
Commit
435348f
·
verified ·
1 Parent(s): e0568ef

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +108 -6
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>🤗 Open Automatic Speech Recognition on EdAcc Dataset</h1>", elem_classes="markdown-text")
84
- gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")
 
 
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
- if "All" in cols:
108
- return gr.Dataframe(value=original_df)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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