Jste zde

EmotionML: jazyk stavící na XML a popisující emoce

Zatímco ve filmech se se stroji vyjadřujícími emoce setkáváme zcela běžně, v realitě bude nejprve potřeba nějak je naučit, jak lidské emoce chápat a přirozeně i to, jak s nimi nakládat. A právě zde by měl přijít k užitku jazyk Emotion Markup Language.

Jistě nikdo dnes již nepochybuje o tom, že porozumění lidským emocím ze strany strojů bude pro příští generace inteligentní techniky a robotů naprosto klíčovou otázkou. Aby například robot mohl správně reagovat na netrpělivého či zmateného až vystrašeného zákazníka, musí se naučit tyto jeho emoce správně pochopit, popsat a poměřovat.

EmotionML by se však neměl omezovat pouze na sféru robotiky a inteligentních strojů, dle tvůrců půjde prý i o výborný nástroj k programování emocionálních postav v počítačových hrách a dalších virtuálních světech, jako další příklad typického využití je uveden automatický senzor sledující spokojenost zákazníků apod. EmotionML je ve své nejhlubší podstatě podtřídou XML podobně jako třeba HTML, takže jeho syntax i sémantika není problémem.

S lidskými emocemi a přesným vyjadřováním je ale situace vůbec trochu na štíru – dokonce i psychologové se dodnes hádají, kolik emocí vlastně je a jaké jsou jejich nejjemnější nuance a přesahy. Tvůrci si byli tohoto faktu vědomi, takže zkrátka navrhli strukturu, nacpali dovnitř vše, co mohli (základní emoce typu strach, zábava, zaujatost, ...) a je na konkrétní osobě/programátorovi AI vybrat si vždy jen to, co jej právě zajímá – nakonec, při programování HTML stránek se také nepoužívají vždy právě všechny TAGy, že ano...

Celá problematika okolo vyjadřování emocí je nesmírně složitá, takže vážným zájemcům o tuto sféru robotiky (a nejen té) doporučujeme důkladně prostudovat zdroj a všechny jeho odkazy. A blížíme se k tomu nejdůležitějšímu – jak vlastně vypadá podobný kód v praxi? Přibližně nějak takto:

<emotionml xmlns="http://www.w3.org/2009/10/emotionml"
  xmlns:meta="http://www.example.com/metadata">
  <info>
  <meta:name>robbie the robot example</meta:name>
  </info>

 

    <!-- Robot's current global state configuration: negative, active,
powerless -->
<emotion dimension-set="http://www.example.com/emotion/dimension/PAD.xml">
<dimension name="pleasure" value="0.2"/>
<dimension name="arousal" value="0.8"/>
<dimension name="dominance" value="0.3"/>
</emotion>

    <!-- Robot's action tendencies: want to recharge -->
<emotion action-tendency-set="http://www.example.com/custom/action/robot.xml">
<action-tendency name="charge-battery" value="0.9"/>
<action-tendency name="seek-shelter" value="0.7"/>
<action-tendency name="pickup-boxes" value="0.1"/>
</emotion>

    <!-- Appraised value of incoming event: obstacle detected,
appraised as novel and unpleasant -->
<emotion appraisal-set="http://www.example.com/emotion/appraisal/scherer.xml"
modality="laser-scanner">
<appraisal name="novelty" value="0.8" confidence="0.4"/>
<appraisal name="intrinsic-pleasantness" value="0.2" confidence="0.8"/>
<reference role="triggeredBy" uri="file:scannerdata.xml#obstacle27"/>
</emotion>

    <!-- Robot's planned facial gestures: will frown -->
<emotion category-set="http://www.example.com/custom/robot-emotions.xml"
modality="face">
<category name="frustration"/>
<reference role="expressedBy" uri="file:behavior-repository.xml#frown"/>
</emotion>
</emotionml>