sudoping01 commited on
Commit
59944a0
·
verified ·
1 Parent(s): 1c9f0b6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -15
app.py CHANGED
@@ -92,35 +92,27 @@ def calculate_metrics(predictions_df):
92
 
93
  return avg_wer, avg_cer, weighted_wer, weighted_cer, results
94
 
95
- def format_as_percentage(value):
96
- """Convert decimal to percentage with 2 decimal places"""
97
- return f"{value * 100:.2f}%"
98
-
99
- def make_clickable_model(model_name):
100
- """Format model name as clickable link to Hugging Face hub"""
101
- link = f"https://huggingface.co/{model_name}"
102
- return f'<a href="{link}" target="_blank" style="text-decoration: underline;">{model_name}</a>'
103
-
104
  def prepare_leaderboard_for_display(df, sort_by="Combined_Score"):
105
  """Format leaderboard for display with ranking and percentages"""
106
  if len(df) == 0:
107
  return pd.DataFrame(columns=["Rank", "Model_Name", "WER (%)", "CER (%)", "Combined_Score (%)", "timestamp"])
108
 
109
-
110
  display_df = df.copy()
111
 
 
112
  display_df = display_df.sort_values(sort_by)
113
 
 
114
  display_df.insert(0, "Rank", range(1, len(display_df) + 1))
115
 
 
116
  for col in ["WER", "CER", "Combined_Score"]:
117
  if col in display_df.columns:
 
118
  display_df[f"{col} (%)"] = display_df[col].apply(lambda x: f"{x * 100:.2f}")
119
  display_df = display_df.drop(col, axis=1)
120
 
121
- if "Model_Name" in display_df.columns:
122
- display_df["Model_Name"] = display_df["Model_Name"].apply(make_clickable_model)
123
-
124
  return display_df
125
 
126
  def update_ranking(method):
@@ -137,9 +129,11 @@ def update_ranking(method):
137
  elif method == "CER Only":
138
  sort_column = "CER"
139
 
 
140
  return prepare_leaderboard_for_display(current_lb, sort_column)
141
 
142
  except Exception:
 
143
  return pd.DataFrame(columns=["Rank", "Model_Name", "WER (%)", "CER (%)", "Combined_Score (%)", "timestamp"])
144
 
145
  def process_submission(model_name, csv_file):
@@ -186,17 +180,33 @@ def process_submission(model_name, csv_file):
186
  columns=["Model_Name", "WER", "CER", "Combined_Score", "timestamp"]
187
  )
188
 
189
-
190
  updated_leaderboard = pd.concat([leaderboard, new_entry]).sort_values("Combined_Score")
191
  updated_leaderboard.to_csv(leaderboard_file, index=False)
192
 
 
193
  display_leaderboard = prepare_leaderboard_for_display(updated_leaderboard)
194
 
195
- return f"Submission processed successfully! WER: {format_as_percentage(avg_wer)}, CER: {format_as_percentage(avg_cer)}, Combined Score: {format_as_percentage(combined_score)}", display_leaderboard
 
 
 
 
 
196
 
197
  except Exception as e:
198
  return f"Error processing submission: {str(e)}", None
199
 
 
 
 
 
 
 
 
 
 
 
200
  with gr.Blocks(title="Bambara ASR Leaderboard") as demo:
201
  gr.Markdown(
202
  """
@@ -215,6 +225,7 @@ with gr.Blocks(title="Bambara ASR Leaderboard") as demo:
215
  if "Combined_Score" not in current_leaderboard.columns:
216
  current_leaderboard["Combined_Score"] = current_leaderboard["WER"] * 0.7 + current_leaderboard["CER"] * 0.3
217
 
 
218
  display_leaderboard = prepare_leaderboard_for_display(current_leaderboard)
219
  except Exception:
220
  display_leaderboard = pd.DataFrame(columns=["Rank", "Model_Name", "WER (%)", "CER (%)", "Combined_Score (%)", "timestamp"])
@@ -239,6 +250,9 @@ with gr.Blocks(title="Bambara ASR Leaderboard") as demo:
239
  outputs=[leaderboard_view]
240
  )
241
 
 
 
 
242
  gr.Markdown(
243
  """
244
  ## Metrics Explanation
 
92
 
93
  return avg_wer, avg_cer, weighted_wer, weighted_cer, results
94
 
 
 
 
 
 
 
 
 
 
95
  def prepare_leaderboard_for_display(df, sort_by="Combined_Score"):
96
  """Format leaderboard for display with ranking and percentages"""
97
  if len(df) == 0:
98
  return pd.DataFrame(columns=["Rank", "Model_Name", "WER (%)", "CER (%)", "Combined_Score (%)", "timestamp"])
99
 
100
+ # Make a copy to avoid modifying the original
101
  display_df = df.copy()
102
 
103
+ # Sort by specified column
104
  display_df = display_df.sort_values(sort_by)
105
 
106
+ # Add ranking column
107
  display_df.insert(0, "Rank", range(1, len(display_df) + 1))
108
 
109
+ # Convert metrics to percentages for display
110
  for col in ["WER", "CER", "Combined_Score"]:
111
  if col in display_df.columns:
112
+ # Format to 2 decimal places but keep as numeric for sorting
113
  display_df[f"{col} (%)"] = display_df[col].apply(lambda x: f"{x * 100:.2f}")
114
  display_df = display_df.drop(col, axis=1)
115
 
 
 
 
116
  return display_df
117
 
118
  def update_ranking(method):
 
129
  elif method == "CER Only":
130
  sort_column = "CER"
131
 
132
+ # Format for display with ranking and percentages
133
  return prepare_leaderboard_for_display(current_lb, sort_column)
134
 
135
  except Exception:
136
+ # Return empty dataframe with formatted columns
137
  return pd.DataFrame(columns=["Rank", "Model_Name", "WER (%)", "CER (%)", "Combined_Score (%)", "timestamp"])
138
 
139
  def process_submission(model_name, csv_file):
 
180
  columns=["Model_Name", "WER", "CER", "Combined_Score", "timestamp"]
181
  )
182
 
183
+ # Update leaderboard without formatting for CSV storage
184
  updated_leaderboard = pd.concat([leaderboard, new_entry]).sort_values("Combined_Score")
185
  updated_leaderboard.to_csv(leaderboard_file, index=False)
186
 
187
+ # Format for display with ranking and percentages
188
  display_leaderboard = prepare_leaderboard_for_display(updated_leaderboard)
189
 
190
+ # Format percentages for the result message
191
+ wer_pct = f"{avg_wer * 100:.2f}%"
192
+ cer_pct = f"{avg_cer * 100:.2f}%"
193
+ combined_pct = f"{combined_score * 100:.2f}%"
194
+
195
+ return f"Submission processed successfully! WER: {wer_pct}, CER: {cer_pct}, Combined Score: {combined_pct}", display_leaderboard
196
 
197
  except Exception as e:
198
  return f"Error processing submission: {str(e)}", None
199
 
200
+ def add_model_info_section():
201
+ """Return HTML with information about viewing model details"""
202
+ return """
203
+ <div style="margin-top: 20px; padding: 10px; background-color: #f8f9fa; border-radius: 5px;">
204
+ <p><strong>📌 Note:</strong> To view details about a specific model, visit its page on the Hugging Face Hub:</p>
205
+ <p>https://huggingface.co/MODEL_NAME</p>
206
+ <p>For example: <a href="https://huggingface.co/MALIBA-AI/bambara-asr" target="_blank">https://huggingface.co/MALIBA-AI/bambara-asr</a></p>
207
+ </div>
208
+ """
209
+
210
  with gr.Blocks(title="Bambara ASR Leaderboard") as demo:
211
  gr.Markdown(
212
  """
 
225
  if "Combined_Score" not in current_leaderboard.columns:
226
  current_leaderboard["Combined_Score"] = current_leaderboard["WER"] * 0.7 + current_leaderboard["CER"] * 0.3
227
 
228
+ # Format for display with ranking and percentages
229
  display_leaderboard = prepare_leaderboard_for_display(current_leaderboard)
230
  except Exception:
231
  display_leaderboard = pd.DataFrame(columns=["Rank", "Model_Name", "WER (%)", "CER (%)", "Combined_Score (%)", "timestamp"])
 
250
  outputs=[leaderboard_view]
251
  )
252
 
253
+ # Add info about viewing model details
254
+ gr.HTML(add_model_info_section())
255
+
256
  gr.Markdown(
257
  """
258
  ## Metrics Explanation