コード例 #1
0
    def load(
        cls,
        meta: Dict[Text, Any],
        model_dir: Optional[Text] = None,
        model_metadata: Optional[Metadata] = None,
        cached_component: Optional["CountVectorsFeaturizer"] = None,
        **kwargs: Any,
    ) -> "CountVectorsFeaturizer":

        file_name = meta.get("file")
        featurizer_file = os.path.join(model_dir, file_name)

        if not os.path.exists(featurizer_file):
            return cls(meta)

        vocabulary = utils.json_unpickle(featurizer_file)

        share_vocabulary = meta["use_shared_vocab"]

        if share_vocabulary:
            vectorizers = cls._create_shared_vocab_vectorizers(
                meta, vocabulary=vocabulary)
        else:
            vectorizers = cls._create_independent_vocab_vectorizers(
                meta, vocabulary=vocabulary)

        return cls(meta, vectorizers)
コード例 #2
0
    def load(cls,
             meta: Dict[Text, Any],
             model_dir: Optional[Text] = None,
             model_metadata: Optional['Metadata'] = None,
             cached_component: Optional['Component'] = None,
             **kwargs: Any) -> 'Component':
        """Load this component from file."""

        from sklearn.preprocessing import LabelEncoder
        from tensorflow.keras.models import load_model
        from tensorflow.keras import backend
        import tensorflow as tf

        model_file = os.path.join(model_dir, meta.get('model'))
        encoder_file = os.path.join(model_dir, meta.get('encoder'))

        if os.path.exists(model_file):
            graph = tf.Graph()
            with graph.as_default():
                session = tf.Session()
                with session.as_default():
                    model = load_model(model_file)
            classes = utils.json_unpickle(encoder_file)
            encoder = LabelEncoder()
            encoder.classes_ = classes
            return cls(meta, model, encoder, graph=graph, session=session)
        else:
            return cls(meta)
コード例 #3
0
    def load(cls,
             meta: Dict[Text, Any],
             model_dir: Text = None,
             model_metadata: Metadata = None,
             cached_component: Optional["CountVectorsFeaturizer"] = None,
             **kwargs: Any) -> "CountVectorsFeaturizer":

        file_name = meta.get("file")
        featurizer_file = os.path.join(model_dir, file_name)

        if os.path.exists(featurizer_file):
            vocabulary = utils.json_unpickle(featurizer_file)

            vectorizer = CountVectorizer(
                token_pattern=meta["token_pattern"],
                strip_accents=meta["strip_accents"],
                lowercase=meta["lowercase"],
                stop_words=meta["stop_words"],
                ngram_range=(meta["min_ngram"], meta["max_ngram"]),
                max_df=meta["max_df"],
                min_df=meta["min_df"],
                max_features=meta["max_features"],
                analyzer=meta["analyzer"],
                vocabulary=vocabulary,
            )

            return cls(meta, vectorizer)
        else:
            return cls(meta)
コード例 #4
0
ファイル: fastai-nlu.py プロジェクト: rrupam/rasa-fastai
 def load(cls,
          meta: Dict[Text, Any],
          model_dir=None,
          model_metadata=None,
          cached_component=None,
          **kwargs):
     file_name = meta.get("classifier_file")
     classifier_file = os.path.join(model_dir, file_name)
     return utils.json_unpickle(classifier_file)
コード例 #5
0
 def __init__(self):
     file_name = "classifier.pkl"
     classifier_file = os.path.join("models/nlu-20200108-095729/nlu",
                                    file_name)
     classifier = utils.json_unpickle(classifier_file)
     matrix = np.matrix(classifier.classifier.coef_)
     print(matrix.max())
     print(matrix.min())
     print(classifier.classifier.coef_)
コード例 #6
0
    def load(cls,
             meta: Dict[Text, Any],
             model_dir: Optional[Text] = None,
             model_metadata: Optional[Metadata] = None,
             cached_component: Optional["SklearnIntentClassifier"] = None,
             **kwargs: Any) -> "SklearnIntentClassifier":
        from sklearn.preprocessing import LabelEncoder

        classifier_file = os.path.join(model_dir, meta.get("classifier"))
        encoder_file = os.path.join(model_dir, meta.get("encoder"))

        if os.path.exists(classifier_file):
            classifier = utils.json_unpickle(classifier_file)
            classes = utils.json_unpickle(encoder_file)
            encoder = LabelEncoder()
            encoder.classes_ = classes
            return cls(meta, classifier, encoder)
        else:
            return cls(meta)
コード例 #7
0
    def load(cls,
             meta: Dict[Text, Any],
             model_dir: Optional[Text] = None,
             model_metadata: Optional[Metadata] = None,
             cached_component: Optional["CustomFeaturizer"] = None,
             **kwargs: Any) -> "CustomFeaturizer":

        mapping_file_name = os.path.join(model_dir, meta.get("grams_mapping"))
        if os.path.exists(mapping_file_name):
            grams_mapping = utils.json_unpickle(mapping_file_name)
            return cls(meta, grams_mapping)
        return cls(meta)
コード例 #8
0
 def load(
     cls,
     meta: Dict[Text, Any],
     model_dir: Optional[Text] = None,
     model_metadata: Optional["Metadata"] = None,
     cached_component: Optional["Component"] = None,
     **kwargs: Any,
 ) -> "Component":
     """Load this component from file."""
     file_name = meta.get("vectorizer_file")
     vectorizer_file = os.path.join(model_dir, file_name)
     return utils.json_unpickle(vectorizer_file)
コード例 #9
0
    def load(cls,
             meta: Dict[Text, Any],
             model_dir: Text = None,
             model_metadata: Metadata = None,
             cached_component: Optional['IncrementalCVF'] = None,
             **kwargs: Any) -> 'IncrementalCVF':

        if model_dir and meta.get("file"):
            file_name = meta.get("file")
            featurizer_file = os.path.join(model_dir, file_name)
            return utils.json_unpickle(featurizer_file)
        else:
            logger.warning("Failed to load featurizer. Maybe path {} "
                           "doesn't exist".format(os.path.abspath(model_dir)))
            return IncrementalCVF(meta)
コード例 #10
0
    def load(cls,
             meta: Dict[Text, Any],
             model_dir: Optional[Text] = None,
             model_metadata: Optional[Metadata] = None,
             cached_component: Optional["LanguageExtractor"] = None,
             **kwargs: Any) -> "LanguageExtractor":
        from sklearn.svm import SVC
        # from sklearn.linear_model import LogisticRegression

        classifier_file = os.path.join(model_dir, meta.get("classifier"))

        if os.path.exists(classifier_file):
            classifier = utils.json_unpickle(classifier_file)
            return cls(meta, classifier)

        return cls(meta)
コード例 #11
0
    def load(
        cls,
        meta: Dict[Text, Any],
        model_dir: Text = None,
        model_metadata: Metadata = None,
        cached_component: Optional["CountVectorsFeaturizer"] = None,
        **kwargs: Any
    ) -> "CountVectorsFeaturizer":
        from sklearn.feature_extraction.text import CountVectorizer

        file_name = meta.get("file")
        featurizer_file = os.path.join(model_dir, file_name)

        if os.path.exists(featurizer_file):
            vocabulary = utils.json_unpickle(featurizer_file)

            vectorizer = CountVectorizer()
            vectorizer.vocabulary_ = vocabulary
            return cls(meta, vectorizer)
        else:
            return cls(meta)
コード例 #12
0
import spacy
import numpy as np
import logging.config
from rasa.nlu.utils import json_unpickle
from sklearn.preprocessing import LabelEncoder
from sklearn import metrics

logging.config.fileConfig('logging.conf')
logger = logging.getLogger(__name__)

# Set the paths
classifier_file = '<path_to_model>/nlu/component_3_SklearnIntentClassifier_classifier.pkl'
encoder_file = '<path_to_model>/nlu/component_3_SklearnIntentClassifier_encoder.pkl'

logger.info('Load Rasa classifier model')
classifier = json_unpickle(classifier_file)
classes = json_unpickle(encoder_file)
encoder = LabelEncoder()
encoder.classes_ = classes


def get_features(nlp, texts):
    """

    :param nlp:
    :param texts:
    :return:
    """
    features = []
    for doc in nlp.pipe(texts, batch_size=32):
        features.append(doc.vector)