CONDA-Workshop/Data-Contamination-Database
18
1import gradio as gr2import pandas as pd3 4from dataset import get_dataframe5from markdown import COLUMN_DESC_MARKDOWN, GUIDELINES, PANEL_MARKDOWN6 7df = get_dataframe()8 9 10def filter_dataframe(dataframe, eval_dataset, cont_source, checkboxes):11 """12 Filter the dataframe based on the provided evaluation dataset, contaminated source, and checkboxes.13 14 Args:15 dataframe (pandas.DataFrame): The input dataframe to filter.16 eval_dataset (str): The evaluation dataset to filter by.17 cont_source (str): The contaminated source to filter by.18 checkboxes (list): The checkboxes to filter by.19 20 Returns:21 pandas.DataFrame: The filtered dataframe.22 """23 if isinstance(eval_dataset, str):24 dataframe = dataframe[25 dataframe["Evaluation Dataset"].str.contains(f"(?i){eval_dataset}")26 ]27 if isinstance(cont_source, str):28 dataframe = dataframe[29 dataframe["Contaminated Source"].str.contains(f"(?i){cont_source}")30 ]31 if isinstance(checkboxes, list) and "Exclude model-based evidences" in checkboxes:32 dataframe = dataframe[dataframe["Approach"] != "model-based"]33 if isinstance(checkboxes, list) and "Show only contaminated" in checkboxes:34 dataframe = dataframe[35 (dataframe["Train Split"] > 0.0)36 | (dataframe["Development Split"] > 0.0)37 | (dataframe["Test Split"] > 0.0)38 ]39 40 dataframe = dataframe.sort_values("Test Split", ascending=False)41 42 return dataframe.style.format(43 {44 "Train Split": "{:.1%}",45 "Development Split": "{:.1%}",46 "Test Split": "{:.1%}",47 },48 na_rep="Unknown",49 )50 51 52def filter_dataframe_corpus(*args, **kwargs) -> pd.DataFrame:53 """54 Filter the dataframe for corpus contamination.55 56 Returns:57 pandas.DataFrame: The filtered dataframe for corpus contamination.58 """59 # Get rows in which the column Model or corpus is equal to dataset60 filtered_df = df[df["Model or corpus"] == "corpus"]61 filtered_df = filtered_df.drop(columns=["Model or corpus"])62 return filter_dataframe(filtered_df, *args, **kwargs)63 64 65def filter_dataframe_model(*args, **kwargs) -> pd.DataFrame:66 """67 Filter the dataframe for model contamination.68 69 Returns:70 pandas.DataFrame: The filtered dataframe for model contamination.71 """72 # Get rows in which the column Model or corpus is equal to dataset73 filtered_df = df[df["Model or corpus"] == "model"]74 filtered_df = filtered_df.drop(columns=["Model or corpus"])75 return filter_dataframe(filtered_df, *args, **kwargs)76 77 78theme = gr.themes.Soft(79 primary_hue="emerald",80 secondary_hue="cyan",81 text_size="md",82 spacing_size="lg",83 font=[84 gr.themes.GoogleFont("Poppins"),85 gr.themes.GoogleFont("Poppins"),86 gr.themes.GoogleFont("Poppins"),87 gr.themes.GoogleFont("Poppins"),88 ],89).set(90 block_background_fill="*neutral_50",91 block_background_fill_dark="*neutral_950",92 section_header_text_size="*text_lg",93 section_header_text_weight="800",94)95 96 97with gr.Blocks(98 theme=theme,99 title="💨 Data Contamination Database",100 analytics_enabled=False,101 fill_height=True,102) as demo:103 gr.Markdown(PANEL_MARKDOWN)104 with gr.Accordion("Column descriptions (See details)", open=False) as accordion:105 gr.Markdown(COLUMN_DESC_MARKDOWN)106 107 gr.Markdown(f"### Total contributions: {len(df)}")108 109 with gr.Tab("Corpus contamination") as tab_corpus:110 with gr.Row(variant="compact"):111 with gr.Column():112 eval_dataset_corpus = gr.Textbox(113 placeholder="Evaluation dataset",114 label="Evaluation dataset",115 value="",116 )117 cont_corpora = gr.Textbox(118 placeholder="Pre-training corpora",119 label="Pre-training corpora",120 value="",121 )122 with gr.Column():123 checkboxes_corpus = gr.CheckboxGroup(124 ["Exclude model-based evidences", "Show only contaminated"],125 label="Search options",126 value=[],127 )128 129 filter_corpus_btn = gr.Button("Filter")130 131 corpus_dataframe = gr.DataFrame(132 value=filter_dataframe_corpus(133 eval_dataset_corpus, cont_corpora, checkboxes_corpus134 ),135 headers=df.columns.to_list(),136 datatype=[137 "markdown",138 "markdown",139 "number",140 "number",141 "number",142 "str",143 "markdown",144 "markdown",145 ],146 )147 148 with gr.Tab("Model contamination") as tab_model:149 with gr.Row(variant="compact"):150 with gr.Column():151 eval_dataset_model = gr.Textbox(152 placeholder="Evaluation dataset",153 label="Evaluation dataset",154 value="",155 )156 cont_model = gr.Textbox(157 placeholder="Model", label="Pre-trained model", value=""158 )159 with gr.Column():160 checkboxes_model = gr.CheckboxGroup(161 ["Exclude model-based evidences", "Show only contaminated"],162 label="Search options",163 value=[],164 )165 166 filter_model_btn = gr.Button("Filter")167 168 model_dataframe = gr.DataFrame(169 value=filter_dataframe_model(170 eval_dataset_model, cont_model, checkboxes_model171 ),172 headers=df.columns.to_list(),173 datatype=[174 "markdown",175 "markdown",176 "number",177 "number",178 "number",179 "str",180 "markdown",181 "markdown",182 ],183 )184 185 filter_corpus_btn.click(186 filter_dataframe_corpus,187 inputs=[eval_dataset_corpus, cont_corpora, checkboxes_corpus],188 outputs=corpus_dataframe,189 )190 filter_model_btn.click(191 filter_dataframe_model,192 inputs=[eval_dataset_model, cont_model, checkboxes_model],193 outputs=model_dataframe,194 )195 196 with gr.Tab("Contribution Guidelines") as tab_guidelines:197 gr.Markdown(GUIDELINES)198 199 200demo.launch()201 