File size: 3,900 Bytes
a350303
a4f3cd1
f33c0ca
b9cfeca
a4f3cd1
 
a350303
a4f3cd1
 
 
 
 
 
 
9f1d16e
b9cfeca
a4f3cd1
f33c0ca
f020d40
f33c0ca
b9cfeca
a4f3cd1
 
0726629
 
b9cfeca
 
 
 
 
4c42d5a
 
c87d13e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4c42d5a
e4219fa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f33c0ca
e4219fa
 
 
f33c0ca
e4219fa
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
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 main demo 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",
    description="""
    _By **Hicham Assoudi** – AI Researcher (Ph.D.), Oracle Consultant, and Author._
    ---    
    As featured in _Natural Language Processing on Oracle Cloud Infrastructure: Building Transformer-Based NLP Solutions Using Oracle AI and Hugging Face_. [Get the Book](https://a.co/d/eg7my5G)
    🔬 **Live Demo**: Demonstration of the French Healthcare NER model from Chapter 6 of the book.  
    📚 **Educational Focus**: Step-by-step guidance on model building, from design to deployment.  
    🏥 **Applications**: Healthcare NLP for text analysis, clinical studies, and compliance.  
    ⚡ **Built on OCI**: Trained using Oracle Cloud Infrastructure's AI capabilities.
    """,
    article="""
    ### **Disclaimer**
    This is a **demo model** provided for educational purposes. It was trained on a limited dataset and is not intended for production use, clinical decision-making, or real-world medical applications.
    """,
    examples=[
        ["Le medecin donne des antibiotiques en cas d'infections des voies respiratoires e.g. pneumonie."],
        ["Dans le cas de l'asthme, le médecin peut recommander des corticoïdes pour réduire l'inflammation dans les poumons."],
        ["Pour soulager les symptômes d'allergie, le médecin prescrit des antihistaminiques."],
        ["Si le patient souffre de diabète de type 2, le médecin peut prescrire une insulinothérapie par exemple: Metformine 500mg."],
        ["Après une blessure musculaire ou une maladies douloureuses des tendons comme une tendinopathie, le patient pourrait suivre une kinésithérapie ou 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()