def fit(self, dataset, force_retrain=True): """Fit the slot filler Args: dataset (dict): A valid Snips dataset force_retrain (bool, optional): If *False*, will not retrain intent classifier and slot fillers when they are already fitted. Default to *True*. Returns: :class:`ProbabilisticIntentParser`: The same instance, trained """ dataset = validate_and_format_dataset(dataset) intents = list(dataset[INTENTS]) if self.intent_classifier is None: self.intent_classifier = build_processing_unit( self.config.intent_classifier_config) if force_retrain or not self.intent_classifier.fitted: self.intent_classifier.fit(dataset) if self.slot_fillers is None: self.slot_fillers = dict() for intent_name in intents: # We need to copy the slot filler config as it may be mutated if self.slot_fillers.get(intent_name) is None: slot_filler_config = deepcopy(self.config.slot_filler_config) self.slot_fillers[intent_name] = build_processing_unit( slot_filler_config) if force_retrain or not self.slot_fillers[intent_name].fitted: self.slot_fillers[intent_name].fit(dataset, intent_name) return self
def fit(self, dataset, force_retrain=True): """Fit the slot filler Args: dataset (dict): A valid Snips dataset force_retrain (bool, optional): If *False*, will not retrain intent classifier and slot fillers when they are already fitted. Default to *True*. Returns: :class:`ProbabilisticIntentParser`: The same instance, trained """ logger.info("Fitting probabilistic intent parser...") dataset = validate_and_format_dataset(dataset) intents = list(dataset[INTENTS]) if self.intent_classifier is None: self.intent_classifier = build_processing_unit( self.config.intent_classifier_config) if force_retrain or not self.intent_classifier.fitted: self.intent_classifier.fit(dataset) if self.slot_fillers is None: self.slot_fillers = dict() slot_fillers_start = datetime.now() for intent_name in intents: # We need to copy the slot filler config as it may be mutated if self.slot_fillers.get(intent_name) is None: slot_filler_config = deepcopy(self.config.slot_filler_config) self.slot_fillers[intent_name] = build_processing_unit( slot_filler_config) if force_retrain or not self.slot_fillers[intent_name].fitted: self.slot_fillers[intent_name].fit(dataset, intent_name) logger.debug("Fitted slot fillers in %s", elapsed_since(slot_fillers_start)) return self
def fit(self, dataset, force_retrain=True): """Fit the NLU engine Args: dataset (dict): A valid Snips dataset force_retrain (bool, optional): If *False*, will not retrain intent parsers when they are already fitted. Default to *True*. Returns: The same object, trained. """ logger.info("Fitting NLU engine...") dataset = validate_and_format_dataset(dataset) self._dataset_metadata = _get_dataset_metadata(dataset) if self.config is None: language = self._dataset_metadata["language_code"] self.config = self.config_type.from_dict(DEFAULT_CONFIGS[language]) parsers = [] for parser_config in self.config.intent_parsers_configs: # Re-use existing parsers to allow pre-training recycled_parser = None for parser in self.intent_parsers: if parser.unit_name == parser_config.unit_name: recycled_parser = parser break if recycled_parser is None: recycled_parser = build_processing_unit(parser_config) if force_retrain or not recycled_parser.fitted: recycled_parser.fit(dataset, force_retrain) parsers.append(recycled_parser) self.intent_parsers = parsers return self
def fit(self, dataset, force_retrain=True): """Fit the NLU engine Args: dataset (dict): A valid Snips dataset force_retrain (bool, optional): If *False*, will not retrain intent parsers when they are already fitted. Default to *True*. Returns: The same object, trained. """ dataset = validate_and_format_dataset(dataset) self._dataset_metadata = _get_dataset_metadata(dataset) if self.config is None: language = self._dataset_metadata["language_code"] self.config = self.config_type.from_dict(DEFAULT_CONFIGS[language]) parsers = [] for parser_config in self.config.intent_parsers_configs: # Re-use existing parsers to allow pre-training recycled_parser = None for parser in self.intent_parsers: if parser.unit_name == parser_config.unit_name: recycled_parser = parser break if recycled_parser is None: recycled_parser = build_processing_unit(parser_config) if force_retrain or not recycled_parser.fitted: recycled_parser.fit(dataset, force_retrain) parsers.append(recycled_parser) self.intent_parsers = parsers return self