Spaces:
Running
Running
Commit
·
de840d4
1
Parent(s):
9408d44
add latex and csv function
Browse files- app.py +122 -37
- latex_utils.py +16 -3
app.py
CHANGED
|
@@ -124,16 +124,19 @@ def plot_radar_chart(df, attributes):
|
|
| 124 |
|
| 125 |
return fig
|
| 126 |
|
| 127 |
-
def pop_latex_table(caption, label,
|
| 128 |
-
table = gen_latex_table(caption, label,
|
| 129 |
return gr.Textbox(table, label="LaTeX Table", visible=True)
|
| 130 |
|
| 131 |
-
def generate_csv(
|
| 132 |
-
df
|
| 133 |
-
|
|
|
|
| 134 |
visible=True)
|
| 135 |
return download_link
|
| 136 |
|
|
|
|
|
|
|
| 137 |
def create_lang_leader_board(lang_dict, lang, dis_lang='en'):
|
| 138 |
best_scores = {}
|
| 139 |
best_plot_datasets = []
|
|
@@ -150,43 +153,104 @@ def create_lang_leader_board(lang_dict, lang, dis_lang='en'):
|
|
| 150 |
# plot = plot_radar_chart(pd.DataFrame(best_scores), best_plot_datasets)
|
| 151 |
# gr.Plot(plot)
|
| 152 |
tab_list = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
|
| 154 |
for dataset, value in lang_dict.items():
|
|
|
|
|
|
|
|
|
|
|
|
|
| 155 |
chosen_dict = dataset_abbr_en_dict if dis_lang == "en" else dataset_abbr_zh_dict
|
| 156 |
with gr.Tab(chosen_dict[dataset]) as tab:
|
| 157 |
for cat, df in value.items():
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
if cat == 'mc':
|
| 159 |
for shot in ['Zeroshot', 'Fewshot']:
|
| 160 |
with gr.Tab(f'Multiple Choice Question ({shot})'):
|
| 161 |
df_component = dataframe_to_gradio(df, is_mc=True, shot=shot)
|
| 162 |
# 加一个latex表格导出按钮, 按一下弹出一个浮动文本窗口
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 177 |
else:
|
| 178 |
with gr.Tab('Question Answering'):
|
| 179 |
df_component = dataframe_to_gradio(df, is_mc=False)
|
| 180 |
-
#
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 188 |
tab_list.append(tab)
|
| 189 |
-
return tab_list
|
| 190 |
|
| 191 |
def get_latest_modification_date():
|
| 192 |
latest = 0
|
|
@@ -213,21 +277,23 @@ translation_dict = {
|
|
| 213 |
def get_language_lb(language):
|
| 214 |
tab_dict = {'English': None, 'Chinese': None}
|
| 215 |
for key, dict in dict_lang.items():
|
| 216 |
-
tab_list = create_lang_leader_board(dict, key, language)
|
| 217 |
-
tab_dict[key] = tab_list
|
| 218 |
-
return
|
| 219 |
|
| 220 |
def switch_language(language):
|
| 221 |
# gr.update(visible=True)
|
| 222 |
-
|
|
|
|
|
|
|
| 223 |
|
| 224 |
def get_lb_body(language='en'):
|
| 225 |
tab_dict = {'English': None, 'Chinese': None}
|
| 226 |
with gr.Blocks() as body:
|
| 227 |
for key, dict in dict_lang.items():
|
| 228 |
with gr.Tab(key):
|
| 229 |
-
tab_list = create_lang_leader_board(dict, key, language)
|
| 230 |
-
tab_dict[key] = tab_list
|
| 231 |
return body, tab_dict
|
| 232 |
|
| 233 |
def launch_gradio():
|
|
@@ -247,14 +313,32 @@ def launch_gradio():
|
|
| 247 |
|
| 248 |
lb_body, tab_dict = get_lb_body(language=lang_state.value)
|
| 249 |
|
| 250 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 251 |
# print(tab_list)
|
| 252 |
|
| 253 |
en_button.click(switch_language, inputs=[gr.State("en")], outputs=[title, intro, leaderboard_section, *tab_list, lang_state], postprocess=False)
|
| 254 |
zh_button.click(switch_language, inputs=[gr.State("zh")], outputs=[title, intro, leaderboard_section, *tab_list, lang_state], postprocess=False)
|
| 255 |
|
| 256 |
|
| 257 |
-
demo
|
| 258 |
|
| 259 |
pd.set_option('display.float_format', '{:.02f}'.format)
|
| 260 |
|
|
@@ -262,4 +346,5 @@ scheduler = BackgroundScheduler()
|
|
| 262 |
scheduler.add_job(launch_gradio, 'interval', hours=1)
|
| 263 |
scheduler.start()
|
| 264 |
|
| 265 |
-
launch_gradio()
|
|
|
|
|
|
| 124 |
|
| 125 |
return fig
|
| 126 |
|
| 127 |
+
def pop_latex_table(caption, label, lang, dataset, cat):
|
| 128 |
+
table = gen_latex_table(caption, label, global_df[lang][dataset][cat])
|
| 129 |
return gr.Textbox(table, label="LaTeX Table", visible=True)
|
| 130 |
|
| 131 |
+
def generate_csv(lang, dataset, cat, shot, chosen_dataset):
|
| 132 |
+
df = global_df[lang][dataset][cat]
|
| 133 |
+
df.to_csv(f"{chosen_dataset}_{lang}_{cat}_{shot}.csv", index=False)
|
| 134 |
+
download_link = gr.File(label="Download Link", type="filepath", value=f"{chosen_dataset}_{lang}_{cat}_{shot}.csv",
|
| 135 |
visible=True)
|
| 136 |
return download_link
|
| 137 |
|
| 138 |
+
global_df = {}
|
| 139 |
+
|
| 140 |
def create_lang_leader_board(lang_dict, lang, dis_lang='en'):
|
| 141 |
best_scores = {}
|
| 142 |
best_plot_datasets = []
|
|
|
|
| 153 |
# plot = plot_radar_chart(pd.DataFrame(best_scores), best_plot_datasets)
|
| 154 |
# gr.Plot(plot)
|
| 155 |
tab_list = []
|
| 156 |
+
|
| 157 |
+
latex_btn_list = []
|
| 158 |
+
latex_textbox_list = []
|
| 159 |
+
|
| 160 |
+
csv_btn_list = []
|
| 161 |
+
csv_textbox_list = []
|
| 162 |
+
|
| 163 |
+
export_params = []
|
| 164 |
+
|
| 165 |
+
if lang not in global_df:
|
| 166 |
+
global_df[lang] = {}
|
| 167 |
|
| 168 |
for dataset, value in lang_dict.items():
|
| 169 |
+
|
| 170 |
+
if dataset not in global_df[lang]:
|
| 171 |
+
global_df[lang][dataset] = {}
|
| 172 |
+
|
| 173 |
chosen_dict = dataset_abbr_en_dict if dis_lang == "en" else dataset_abbr_zh_dict
|
| 174 |
with gr.Tab(chosen_dict[dataset]) as tab:
|
| 175 |
for cat, df in value.items():
|
| 176 |
+
|
| 177 |
+
if cat not in global_df[lang][dataset]:
|
| 178 |
+
global_df[lang][dataset][cat] = df.copy(deep=True)
|
| 179 |
+
|
| 180 |
if cat == 'mc':
|
| 181 |
for shot in ['Zeroshot', 'Fewshot']:
|
| 182 |
with gr.Tab(f'Multiple Choice Question ({shot})'):
|
| 183 |
df_component = dataframe_to_gradio(df, is_mc=True, shot=shot)
|
| 184 |
# 加一个latex表格导出按钮, 按一下弹出一个浮动文本窗口
|
| 185 |
+
latex_textbox = gr.Textbox(label="LaTeX Table", visible=False)
|
| 186 |
+
download_link = gr.File(label="Download Link", type="filepath",
|
| 187 |
+
visible=False)
|
| 188 |
+
|
| 189 |
+
latex_caption = gr.Text(value=f"{chosen_dict[dataset]} Multiple Choice Question ({shot}, {lang}) Leaderboard", visible=False)
|
| 190 |
+
latex_label = gr.Text(value=f"tab:{dataset}_{shot}_{lang}", visible=False)
|
| 191 |
+
param_lang = gr.Text(value=lang, visible=False)
|
| 192 |
+
param_dataset = gr.Text(value=dataset, visible=False)
|
| 193 |
+
param_cat = gr.Text(value=cat, visible=False)
|
| 194 |
+
param_shot = gr.Text(value=shot, visible=False)
|
| 195 |
+
dataset_name = gr.Text(value=chosen_dict[dataset], visible=False)
|
| 196 |
+
with gr.Row():
|
| 197 |
+
latex_button = gr.Button("Export LaTeX Table", variant="primary")
|
| 198 |
+
csv_button = gr.Button("Export CSV", variant="primary")
|
| 199 |
+
|
| 200 |
+
latex_btn_list.append(latex_button)
|
| 201 |
+
latex_textbox_list.append(latex_textbox)
|
| 202 |
+
|
| 203 |
+
csv_btn_list.append(csv_button)
|
| 204 |
+
csv_textbox_list.append(download_link)
|
| 205 |
+
|
| 206 |
+
export_params.append({
|
| 207 |
+
"caption": latex_caption,
|
| 208 |
+
"label": latex_label,
|
| 209 |
+
"lang": param_lang,
|
| 210 |
+
"dataset": param_dataset,
|
| 211 |
+
"cat": param_cat,
|
| 212 |
+
"shot": param_shot,
|
| 213 |
+
"dataset_name": dataset_name
|
| 214 |
+
})
|
| 215 |
+
|
| 216 |
+
|
| 217 |
+
|
| 218 |
else:
|
| 219 |
with gr.Tab('Question Answering'):
|
| 220 |
df_component = dataframe_to_gradio(df, is_mc=False)
|
| 221 |
+
# 加一个latex表格导出按钮, 按一下弹出一个浮动文本窗口
|
| 222 |
+
latex_textbox = gr.Textbox(label="LaTeX Table", visible=False)
|
| 223 |
+
download_link = gr.File(label="Download Link", type="filepath",
|
| 224 |
+
visible=False)
|
| 225 |
+
|
| 226 |
+
latex_caption = gr.Text(value=f"{chosen_dict[dataset]} Question Answering ({lang}) Leaderboard", visible=False)
|
| 227 |
+
latex_label = gr.Text(value=f"tab:{dataset}_{lang}", visible=False)
|
| 228 |
+
param_lang = gr.Text(value=lang, visible=False)
|
| 229 |
+
param_dataset = gr.Text(value=dataset, visible=False)
|
| 230 |
+
param_cat = gr.Text(value=cat, visible=False)
|
| 231 |
+
param_shot = gr.Text(value=shot, visible=False)
|
| 232 |
+
dataset_name = gr.Text(value=chosen_dict[dataset], visible=False)
|
| 233 |
+
with gr.Row():
|
| 234 |
+
latex_button = gr.Button("Export LaTeX Table", variant="primary")
|
| 235 |
+
csv_button = gr.Button("Export CSV", variant="primary")
|
| 236 |
+
|
| 237 |
+
latex_btn_list.append(latex_button)
|
| 238 |
+
latex_textbox_list.append(latex_textbox)
|
| 239 |
+
|
| 240 |
+
csv_btn_list.append(csv_button)
|
| 241 |
+
csv_textbox_list.append(download_link)
|
| 242 |
+
|
| 243 |
+
export_params.append({
|
| 244 |
+
"caption": latex_caption,
|
| 245 |
+
"label": latex_label,
|
| 246 |
+
"lang": param_lang,
|
| 247 |
+
"dataset": param_dataset,
|
| 248 |
+
"cat": param_cat,
|
| 249 |
+
"shot": param_shot,
|
| 250 |
+
"dataset_name": dataset_name
|
| 251 |
+
})
|
| 252 |
tab_list.append(tab)
|
| 253 |
+
return tab_list, latex_btn_list, latex_textbox_list, csv_btn_list, csv_textbox_list, export_params
|
| 254 |
|
| 255 |
def get_latest_modification_date():
|
| 256 |
latest = 0
|
|
|
|
| 277 |
def get_language_lb(language):
|
| 278 |
tab_dict = {'English': None, 'Chinese': None}
|
| 279 |
for key, dict in dict_lang.items():
|
| 280 |
+
tab_list, latex_btn_list, latex_textbox_list, csv_btn_list, csv_textbox_list, export_params = create_lang_leader_board(dict, key, language)
|
| 281 |
+
tab_dict[key] = (tab_list, latex_btn_list, latex_textbox_list, csv_btn_list, csv_textbox_list, export_params)
|
| 282 |
+
return tab_dict
|
| 283 |
|
| 284 |
def switch_language(language):
|
| 285 |
# gr.update(visible=True)
|
| 286 |
+
tab_dict = get_language_lb(language)
|
| 287 |
+
tab_list = [*(tab_dict['English'][0]), *(tab_dict['Chinese'][0])]
|
| 288 |
+
return translation_dict[language]['title'], translation_dict[language]['intro'], translation_dict[language]['lb_sec'], *tab_list, language
|
| 289 |
|
| 290 |
def get_lb_body(language='en'):
|
| 291 |
tab_dict = {'English': None, 'Chinese': None}
|
| 292 |
with gr.Blocks() as body:
|
| 293 |
for key, dict in dict_lang.items():
|
| 294 |
with gr.Tab(key):
|
| 295 |
+
tab_list, latex_btn_list, latex_textbox_list, csv_btn_list, csv_textbox_list, export_params = create_lang_leader_board(dict, key, language)
|
| 296 |
+
tab_dict[key] = (tab_list, latex_btn_list, latex_textbox_list, csv_btn_list, csv_textbox_list, export_params)
|
| 297 |
return body, tab_dict
|
| 298 |
|
| 299 |
def launch_gradio():
|
|
|
|
| 313 |
|
| 314 |
lb_body, tab_dict = get_lb_body(language=lang_state.value)
|
| 315 |
|
| 316 |
+
for lang in ['English', 'Chinese']:
|
| 317 |
+
tab_list, latex_btn_list, latex_textbox_list, csv_btn_list, csv_textbox_list, export_params = tab_dict[lang]
|
| 318 |
+
for btn, params, textbox in zip(latex_btn_list, export_params, latex_textbox_list):
|
| 319 |
+
btn.click(pop_latex_table, inputs=[
|
| 320 |
+
params["caption"],
|
| 321 |
+
params["label"],
|
| 322 |
+
params["lang"],
|
| 323 |
+
params["dataset"],
|
| 324 |
+
params["cat"]],
|
| 325 |
+
outputs=[textbox])
|
| 326 |
+
for btn, params, textbox in zip(csv_btn_list, export_params, csv_textbox_list):
|
| 327 |
+
btn.click(generate_csv, inputs=[
|
| 328 |
+
params["lang"],
|
| 329 |
+
params["dataset"],
|
| 330 |
+
params["cat"],
|
| 331 |
+
params["shot"],
|
| 332 |
+
params["dataset_name"]],
|
| 333 |
+
outputs=[textbox])
|
| 334 |
+
tab_list = [*(tab_dict['English'][0]), *(tab_dict['Chinese'][0])]
|
| 335 |
# print(tab_list)
|
| 336 |
|
| 337 |
en_button.click(switch_language, inputs=[gr.State("en")], outputs=[title, intro, leaderboard_section, *tab_list, lang_state], postprocess=False)
|
| 338 |
zh_button.click(switch_language, inputs=[gr.State("zh")], outputs=[title, intro, leaderboard_section, *tab_list, lang_state], postprocess=False)
|
| 339 |
|
| 340 |
|
| 341 |
+
return demo
|
| 342 |
|
| 343 |
pd.set_option('display.float_format', '{:.02f}'.format)
|
| 344 |
|
|
|
|
| 346 |
scheduler.add_job(launch_gradio, 'interval', hours=1)
|
| 347 |
scheduler.start()
|
| 348 |
|
| 349 |
+
demo = launch_gradio()
|
| 350 |
+
demo.launch()
|
latex_utils.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
| 1 |
import pandas as pd
|
| 2 |
from tabulate import tabulate
|
|
|
|
| 3 |
|
| 4 |
# 创建一个示例 DataFrame
|
| 5 |
data = {
|
|
@@ -33,8 +34,16 @@ latex_table = tabulate(df, headers='keys', tablefmt='latex', showindex=False,
|
|
| 33 |
colalign='left')
|
| 34 |
|
| 35 |
def gen_latex_table(caption, label, dataframe):
|
| 36 |
-
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
table = (
|
| 39 |
"\\begin{table}[]\n"
|
| 40 |
f"\\caption{{{caption}}}\n"
|
|
@@ -50,7 +59,11 @@ def gen_latex_table(caption, label, dataframe):
|
|
| 50 |
# 将table中的第二个\hline改为\midrule
|
| 51 |
table = table.replace("\\hline", "\\midrule", 1)
|
| 52 |
# 将table中的最后一个\hline改为\bottomrule
|
| 53 |
-
table = table.replace("\\hline", "\\
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
return table
|
| 55 |
|
| 56 |
# # 添加表格环境
|
|
|
|
| 1 |
import pandas as pd
|
| 2 |
from tabulate import tabulate
|
| 3 |
+
import re
|
| 4 |
|
| 5 |
# 创建一个示例 DataFrame
|
| 6 |
data = {
|
|
|
|
| 34 |
colalign='left')
|
| 35 |
|
| 36 |
def gen_latex_table(caption, label, dataframe):
|
| 37 |
+
# print(caption)
|
| 38 |
+
# print(label)
|
| 39 |
+
# print(dataframe)
|
| 40 |
+
if len(dataframe.columns) > 2:
|
| 41 |
+
table = tabulate(dataframe, headers='keys', tablefmt='latex', showindex=False,
|
| 42 |
+
missingval='/',
|
| 43 |
+
colalign='left')
|
| 44 |
+
else:
|
| 45 |
+
table = tabulate(dataframe, headers='keys', tablefmt='latex', showindex=False,
|
| 46 |
+
missingval='/')
|
| 47 |
table = (
|
| 48 |
"\\begin{table}[]\n"
|
| 49 |
f"\\caption{{{caption}}}\n"
|
|
|
|
| 59 |
# 将table中的第二个\hline改为\midrule
|
| 60 |
table = table.replace("\\hline", "\\midrule", 1)
|
| 61 |
# 将table中的最后一个\hline改为\bottomrule
|
| 62 |
+
table = table.replace("\\hline", "\\bottomrule", 1)
|
| 63 |
+
|
| 64 |
+
# 将table中的所有nan(独立的单词)替换为/
|
| 65 |
+
table = re.sub(r'\bnan\b', '/', table)
|
| 66 |
+
|
| 67 |
return table
|
| 68 |
|
| 69 |
# # 添加表格环境
|