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 |
# # 添加表格环境
|