mirror of
https://github.com/gsi-upm/senpy
synced 2024-11-22 08:12:27 +00:00
parent
1a582c0843
commit
c9e6d78183
@ -6,6 +6,33 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class CentroidConversion(EmotionConversionPlugin):
|
class CentroidConversion(EmotionConversionPlugin):
|
||||||
|
def __init__(self, info):
|
||||||
|
if 'centroids' not in info:
|
||||||
|
raise Error('Centroid conversion plugins should provide '
|
||||||
|
'the centroids in their senpy file')
|
||||||
|
if 'onyx:doesConversion' not in info:
|
||||||
|
if 'centroids_direction' not in info:
|
||||||
|
raise Error('Please, provide centroids direction')
|
||||||
|
|
||||||
|
cf, ct = info['centroids_direction']
|
||||||
|
info['onyx:doesConversion'] = [{
|
||||||
|
'onyx:conversionFrom': cf,
|
||||||
|
'onyx:conversionTo': ct
|
||||||
|
}, {
|
||||||
|
'onyx:conversionFrom': ct,
|
||||||
|
'onyx:conversionTo': cf
|
||||||
|
}]
|
||||||
|
|
||||||
|
if 'aliases' in info:
|
||||||
|
aliases = info['aliases']
|
||||||
|
ncentroids = {}
|
||||||
|
for k1, v1 in info['centroids'].items():
|
||||||
|
nv1 = {}
|
||||||
|
for k2, v2 in v1.items():
|
||||||
|
nv1[aliases.get(k2, k2)] = v2
|
||||||
|
ncentroids[aliases.get(k1, k1)] = nv1
|
||||||
|
info['centroids'] = ncentroids
|
||||||
|
super(CentroidConversion, self).__init__(info)
|
||||||
|
|
||||||
def _forward_conversion(self, original):
|
def _forward_conversion(self, original):
|
||||||
"""Sum the VAD value of all categories found."""
|
"""Sum the VAD value of all categories found."""
|
||||||
@ -25,7 +52,7 @@ class CentroidConversion(EmotionConversionPlugin):
|
|||||||
dimensions = list(self.centroids.values())[0]
|
dimensions = list(self.centroids.values())[0]
|
||||||
|
|
||||||
def distance(e1, e2):
|
def distance(e1, e2):
|
||||||
return sum((e1[k] - e2.get(self.aliases[k], 0)) for k in dimensions)
|
return sum((e1[k] - e2.get(k, 0)) for k in dimensions)
|
||||||
|
|
||||||
emotion = ''
|
emotion = ''
|
||||||
mindistance = 10000000000000000000000.0
|
mindistance = 10000000000000000000000.0
|
||||||
@ -40,11 +67,12 @@ class CentroidConversion(EmotionConversionPlugin):
|
|||||||
def convert(self, emotionSet, fromModel, toModel, params):
|
def convert(self, emotionSet, fromModel, toModel, params):
|
||||||
|
|
||||||
cf, ct = self.centroids_direction
|
cf, ct = self.centroids_direction
|
||||||
logger.debug('{}\n{}\n{}\n{}'.format(emotionSet, fromModel, toModel, params))
|
logger.debug(
|
||||||
|
'{}\n{}\n{}\n{}'.format(emotionSet, fromModel, toModel, params))
|
||||||
e = EmotionSet()
|
e = EmotionSet()
|
||||||
if fromModel == cf:
|
if fromModel == cf and toModel == ct:
|
||||||
e.onyx__hasEmotion.append(self._forward_conversion(emotionSet))
|
e.onyx__hasEmotion.append(self._forward_conversion(emotionSet))
|
||||||
elif fromModel == ct:
|
elif fromModel == ct and toModel == cf:
|
||||||
for i in emotionSet.onyx__hasEmotion:
|
for i in emotionSet.onyx__hasEmotion:
|
||||||
e.onyx__hasEmotion.append(self._backwards_conversion(i))
|
e.onyx__hasEmotion.append(self._backwards_conversion(i))
|
||||||
else:
|
else:
|
||||||
|
39
senpy/plugins/conversion/emotion/ekman2fsre.senpy
Normal file
39
senpy/plugins/conversion/emotion/ekman2fsre.senpy
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
name: Ekman2FSRE
|
||||||
|
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
|
||||||
|
centroids:
|
||||||
|
anger:
|
||||||
|
A: 6.95
|
||||||
|
D: 5.1
|
||||||
|
V: 2.7
|
||||||
|
disgust:
|
||||||
|
A: 5.3
|
||||||
|
D: 8.05
|
||||||
|
V: 2.7
|
||||||
|
fear:
|
||||||
|
A: 6.5
|
||||||
|
D: 3.6
|
||||||
|
V: 3.2
|
||||||
|
happiness:
|
||||||
|
A: 7.22
|
||||||
|
D: 6.28
|
||||||
|
V: 8.6
|
||||||
|
sadness:
|
||||||
|
A: 5.21
|
||||||
|
D: 2.82
|
||||||
|
V: 2.21
|
||||||
|
centroids_direction:
|
||||||
|
- emoml:big6
|
||||||
|
- emoml:fsre-dimensions
|
||||||
|
aliases: # These are aliases for any key in the centroid, to avoid repeating a long name several times
|
||||||
|
A: emoml:arousal
|
||||||
|
V: emoml:valence
|
||||||
|
D: emoml:dominance
|
||||||
|
anger: emoml:big6anger
|
||||||
|
disgust: emoml:big6disgust
|
||||||
|
fear: emoml:big6fear
|
||||||
|
happiness: emoml:big6happiness
|
||||||
|
sadness: emoml:big6sadness
|
@ -1,38 +1,39 @@
|
|||||||
---
|
---
|
||||||
name: Ekman2VAD
|
name: Ekman2PAD
|
||||||
module: senpy.plugins.conversion.centroids
|
module: senpy.plugins.conversion.centroids
|
||||||
description: Plugin to convert emotion sets from Ekman to VAD
|
description: Plugin to convert emotion sets from Ekman to VAD
|
||||||
version: 0.1
|
version: 0.1
|
||||||
onyx:doesConversion:
|
# No need to specify onyx:doesConversion because centroids.py adds it automatically from centroids_direction
|
||||||
- onyx:conversionFrom: emoml:big6
|
|
||||||
onyx:conversionTo: emoml:fsre-dimensions
|
|
||||||
- onyx:conversionFrom: emoml:fsre-dimensions
|
|
||||||
onyx:conversionTo: emoml:big6
|
|
||||||
centroids:
|
centroids:
|
||||||
emoml:big6anger:
|
anger:
|
||||||
A: 6.95
|
A: 6.95
|
||||||
D: 5.1
|
D: 5.1
|
||||||
V: 2.7
|
V: 2.7
|
||||||
emoml:big6disgust:
|
disgust:
|
||||||
A: 5.3
|
A: 5.3
|
||||||
D: 8.05
|
D: 8.05
|
||||||
V: 2.7
|
V: 2.7
|
||||||
emoml:big6fear:
|
fear:
|
||||||
A: 6.5
|
A: 6.5
|
||||||
D: 3.6
|
D: 3.6
|
||||||
V: 3.2
|
V: 3.2
|
||||||
emoml:big6happiness:
|
happiness:
|
||||||
A: 7.22
|
A: 7.22
|
||||||
D: 6.28
|
D: 6.28
|
||||||
V: 8.6
|
V: 8.6
|
||||||
emoml:big6sadness:
|
sadness:
|
||||||
A: 5.21
|
A: 5.21
|
||||||
D: 2.82
|
D: 2.82
|
||||||
V: 2.21
|
V: 2.21
|
||||||
centroids_direction:
|
centroids_direction:
|
||||||
- emoml:big6
|
- emoml:big6
|
||||||
- emoml:fsre-dimensions
|
- emoml:pad
|
||||||
aliases:
|
aliases: # These are aliases for any key in the centroid, to avoid repeating a long name several times
|
||||||
A: emoml:arousal
|
A: emoml:arousal
|
||||||
V: emoml:valence
|
V: emoml:valence
|
||||||
D: emoml:dominance
|
D: emoml:dominance
|
||||||
|
anger: emoml:big6anger
|
||||||
|
disgust: emoml:big6disgust
|
||||||
|
fear: emoml:big6fear
|
||||||
|
happiness: emoml:big6happiness
|
||||||
|
sadness: emoml:big6sadness
|
Loading…
Reference in New Issue
Block a user