bool loadCallback(LoadClassifier::Request &req, LoadClassifier::Response &res ) { string id = req.identifier; Classifier *c; if(!createHelper(req.class_type, c)){ res.success = false; return false; } if(!c->load(req.filename)){ res.success = false; return false; } if(classifier_list.find(id) != classifier_list.end()){ cout << "WARNING: ID already exists, overwriting: " << req.identifier << endl; delete classifier_list[id]; } classifier_list[id] = c; res.success = true; return true; }
void EmoDetector::init(std::vector<std::string>& classifier_paths) { map<string, pair<vector<Emotion>, Classifier*> > classifiers; for(size_t i = 0; i < classifier_paths.size(); i++) { string clpath = classifier_paths[i]; Classifier* cvD = this->createClassifier(); cvD->load(clpath); string fname = matrix_io_fileBaseName(clpath); // std::cout<<"the file locations starts at: "<<std::endl; Emotion emo = UNKNOWN; vector<string> emotions_list = split_string(fname, "_"); vector<Emotion> fin_emo_list; fin_emo_list.reserve(emotions_list.size()); string label = ""; for(vector<string>::iterator it = emotions_list.begin(); it != emotions_list.end(); ++it) { emo = UNKNOWN; if (*it == "vs") { break; } else if (*it == emotionStrings(NEUTRAL)) { emo = NEUTRAL; } else if (*it == emotionStrings(ANGER)) { emo = ANGER; } else if (*it == emotionStrings(CONTEMPT)) { emo = CONTEMPT; } else if (*it == emotionStrings(DISGUST)) { emo = DISGUST; } else if (*it == emotionStrings(FEAR)) { emo = FEAR; } else if (*it == emotionStrings(HAPPY)) { emo = HAPPY; } else if (*it == emotionStrings(SADNESS)) { emo = SADNESS; } else if (*it == emotionStrings(SURPRISE)) { emo = SURPRISE; } if(emo != UNKNOWN) { if(label.size() > 0) { label.append("_"); } label.append(emotionStrings(emo)); fin_emo_list.push_back(emo); } } pair<vector<Emotion>, Classifier*> value(fin_emo_list, cvD); pair<string, pair<vector<Emotion>, Classifier*> > entry(label, value); classifiers.insert(entry); } init(classifiers); }