# ML Implementation MediFlow now has two NLP implementation paths: 1. `ml/hf_intent_demo.mjs` runs a Hugging Face Transformers.js zero-shot classifier. 2. `ml/mediflow_nlp.py` runs a lightweight local baseline using a Naive Bayes intent classifier plus rule-based department and FAQ routing. The Hugging Face path is the profile-relevant implementation. The Python baseline is kept as a transparent fallback and testing harness. ## Hugging Face Demo Install dependencies: ```powershell npm install ``` Run model inference: ```powershell npm run demo ``` The script downloads and runs `Xenova/all-MiniLM-L6-v2` through `@huggingface/transformers` for sentence embeddings. A nearest-centroid classifier is built from the labeled examples in `data/intent_dataset.jsonl`. It predicts: - User intent: booking, cancellation, FAQ, feedback, or human handoff. - Department for booking requests: Cardiology, Orthopedics, Dermatology, Pediatrics, or Internal Medicine. Results are written to: ```text output/hf-demo-results.json ``` Latest verified run: ```text Model: Xenova/all-MiniLM-L6-v2 Task: feature-extraction Classifier: nearest-centroid over labeled project examples Evaluation: leave-one-out Examples: 28 Accuracy: 0.8571 ``` The first attempted zero-shot MNLI classifier over-routed examples to handoff, so it was replaced with the embedding retrieval approach above. That failure is useful evidence: the project now shows model selection, error analysis, and iteration instead of only a polished happy path. ## Why This Matters This moves the project from "chatbot plan" to "implemented ML inference demo": - Uses a real model from Hugging Face. - Produces reproducible inference outputs. - Separates model inference from UI state management. - Includes a small labeled dataset and evaluation report. - Shows an explicit model-selection iteration from weak zero-shot classification to embedding-based routing. - Gives a clear upgrade path to a Hugging Face Space, Botpress Action, or API endpoint. ## Current Boundary The current implementation is an inference demo, not a fine-tuned production model. A stronger ML engineering version would add: - A larger labeled dataset. - Fine-tuning or embedding-based retrieval. - Evaluation split with precision, recall, F1, and confusion matrix. - Model card with limitations and intended use. - API endpoint consumed by the chatbot UI. - Deployment as a Hugging Face Space.