Spaces:
Runtime error
Runtime error
| from app.core.taxonomy import AnswerType, Chapter, Level, Subject | |
| from app.schemas.classification import ClassificationResult | |
| CHAPTER_KEYWORDS: tuple[tuple[Chapter, tuple[str, ...]], ...] = ( | |
| ( | |
| Chapter.DERIVATION, | |
| ( | |
| "dérivée", | |
| "derivee", | |
| "dérivable", | |
| "derivable", | |
| "dériver", | |
| "derive", | |
| "f'(x)", | |
| "f’(x)", | |
| "signe de la dérivée", | |
| "signe de f'", | |
| "tableau de variation", | |
| ), | |
| ), | |
| ( | |
| Chapter.LIMITES, | |
| ( | |
| "limite", | |
| "tend vers", | |
| "infini", | |
| "+∞", | |
| "-∞", | |
| "asymptote", | |
| ), | |
| ), | |
| ( | |
| Chapter.SUITES, | |
| ( | |
| "suite", | |
| "u_n", | |
| "un+1", | |
| "récurrence", | |
| "recurrence", | |
| "arithmétique", | |
| "géométrique", | |
| ), | |
| ), | |
| ( | |
| Chapter.FONCTIONS, | |
| ( | |
| "fonction", | |
| "image", | |
| "antécédent", | |
| "ensemble de définition", | |
| "courbe", | |
| ), | |
| ), | |
| ) | |
| def detect_answer_type(answer_text: str) -> AnswerType: | |
| if "\\" in answer_text or "$" in answer_text: | |
| return AnswerType.LATEX_SIMPLE | |
| if any(marker in answer_text for marker in ("#", "-", "*", "`")): | |
| return AnswerType.MARKDOWN | |
| return AnswerType.TEXTE | |
| def classify_submission_answer(answer_text: str) -> ClassificationResult: | |
| normalized = answer_text.lower() | |
| detected_chapter = Chapter.FONCTIONS | |
| confidence = 0.55 | |
| skill = "raisonner sur une fonction" | |
| for chapter, keywords in CHAPTER_KEYWORDS: | |
| if any(keyword in normalized for keyword in keywords): | |
| detected_chapter = chapter | |
| confidence = 0.82 | |
| if chapter == Chapter.DERIVATION: | |
| skill = "calculer une dérivée et exploiter son signe" | |
| elif chapter == Chapter.LIMITES: | |
| skill = "calculer une limite" | |
| elif chapter == Chapter.SUITES: | |
| skill = "étudier une suite numérique" | |
| else: | |
| skill = "étudier une fonction" | |
| break | |
| return ClassificationResult( | |
| subject=Subject.MATHEMATIQUES, | |
| level=Level.DEUXIEME_BAC_SCIENCES, | |
| chapter=detected_chapter, | |
| skill=skill, | |
| answer_type=detect_answer_type(answer_text), | |
| language="fr", | |
| confidence=confidence, | |
| reject_reason=None, | |
| ) | |