Spaces:
Running
Running
# π Masked Word Predictor | CPU-only HF Space | |
import gradio as gr | |
from transformers import pipeline | |
# Load the fill-mask pipeline once at startup | |
fill_mask = pipeline("fill-mask", model="distilroberta-base", device=-1) | |
def predict_mask(sentence: str, top_k: int): | |
if "[MASK]" not in sentence: | |
return [{"sequence": "Error: include [MASK] in your sentence.", "score": 0.0}] | |
preds = fill_mask(sentence, top_k=top_k) | |
return [ | |
{"sequence": p["sequence"], "score": round(p["score"], 3)} | |
for p in preds | |
] | |
with gr.Blocks(title="π Masked Word Predictor") as demo: | |
gr.Markdown( | |
"# π Masked Word Predictor\n" | |
"Enter a sentence with one `[MASK]` token and see the modelβs top predictions." | |
) | |
with gr.Row(): | |
sentence = gr.Textbox( | |
lines=2, | |
placeholder="The capital of France is [MASK].", | |
label="Input Sentence" | |
) | |
top_k = gr.Slider( | |
minimum=1, maximum=10, step=1, value=5, | |
label="Top K Predictions" | |
) | |
predict_btn = gr.Button("Predict", variant="primary") | |
results = gr.Dataframe( | |
headers=["sequence", "score"], | |
datatype=["str", "number"], | |
wrap=True, | |
interactive=False, | |
label="Predictions" | |
) | |
predict_btn.click( | |
predict_mask, | |
inputs=[sentence, top_k], | |
outputs=results | |
) | |
if __name__ == "__main__": | |
demo.launch(server_name="0.0.0.0") | |