Spaces:
Running
Running
| import json | |
| import os | |
| _DATA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "data", "synonym_groups.json") | |
| _SYNONYM_GROUPS = None | |
| _SYNONYM_INDEX = None | |
| def _load_groups() -> list[set[str]]: | |
| global _SYNONYM_GROUPS, _SYNONYM_INDEX | |
| if _SYNONYM_GROUPS is not None: | |
| return _SYNONYM_GROUPS | |
| try: | |
| with open(_DATA_PATH, "r", encoding="utf-8") as f: | |
| data = json.load(f) | |
| _SYNONYM_GROUPS = [set(g) for g in data.get("groups", [])] | |
| except (FileNotFoundError, json.JSONDecodeError): | |
| _SYNONYM_GROUPS = [] | |
| _SYNONYM_INDEX = {} | |
| for group in _SYNONYM_GROUPS: | |
| for member in group: | |
| _SYNONYM_INDEX[member.lower().strip()] = group | |
| return _SYNONYM_GROUPS | |
| def get_synonym_groups() -> list[set[str]]: | |
| return _load_groups() | |
| def _find_synonym_group(tag: str) -> set[str] | None: | |
| if _SYNONYM_INDEX is None: | |
| _load_groups() | |
| return _SYNONYM_INDEX.get(tag.lower().strip()) | |
| def reload_synonym_groups(): | |
| global _SYNONYM_GROUPS, _SYNONYM_INDEX | |
| _SYNONYM_GROUPS = None | |
| _SYNONYM_INDEX = None | |
| _load_groups() | |