Spaces:
Sleeping
Sleeping
| import json | |
| from difflib import SequenceMatcher | |
| def load_diseases(): | |
| with open("diseases.json", "r", encoding="utf-8") as f: | |
| return json.load(f) | |
| def diagnose_symptoms(user_input): | |
| diseases = load_diseases() | |
| results = [] | |
| user_symptoms = [s.strip() for s in user_input.split(",")] | |
| for disease, info in diseases.items(): | |
| match_score = sum( | |
| SequenceMatcher(None, sym.lower(), us.lower()).ratio() | |
| for sym in info["symptoms"] | |
| for us in user_symptoms | |
| ) / (len(info["symptoms"]) * len(user_symptoms)) | |
| if match_score > 0.2: | |
| results.append({ | |
| "disease": disease, | |
| "score": match_score, | |
| "source": info["source"] | |
| }) | |
| results.sort(key=lambda x: x["score"], reverse=True) | |
| return results[:5] |