def test_results(self): r = Results() e = Entry() e.nif__isString = "Results test" r.entries.append(e) r.id = ":test_results" r.validate()
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()
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( "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
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
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 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