Ejemplo n.º 1
0
    def parse(self, text):
        tokens = self.tokenizer.tokenize(text)
        intent, score = self.get_intent(tokens)
        entities = get_entities(text, tokens, self.extractor)
        if self.ent_synonyms:
            Interpreter.replace_synonyms(entities, self.ent_synonyms)

        return {'text': text, 'intent': intent, 'entities': entities, 'confidence': score}
    def parse(self, text):
        """Parse the input text, classify it and return an object containing its intent and entities."""
        doc = self.nlp(text, entity=False)
        intent, probability = self.get_intent(doc)
        entities = self.get_entities(doc)
        if self.ent_synonyms:
            Interpreter.replace_synonyms(entities, self.ent_synonyms)

        return {'text': text, 'intent': intent, 'entities': entities, 'confidence': probability}
Ejemplo n.º 3
0
    def parse(self, text):
        intent, score = self.get_intent(text)
        entities = self.get_entities(text)
        if self.ent_synonyms:
            Interpreter.replace_synonyms(entities, self.ent_synonyms)

        return {
            'text': text,
            'intent': intent,
            'entities': entities,
            'confidence': score
        }
Ejemplo n.º 4
0
 def load(meta):
     """
     :type meta: ModelMetadata
     :rtype: MITIEInterpreter
     """
     if meta.entity_extractor_path:
         if meta.feature_extractor_path is None or not os.path.isfile(meta.feature_extractor_path):
             raise Exception("Invalid feature extractor path for MITIE model. Meta data: " + meta)
         extractor = named_entity_extractor(
             meta.entity_extractor_path, meta.feature_extractor_path)
     else:
         extractor = None
     if meta.intent_classifier_path:
         classifier = text_categorizer(
             meta.intent_classifier_path, meta.feature_extractor_path)
     else:
         classifier = None
     if meta.entity_synonyms_path:
         entity_synonyms = Interpreter.load_synonyms(meta.entity_synonyms_path)
     else:
         entity_synonyms = None
     return MITIEInterpreter(
         classifier,
         extractor,
         entity_synonyms)
    def load(meta, nlp, featurizer=None):
        """
        :type meta: rasa_nlu.model.Metadata
        :type nlp: spacy.language.Language
        :type featurizer: None or rasa_nlu.featurizers.spacy_featurizer.SpacyFeaturizer
        :rtype: MITIEInterpreter
        """
        if meta.entity_extractor_path:
            extractor = SpacyEntityExtractor(nlp, meta.entity_extractor_path,
                                             meta.metadata.get("should_fine_tune_spacy_ner"))
        else:
            extractor = None
        if meta.intent_classifier_path:
            with open(meta.intent_classifier_path, 'rb') as f:
                classifier = cloudpickle.load(f)
        else:
            classifier = None
        if meta.entity_synonyms_path:
            entity_synonyms = Interpreter.load_synonyms(meta.entity_synonyms_path)
        else:
            entity_synonyms = None

        if featurizer is None:
            featurizer = SpacyFeaturizer(nlp)
        return SpacySklearnInterpreter(
            classifier,
            extractor,
            entity_synonyms,
            featurizer,
            nlp)
Ejemplo n.º 6
0
    def load(meta, featurizer=None):
        """
        :type meta: rasa_nlu.model.Metadata
        :rtype: MITIESklearnInterpreter
        """
        if meta.entity_extractor_path:
            extractor = named_entity_extractor(meta.entity_extractor_path)
        else:
            extractor = None

        if featurizer is None:
            featurizer = MITIEFeaturizer(meta.feature_extractor_path)

        if meta.intent_classifier_path:
            with open(meta.intent_classifier_path, 'rb') as f:
                classifier = cloudpickle.load(f)
        else:
            classifier = None
        if meta.entity_synonyms_path:
            entity_synonyms = Interpreter.load_synonyms(
                meta.entity_synonyms_path)
        else:
            entity_synonyms = None

        return MITIESklearnInterpreter(classifier, extractor, featurizer,
                                       entity_synonyms)
Ejemplo n.º 7
0
 def __init__(self,
              intent_classifier=None,
              entity_extractor=None,
              feature_extractor=None,
              entity_synonyms=None,
              **kwargs):
     self.extractor = None
     self.classifier = None
     if entity_extractor:
         self.extractor = named_entity_extractor(entity_extractor, feature_extractor)
     if intent_classifier:
         self.classifier = text_categorizer(intent_classifier, feature_extractor)
     self.tokenizer = MITIETokenizer()
     self.ent_synonyms = None
     if entity_synonyms:
         Interpreter.load_synonyms(entity_synonyms)
Ejemplo n.º 8
0
    def load(meta, featurizer=None):
        """
        :type meta: rasa_nlu.model.Metadata
        :rtype: MITIEInterpreter
        """
        if meta.entity_extractor_path:
            extractor = named_entity_extractor(meta.entity_extractor_path)
        else:
            extractor = None

        if meta.intent_classifier_path:
            classifier = text_categorizer(meta.intent_classifier_path)
        else:
            classifier = None

        if featurizer is None:
            featurizer = MITIEFeaturizer(meta.feature_extractor_path)

        if meta.entity_synonyms_path:
            entity_synonyms = Interpreter.load_synonyms(
                meta.entity_synonyms_path)
        else:
            entity_synonyms = None

        return MITIEInterpreter(classifier, extractor, featurizer,
                                entity_synonyms)
Ejemplo n.º 9
0
def test_entity_synonyms():
    entities = [{
        "entity": "test",
        "value": "chines",
        "start": 0,
        "end": 6
    }, {
        "entity": "test",
        "value": "chinese",
        "start": 0,
        "end": 6
    }, {
        "entity": "test",
        "value": "china",
        "start": 0,
        "end": 6
    }]
    ent_synonyms = {"chines": "chinese", "NYC": "New York City"}
    Interpreter.replace_synonyms(entities, ent_synonyms)
    assert len(entities) == 3
    assert entities[0]["value"] == "chinese"
    assert entities[1]["value"] == "chinese"
    assert entities[2]["value"] == "china"
 def __init__(self,
              intent_classifier=None,
              entity_extractor=None,
              feature_extractor=None,
              entity_synonyms=None,
              **kwargs):
     self.extractor = None
     self.classifier = None
     if entity_extractor:
         self.extractor = named_entity_extractor(entity_extractor,
                                                 feature_extractor)
     if intent_classifier:
         with open(intent_classifier, 'rb') as f:
             self.classifier = cloudpickle.load(f)
     self.featurizer = MITIEFeaturizer(feature_extractor)
     self.tokenizer = MITIETokenizer()
     self.ent_synonyms = None
     if entity_synonyms:
         self.ent_synonyms = Interpreter.load_synonyms(entity_synonyms)
Ejemplo n.º 11
0
 def load(meta, nlp):
     """
     :type meta: ModelMetadata
     :rtype: MITIEInterpreter
     """
     if meta.entity_extractor_path:
         extractor = SpacyEntityExtractor(nlp, meta.entity_extractor_path)
     else:
         extractor = None
     if meta.intent_classifier_path:
         with open(meta.intent_classifier_path, 'rb') as f:
             classifier = cloudpickle.load(f)
     else:
         classifier = None
     if meta.entity_synonyms_path:
         entity_synonyms = Interpreter.load_synonyms(
             meta.entity_synonyms_path)
     else:
         entity_synonyms = None
     return SpacySklearnInterpreter(classifier, extractor, entity_synonyms,
                                    nlp)
Ejemplo n.º 12
0
    def __init__(self,
                 entity_extractor=None,
                 entity_synonyms=None,
                 intent_classifier=None,
                 language_name='en',
                 **kwargs):
        self.extractor = None
        self.classifier = None
        self.ent_synonyms = None
        self.nlp = spacy.load(language_name,
                              parser=False,
                              entity=False,
                              matcher=False)
        self.featurizer = SpacyFeaturizer(self.nlp)

        ensure_proper_language_model(self.nlp)

        if intent_classifier:
            with open(intent_classifier, 'rb') as f:
                self.classifier = cloudpickle.load(f)
        if entity_extractor:
            self.extractor = SpacyEntityExtractor(self.nlp, entity_extractor)
        self.ent_synonyms = Interpreter.load_synonyms(entity_synonyms)