import json import os from typing import Any, Dict, Literal class Config: def __init__(self) -> None: try: config_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'config.json') with open(config_path, 'r', encoding='utf-8') as config_file: self.config_data: Dict[str, Any] = json.load(config_file) except FileNotFoundError: print("Config file not found.") self.config_data = {} except json.JSONDecodeError: print("Invalid JSON.") self.config_data = {} def get_data_path(self) -> str: data_path = self.config_data.get('data_path', '') if not isinstance(data_path, str): raise ValueError("Data path must be a string.") return os.path.join(os.path.dirname(os.path.dirname(__file__)), data_path) class NaturalLanguageProcessor: def __init__(self, config: Config) -> None: self.config = config data_path = self.config.get_data_path() with open(data_path, 'r', encoding='utf-8') as file: self.intents: Dict[str, Any] = json.load(file) def analyze(self, input_text: str) -> Dict[str, Literal['ask_name', 'unknown']]: lower_text = input_text.lower() for phrase in self.intents.get('name_query', []): if phrase in lower_text: return {"intent": "ask_name"} return {"intent": "unknown"}