NER-PHI-demo / app.py
suhana13's picture
Upload app.py
0a32303 verified
raw
history blame
3.74 kB
# -*- coding: utf-8 -*-
"""NER.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/14VcPCWWSAS7tEIolL_I9iA0xulk2gHuN
"""
!pip install -q transformers
from transformers import pipeline
!pip install -q gradio
import gradio as gr
# Corrected examples in the nested list format
examples = [
["Date of Service: March 15, 2024\nPatient Name: John Doe\nAge: 45\nDiagnosis: Acute bronchitis\n\nChief Complaint:\nPatient presents with a persistent cough, productive of green sputum, for the past week. Reports accompanying symptoms of low-grade fever, malaise, and mild shortness of breath on exertion.\n\nHistory of Present Illness:\nMr. Doe reports the onset of symptoms approximately 10 days ago with a gradual worsening of his cough and overall condition. Denies any recent travel or sick contacts.\n\nAssessment:\nUpon examination, patient displays signs consistent with acute bronchitis, including rhonchi on auscultation, mild tachypnea, and low-grade fever of 100.4°F.\n\nPlan:\n1. Prescribed 7-day course of azithromycin 500mg once daily.\n2. Encouraged increased fluid intake and rest.\n3. Follow-up appointment scheduled in one week for reassessment.\n\nDr. Jane Smith, MD"],
["Date of Service: March 16, 2024\nPatient Name: Jane Johnson\nAge: 32\nDiagnosis: Hypertension\n\nChief Complaint:\nPatient presents for routine follow-up of hypertension.\n\nHistory of Present Illness:\nMs. Johnson was diagnosed with hypertension 6 months ago and has been taking lisinopril 10mg daily. Reports occasional headaches and dizziness, denies any chest pain or shortness of breath.\n\nAssessment:\nBlood pressure today is 140/90 mmHg. Otherwise, general examination is unremarkable.\n\nPlan:\n1. Increased lisinopril dosage to 20mg daily.\n2. Advised lifestyle modifications including low-sodium diet and regular exercise.\n3. Follow-up appointment scheduled in 3 months.\n\nDr. Michael Lee, MD"],
["Date of Service: March 17, 2024\nPatient Name: Sarah Adams\nAge: 28\nDiagnosis: Urinary Tract Infection (UTI)\n\nChief Complaint:\nPatient complains of burning sensation on urination and increased frequency.\n\nHistory of Present Illness:\nMs. Adams reports symptoms starting 3 days ago. Denies any fever, flank pain, or hematuria.\n\nAssessment:\nUrinalysis reveals presence of leukocytes and nitrites. Mild suprapubic tenderness on examination.\n\nPlan:\n1. Prescribed 3-day course of ciprofloxacin 500mg twice daily.\n2. Advised increased fluid intake and avoidance of irritants like caffeine.\n3. Follow-up in one week for reassessment or sooner if symptoms worsen.\n\nDr. Emily Davis, MD"]
]
# Define multiple NER models
models = {
"deid_roberta_i2b2": "obi/deid_roberta_i2b2",
"bert-base-NER": "dslim/bert-base-NER",
# Add more models as needed
}
# Create a dictionary of model names to their corresponding pipeline instances
ner_pipelines = {name: pipeline("ner", model=model) for name, model in models.items()}
def ner(text, model_name="deid_roberta_i2b2"):
# Get the NER pipeline based on the selected model name
ner_pipeline = ner_pipelines[model_name]
output = ner_pipeline(text, aggregation_strategy="simple")
return {"text": text, "entities": output}
# Define the Gradio interface
demo = gr.Interface(
fn=ner,
inputs=[
gr.Textbox(placeholder="Enter a sentence here..", lines=10),
gr.Dropdown(choices=list(models.keys()), label="Select Model"),
],
outputs=gr.HighlightedText(),
examples=examples,
title="Named Entity Recognition (NER) Demo",
description="Select a model and enter a sentence to extract named entities.",
)
# Launch the Gradio interface
demo.launch(share=True)