Team Ai
Apppublic

CONDA-Workshop/Data-Contamination-Database

sourceHugging Facemitupdated 2y agoView on Hugging Face
18likes
app.py201 linesDownload Raw Back to root
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