Пример #1
0
    def __create_model_store(self):
        # Fallback for users that specified the model path as a string and hence only want a single default model.
        if type(self.config.server_model_dirs) is Text:
            model_dict = {
                self.DEFAULT_MODEL_NAME: self.config.server_model_dirs
            }
        elif self.config.server_model_dirs is None:
            model_dict = self.__search_for_models()
        else:
            model_dict = self.config.server_model_dirs

        model_store = {}

        for alias, model_path in list(model_dict.items()):
            try:
                logger.info("Loading model '{}'...".format(model_path))
                model_store[alias] = self.__interpreter_for_model(model_path)
            except Exception as e:
                logger.exception("Failed to load model '{}'. Error: {}".format(
                    model_path, e))
        if not model_store:
            meta = Metadata({"pipeline": ["intent_classifier_keyword"]}, "")
            interpreter = Interpreter.create(meta, self.config,
                                             self.component_builder)
            model_store[self.DEFAULT_MODEL_NAME] = interpreter
        return model_store
Пример #2
0
 def _fallback_model(self):
     meta = Metadata(
         {
             "pipeline": [{
                 "name":
                 "intent_classifier_keyword",
                 "class":
                 utils.module_path_from_object(KeywordIntentClassifier())
             }]
         }, "")
     return Interpreter.create(meta, self._component_builder)
Пример #3
0
    def _search_for_models(self):
        prefix = 'model_'

        if not self._path or not os.path.isdir(self._path):
            meta = Metadata({"pipeline": ["intent_classifier_keyword"]}, "")
            interpreter = Interpreter.create(meta, self._config, self._component_builder)
            models = {'fallback': interpreter}
        else:
            models = {model: None for model in os.listdir(self._path) if model.startswith(prefix)}
        models.update(self._models)
        self._models = models
def load_interpreter_for_model(config, persisted_path, component_builder):
    def read_model_metadata(model_dir, config):
        if model_dir is None:
            data = Project._default_model_metadata()
            return Metadata(data, model_dir)
        else:
            if not os.path.isabs(model_dir):
                model_dir = os.path.join(config['path'], model_dir)

            # download model from S3 if needed
            if not os.path.isdir(model_dir):
                Project._load_model_from_cloud(model_dir, config)

            return Metadata.load(model_dir)

    metadata = read_model_metadata(persisted_path, config)
    return Interpreter.create(metadata, config, component_builder)
Пример #5
0
 def _interpreter_for_model(self, model_name):
     metadata = self._read_model_metadata(model_name)
     return Interpreter.create(metadata, self._config,
                               self._component_builder)
Пример #6
0
 def _fallback_model(self):
     meta = Metadata({"pipeline": ["intent_classifier_keyword"]}, "")
     return Interpreter.create(meta, self._config, self._component_builder)
Пример #7
0
 def _fallback_model(self):
     meta = Metadata({"pipeline": [{
         "name": "KeywordIntentClassifier",
         "class": utils.module_path_from_object(KeywordIntentClassifier())
     }]}, "")
     return Interpreter.create(meta, self._component_builder)
Пример #8
0
 def _interpreter_for_model(self, model_name, model_dir=None):
     metadata = self._read_model_metadata(model_name, model_dir)
     return Interpreter.create(metadata, self._component_builder)
Пример #9
0
 def _interpreter_for_model(self, model):
     metadata = self._read_model_metadata(model)
     return Interpreter.create(metadata, self._config, self._component_builder)
Пример #10
0
 def __interpreter_for_model(self, model_path):
     metadata = DataRouter.read_model_metadata(model_path, self.config)
     return Interpreter.create(metadata, self.config,
                               self.component_builder)
Пример #11
0
 def _fallback_model(self):
     meta = Metadata({"pipeline": ["intent_classifier_keyword"]}, "")
     return Interpreter.create(meta, self._config, self._component_builder)
Пример #12
0
def load_interpreter_for_model(config, persisted_path, component_builder):
    metadata = DataRouter.read_model_metadata(persisted_path, config)
    return Interpreter.create(metadata, config, component_builder)