def _get_entity_scopes(dataset): intent_entities = extract_intent_entities(dataset) intent_groups = [] entity_scopes = [] for intent, entities in sorted(iteritems(intent_entities)): scope = { "builtin": list( {ent for ent in entities if is_builtin_entity(ent)}), "custom": list( {ent for ent in entities if not is_builtin_entity(ent)}) } if scope in entity_scopes: group_idx = entity_scopes.index(scope) intent_groups[group_idx].append(intent) else: entity_scopes.append(scope) intent_groups.append([intent]) return [ { "intent_group": intent_group, "entity_scope": entity_scope } for intent_group, entity_scope in zip(intent_groups, entity_scopes) ]
def fit(self, dataset, intent): self.language = dataset[LANGUAGE] self.entities = extract_intent_entities( dataset, lambda e: not is_builtin_entity(e))[intent] self.entities = list(self.entities) return self