/** * Saves features (in the form of a sparse vector) to a file. * * @param vect feature weights to save * @param fileName an output file */ public static void saveFeatureWeights(DenseVector vect, String fileName) throws IOException { BufferedWriter outFile = new BufferedWriter(new FileWriter(new File(fileName))); StringBuffer sb = new StringBuffer(); for (int i = 0; i < vect.size(); ++i) sb.append((i+1) + ":" + vect.get(i) + " "); outFile.write(sb.toString() + System.getProperty("line.separator")); outFile.close(); }
@Override void procResults(String queryID, Map<String, String> docFields, CandidateEntry[] scoredDocs, int numRet, Map<String, DenseVector> docFeats) throws IOException { BufferedWriter featOut = mhOutFiles.get(numRet); if (null == featOut) throw new RuntimeException("Bug, output file is not init. for numRet=" + numRet); for (CandidateEntry e : scoredDocs) { String label = e.mIsRelev ? "1" : "0"; String docId = e.mDocId; DenseVector vect = docFeats.get(docId); StringBuffer sb = new StringBuffer(); sb.append(label + " "); sb.append("qid:" + queryID); for (int fn = 0; fn < vect.size(); ++fn) // Note that feature numbers should start from 1 or else some libraries like RankLib will not work correctly! sb.append(" " + (fn+1) + ":" + vect.get(fn)); featOut.write(sb.toString()); featOut.newLine(); } }
protected DenseVector createPreferenceVector(int tokenSize, double d) { DenseVector biasVector = new DenseVector(tokenSize); double value = 1.0; for (int i = 0; i < biasVector.size(); i++) { biasVector.set(i, value); } return biasVector; }
/** * Computes the cosine. */ private static double getFastCosineRelatednessDense(DenseVector vec1, DenseVector vec2) { double score = 0; if (vec1 != null && vec2 != null) { score = vec1.dot(vec2); double norm1 = 0; double norm2 = 0; for (int i = 0; i < vec1.size(); i++) { double v1 = vec1.get(i); double v2 = vec2.get(i); norm1 += v1 * v1; norm2 += v2 * v2; } norm1 = Math.sqrt(norm1); norm2 = Math.sqrt(norm2); score = score / (norm1 * norm2); } if (Double.isNaN(score)) { score = 0; } return score; }
/** * Computes the cosine. */ private static double getFastCosineRelatednessDense(DenseVector vec1, DenseVector vec2) { double score = 0; if (vec1 != null && vec2 != null) { score = vec1.dot(vec2); double norm1 = 0; double norm2 = 0; for (int i = 0; i < vec1.size(); i++) { double v1 = vec1.get(i); double v2 = vec2.get(i); norm1 += v1 * v1; norm2 += v2 * v2; } norm1 = Math.sqrt(norm1); norm2 = Math.sqrt(norm2); score = score / (norm1 * norm2); } if (Double.isNaN(score)) { score = 0; } return score; }
/** * Computes the cosine. */ private static double getFastCosineRelatednessDense(DenseVector vec1, DenseVector vec2) { double score = 0; if (vec1 != null && vec2 != null) { score = vec1.dot(vec2); double norm1 = 0; double norm2 = 0; for (int i = 0; i < vec1.size(); i++) { double v1 = vec1.get(i); double v2 = vec2.get(i); norm1 += v1 * v1; norm2 += v2 * v2; } norm1 = Math.sqrt(norm1); norm2 = Math.sqrt(norm2); score = score / (norm1 * norm2); } if (Double.isNaN(score)) { score = 0; } return score; }
r.mDocId, r.mScore, knnScore)); DenseVector v = docFeats.get(r.mDocId); for (int i = 0; i < v.size(); ++i) { if (i > 0) System.out.print(" "); System.out.print((i+1) + ":" + v.get(i));
public static DenseVector getColumn(Matrix m, int j) { DenseVector v = new DenseVector(m.numRows()); for (int i = 0; i < v.size(); i++) { v.set(i, m.get(i, j)); } return v; }
public static DenseVector getColumn(Matrix m, int j) { DenseVector v = new DenseVector(m.numRows()); for (int i = 0; i < v.size(); i++) { v.set(i, m.get(i, j)); } return v; }
/** * Adds ranks and scores obtained from a candidate provider. * * @param docFeats all features * @param resultsAll result entries */ private void addScoresAndRanks(Map<String, DenseVector> docFeats, CandidateEntry[] resultsAll) { for (CandidateEntry e: resultsAll) { DenseVector oldVect = docFeats.get(e.mDocId); int oldSize = oldVect.size(); DenseVector newVect = new DenseVector(oldSize + 2); newVect.set(0, e.mOrigRank); newVect.set(1, e.mOrigScore); for (int vi = 0; vi < oldSize; ++vi) newVect.set(vi + 2, oldVect.get(vi)); docFeats.replace(e.mDocId, newVect); } }
return new SparseVector(dv.size(), outIndex, outData, false);
return new SparseVector(dv.size(), outIndex, outData, false);
return new SparseVector(dv.size(), outIndex, outData, false);
mean = new DenseVector(groupMean[0].size()); for (int i = 0; i < c; i++) { if (observations[i].length > 0) {
mean = new DenseVector(groupMean[0].size()); for (int i = 0; i < c; i++) { if (observations[i].length > 0) {