mirror of
https://github.com/gsi-upm/senpy
synced 2024-11-22 16:12:29 +00:00
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from vaderSentiment import sentiment
|
|
from senpy.plugins import SentimentPlugin, SenpyPlugin
|
|
from senpy.models import Results, Sentiment, Entry
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class vaderSentimentPlugin(SentimentPlugin):
|
|
|
|
def analyse_entry(self,entry,params):
|
|
|
|
logger.debug("Analysing with params {}".format(params))
|
|
|
|
text_input = entry.get("text", None)
|
|
aggregate = params['aggregate']
|
|
|
|
score = sentiment(text_input)
|
|
|
|
opinion0 = Sentiment(id= "Opinion_positive",
|
|
marl__hasPolarity= "marl:Positive",
|
|
marl__algorithmConfidence= score['pos']
|
|
)
|
|
opinion1 = Sentiment(id= "Opinion_negative",
|
|
marl__hasPolarity= "marl:Negative",
|
|
marl__algorithmConfidence= score['neg']
|
|
)
|
|
opinion2 = Sentiment(id= "Opinion_neutral",
|
|
marl__hasPolarity = "marl:Neutral",
|
|
marl__algorithmConfidence = score['neu']
|
|
)
|
|
|
|
if aggregate == 'true':
|
|
res = None
|
|
confident = max(score['neg'],score['neu'],score['pos'])
|
|
if opinion0.marl__algorithmConfidence == confident:
|
|
res = opinion0
|
|
elif opinion1.marl__algorithmConfidence == confident:
|
|
res = opinion1
|
|
elif opinion2.marl__algorithmConfidence == confident:
|
|
res = opinion2
|
|
entry.sentiments.append(res)
|
|
else:
|
|
entry.sentiments.append(opinion0)
|
|
entry.sentiments.append(opinion1)
|
|
entry.sentiments.append(opinion2)
|
|
|
|
yield entry
|