diff --git a/affect/README.md b/affect/README.md new file mode 100644 index 0000000..ef18422 --- /dev/null +++ b/affect/README.md @@ -0,0 +1,10 @@ +# Senpy Plugin for Sentiment and Emotion + +This plugin allows to choose sentiment and emotion plugins to retrieve a response with the total sentiment and emotion analysis. + +You can adjust the parameters of the plugin as follows: + + - Sentiments plugins: EmoTextANEW, EmoTextWAF(only english) + - Emotions plugins: sentiText, vaderSentiment,meaningCloud(requires API KEY) + - Endpoint: the endpoint where the used plugins are. (default: http://senpy.cluster.gsi.dit.upm.es/api/) + - Language: english(en) or spanish(es) diff --git a/affect/sentiEmotions.py b/affect/sentiEmotions.py new file mode 100644 index 0000000..5fe3a44 --- /dev/null +++ b/affect/sentiEmotions.py @@ -0,0 +1,48 @@ +import time +import requests +import json +import string +import os +import json +import logging +from os import path +import time +from senpy.plugins import SentimentPlugin, SenpyPlugin +from senpy.models import Results, Entry, Sentiment + +logger = logging.getLogger(__name__) + +class unifiedPlugin(SentimentPlugin): + + def activate(self, *args, **kwargs): + pass + + + def deactivate(self, *args, **kwargs): + self.close() + + + def analyse(self, **params): + + txt = params["input"] + endpoint = params["endpoint"] + lang = params.get("language") + + if params["emotions-plugin"] == 'EmoTextWAF': + lang = 'en' + sentiplug = params["sentiments-plugin"] + s_params = {'algo':sentiplug,'language':lang,'i':txt.encode('utf-8')} + senti_response = Results(requests.get(endpoint, params=s_params).json()) + emoplug = params["emotions-plugin"] + e_params = {'algo':emoplug,'language':lang,'i':txt.encode('utf-8')} + emo_response = Results(requests.get(endpoint, params=e_params).json()) + + + #Senpy Response + response = Results() + response.analysis = [senti_response.analysis, emo_response.analysis] + unified = senti_response.entries[0] + unified["emotions"] = emo_response.entries[0]["emotions"] + response.entries.append(unified) + + return response \ No newline at end of file diff --git a/affect/sentiEmotions.senpy b/affect/sentiEmotions.senpy new file mode 100644 index 0000000..17c798a --- /dev/null +++ b/affect/sentiEmotions.senpy @@ -0,0 +1,36 @@ +{ + "name": "affect", + "module": "sentiEmotions", + "description": "Sentiment Analysis and Emotion Recognition", + "author": "GSI UPM", + "version": "0.1", + "extra_params": { + "language": { + "aliases": ["language", "l"], + "required": true, + "options": ["en","es"], + "default": "en" + }, + "sentiments-plugin": { + "aliases": ["sentiplug"], + "required": true, + "options": ["meaningCloud","sentiText","vaderSentiment"], + "default": "sentiText" + }, + "emotions-plugin": { + "aliases": ["emoplug"], + "required": true, + "options": ["EmoTextWAF","EmoTextANEW"], + "default": "EmoTextANEW" + }, + "endpoint": { + "aliases": ["endpoint"], + "required": true, + "options": ["http://senpy.cluster.gsi.dit.upm.es/api/"], + "default": "http://senpy.cluster.gsi.dit.upm.es/api/" + } + + + }, + "requirements": {}, +}