Mehrdad-S commited on
Commit
be77ede
Β·
verified Β·
1 Parent(s): 2255cd8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -43
app.py CHANGED
@@ -1,46 +1,51 @@
 
1
  import gradio as gr
2
- import threading
3
- import time
4
- from utils import load_leaderboard, update_leaderboard
5
- from evaluate import evaluate_model
6
-
7
- def refresh_leaderboard_models():
8
- leaderboard = load_leaderboard()
9
- for entry in leaderboard:
10
- model = entry["model"]
11
- score = evaluate_model(model)
12
- if score is not None:
13
- update_leaderboard(model, score)
14
- print("Leaderboard refreshed.")
15
-
16
- # Run refresh in a background thread on Space start
17
- threading.Thread(target=refresh_leaderboard_models, daemon=True).start()
18
-
19
- def show_leaderboard():
20
- data = load_leaderboard()
21
- if not data:
22
- return "No models evaluated yet."
23
- return "\n".join([f"{i+1}. {entry['model']} - {entry['score']:.4f}" for i, entry in enumerate(data)])
24
 
25
  def submit_model(model_name):
26
- score = evaluate_model(model_name)
27
- if score is None:
28
- return "❌ Failed to load or evaluate model."
29
- update_leaderboard(model_name, score)
30
- return f"βœ… Model evaluated with score: {score:.4f}"
31
-
32
- with gr.Blocks() as demo:
33
- gr.Markdown("# πŸ† Persian Embedding Leaderboard")
34
-
35
- with gr.Tab("Leaderboard"):
36
- leaderboard_display = gr.Textbox(label="Leaderboard", lines=20)
37
- btn_refresh = gr.Button("Refresh")
38
- btn_refresh.click(fn=show_leaderboard, outputs=leaderboard_display)
39
-
40
- with gr.Tab("Submit Model"):
41
- model_input = gr.Textbox(label="Hugging Face Model ID", placeholder="e.g., HooshvareLab/bert-fa-base-uncased")
42
- submit_btn = gr.Button("Submit for Evaluation")
43
- result_output = gr.Textbox(label="Result")
44
- submit_btn.click(fn=submit_model, inputs=model_input, outputs=result_output)
45
-
46
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
  import gradio as gr
3
+ import json
4
+ from evaluate import evaluate_model, load_dataset
5
+ from datetime import datetime
6
+
7
+ # Load dataset once
8
+ dataset = load_dataset()
9
+
10
+ # Load or initialize leaderboard
11
+ try:
12
+ with open("leaderboard.json", "r", encoding="utf-8") as f:
13
+ leaderboard = json.load(f)
14
+ except FileNotFoundError:
15
+ leaderboard = []
 
 
 
 
 
 
 
 
 
16
 
17
  def submit_model(model_name):
18
+ score = evaluate_model(model_name, dataset)
19
+ leaderboard.append({
20
+ "model": model_name,
21
+ "score": round(score * 100, 2),
22
+ "date": datetime.now().strftime("%Y-%m-%d")
23
+ })
24
+ leaderboard.sort(key=lambda x: x["score"], reverse=True)
25
+ with open("leaderboard.json", "w", encoding="utf-8") as f:
26
+ json.dump(leaderboard, f, ensure_ascii=False, indent=2)
27
+ return update_table()
28
+
29
+ def update_table():
30
+ headers = ["πŸ… Rank", "πŸ“Œ Model Name", "🎯 Score", "πŸ“† Date"]
31
+ rows = [[i + 1, row["model"], f"{row['score']}%", row["date"]] for i, row in enumerate(leaderboard)]
32
+ return headers, rows
33
+
34
+ with gr.Blocks(theme=gr.themes.Monochrome()) as demo:
35
+ gr.Markdown("""
36
+ # πŸ† Persian Embedding Leaderboard
37
+ Submit your model to evaluate on the [arshiaafshani/persian-natural-fluently](https://huggingface.co/datasets/arshiaafshani/persian-natural-fluently) dataset.
38
+ """)
39
+
40
+ with gr.Row():
41
+ model_input = gr.Textbox(label="Enter HuggingFace Model Name", placeholder="e.g. HooshvareLab/bert-fa-base-uncased")
42
+ submit_btn = gr.Button("Evaluate & Submit")
43
+
44
+ table = gr.Dataframe(headers=["πŸ… Rank", "πŸ“Œ Model Name", "🎯 Score", "πŸ“† Date"],
45
+ value=update_table()[1],
46
+ interactive=False)
47
+
48
+ submit_btn.click(fn=submit_model, inputs=model_input, outputs=table)
49
+
50
+ if __name__ == "__main__":
51
+ demo.launch()