mirror of
https://github.com/gsi-upm/senpy
synced 2024-11-25 01:22:28 +00:00
46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
|
import requests
|
||
|
import json
|
||
|
|
||
|
from senpy.plugins import SentimentPlugin
|
||
|
from senpy.models import Response, Opinion, Entry
|
||
|
|
||
|
|
||
|
class Sentiment140Plugin(SentimentPlugin):
|
||
|
EXTRA_PARAMS = {
|
||
|
"language": {"aliases": ["language", "l"],
|
||
|
"required": False,
|
||
|
"options": ["es", "en", "auto"],
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def __init__(self, **kwargs):
|
||
|
super(Sentiment140Plugin, self).__init__(name="sentiment140",
|
||
|
version="2.0",
|
||
|
extraparams=self.EXTRA_PARAMS,
|
||
|
**kwargs)
|
||
|
|
||
|
def analyse(self, **params):
|
||
|
lang = params.get("language", "auto")
|
||
|
res = requests.post("http://www.sentiment140.com/api/bulkClassifyJson",
|
||
|
json.dumps({"language": lang,
|
||
|
"data": [{"text": params["input"]}]
|
||
|
}
|
||
|
)
|
||
|
)
|
||
|
|
||
|
response = Response()
|
||
|
polarity_value = int(res.json()["data"][0]["polarity"]) * 25
|
||
|
polarity = "marl:Neutral"
|
||
|
if polarity_value > 50:
|
||
|
polarity = "marl:Positive"
|
||
|
elif polarity_value < 50:
|
||
|
polarity = "marl:Negative"
|
||
|
entry = Entry(text=params["input"])
|
||
|
opinion = Opinion(polarity=polarity, polarity_value=polarity_value)
|
||
|
entry.opinions.append(opinion)
|
||
|
entry.language = lang
|
||
|
response.entries.append(entry)
|
||
|
return response
|
||
|
|
||
|
plugin = Sentiment140Plugin()
|