public static SparseIntArray histogram(int[] vector, int W) { final SparseIntArray hist = new SparseIntArray(W); for (int i : vector) { hist.inc(i); } return hist; }
@Override public void multiply(double n) { for (Map.Entry<Integer, Integer> e : entrySet()) { e.setValue((int) (e.getValue() * n)); } defaultValue *= n; }
@Override public Vector<Integer> make(double[] data) { final SparseIntArray arr = new SparseIntArray(data.length); for (int i = 0; i < data.length; i++) { if (data[i] != 0.0) { arr.put(i, data[i]); } } return arr; }
public void clean(PrintWriter out, int[][] map) { final int L = 2; for (int j = 0; j < x.length; j++) { if (x[j][0].isEmpty() || x[j][1].isEmpty()) { continue; } for (int l = 0; l < L; l++) { for (Map.Entry<Integer, Integer> e : x[j][l].entrySet()) { for (int i = 0; i < e.getValue(); i++) { out.print(map[e.getKey()][l] + " "); } } out.println(); } } out.println(); }
N++; double cosSim = calcCosSim(termVec, j, kldSum); final int sum = x[j][1].sum(); if (sum == 0) { continue; if ((cosSim > bestSim && (ties = 0) == 0) || (cosSim == bestSim && random.nextInt(++ties) == 0)) { final double[] s = x[j][1].toDoubleArray(); if (s.length < sim.length) { Arrays.fill(sim, 0.0); for (int w : x[j][1].keySet()) { sim[w] += cosSim * x[j][1].get(w) / sum;
for (int j = 0; j < x.length; j++) { N++; final int sum = x[j][0].sum(); final int sum_f = x[j][1].sum(); if (sum == 0 && sum_f == 0) { continue; for (int w : x[j][0].keySet()) { mu.add(w, ((double) x[j][0].get(w)) / sum); for (int w : x[j][1].keySet()) { final double fw = (double) x[j][1].get(w); mu_f.add(w, fw / sum_f);
if (defaultValue == 0) { double innerProduct = 0; for (Map.Entry<Integer, Integer> e : entrySet()) { innerProduct += y2[e.getKey()] * e.getValue(); double innerProduct = 0; for (int i = 0; i < n; i++) { innerProduct += y2[i] * get(i); if (defaultValue == 0) { int innerProduct = 0; for (Map.Entry<Integer, Integer> e : entrySet()) { innerProduct += e.getValue() * y2[e.getKey()]; int innerProduct = 0; for (int i = 0; i < n; i++) { innerProduct += y2[i] * get(i); if (defaultValue == 0 || y.defaultValue().intValue() == 0) { int innerProduct = 0; if (this.size() <= y.size()) { for (Map.Entry<Integer, Integer> e : entrySet()) { innerProduct += e.getValue() * y.intValue(e.getKey()); int innerProduct = 0; int notBothSparse = 0; for (Map.Entry<Integer, Integer> e : entrySet()) { innerProduct += e.getValue() * y.intValue(e.getKey()); notBothSparse++;
public double[] calculateSalience(Vector<Integer> termVec, int l) { double[] salience = new double[J]; for (int j = 0; j < J; j++) { final double xDocLength = x[j][l].sum().doubleValue(); for (int w : x[j][l].keySet()) { if (ctTotal[l][w] != 0) { salience[j] += termVec.doubleValue(w) * x[j][l].doubleValue(w) / ctTotal[l][w]; } } if (xDocLength != 0.0) { salience[j] /= xDocLength; } } // print(topKwords(salience, 10)); return salience; } //
public static Vector<Integer> filter(final IntSet salients, final Vector<Integer> source) { final SparseIntArray filtered = new SparseIntArray(source.length()); for (int i : salients) { filtered.add(i, source.value(i)); } return filtered; }
public int[][] prepClean() { final int L = 2; boolean[][] used = new boolean[W][L]; int[][] map = new int[W][L]; int[] cts = new int[L]; for (int j = 0; j < x.length; j++) { for (int l = 0; l < L; l++) { for (int w : x[j][l].keySet()) { if (!used[w][l]) { used[w][l] = true; map[w][l] = cts[l]++; } } } } System.err.println("Cts: " + Arrays.toString(cts)); return map; }
@Override public Vector<Integer> subvector(int offset, int length) { final SparseIntArray sv = new SparseIntArray(n); final ObjectIterator<Entry> iter = int2IntEntrySet().fastIterator(); while(iter.hasNext()) { final Entry e = iter.next(); if(e.getIntKey() >= offset && e.getIntKey() < offset + length) { sv.put(e.getIntKey(), e.getIntValue()); } } return sv; }
@Override public SparseIntArray clone() { return new SparseIntArray(n, defaultValue, this); }
/** * Decrement an index */ public void dec(int idx) { add(idx, -1); }
public static SparseIntArray fromBinary(File file, int W) throws IOException { return fromBinary(new FileInputStream(file), W); }
@Override public Integer value(int idx) { return get(idx); }
public void clean(PrintWriter out, int[][] map) { final int L = 2; for (int j = 0; j < x.length; j++) { if (x[j][0].isEmpty() || x[j][1].isEmpty()) { continue; } for (int l = 0; l < L; l++) { for (Map.Entry<Integer, Integer> e : x[j][l].entrySet()) { for (int i = 0; i < e.getValue(); i++) { out.print(map[e.getKey()][l] + " "); } } out.println(); } } out.println(); }
@Override public Vector<Double> simVecSource(Vector<Integer> termVec) { final double[] predicted = new double[W]; final double[] salience = calculateSalience(termVec, 0); for(int j = 0; j < J; j++) { for(int w : x[j][1].keySet()) { if((double)ctTotal[1][w] - alpha * x[j][1].get(w) != 0.0) { predicted[w] += salience[j] * x[j][1].get(w) / ((double)ctTotal[1][w] - alpha * x[j][1].get(w)); } } } return RealVector.make(predicted); // return RealVector.make(salience); }