void FeatureData::add(FeatureArray& e) { if (exists(e.getIndex())) { // array at position e.getIndex() already exists //enlarge array at position e.getIndex() size_t pos = getIndex(e.getIndex()); m_array.at(pos).merge(e); } else { m_array.push_back(e); setIndex(); } }
void FeatureData::add(FeatureStats& e, const string& sent_idx) { if (exists(sent_idx)) { // array at position e.getIndex() already exists //enlarge array at position e.getIndex() size_t pos = getIndex(sent_idx); // TRACE_ERR("Inserting " << e << " in array " << sent_idx << std::endl); m_array.at(pos).add(e); } else { // TRACE_ERR("Creating a new entry in the array and inserting " << e << std::endl); FeatureArray a; a.NumberOfFeatures(m_num_features); a.Features(m_features); a.setIndex(sent_idx); a.add(e); add(a); } }
void FeatureData::load(istream* is) { FeatureArray entry; while (!is->eof()) { if (!is->good()) { cerr << "ERROR FeatureData::load inFile.good()" << endl; } entry.clear(); entry.load(is); if (entry.size() == 0) break; if (size() == 0) setFeatureMap(entry.Features()); if (entry.hasSparseFeatures()) m_sparse_flag = true; add(entry); } }
void FeatureData::load(istream* is, const SparseVector& sparseWeights) { FeatureArray entry; while (!is->eof()) { if (!is->good()) { cerr << "ERROR FeatureData::load inFile.good()" << endl; } entry.clear(); entry.load(is, sparseWeights); if (entry.size() == 0) break; if (size() == 0) setFeatureMap(entry.Features()); add(entry); } }
void FeatureArray::merge(FeatureArray& e) { //dummy implementation for (size_t i = 0; i < e.size(); i++) add(e.get(i)); }