Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -2,74 +2,75 @@ import gradio as gr
|
|
2 |
import json
|
3 |
from datetime import datetime
|
4 |
from evaluate import evaluate_model
|
5 |
-
from
|
6 |
-
from huggingface_hub import HfApi, HfFolder, Repository
|
7 |
import os
|
8 |
|
9 |
-
#
|
10 |
-
HF_REPO_ID = "Mehrdad-S/persian-leaderboard-data" # Replace with your
|
11 |
-
HF_TOKEN = os.getenv("HF_TOKEN")
|
12 |
FILENAME = "leaderboard.json"
|
|
|
13 |
|
14 |
-
# Load
|
15 |
-
eval_dataset = load_dataset("arshiaafshani/persian-natural-fluently", split="train[:10]")
|
16 |
-
|
17 |
def load_leaderboard():
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
repo.push_to_hub(commit_message="Update leaderboard")
|
27 |
|
|
|
28 |
def submit_model(model_name):
|
29 |
leaderboard = load_leaderboard()
|
30 |
|
31 |
-
score = round(evaluate_model(model_name
|
32 |
date = datetime.now().strftime("%Y-%m-%d")
|
33 |
|
34 |
-
# Update
|
35 |
-
updated = False
|
36 |
for item in leaderboard:
|
37 |
if item["model"] == model_name:
|
38 |
item["score"] = score
|
39 |
item["date"] = date
|
40 |
-
updated = True
|
41 |
break
|
42 |
-
|
43 |
leaderboard.append({"model": model_name, "score": score, "date": date})
|
44 |
|
45 |
-
# Sort by score
|
46 |
leaderboard.sort(key=lambda x: x["score"], reverse=True)
|
47 |
-
|
48 |
-
# Save back
|
49 |
save_leaderboard(leaderboard)
|
50 |
-
|
51 |
return update_table(leaderboard)
|
52 |
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
56 |
|
57 |
-
headers = ["π
Rank", "π Model
|
58 |
-
rows = [[i + 1, row["model"], f"{row['score']}%", row["date"]] for i, row in enumerate(
|
59 |
return headers, rows
|
60 |
|
61 |
-
# UI
|
62 |
with gr.Blocks(theme=gr.themes.Monochrome()) as demo:
|
63 |
gr.Markdown("""
|
64 |
# π Persian Embedding Leaderboard
|
65 |
-
Submit your model to evaluate on the
|
66 |
""")
|
67 |
|
68 |
with gr.Row():
|
69 |
-
model_input = gr.Textbox(label="
|
70 |
submit_btn = gr.Button("Evaluate & Submit")
|
71 |
|
72 |
-
table = gr.Dataframe(headers=["π
Rank", "π Model
|
73 |
value=update_table()[1],
|
74 |
interactive=False)
|
75 |
|
|
|
2 |
import json
|
3 |
from datetime import datetime
|
4 |
from evaluate import evaluate_model
|
5 |
+
from huggingface_hub import Repository, HfApi, hf_hub_download
|
|
|
6 |
import os
|
7 |
|
8 |
+
# --- Configuration ---
|
9 |
+
HF_REPO_ID = "Mehrdad-S/persian-leaderboard-data" # Replace with your repo
|
10 |
+
HF_TOKEN = os.getenv("HF_TOKEN") or "your_hf_write_token_here"
|
11 |
FILENAME = "leaderboard.json"
|
12 |
+
CLONE_DIR = "leaderboard_repo"
|
13 |
|
14 |
+
# --- Load leaderboard.json from the repo ---
|
|
|
|
|
15 |
def load_leaderboard():
|
16 |
+
path = hf_hub_download(repo_id=HF_REPO_ID, filename=FILENAME, repo_type="dataset")
|
17 |
+
with open(path, "r", encoding="utf-8") as f:
|
18 |
+
return json.load(f)
|
19 |
+
|
20 |
+
# --- Save leaderboard.json and push to HF Hub ---
|
21 |
+
def save_leaderboard(data):
|
22 |
+
if not os.path.exists(CLONE_DIR):
|
23 |
+
repo = Repository(local_dir=CLONE_DIR, clone_from=HF_REPO_ID, repo_type="dataset", use_auth_token=HF_TOKEN)
|
24 |
+
else:
|
25 |
+
repo = Repository(local_dir=CLONE_DIR, use_auth_token=HF_TOKEN)
|
26 |
+
|
27 |
+
leaderboard_path = os.path.join(CLONE_DIR, FILENAME)
|
28 |
+
with open(leaderboard_path, "w", encoding="utf-8") as f:
|
29 |
+
json.dump(data, f, ensure_ascii=False, indent=2)
|
30 |
+
|
31 |
repo.push_to_hub(commit_message="Update leaderboard")
|
32 |
|
33 |
+
# --- Submit model and update leaderboard ---
|
34 |
def submit_model(model_name):
|
35 |
leaderboard = load_leaderboard()
|
36 |
|
37 |
+
score = round(evaluate_model(model_name), 2)
|
38 |
date = datetime.now().strftime("%Y-%m-%d")
|
39 |
|
40 |
+
# Update existing or add new
|
|
|
41 |
for item in leaderboard:
|
42 |
if item["model"] == model_name:
|
43 |
item["score"] = score
|
44 |
item["date"] = date
|
|
|
45 |
break
|
46 |
+
else:
|
47 |
leaderboard.append({"model": model_name, "score": score, "date": date})
|
48 |
|
|
|
49 |
leaderboard.sort(key=lambda x: x["score"], reverse=True)
|
|
|
|
|
50 |
save_leaderboard(leaderboard)
|
|
|
51 |
return update_table(leaderboard)
|
52 |
|
53 |
+
# --- Build table view ---
|
54 |
+
def update_table(data=None):
|
55 |
+
if data is None:
|
56 |
+
data = load_leaderboard()
|
57 |
|
58 |
+
headers = ["π
Rank", "π Model", "π― Score", "π Date"]
|
59 |
+
rows = [[i + 1, row["model"], f"{row['score']}%", row["date"]] for i, row in enumerate(data)]
|
60 |
return headers, rows
|
61 |
|
62 |
+
# --- UI ---
|
63 |
with gr.Blocks(theme=gr.themes.Monochrome()) as demo:
|
64 |
gr.Markdown("""
|
65 |
# π Persian Embedding Leaderboard
|
66 |
+
Submit your HuggingFace model to evaluate and rank on the leaderboard.
|
67 |
""")
|
68 |
|
69 |
with gr.Row():
|
70 |
+
model_input = gr.Textbox(label="Model Name", placeholder="e.g. HooshvareLab/bert-fa-base-uncased")
|
71 |
submit_btn = gr.Button("Evaluate & Submit")
|
72 |
|
73 |
+
table = gr.Dataframe(headers=["π
Rank", "π Model", "π― Score", "π Date"],
|
74 |
value=update_table()[1],
|
75 |
interactive=False)
|
76 |
|