Spaces:
Sleeping
Sleeping
File size: 3,223 Bytes
a350303 f33c0ca a4f3cd1 f33c0ca b9cfeca a4f3cd1 a350303 a4f3cd1 e8c9626 a4f3cd1 e8c9626 a4f3cd1 b9cfeca a4f3cd1 f33c0ca b9cfeca a4f3cd1 b9cfeca f33c0ca b9cfeca f33c0ca b9cfeca f33c0ca a350303 b9cfeca a4f3cd1 b9cfeca a4f3cd1 b9cfeca 9d5574c f33c0ca 9d5574c f33c0ca 9d5574c f33c0ca 9d5574c f33c0ca 9d5574c f33c0ca 9d5574c f33c0ca b9cfeca f33c0ca b9cfeca |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import gradio as gr
from huggingface_hub import login
from transformers import pipeline
import os
# Initialize global pipeline
ner_pipeline = None
def load_healthcare_ner_pipeline():
"""Load the Hugging Face pipeline for Healthcare NER."""
global ner_pipeline
if ner_pipeline is None:
login(token=os.environ["HFTOKEN"])
ner_pipeline = pipeline(
"token-classification",
model="TypicaAI/HealthcareNER-Fr",
use_auth_token=os.environ["HFTOKEN"],
aggregation_strategy="simple" # Groups B- and I- tokens into entities
)
return ner_pipeline
def process_text(text):
"""Process input text and return highlighted entities."""
pipeline = load_healthcare_ner_pipeline()
entities = pipeline(text)
# Highlight entities in the text
html_output = highlight_entities(text, entities)
# Log usage
log_demo_usage(text, len(entities))
return html_output
def highlight_entities(text, entities):
"""Highlight identified entities in the input text."""
highlighted_text = text
for entity in entities:
entity_text = entity["word"]
highlighted_text = highlighted_text.replace(
entity_text,
f'<mark style="background-color: yellow;">{entity_text}</mark>'
)
return f"<p>{highlighted_text}</p>"
def log_demo_usage(text, num_entities):
"""Log demo usage for analytics."""
print(f"Processed text: {text[:50]}... | Entities found: {num_entities}")
# Define the Gradio interface
demo = gr.Interface(
fn=process_text,
inputs=gr.Textbox(
label="Paste French medical text",
placeholder="Le patient présente une hypertension artérielle...",
lines=5
),
outputs=gr.HTML(label="Identified Medical Entities"),
title="French Healthcare NER Demo | As featured in 'NLP on OCI'",
description="""
🔬 Live demo of the French Healthcare NER model built in Chapter 5 of 'NLP on OCI'
📚 Follow along with the book to build this exact model step-by-step
🏥 Perfect for medical text analysis, clinical studies, and healthcare compliance
⚡ Powered by Oracle Cloud Infrastructure
By [Hicham Assoudi] - Oracle Consultant & AI Researcher
""",
examples=[
["Le patient souffre d'hypertension et diabète de type 2. Traitement: Metformine 500mg."],
["Antécédents: infarctus du myocarde en 2019. Allergie à la pénicilline."]
]
)
# Add marketing elements
with gr.Blocks() as marketing_elements:
gr.Markdown("""
### 📖 Get the Complete Guide
Learn how to build and deploy this exact model in 'NLP on OCI'
- ✓ Step-by-step implementation
- ✓ Performance optimization
- ✓ Enterprise deployment patterns
- ✓ Complete source code
[Get the Book](your-book-link) | Use code `NERSPACE` for 15% off
""")
with gr.Row():
email_input = gr.Textbox(
label="Get the French Healthcare NER Dataset",
placeholder="Enter your business email"
)
submit_btn = gr.Button("Access Dataset")
# Launch the Gradio demo
if __name__ == "__main__":
demo.launch()
|