示例#1
0
 def test_results(self):
     r = Results()
     e = Entry()
     e.nif__isString = "Results test"
     r.entries.append(e)
     r.id = ":test_results"
     r.validate()
示例#2
0
 def test_results(self):
     r = Results()
     e = Entry()
     e.nif__isString = "Results test"
     r.entries.append(e)
     r.id = ":test_results"
     r.validate()
示例#3
0
 def test_entries(self):
     e = Entry()
     self.assertRaises(jsonschema.ValidationError, e.validate)
     e.nif__isString = "this is a test"
     e.nif__beginIndex = 0
     e.nif__endIndex = 10
     e.validate()
示例#4
0
 def analyse(self, *args, **kwargs):
     self.sh['counter'] = self.sh['counter'] + 1
     e = Entry()
     e.nif__isString = self.sh['counter']
     r = Results()
     r.entries.append(e)
     return r
示例#5
0
    def analyse(self, **params):
        logger.debug(
            "SentimentAnalysisDL Analysing with params {}".format(params))

        text_input = params.get("input", None)

        # st = datetime.now()
        text = self.cleanTweet(text_input)
        # logger.info("{} {}".format(datetime.now() - st, "tweet cleaned"))

        X_test = self.convert_text_to_vector([text], self._tokenizer)
        y_pred = self.classify(X_test)

        response = Results()
        entry = Entry()

        _mapping_labels = {0: 'positive', 1: 'negative', 2: 'neutral'}
        _mapping_values = {0: "1", 1: "-1", 2: "0"}

        for sentence, y_i in zip([text], y_pred):
            sentiment = Sentiment()
            sentiment['marl:hasPolarity'] = _mapping_labels[y_i]
            sentiment["marl:polarityValue"] = _mapping_values[y_i]
            entry.sentiments.append(sentiment)

        entry.nif__isString = text_input
        response.entries.append(entry)

        return response
示例#6
0
 def test_entries(self):
     e = Entry()
     self.assertRaises(jsonschema.ValidationError, e.validate)
     e.nif__isString = "this is a test"
     e.nif__beginIndex = 0
     e.nif__endIndex = 10
     e.validate()
示例#7
0
 def analyse(self, *args, **kwargs):
     self.sh['counter'] = self.sh['counter'] + 1
     e = Entry()
     e.nif__isString = self.sh['counter']
     r = Results()
     r.entries.append(e)
     return r
    def analyse(self, **params):
        logger.debug("SuggestionMiningDL Analysing with params {}".format(params))

        text_input = params.get("input", None)

        st = datetime.now()
        text_sentences = self.cleanTweet(text_input) #[self.cleanTweet(sentence) for sentence in self.split_into_sentences(text_input)] 
        
        #X_test = [ self.convert_text_to_vector(sentence, self._tokenizer) for sentence in text_sentences]
        X_test = self.convert_text_to_vector([text_sentences], self._tokenizer)
        
        y_pred = self.classify(X_test)
        logger.info("{} {}".format(datetime.now() - st, "tweet analysed, predicted: "+str(y_pred)))

        response = Results()
        
        entry = Entry()
        entry.nif__isString = text_input
           
        _mapping_labels = {0:False, 1:True}
        
        for sentence, y_i in zip([text_sentences], y_pred):
            suggestion = Suggestion()            
            suggestion['hasSuggestion'] = _mapping_labels[y_i]
            suggestion["nif:beginIndex"] = 0
            suggestion["nif:endIndex"] = len(sentence)
            suggestion["nif:anchorOf"] = sentence
            entry.suggestions.append(suggestion)
        
        
        response.entries.append(entry)
            
        return response
    def analyse(self, **params):
        
        logger.debug("Hashtag SVM Analysing with params {}".format(params))
                
        text_input = params.get("input", None)
        self.ESTIMATOR = params.get("estimator", 'LinearSVC')
        
        
        # EXTRACTING FEATURES
        
        text = self._text_preprocessor(text_input)      
        X = self._convert_text_to_vector(text=text, text_input=text_input, Dictionary=self._Dictionary)   
        feature_text = self._extract_features(X=X, classifiers=self._classifiers, estimator=self.ESTIMATOR)              
            
            
        # GENERATING RESPONSE
        
        response = Results()
        entry = Entry()
        entry.nif__isString = text_input

        emotionSet = EmotionSet()
        emotionSet.id = "Emotions"
        
        if self.ESTIMATOR == 'SVC':
            emotionSet.onyx__maxIntensityValue = float(100.0)

        emotion1 = Emotion()        

        for dimension in ['V','A','D']:            
            weights = [feature_text[i] for i in feature_text if (i != 'surprise')]              
            if not all(v == 0 for v in weights):
                value = np.average([self.centroids[i][dimension] for i in feature_text if (i != 'surprise')], weights=weights) 
            else:
                value = 5.0
            emotion1[self.centroid_mappings[dimension]] = value 
        

        emotionSet.onyx__hasEmotion.append(emotion1)    
                    
        for i in feature_text:
            if(self.ESTIMATOR == 'SVC'):
                emotionSet.onyx__hasEmotion.append(Emotion(
                                    onyx__hasEmotionCategory=self.wnaffect_mappings[i],
                                    onyx__hasEmotionIntensity=feature_text[i]))
            else:
                if(feature_text[i] > 0):
                    emotionSet.onyx__hasEmotion.append(Emotion(
                            onyx__hasEmotionCategory=self.wnaffect_mappings[i]))
        
        entry.emotions = [emotionSet,]        
        response.entries.append(entry)
            
        return response
示例#10
0
 def test_template(self):
     r = Results()
     e = Entry()
     e.nif__isString = 'testing the template'
     sent = Sentiment()
     sent.polarity = 'marl:Positive'
     r.entries.append(e)
     e.sentiments.append(sent)
     template = ('{% for entry in entries %}'
                 '{{ entry["nif:isString"] | upper }}'
                 ',{{entry.sentiments[0]["marl:hasPolarity"].split(":")[1]}}'
                 '{% endfor %}')
     res = r.serialize(template=template)
     assert res == 'TESTING THE TEMPLATE,Positive'
示例#11
0
 def test_template(self):
     r = Results()
     e = Entry()
     e.nif__isString = 'testing the template'
     sent = Sentiment()
     sent.polarity = 'marl:Positive'
     r.entries.append(e)
     e.sentiments.append(sent)
     template = (
         '{% for entry in entries %}'
         '{{ entry["nif:isString"] | upper }}'
         ',{{entry.sentiments[0]["marl:hasPolarity"].split(":")[1]}}'
         '{% endfor %}')
     res = r.serialize(template=template)
     assert res == 'TESTING THE TEMPLATE,Positive'
    def analyse(self, **params):
        logger.debug(
            "wassaRegression LSTM Analysing with params {}".format(params))

        st = datetime.now()

        text_input = params.get("input", None)
        text = self._text_preprocessor(text_input)

        self.ESTIMATOR = params.get("estimator", 'LSTM')

        if self.ESTIMATOR == 'LSTM':
            X_lstm = self._lists_to_vectors(text=text)
            feature_text = self._extract_features(X_lstm)

        elif self.ESTIMATOR == 'averaged':
            X_lstm = self._lists_to_vectors(text=text)
            X_svr = self._convert_text_to_vector(text=text,
                                                 text_input=text_input)

            feature_text_lstm = self._extract_features(X_lstm)
            feature_text_svr = self._extract_features_svr(X_svr)

            feature_text = {
                emo: np.mean([feature_text_lstm[emo], feature_text_svr[emo]])
                for emo in self._emoNames
            }

        else:
            X_svr = self._convert_text_to_vector(text=text,
                                                 text_input=text_input)
            feature_text = self._extract_features_svr(X_svr)

        logger.info("{} {}".format(datetime.now() - st, "string analysed"))

        response = Results()

        entry = Entry()
        entry.nif__isString = text_input

        emotionSet = EmotionSet()
        emotionSet.id = "Emotions"

        emotionSet.onyx__maxIntensityValue = float(100.0)

        emotion1 = Emotion()
        for dimension in ['V', 'A', 'D']:
            weights = [feature_text[i] for i in feature_text]
            if not all(v == 0 for v in weights):
                value = np.average(
                    [self.centroids[i][dimension] for i in feature_text],
                    weights=weights)
            else:
                value = 5.0
            emotion1[self.centroid_mappings[dimension]] = value

        emotionSet.onyx__hasEmotion.append(emotion1)

        for i in feature_text:
            emotionSet.onyx__hasEmotion.append(
                Emotion(onyx__hasEmotionCategory=self.wnaffect_mappings[i],
                        onyx__hasEmotionIntensity=float(feature_text[i]) *
                        emotionSet.onyx__maxIntensityValue))

        entry.emotions = [
            emotionSet,
        ]

        response.entries.append(entry)

        return response
    def analyse(self, **params):

        logger.debug("Hashtag LSTM Analysing with params {}".format(params))

        text_input = params.get("input", None)
        self._ESTIMATION = params.get("estimation", 'Probabilities')

        # EXTRACTING FEATURES

        text = self._text_preprocessor(text_input)

        X = self._lists_to_vectors(text=text)
        feature_text = self._extract_features(X=X)

        # GENERATING RESPONSE

        response = Results()

        entry = Entry()
        entry.nif__isString = text_input

        emotionSet = EmotionSet()
        emotionSet.id = "Emotions"

        if self._ESTIMATION == 'Probabilities':
            emotionSet.onyx__maxIntensityValue = float(100.0)

        emotion1 = Emotion()
        for dimension in ['V', 'A', 'D']:
            weights = [
                feature_text[i] for i in feature_text if (i != 'surprise')
            ]
            if not all(v == 0 for v in weights):
                value = np.average([
                    self.centroids[i][dimension]
                    for i in feature_text if (i != 'surprise')
                ],
                                   weights=weights)
            else:
                value = 5.0
            emotion1[self.centroid_mappings[dimension]] = value

        emotionSet.onyx__hasEmotion.append(emotion1)

        for i in feature_text:
            if self._ESTIMATION == 'Probabilities':
                emotionSet.onyx__hasEmotion.append(
                    Emotion(onyx__hasEmotionCategory=self.wnaffect_mappings[i],
                            onyx__hasEmotionIntensity=float(feature_text[i]) *
                            100))
            elif self._ESTIMATION == 'Classes':
                if feature_text[i] > 0:
                    emotionSet.onyx__hasEmotion.append(
                        Emotion(onyx__hasEmotionCategory=self.
                                wnaffect_mappings[i]))
                    #onyx__hasEmotionIntensity=int(feature_text[i])))

        entry.emotions = [
            emotionSet,
        ]
        response.entries.append(entry)

        return response