|
import pandas as pd |
|
import gradio as gr |
|
import os |
|
from datasets import load_dataset, Dataset, concatenate_datasets |
|
import datetime |
|
|
|
|
|
scoreDatasetName = "NAMAA-Space/egyptian_leaderboard_scores" |
|
requestsDatasetName = "oddadmix/egyptian_leaderboard_requests" |
|
|
|
|
|
|
|
def show_leaderboard(): |
|
leaderboard = load_dataset(scoreDatasetName, split="train").to_pandas() |
|
|
|
leaderboard = leaderboard.groupby("model_name").agg({"bleu": "max", "meteor": "max", "chrf": "max"}).reset_index() |
|
|
|
return leaderboard.sort_values(by="bleu", ascending=False) |
|
|
|
def submit_to_leaderboard(model_name, model_type, revision, model_prompt): |
|
|
|
requestsDataset = load_dataset(requestsDatasetName, split="train") |
|
|
|
found = requestsDataset.filter(lambda x: x["model_name"] == model_name) |
|
|
|
if len(found) > 0: |
|
return "Model already submitted to the leaderboard" |
|
|
|
newRequest = Dataset.from_list([{ |
|
"model_name": model_name, |
|
"submission_time": pd.Timestamp.now(), |
|
"model_type": model_type, |
|
"status": "pending", |
|
"revision": revision, |
|
"prompt": model_prompt |
|
}]) |
|
|
|
finalRequestsDataset = concatenate_datasets([ requestsDataset , newRequest]) |
|
|
|
finalRequestsDataset.push_to_hub(requestsDatasetName, private=True) |
|
|
|
return "Model submitted to the leaderboard" |
|
|
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
|
gr.Markdown("# English-to-Egyptian Arabic Translation Leaderboard") |
|
gr.Markdown("## [Try Masrawy Now!!](https://huggingface.co/spaces/oddadmix/Masrawy-English-To-Egyptian)") |
|
|
|
leaderboard_output = gr.DataFrame(label="Leaderboard", value=show_leaderboard()) |
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
gr.Markdown("## Submit Model to the Leaderboard") |
|
model_input = gr.Textbox(label="Model Name", placeholder="Enter the model's Hugging Face name...") |
|
|
|
model_type = gr.Radio(choices=["translation", "text-generation"], label="Model Type") |
|
|
|
revision = gr.Textbox(label="Revision", placeholder="Enter the model's revision...") |
|
|
|
model_prompt = gr.Textbox(label="Model Prompt", placeholder="Enter the model's prompt if it's a text-generation model as prefix...") |
|
|
|
submit_btn = gr.Button("Submit") |
|
|
|
message = gr.Textbox(label="Message") |
|
|
|
|
|
|
|
|
|
|
|
submit_btn.click( |
|
submit_to_leaderboard, |
|
inputs=[model_input, model_type, revision, model_prompt], |
|
outputs=[message] |
|
) |
|
|
|
|
|
demo.launch() |
|
|
|
|