Spaces:
Sleeping
Sleeping
| # modules/info_extractor.py | |
| import re | |
| from .config_loader import ConfigLoader | |
| class InfoExtractor: | |
| def __init__(self, config_loader: ConfigLoader): | |
| self.configs = config_loader | |
| def extract(self, user_input: str) -> dict: | |
| """从用户输入中提取目的地、天数和旅行风格""" | |
| extracted_info = {} | |
| user_lower = user_input.lower() | |
| # 提取目的地 | |
| for alias, city_info in self.configs.cities.items(): | |
| if alias in user_lower: | |
| extracted_info["destination"] = city_info | |
| break | |
| # 提取天数 | |
| match = re.search(r'(\d+)\s*天', user_input) | |
| if match: | |
| extracted_info["duration"] = {"days": int(match.group(1))} | |
| # 提取旅行风格 (persona) | |
| for p_name, p_info in self.configs.personas.items(): | |
| if p_info['name'] in user_input or p_name in user_input: | |
| extracted_info["persona"] = p_info | |
| break | |
| return extracted_info | |