def assertTaxonomyAssignment(self, taxonomyAssignmentJSON): parents = list() children = list() def extractConcept(JSON): return JSON['concept'] if 'component' in taxonomyAssignmentJSON['taxonomy_assignment']['parent']: raise Exception('assertTaxonomyAssignment: Cannot use /= to assert taxonomy of a component') elif isinstance(taxonomyAssignmentJSON['taxonomy_assignment']['parent'], list): parents.extend(map(extractConcept, taxonomyAssignmentJSON['taxonomy_assignment']['parent'])) else: parents.append(taxonomyAssignmentJSON['taxonomy_assignment']['parent']['concept']) if isinstance(taxonomyAssignmentJSON['taxonomy_assignment']['child'], list): children.extend(map(extractConcept, taxonomyAssignmentJSON['taxonomy_assignment']['child'])) else: children.append(taxonomyAssignmentJSON['taxonomy_assignment']['child']['concept']) self.context.recentlyMentionedPhrases |= set(parents) self.context.recentlyMentionedPhrases |= set(children) c = Concept() for parent in parents: for child in children: c.classify(child, parent) for child in children: examples = self.context.queryNounPhrases(child) if not examples: self.context.newNounPhrase(child)