Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pandas as pd | |
| from transformers import pipeline | |
| from transformers.pipelines.base import PipelineException | |
| fill_mask = pipeline("fill-mask", model="Keyurjotaniya007/bert-large-cased-wikitext-mlm-3.0", device=-1) | |
| def predict_mask(sentence: str, top_k: int): | |
| mask = fill_mask.tokenizer.mask_token | |
| sentence = sentence.replace("[MASK]", mask) | |
| if mask not in sentence: | |
| return pd.DataFrame( | |
| [["Error: please include `[MASK]` in your sentence.", 0.0]], | |
| columns=["Sequence", "Score"] | |
| ) | |
| try: | |
| preds = fill_mask(sentence, top_k=top_k) | |
| except PipelineException as e: | |
| return pd.DataFrame([[f"Error: {str(e)}", 0.0]], | |
| columns=["Sequence", "Score"]) | |
| rows = [[p["sequence"], round(p["score"], 3)] for p in preds] | |
| return pd.DataFrame(rows, columns=["Sequence", "Score"]) | |
| with gr.Blocks(title="Masked Language Modeling") as demo: | |
| gr.Markdown( | |
| "# Masked Language Modeling\n" | |
| "Enter a sentence with one `[MASK]` token and see the top-K completions." | |
| ) | |
| with gr.Row(): | |
| sentence = gr.Textbox( | |
| lines=2, | |
| placeholder="e.g. The Great Wall of [MASK] is visible from space.", | |
| label="Input Sentence" | |
| ) | |
| top_k = gr.Slider( | |
| minimum=1, maximum=10, step=1, value=5, | |
| label="K Predictions[Min=1 & Max=10]" | |
| ) | |
| predict_btn = gr.Button("Evaluate [MASK] Words", variant="primary") | |
| results_df = gr.Dataframe( | |
| headers=["Sequence", "Score"], | |
| datatype=["str", "number"], | |
| wrap=True, | |
| interactive=False, | |
| label="Predictions" | |
| ) | |
| predict_btn.click( | |
| fn=predict_mask, | |
| inputs=[sentence, top_k], | |
| outputs=results_df | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch(server_name="0.0.0.0") |