def _find_entities_in_training_example(self, example: Text) -> List[Dict]: """Extracts entities from a markdown intent example. Args: example: markdown intent example Returns: list of extracted entities """ entities = [] offset = 0 for match in re.finditer(entity_regex, example): entity_attributes = self._extract_entity_attributes(match) start_index = match.start() - offset end_index = start_index + len(entity_attributes.text) offset += len(match.group(0)) - len(entity_attributes.text) entity = build_entity( start_index, end_index, entity_attributes.value, entity_attributes.type, entity_attributes.role, entity_attributes.group, ) entities.append(entity) return entities
def find_entities_in_training_example(example: Text) -> List[Dict[Text, Any]]: """Extracts entities from an intent example. Args: example: Intent example. Returns: Extracted entities. """ import rasa.nlu.utils as rasa_nlu_utils entities = [] offset = 0 for match in re.finditer(ENTITY_REGEX, example): entity_attributes = extract_entity_attributes(match) start_index = match.start() - offset end_index = start_index + len(entity_attributes.text) offset += len(match.group(0)) - len(entity_attributes.text) entity = rasa_nlu_utils.build_entity( start_index, end_index, entity_attributes.value, entity_attributes.type, entity_attributes.role, entity_attributes.group, ) entities.append(entity) return entities
def _extract_entity(chunk, current_offset): """Extract an entity from a chunk if present.""" entity = None if "meta" in chunk or "alias" in chunk: start = current_offset text = chunk["text"] end = start + len(text) entity_type = chunk.get("alias", chunk["meta"]) if entity_type != "@sys.ignore": entity = utils.build_entity(start, end, text, entity_type) return entity
def _find_entities_in_training_example(example: Text) -> List[Dict]: """Extracts entities from a markdown intent example.""" entities = [] offset = 0 for match in re.finditer(ent_regex, example): entity_text = match.groupdict()["entity_text"] entity_type = match.groupdict()["entity"] if match.groupdict()["value"]: entity_value = match.groupdict()["value"] else: entity_value = entity_text start_index = match.start() - offset end_index = start_index + len(entity_text) offset += len(match.group(0)) - len(entity_text) entity = build_entity(start_index, end_index, entity_value, entity_type) entities.append(entity) return entities