BiteWiseFinal / services /classify.py
anaygupta's picture
Update services/classify.py
2e9071b verified
from __future__ import annotations
from typing import Literal
# Keep classification lightweight and deployment-safe.
# The earlier notebook used BERT Q&A plus keyword fallback, but the Space was
# failing on missing torch. This version keeps the same outward behavior
# (baked vs. cooked) using the keyword fallback only.
BAKE_KEYWORDS = [
"bake", "baking", "oven", "preheat", "flour", "dough", "batter",
"cake", "cookie", "muffin", "bread", "pastry", "brownie", "tart",
"pie", "scone", "loaf", "whisk", "fold in", "sift", "knead",
"leavening", "baking soda", "baking powder", "yeast"
]
COOK_KEYWORDS = [
"saute", "sauté", "fry", "boil", "simmer", "stir", "grill",
"roast", "steam", "poach", "braise", "sear", "stove", "skillet",
"pan", "wok", "sauce", "soup", "stew", "marinate"
]
def classify_recipe(recipe_text: str) -> Literal["baked", "cooked"]:
text = (recipe_text or "").lower()
bake_score = sum(1 for kw in BAKE_KEYWORDS if kw in text)
cook_score = sum(1 for kw in COOK_KEYWORDS if kw in text)
return "baked" if bake_score > cook_score else "cooked"
def answer_question(question: str, paragraph: str) -> str:
"""Compatibility stub for older code paths.
The original MVP used a BERT QA answer here. For deployment stability, we
keep the function name but return a conservative empty answer.
"""
return ""
def classify_recipe_type(recipe_text: str) -> str:
"""Alias for any older imports that expect a different helper name."""
return classify_recipe(recipe_text)