def persist(self, path): """Persist the NLU engine at the given directory path Args: path (str): the location at which the nlu engine must be persisted. This path must not exist when calling this function. """ directory_path = Path(path) directory_path.mkdir() parsers_count = defaultdict(int) intent_parsers = [] for parser in self.intent_parsers: parser_name = parser.unit_name parsers_count[parser_name] += 1 count = parsers_count[parser_name] if count > 1: parser_name = "{n}_{c}".format(n=parser_name, c=count) parser_path = directory_path / parser_name parser.persist(parser_path) intent_parsers.append(parser_name) config = None if self.config is not None: config = self.config.to_dict() model = { "unit_name": self.unit_name, "dataset_metadata": self._dataset_metadata, "intent_parsers": intent_parsers, "config": config, "model_version": __model_version__, "training_package_version": __version__ } model_json = json_string(model) model_path = directory_path / "nlu_engine.json" with model_path.open(mode="w") as f: f.write(model_json) if self.fitted: required_resources = self.config.get_required_resources() if required_resources: language = self._dataset_metadata["language_code"] resources_path = directory_path / "resources" resources_path.mkdir() persist_resources(resources_path / language, required_resources, language)
def persist(self, path): """Persists the NLU engine at the given directory path Args: path (str or pathlib.Path): the location at which the nlu engine must be persisted. This path must not exist when calling this function. Raises: PersistingError: when persisting to a path which already exists """ path.mkdir() parsers_count = defaultdict(int) intent_parsers = [] for parser in self.intent_parsers: parser_name = parser.unit_name parsers_count[parser_name] += 1 count = parsers_count[parser_name] if count > 1: parser_name = "{n}_{c}".format(n=parser_name, c=count) parser_path = path / parser_name parser.persist(parser_path) intent_parsers.append(parser_name) config = None if self.config is not None: config = self.config.to_dict() builtin_entity_parser = None if self.builtin_entity_parser is not None: builtin_entity_parser = "builtin_entity_parser" builtin_entity_parser_path = path / builtin_entity_parser self.builtin_entity_parser.persist(builtin_entity_parser_path) custom_entity_parser = None if self.custom_entity_parser is not None: custom_entity_parser = "custom_entity_parser" custom_entity_parser_path = path / custom_entity_parser self.custom_entity_parser.persist(custom_entity_parser_path) model = { "unit_name": self.unit_name, "dataset_metadata": self.dataset_metadata, "intent_parsers": intent_parsers, "custom_entity_parser": custom_entity_parser, "builtin_entity_parser": builtin_entity_parser, "config": config, "model_version": __model_version__, "training_package_version": __version__ } model_json = json_string(model) model_path = path / "nlu_engine.json" with model_path.open(mode="w") as f: f.write(model_json) if self.fitted: required_resources = self.config.get_required_resources() language = self.dataset_metadata["language_code"] resources_path = path / "resources" resources_path.mkdir() persist_resources(self.resources, resources_path / language, required_resources)