Source code for spokestack.nlu.parsers.selset

"""
This module contains the logic to parse selsets from NLU results. Selsets contain a name
along with one or more aliases. This allows one to map any of the listed aliases
into a single word. For example, if a selset's name is "light", and its aliases are
bulbs, light, beam, lamp, etc., occurrences of any alias will be parsed as light
"""
from typing import Any, Dict, Union


[docs]def parse(metadata: Dict[str, Any], raw_value: str) -> Union[str, None]: """Selset Parser Args: metadata (Dict[str, Any]): slot metadata raw_value (str): value tagged by the model Returns: Union[str, None]: selset or None if invalid """ normalized = raw_value.lower() selections = metadata.get("selections", []) for selection in selections: name = selection.get("name") if name.lower() == normalized: return name aliases = selection.get("aliases") for alias in aliases: if alias.lower() == normalized: return name return None