package com.tlabs.speechalyzer.emotions;
import java.util.StringTokenizer;
import org.jdom.Attribute;
import org.jdom.Element;
import org.jdom.Namespace;
import com.felix.util.KeyValues;
/**
* An Emotion is an assertion on a certain emotional condition, its got a name,
* a value and an originator, e.g. anger, 0.5, SVM algorithm based on training
* xy
*
* @author burkhardt.felix
*
*/
public class Emotion {
public static final String INFO_SEPARATOR = ";";
public static final String TYPE_CATEGORY = "category";
public static final String TYPE_DIMENSION = "dimension";
public static final String TYPE_APPRAISAL = "appraisal";
public static final String TYPE_ACTION_TENDENCY = "action-tendency";
public static final String EMOTIONML_ELEM_VOCABULARY = "vocabulary";
public static final String EMOTIONML_ELEM_ITEM = "item";
public static final String EMOTIONML_ELEM_ROOT = "emotionml";
public static final String EMOTIONML_ELEM_EMOTION = "emotion";
public static final String EMOTIONML_ELEM_CAT = "category";
public static final String EMOTIONML_ELEM_APPRAISAL = "appraisal";
public static final String EMOTIONML_ELEM_DIMENSION = "dimension";
public static final String EMOTIONML_ELEM_ACTIONTENDENCY = "action-tendency";
public static final String EMOTIONML_ELEM_INFO = "info";
public static final String EMOTIONML_ELEM_REFERENCE = "reference";
public static final String EMOTIONML_ATT_VERSION = "version";
public static final String EMOTIONML_ATT_VALUE = "value";
public static final String EMOTIONML_ATT_CONFIDENCE = "confidence";
public static final String EMOTIONML_ATT_URI = "uri";
public static final String EMOTIONML_ATT_TYPE = "type";
public static final String EMOTIONML_ATT_ID = "id";
public static final String EMOTIONML_ATT_CATEGORYSET = "category-set";
public static final String EMOTIONML_ATT_DIMENSIONSET = "dimension-set";
public static final String EMOTIONML_ATT_APPRAISALSET = "appraisal-set";
public static final String EMOTIONML_ATT_ACTIONTENDENCYSET = "action-tendency-set";
public static final String EMOTIONML_ATT_ROLE = "role";
public static final String EMOTIONML_ATT_NAME = "name";
public static final String EMOTIONML_VALUE_EXPRESSEDBY = "expressedBy";
public final static Namespace EMOTIONML_NAMESPACE = Namespace
.getNamespace("http://www.w3.org/2009/10/emotionml");
String _name;
String _originator;
String _type;
String _id;
String _vocabId;
String _value;
String _confidence;
double _valueDouble;
double _confidenceDouble;
KeyValues _config;
public static Element getRoot() {
return new Element(EMOTIONML_ELEM_ROOT, EMOTIONML_NAMESPACE);
}
public static Element getEmotion() {
return new Element(EMOTIONML_ELEM_EMOTION, EMOTIONML_NAMESPACE);
}
public static Element getCategory() {
return new Element(EMOTIONML_ELEM_CAT, EMOTIONML_NAMESPACE);
}
public static Element getDimension() {
return new Element(EMOTIONML_ELEM_DIMENSION, EMOTIONML_NAMESPACE);
}
public static Element getAppraisal() {
return new Element(EMOTIONML_ELEM_APPRAISAL, EMOTIONML_NAMESPACE);
}
public static Element getActionTendemcy() {
return new Element(EMOTIONML_ELEM_ACTIONTENDENCY, EMOTIONML_NAMESPACE);
}
public static Element getInfo() {
return new Element(EMOTIONML_ELEM_INFO, EMOTIONML_NAMESPACE);
}
public static Element getExpressedByReference() {
Element elem = new Element(EMOTIONML_ELEM_REFERENCE,
EMOTIONML_NAMESPACE);
elem.setAttribute(new Attribute(EMOTIONML_ATT_ROLE,
EMOTIONML_VALUE_EXPRESSEDBY));
return elem;
}
public Emotion(KeyValues config, String name, String type, String value,
String originator, String confidence, String vocabId) {
super();
_config = config;
this._name = name;
this._type = type;
this._value = value;
this._valueDouble = Double.parseDouble(value);
this._confidence = confidence;
this._confidenceDouble = Double.parseDouble(_confidence);
_originator = originator;
_vocabId = vocabId;
}
public static Emotion parseEmotion(KeyValues config, String emoDescriptor) {
KeyValues labels = new KeyValues(emoDescriptor, ",", "=");
return new Emotion(config, labels.getString(config
.getString("emotion.label.cat")), labels.getString(config
.getString("emotion.label.type")), labels.getString(config
.getString("emotion.label.val")), labels.getString(config
.getString("emotion.label.orig")), labels.getString(config
.getString("emotion.label.conf")), labels.getString(config
.getString("emotion.label.vocabId")));
}
public String get_originator() {
return _originator;
}
public void set_originator(String _originator) {
this._originator = _originator;
}
public String get_type() {
return _type;
}
public void set_type(String _type) {
this._type = _type;
}
public String get_name() {
return _name;
}
public String get_vocabId() {
return _vocabId;
}
public void set_vocabId(String _vocabId) {
this._vocabId = _vocabId;
}
public String toString() {
return _config.getString("emotion.label.val") + "=" + _value + ","
+ _config.getString("emotion.label.cat") + "=" + _name + ","
+ _config.getString("emotion.label.orig") + "=" + _originator
+ "," + _config.getString("emotion.label.type") + "=" + _type
+ "," + _config.getString("emotion.label.conf") + "="
+ _confidence + ","
+ _config.getString("emotion.label.vocabId") +"="+ _vocabId + ";";
}
public boolean isCategory() {
if (_type.compareTo(TYPE_CATEGORY) == 0)
return true;
return false;
}
public boolean isDimension() {
if (_type.compareTo(TYPE_DIMENSION) == 0)
return true;
return false;
}
public boolean isAppraisal() {
if (_type.compareTo(TYPE_APPRAISAL) == 0)
return true;
return false;
}
public boolean isActionTendency() {
if (_type.compareTo(TYPE_ACTION_TENDENCY) == 0)
return true;
return false;
}
public void set_name(String _name) {
this._name = _name;
}
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String get_value() {
return _value;
}
public void set_value(String _value) {
this._value = _value;
this._valueDouble = Double.parseDouble(_value);
}
public void setValueAsDouble(double newVal) {
_valueDouble = newVal;
_value = String.valueOf(newVal);
}
public double getValueAsDouble() {
return _valueDouble;
}
public String get_confidence() {
return _confidence;
}
public void set_confidence(String confidence) {
this._confidence = confidence;
this._confidenceDouble = Double.parseDouble(_confidence);
}
public void setConfidenceAsDouble(double newConfidence) {
_confidenceDouble = newConfidence;
_confidence = String.valueOf(newConfidence);
}
public double getConfidenceAsDouble() {
return _confidenceDouble;
}
}