List of usage examples for org.apache.commons.math3.linear RealVectorUtil vectorToMap
public static Map<Integer, Double> vectorToMap(RealVector vector)
From source file:org.lambda3.indra.core.IndraDriver.java
public final Map<String, Map<Integer, Double>> getVectorsAsMap(List<String> terms, Params params) { Map<String, RealVector> inVectors = getVectors(terms, params); Map<String, Map<Integer, Double>> outVectors = new HashMap<>(); for (String term : inVectors.keySet()) { RealVector realVector = inVectors.get(term); outVectors.put(term, realVector != null ? RealVectorUtil.vectorToMap(realVector) : null); }/*from ww w. j a va2 s . co m*/ return outVectors; }
From source file:org.lambda3.indra.core.lucene.LuceneVectorSpace.java
@Override public Map<String, RealVector> getNearestVectors(AnalyzedTerm term, int topk, Filter filter) { TermQuery query = new TermQuery(new Term(term.getFirstToken())); try {//from w w w. java 2 s . c om TopDocs topDocs = termsSearcher.search(query, 1); if (topDocs.totalHits == 1) { Document doc = termsSearcher.doc(topDocs.scoreDocs[0].doc); String[] indexes = doc.getValues(INDEXES_FIELD); RealVector termVector = BinaryCodecs.unmarshall(doc.getBinaryValue(VECTOR_FIELD).bytes, true, -1); Map<String, RealVector> candidates = collectVectors(Arrays.asList(indexes), INDEXES_FIELD); Map<String, Double> results = new ConcurrentHashMap<>(); candidates.entrySet().stream().parallel().forEach(e -> { double score = func.sim(termVector, e.getValue(), true); results.put(e.getKey(), score); }); LinkedHashMap<String, Double> sortedResults = MapUtils.entriesSortedByValues(results); Map<String, RealVector> nearest = new LinkedHashMap<>(); int count = 0; for (String key : sortedResults.keySet()) { Map<Integer, Double> mapVector = RealVectorUtil.vectorToMap(candidates.get(key)); int size = (int) getMetadata().dimensions; OpenMapRealVector vector = new OpenMapRealVector(size); for (int index : mapVector.keySet()) { vector.setEntry(index, mapVector.get(index)); } nearest.put(key, vector); } return nearest; } } catch (IOException e) { logger.error(e.getMessage()); //TODO throw new expection here. } return null; }
From source file:org.lambda3.indra.service.impl.MockedVectorResourceImpl.java
@Override public VectorResponse getVector(VectorRequest request) { Map<String, Map<Integer, Double>> terms = new HashMap<>(); request.getTerms()//from ww w . ja v a 2 s . c o m .forEach(t -> terms.put(t, RealVectorUtil.vectorToMap(new ArrayRealVector(rvg.nextVector())))); return new VectorResponse(request, terms); }
From source file:org.lambda3.indra.service.mock.MockedVectorResourceImpl.java
@Override public VectorResponse getVector(VectorRequest request) { Map<String, Map<Integer, Double>> terms = new HashMap<>(); request.getTerms()//from w w w. ja v a2 s .co m .forEach(t -> terms.put(t, RealVectorUtil.vectorToMap(new ArrayRealVector(rvg.nextVector())))); VectorResponse response = new SparseVectorResponse(request, terms); return response; }