public boolean forEachEntry( TIntFloatProcedure procedure ) { synchronized( mutex ) { return m.forEachEntry( procedure ); } } public void transformValues( TFloatFunction function ) {
public boolean forEachEntry( TIntFloatProcedure procedure ) { return m.forEachEntry( procedure ); }
public boolean forEachEntry( TIntFloatProcedure procedure ) { synchronized( mutex ) { return m.forEachEntry( procedure ); } } public void transformValues( TFloatFunction function ) {
public boolean forEachEntry( TIntFloatProcedure procedure ) { synchronized( mutex ) { return m.forEachEntry( procedure ); } } public void transformValues( TFloatFunction function ) {
@Override public boolean forEachEntry( TIntFloatProcedure procedure ) { synchronized( mutex ) { return m.forEachEntry( procedure ); } } @Override
@Override public boolean forEachEntry( TIntFloatProcedure procedure ) { return m.forEachEntry( procedure ); }
public boolean forEachEntry( TIntFloatProcedure procedure ) { synchronized( mutex ) { return m.forEachEntry( procedure ); } } public void transformValues( TFloatFunction function ) {
public boolean forEachEntry( TIntFloatProcedure procedure ) { return m.forEachEntry( procedure ); }
public boolean forEachEntry( TIntFloatProcedure procedure ) { return m.forEachEntry( procedure ); }
public boolean forEachEntry( TIntFloatProcedure procedure ) { return m.forEachEntry( procedure ); }
public static TLongFloatMap intMap2LongMap(TIntFloatMap map) { if (map == null) { return null; } final TLongFloatMap result = new TLongFloatHashMap(); map.forEachEntry(new TIntFloatProcedure() { @Override public boolean execute(int k, float v) { result.put(k, v); return true; } }); return result; } }
@Override public TLongFloatMap getVector(String phrase) { final TLongFloatMap vector = new TLongFloatHashMap(); for (int i = 0; i < metrics.length; i++) { try { TIntFloatMap v = PhraseUtils.getPhraseVector(metrics[i], phrase); if (v == null) continue; final int finalI = i; v.forEachEntry(new TIntFloatProcedure() { @Override public boolean execute(int key, float value) { long id = ((long) finalI) * Integer.MAX_VALUE + key; vector.put(id, (float) (value * coefficients[finalI])); return true; } }); } catch (Exception e) { LOGGER.info("SR call for " + phrase + ", metric " + metrics[i].getName() + " failed", e); } } return vector; }
private SRResultList indexedMostSimilar(PhraseVector v1, int maxResults, TIntSet candidateIds) { final TIntDoubleHashMap dots = new TIntDoubleHashMap(maxResults * 5); for (int i = 0; i < v1.ids.length; i++) { long featureId = v1.ids[i]; final float featureVal = v1.vals[i]; TIntFloatMap index = invertedIndex.get(featureId); if (index == null) continue; synchronized (index) { index.forEachEntry(new TIntFloatProcedure() { @Override public boolean execute(int id, float val) { dots.adjustOrPutValue(id, val * featureVal, val * featureVal); return true; } }); } } final Leaderboard leaderboard = new Leaderboard(maxResults); double l1 = v1.norm2(); int keys[] = dots.keys(); for (int i = 0; i < keys.length; i++) { int id = keys[i]; double l2 = byId.get(id).getVector().norm2(); double dot = dots.get(id); double sim = dot / (l1 * l2); leaderboard.tallyScore(id, sim); } return leaderboard.getTop(); }