RohitCSharp's picture
Create app.py
7e64524 verified
import gradio as gr
import spacy
from spacy import displacy
# Load transformer-based spaCy NER pipeline
nlp = spacy.load("en_core_web_trf") # Transformer-based model
def ner_extraction(text):
if not text.strip():
return "Please enter some text."
doc = nlp(text)
ents = [{"text": ent.text, "label": ent.label_} for ent in doc.ents]
if not ents:
return "No named entities found."
return ents
# Optional: visual output
def ner_visualizer(text):
doc = nlp(text)
html = displacy.render(doc, style="ent", minify=True)
return html
with gr.Blocks() as demo:
gr.Markdown("## Named Entity Recognition using spaCy + Transformers (en_core_web_trf)")
with gr.Tab("Extract Entities"):
inp = gr.Textbox(label="Enter Text", lines=3, placeholder="Type a sentence...")
out = gr.JSON(label="Named Entities")
btn = gr.Button("Run NER")
btn.click(ner_extraction, inputs=inp, outputs=out)
with gr.Tab("Visualize Entities"):
vis_inp = gr.Textbox(label="Enter Text", lines=3, placeholder="Type a sentence...")
vis_out = gr.HTML(label="Visualization")
vis_btn = gr.Button("Visualize")
vis_btn.click(ner_visualizer, inputs=vis_inp, outputs=vis_out)
if __name__ == "__main__":
demo.launch()