Spaces:
Sleeping
Sleeping
| """ | |
| Intent inference for notebook cells | |
| """ | |
| from typing import List, Optional | |
| import re | |
| from src.models import ContextUnit, CellType | |
| class ContextThreadEnricher: | |
| """Enriches context threads with intent information.""" | |
| def __init__(self, infer_intents: bool = True): | |
| self.infer_intents = infer_intents | |
| def enrich(self, thread): | |
| """Enrich the thread with intents.""" | |
| if not self.infer_intents: | |
| return thread | |
| for unit in thread.units: | |
| if unit.intent == "[Pending intent inference]": | |
| unit.intent = self._infer_intent_heuristic(unit) | |
| return thread | |
| def _infer_intent_heuristic(self, unit: ContextUnit) -> str: | |
| """Infer intent using heuristics.""" | |
| source = unit.cell.source.lower() | |
| # Data loading | |
| if any(keyword in source for keyword in ['read_csv', 'read_excel', 'load', 'open']): | |
| return "Load data from file" | |
| # Data cleaning | |
| if any(keyword in source for keyword in ['dropna', 'fillna', 'clean', 'remove', 'filter']): | |
| return "Clean and preprocess data" | |
| # Analysis/Modeling | |
| if any(keyword in source for keyword in ['fit', 'predict', 'train', 'model', 'regression']): | |
| return "Build and train model" | |
| # Visualization | |
| if any(keyword in source for keyword in ['plot', 'chart', 'graph', 'visualize', 'show']): | |
| return "Create visualization" | |
| # Statistics | |
| if any(keyword in source for keyword in ['mean', 'std', 'sum', 'count', 'describe']): | |
| return "Compute statistics" | |
| # Default | |
| return "Execute code" |