import json import gradio as gr import pandas as pd from pages.summarization_playground import custom_css with open("prompt/prompt.json", "r") as file: json_data = file.read() prompts = json.loads(json_data)# Sample data for the leaderboard winning_rate = [prompt['metric']['winning_number'] for prompt in prompts] winning_rate = [num / sum(winning_rate) for num in winning_rate] data = { 'Rank': [i+1 for i in range(len(prompts))], 'Methods': [prompt['id'] for prompt in prompts], 'Rouge Score': [prompt['metric']['Rouge'] for prompt in prompts], 'Winning Rate': winning_rate, 'Authors': [prompt['author'] for prompt in prompts] } df = pd.DataFrame(data) df.sort_values(by='Rouge Score', ascending=False, inplace=True) # Define a list of medal emojis medals = ['🏅', '🥈', '🥉'] for i in range(3): df.loc[i, 'Authors'] = f"{medals[i]} {df.loc[i, 'Authors']}" def update_leaderboard(sort_by): # In a real implementation, this would filter the data based on the category sorted_df = df.sort_values(by=sort_by, ascending=False) # Update ranks based on new sorting sorted_df['Rank'] = range(1, len(sorted_df) + 1) # Convert DataFrame to HTML with clickable headers for sorting html = sorted_df.to_html(index=False, escape=False) # Add sorting links to column headers for column in sorted_df.columns: html = html.replace(f'