Spaces:
Running
Running
| import gradio as gr | |
| from transformers import pipeline | |
| from huggingface_hub import login | |
| import os | |
| # Initialize global pipeline | |
| ner_pipeline = None | |
| # Authenticate using the secret `HFTOKEN` | |
| def authenticate_with_token(): | |
| """Authenticate with the Hugging Face API using the HFTOKEN secret.""" | |
| hf_token = os.getenv("HFTOKEN") # Retrieve the token from environment variables | |
| if not hf_token: | |
| raise ValueError("HFTOKEN is not set. Please add it to the Secrets in your Space settings.") | |
| login(token=hf_token) | |
| def load_healthcare_ner_pipeline(): | |
| """Load the Hugging Face pipeline for Healthcare NER.""" | |
| global ner_pipeline | |
| if ner_pipeline is None: | |
| # Authenticate and initialize pipeline | |
| authenticate_with_token() | |
| 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(label="Identified Medical Entities"), | |
| #outputs=gr.HTML(label="Identified Medical Entities"), | |
| title="French Healthcare NER Demo", | |
| description=""" | |
| _By **[Hicham Assoudi](https://huggingface.co/hassoudi)** – AI Researcher (Ph.D.), Oracle Consultant, and Author._ 🔗 [Follow me on LinkedIn](https://www.linkedin.com/in/assoudi) | |
| 🔬 **Try the French Healthcare NER model**, developed as part of the healthcare NLP case study from the book *[Natural Language Processing on Oracle Cloud Infrastructure: Building Transformer-Based NLP Solutions Using Oracle AI and Hugging Face](https://a.co/d/h0xL4lo). | |
| This Space demonstrates a Healthcare NER model developed through the step-by-step process detailed in 📖 Chapters 4 to 7 of the book. It covers healthcare dataset preparation and fine-tuning a transformer-based NER model, offering a practical example of how NLP can extract valuable insights from 🏥 French medical texts, such as identifying conditions, treatments, and more. | |
| """, | |
| 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() | |