|
from transformers import pipeline |
|
|
|
classifier = pipeline("text-classification", |
|
model='bhadresh-savani/distilbert-base-uncased-emotion', |
|
return_all_scores=True) |
|
|
|
|
|
def get_emotion(text='No text yet'): |
|
prediction = classifier(text)[0] |
|
result = sorted(prediction, key=lambda x: x['score'])[::-1] |
|
return result |
|
|
|
|
|
sentiment_map = {'anger': 'neg', 'sadness': 'neg', 'fear': 'neg', |
|
'joy': 'pos', 'love': 'pos', 'surprise': 'pos'} |
|
good_arcs = ['neg - pos', 'pos - neg'] |
|
great_arcs = ['pos - neg - pos', 'neg - pos - neg'] |
|
|
|
|
|
def get_sentiment_arc_evaluation(emotions): |
|
sentiment_arc = [] |
|
for emo in emotions: |
|
sentiment = sentiment_map[emo] |
|
if sentiment_arc and sentiment_arc[-1] == sentiment: |
|
continue |
|
sentiment_arc.append(sentiment) |
|
sentiment_arc_str = ' - '.join(sentiment_arc) |
|
if sentiment_arc_str in great_arcs: |
|
return 'What a great plot! Excellent! π' |
|
elif sentiment_arc_str in good_arcs: |
|
return 'Story plot seems nice! But you can do better. π' |
|
elif len(sentiment_arc) < 2: |
|
return "No judgment, but... The plot might be too simple! π€" |
|
else: |
|
return "The plot seems complicated. π€ But maybe I am just too stupid to understand!" |
|
|
|
|