mirror of
https://github.com/gsi-upm/senpy
synced 2024-11-13 04:02:29 +00:00
Fixed sentiment-basic plugin that only retrieved Neutral sentiment. This closes senpy/senpy-plugins-community#6. Also added nltk download for some plugins.
This commit is contained in:
parent
85db4db01d
commit
e341cc82fa
@ -1,15 +1,9 @@
|
||||
from gsiupm/senpy:0.6.1-python2.7
|
||||
from gsiupm/senpy:0.8.7-python2.7
|
||||
|
||||
RUN mkdir -p /senpy-plugins
|
||||
RUN pip install nltk
|
||||
RUN python -m nltk.downloader stopwords
|
||||
RUN python -m nltk.downloader punkt
|
||||
RUN python -m nltk.downloader maxent_treebank_pos_tagger
|
||||
RUN python -m nltk.downloader wordnet
|
||||
|
||||
RUN pip install pytest
|
||||
RUN pip install mock
|
||||
ADD . /senpy-plugins
|
||||
RUN senpy -f /senpy-plugins --only-install
|
||||
|
||||
WORKDIR /senpy-plugins/
|
||||
|
@ -9,7 +9,6 @@ import string
|
||||
import xml.etree.ElementTree as ET
|
||||
from nltk.corpus import stopwords
|
||||
from nltk.corpus import WordNetCorpusReader
|
||||
|
||||
from emotion import Emotion as Emo
|
||||
from pattern.en import parse
|
||||
from senpy.plugins import EmotionPlugin, SenpyPlugin, ShelfMixin
|
||||
@ -51,6 +50,8 @@ class EmotionTextPlugin(EmotionPlugin, ShelfMixin):
|
||||
Emo.emotions[name] = Emo(name, elem.get("isa"))
|
||||
|
||||
def activate(self, *args, **kwargs):
|
||||
|
||||
nltk.download('stopwords')
|
||||
self._stopwords = stopwords.words('english')
|
||||
#local_path=os.path.dirname(os.path.abspath(__file__))
|
||||
self._categories = {'anger': ['general-dislike',],
|
||||
@ -81,8 +82,6 @@ class EmotionTextPlugin(EmotionPlugin, ShelfMixin):
|
||||
|
||||
self._wn16 = self.sh['wn16']
|
||||
|
||||
|
||||
|
||||
def deactivate(self, *args, **kwargs):
|
||||
self.save()
|
||||
|
||||
|
@ -30,6 +30,7 @@ class SentiTextPlugin(SentimentPlugin):
|
||||
return tagger
|
||||
|
||||
def activate(self, *args, **kwargs):
|
||||
nltk.download(['punkt','wordnet'])
|
||||
self._swn = self._load_swn()
|
||||
self._pos_tagger = self._load_pos_tagger()
|
||||
|
||||
@ -69,7 +70,6 @@ class SentiTextPlugin(SentimentPlugin):
|
||||
|
||||
|
||||
def analyse_entry(self, entry, params):
|
||||
|
||||
language = params.get("language")
|
||||
text = entry.get("text", None)
|
||||
tokens = self._tokenize(text)
|
||||
@ -82,7 +82,6 @@ class SentiTextPlugin(SentimentPlugin):
|
||||
if len(lemmas) == 0:
|
||||
continue
|
||||
tokens[i]['lemmas'][w[0]] = lemmas
|
||||
|
||||
if language == "en":
|
||||
trans = TextBlob(unicode(text))
|
||||
else:
|
||||
@ -96,11 +95,10 @@ class SentiTextPlugin(SentimentPlugin):
|
||||
continue
|
||||
eq_synset = self._compare_synsets(synsets, tokens, s_i)
|
||||
useful_synsets[s_i][t_w] = eq_synset
|
||||
|
||||
scores = {}
|
||||
for i in tokens:
|
||||
scores[i] = {}
|
||||
if useful_synsets is None:
|
||||
if useful_synsets != None:
|
||||
for word in useful_synsets[i]:
|
||||
if useful_synsets[i][word] is None:
|
||||
continue
|
||||
@ -116,9 +114,7 @@ class SentiTextPlugin(SentimentPlugin):
|
||||
score['score'] = f_score
|
||||
scores[i][word] = score
|
||||
break
|
||||
|
||||
p = params.get("prefix", None)
|
||||
|
||||
for i in scores:
|
||||
n_pos = 0.0
|
||||
n_neg = 0.0
|
||||
@ -127,7 +123,6 @@ class SentiTextPlugin(SentimentPlugin):
|
||||
n_pos += 1.0
|
||||
elif scores[i][w]['score'] == 'neg':
|
||||
n_neg += 1.0
|
||||
|
||||
inter = interp1d([-1.0, 1.0], [0.0, 1.0])
|
||||
try:
|
||||
g_score = (n_pos - n_neg) / (n_pos + n_neg)
|
||||
@ -135,7 +130,6 @@ class SentiTextPlugin(SentimentPlugin):
|
||||
except:
|
||||
if n_pos == 0 and n_neg == 0:
|
||||
g_score = 0.5
|
||||
|
||||
polarity = 'marl:Neutral'
|
||||
if g_score > 0.5:
|
||||
polarity = 'marl:Positive'
|
||||
@ -149,4 +143,4 @@ class SentiTextPlugin(SentimentPlugin):
|
||||
|
||||
entry.sentiments.append(opinion)
|
||||
|
||||
yield entry
|
||||
yield entry
|
||||
|
Loading…
Reference in New Issue
Block a user