Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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