Update app.py
Browse files
app.py
CHANGED
@@ -92,27 +92,29 @@ def calculate_metrics(predictions_df):
|
|
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 |
-
|
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,11 +131,9 @@ 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,33 +180,17 @@ def process_submission(model_name, csv_file):
|
|
180 |
columns=["Model_Name", "WER", "CER", "Combined_Score", "timestamp"]
|
181 |
)
|
182 |
|
183 |
-
|
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 |
-
|
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,7 +209,6 @@ with gr.Blocks(title="Bambara ASR Leaderboard") as demo:
|
|
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,9 +233,6 @@ with gr.Blocks(title="Bambara ASR Leaderboard") as demo:
|
|
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
|
|
|
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 prepare_leaderboard_for_display(df, sort_by="Combined_Score"):
|
100 |
"""Format leaderboard for display with ranking and percentages"""
|
101 |
if len(df) == 0:
|
102 |
return pd.DataFrame(columns=["Rank", "Model_Name", "WER (%)", "CER (%)", "Combined_Score (%)", "timestamp"])
|
103 |
|
104 |
+
|
105 |
display_df = df.copy()
|
106 |
|
|
|
107 |
display_df = display_df.sort_values(sort_by)
|
108 |
|
|
|
109 |
display_df.insert(0, "Rank", range(1, len(display_df) + 1))
|
110 |
|
|
|
111 |
for col in ["WER", "CER", "Combined_Score"]:
|
112 |
if col in display_df.columns:
|
|
|
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 |
+
# Removed the clickable model name transformation
|
117 |
+
|
118 |
return display_df
|
119 |
|
120 |
def update_ranking(method):
|
|
|
131 |
elif method == "CER Only":
|
132 |
sort_column = "CER"
|
133 |
|
|
|
134 |
return prepare_leaderboard_for_display(current_lb, sort_column)
|
135 |
|
136 |
except Exception:
|
|
|
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 |
+
|
184 |
updated_leaderboard = pd.concat([leaderboard, new_entry]).sort_values("Combined_Score")
|
185 |
updated_leaderboard.to_csv(leaderboard_file, index=False)
|
186 |
|
|
|
187 |
display_leaderboard = prepare_leaderboard_for_display(updated_leaderboard)
|
188 |
|
189 |
+
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
|
|
|
|
|
|
|
|
|
|
|
190 |
|
191 |
except Exception as e:
|
192 |
return f"Error processing submission: {str(e)}", None
|
193 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
with gr.Blocks(title="Bambara ASR Leaderboard") as demo:
|
195 |
gr.Markdown(
|
196 |
"""
|
|
|
209 |
if "Combined_Score" not in current_leaderboard.columns:
|
210 |
current_leaderboard["Combined_Score"] = current_leaderboard["WER"] * 0.7 + current_leaderboard["CER"] * 0.3
|
211 |
|
|
|
212 |
display_leaderboard = prepare_leaderboard_for_display(current_leaderboard)
|
213 |
except Exception:
|
214 |
display_leaderboard = pd.DataFrame(columns=["Rank", "Model_Name", "WER (%)", "CER (%)", "Combined_Score (%)", "timestamp"])
|
|
|
233 |
outputs=[leaderboard_view]
|
234 |
)
|
235 |
|
|
|
|
|
|
|
236 |
gr.Markdown(
|
237 |
"""
|
238 |
## Metrics Explanation
|