Beispiel #1
0
    def load(cls,
             model_path: str,
             parameter_path: str,
             batch_size: int = 32,
             use_cudnn: bool = False):
        """
        Load a NPAnnotator annotator

        Args:
            model_path (str): path to trained model
            parameter_path (str): path to model parameters
            batch_size (int, optional): inference batch_size
            use_cudnn (bool, optional): use gpu for inference (cudnn cells)

        Returns:
            NPAnnotator class with loaded model
        """

        _model_path = path.join(path.dirname(path.realpath(__file__)),
                                model_path)
        validate_existing_filepath(_model_path)
        _parameter_path = path.join(path.dirname(path.realpath(__file__)),
                                    parameter_path)
        validate_existing_filepath(_parameter_path)

        model = SequenceChunker(use_cudnn=use_cudnn)
        model.load(_model_path)
        with open(_parameter_path, "rb") as fp:
            model_params = pickle.load(fp)
            word_vocab = model_params["word_vocab"]
            chunk_vocab = model_params["chunk_vocab"]
            char_vocab = model_params.get("char_vocab", None)
        return cls(model, word_vocab, char_vocab, chunk_vocab, batch_size)
Beispiel #2
0
        train_features = [words_train, char_train]
        test_features = [words_test, char_test]
    else:
        train_features = words_train
        test_features = words_test
    train_labels = [pos_train, chunk_train]
    test_labels = [pos_test, chunk_test]
    chunk_f1_cb = ConllCallback(test_features,
                                chunk_test,
                                dataset.chunk_vocab.vocab,
                                batch_size=64)
    model.fit(train_features,
              train_labels,
              epochs=args.e,
              batch_size=args.b,
              validation_data=(test_features, test_labels),
              callbacks=[chunk_f1_cb])

    # save model
    _save_model()

    # load model
    model = SequenceChunker(use_cudnn=args.use_cudnn)
    model.load(model_path)

    # print evaluation metric
    chunk_pred = model.predict(test_features, 64)
    res = get_conll_scores(chunk_pred, chunk_test,
                           dataset.chunk_vocab.reverse_vocab())
    print(res)