mirror of
https://github.com/gsi-upm/senpy
synced 2024-11-22 00:02:28 +00:00
Merge remote-tracking branch 'drevicko/patch-6'
This commit is contained in:
commit
bf5ed1bd7d
@ -44,16 +44,32 @@ class CentroidConversion(EmotionConversionPlugin):
|
||||
self.neutralPoints[i] = self.get("neutralValue", 0)
|
||||
|
||||
def _forward_conversion(self, original):
|
||||
"""Sum the VAD value of all categories found."""
|
||||
"""Sum the VAD value of all categories found weighted by intensity.
|
||||
Intensities are scaled by onyx:maxIntensityValue if it is present, else maxIntensityValue is assumed to be one.
|
||||
Emotion entries that do not have onxy:hasEmotionIntensity specified are assumed to have maxIntensityValue.
|
||||
Emotion entries that do not have onyx:hasEmotionCategory specified are ignored."""
|
||||
res = Emotion()
|
||||
maxIntensity = float(original.get("onyx__maxIntensityValue",1))
|
||||
neutralPoint = self.get("origin",None)
|
||||
for e in original.onyx__hasEmotion:
|
||||
category = e.onyx__hasEmotionCategory
|
||||
if category in self.centroids:
|
||||
for dim, value in self.centroids[category].items():
|
||||
category = e.get("onyx__hasEmotionCategory", None)
|
||||
if category is None:
|
||||
continue
|
||||
intensity = e.get("onyx__hasEmotionIntensity",maxIntensity)/maxIntensity
|
||||
if intensity == 0:
|
||||
continue
|
||||
centoid = self.centroids.get(category,None)
|
||||
if centroid:
|
||||
for dim, value in centroid.items():
|
||||
if neutralPoint:
|
||||
value -= neutralPoint[dim]
|
||||
try:
|
||||
res[dim] += value
|
||||
except Exception:
|
||||
res[dim] = value
|
||||
res[dim] += value * intensity
|
||||
except KeyError:
|
||||
res[dim] = value * intensity
|
||||
if neutralPoint:
|
||||
for dim in res:
|
||||
res[dim] += neutralPoint[dim]
|
||||
return res
|
||||
|
||||
def _backwards_conversion(self, original):
|
||||
|
@ -4,6 +4,11 @@ module: senpy.plugins.conversion.centroids
|
||||
description: Plugin to convert emotion sets from Ekman to VAD
|
||||
version: 0.1
|
||||
# No need to specify onyx:doesConversion because centroids.py adds it automatically from centroids_direction
|
||||
origin:
|
||||
# Point in VAD space with no emotion (aka Neutral)
|
||||
A: 5.0
|
||||
D: 5.0
|
||||
V: 5.0
|
||||
centroids:
|
||||
anger:
|
||||
A: 6.95
|
||||
|
Loading…
Reference in New Issue
Block a user