def merge(self, *others: "TrainingData") -> "TrainingData": """Return merged instance of this data with other training data.""" training_examples = deepcopy(self.training_examples) entity_synonyms = self.entity_synonyms.copy() regex_features = deepcopy(self.regex_features) lookup_tables = deepcopy(self.lookup_tables) nlg_stories = deepcopy(self.nlg_stories) others = [other for other in others if other] for o in others: training_examples.extend(deepcopy(o.training_examples)) regex_features.extend(deepcopy(o.regex_features)) lookup_tables.extend(deepcopy(o.lookup_tables)) for text, syn in o.entity_synonyms.items(): check_duplicate_synonym(entity_synonyms, text, syn, "merging training data") entity_synonyms.update(o.entity_synonyms) nlg_stories.update(o.nlg_stories) return TrainingData( training_examples, entity_synonyms, regex_features, lookup_tables, nlg_stories, )
def add_synonym(synonym_value: Text, synonym_name: Text, existing_synonyms: Dict) -> None: """Adds a new synonym mapping to the provided list of synonyms. Args: synonym_value: Value of the synonym. synonym_name: Name of the synonym. existing_synonyms: Dictionary will synonym mappings that will be extended. """ import rasa.nlu.training_data.util as training_data_util training_data_util.check_duplicate_synonym(existing_synonyms, synonym_value, synonym_name, "reading markdown") existing_synonyms[synonym_value] = synonym_name
def _add_synonym(self, text: Text, value: Text) -> None: from rasa.nlu.training_data.util import check_duplicate_synonym check_duplicate_synonym(self.entity_synonyms, text, value, "reading markdown") self.entity_synonyms[text] = value