Example usage for org.apache.commons.math3.linear RealVectorUtil vectorToMap

List of usage examples for org.apache.commons.math3.linear RealVectorUtil vectorToMap

Introduction

In this page you can find the example usage for org.apache.commons.math3.linear RealVectorUtil vectorToMap.

Prototype

public static Map<Integer, Double> vectorToMap(RealVector vector) 

Source Link

Usage

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;
}