Teacher-AI / app /analytics.py
Moaaz2os's picture
Upload 6 files
7e0eb7b verified
Raw
History Blame Contribute Delete
2.23 kB
import re
from collections import defaultdict
TOPICS: dict[str, list[str]] = {
"Mathematics": [
"equation", "solve", "integral", "derivative", "matrix",
"polynomial", "algebra", "geometry", "theorem", "proof",
"calculate", "function", "variable", "coefficient", "logarithm",
"trigonometry", "sine", "cosine", "tangent", "factorial",
"prime", "fraction", "ratio", "percentage", "probability",
],
"Physics": [
"force", "energy", "mass", "velocity", "acceleration",
"momentum", "gravity", "electric", "magnetic", "wave",
"thermodynamics", "entropy", "quantum", "relativity", "circuit",
"friction", "tension", "pressure", "temperature", "current",
"voltage", "resistance", "frequency", "amplitude", "optics",
],
"Chemistry": [
"atom", "molecule", "reaction", "element", "compound",
"bond", "acid", "base", "electron", "proton", "ion",
"periodic", "oxidation", "catalyst", "solution", "mole",
"valence", "isotope", "equilibrium", "titration", "polymer",
"organic", "inorganic", "covalent", "ionic", "redox",
],
"Biology": [
"cell", "dna", "rna", "protein", "evolution", "organism",
"photosynthesis", "gene", "mutation", "enzyme", "tissue",
"nervous", "metabolism", "ecosystem", "species", "mitosis",
"meiosis", "chromosome", "ribosome", "membrane", "bacteria",
"virus", "antibody", "hormone", "respiration",
],
"Computer Science": [
"algorithm", "array", "loop", "recursion", "complexity",
"binary", "sorting", "compiler", "runtime", "memory",
"stack", "queue", "pointer", "variable", "function",
"class", "object", "inheritance", "database", "network",
"protocol", "encryption", "cache", "thread", "process",
],
}
def detect_topic(text: str) -> str:
text_lower = text.lower()
scores: dict[str, int] = defaultdict(int)
for topic, keywords in TOPICS.items():
for kw in keywords:
if re.search(rf"\b{re.escape(kw)}\b", text_lower):
scores[topic] += 1
if not scores:
return "General STEM"
return max(scores, key=scores.get)