File size: 3,345 Bytes
a350303
a4f3cd1
f33c0ca
b9cfeca
a4f3cd1
 
a350303
a4f3cd1
 
 
 
 
 
 
9f1d16e
b9cfeca
a4f3cd1
f33c0ca
f020d40
f33c0ca
b9cfeca
a4f3cd1
 
0726629
 
b9cfeca
 
 
 
 
 
9d5574c
 
 
f33c0ca
 
 
9d5574c
2768dbb
0726629
f33c0ca
9d5574c
f020d40
9d5574c
f33c0ca
 
f020d40
9d5574c
f020d40
9d5574c
f33c0ca
f020d40
 
 
 
 
 
f33c0ca
 
 
 
b9cfeca
f33c0ca
 
 
 
f020d40
f33c0ca
 
 
 
 
f020d40
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
import gradio as gr
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:
        ner_pipeline = pipeline(
            "token-classification",
            model="TypicaAI/HealthcareNER-Fr",
            aggregation_strategy="first"  # 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)
    return {"text": text, "entities": entities}


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.HighlightedText(),
    #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 6 of the book 'Natural Language Processing on Oracle Cloud Infrastructure: Building Transformer-Based NLP Solutions Using Oracle AI and Hugging Face Kindle Edition'
    
    📚 Follow along with the book to build this exact model step-by-step
    🏥 Perfect for medical text analysis, clinical studies, and healthcare compliance
    ⚡ Model Trained on Oracle Cloud Infrastructure (OCI)
    
    By [Hicham Assoudi] - AI Researcher (Ph.D.) • Oracle Consultant • Author 
    """,
    examples=[
        ["Le medecin donne des antibiotiques en cas d'infections des voies respiratoires."],
        ["Le médecin recommande des corticoïdes pour réduire l'inflammation dans les poumons."],
        ["Pour soulager les symptômes d'allergie, le médecin prescrit des antihistaminiques."],
        ["Pour gérer le diabète, le médecin prescrit une insulinothérapie."],
        ["Après une blessure musculaire, le patient doit suivre une physiothérapie."],
        ["En cas d'infection bactérienne, le médecin recommande une antibiothérapie."],
        ["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 'Natural Language Processing on Oracle Cloud Infrastructure: Building Transformer-Based NLP Solutions Using Oracle AI and Hugging Face Kindle Edition'
    - ✓ Step-by-step implementation
    - ✓ Performance optimization
    - ✓ Enterprise deployment patterns
    - ✓ Complete source code
    
    [Get the Book](https://a.co/d/eg7my5G)
    """)
    
    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()