// Organizing the cache of an output void load_output (LaFVector nbeta, int nl, SVector & rtoi) { beta = nbeta; l = nl; for (int r = 0; r < l; r++) larank_kcache_swap_ri (kernel, r, (int) rtoi.get (r)); }
void readDocs(const char *fname, docs_t &docs, bool freezedico=false) { cerr << "# Reading " << fname << endl; igzstream f; f.open(fname); if (! f.good()) { cerr << "ERROR: cannot open file " << fname << endl; ::exit(10); } string token; f >> token; if (token != ".I") { cerr << "ERROR: Cannot read initial .I in " << fname << endl; ::exit(10); } int id = 0; int count = 0; while(f.good()) { f >> id >> token; count += 1; if (! f.good() || token != ".W") { cerr << "ERROR (" << id << "): " << "Cannot read \"<id> .W\"." << endl; ::exit(10); } int wid = -1; string otoken; SVector s; for(;;) { f >> token; if (!f.good() || token == ".I") break; if (token != otoken) { dico_t::iterator it = dico.find(token); if (it != dico.end()) wid = it->second; else if (freezedico) continue; else { wid = dico.size() + 1; dico[token] = wid; } otoken = token; } s.set(wid, s.get(wid)+1.0); } if (s.npairs() <= 0) { cerr << "ERROR (" << id << "): " << "Empty vector " << id << "?" << endl; ::exit(10); } docs[id] = s; } if (!f.eof()) { cerr << "ERROR (" << id << "): " << "Failed reading words" << endl; ::exit(10); } cerr << "# Done reading " << count << " documents." << endl; }