public final Map<String, Map<String, Double>> getNeighborRelatedness(NeighborRelatednessRequest request) {
logger.trace("getting neighbors relatedness for {} terms (request={})", request.getTerms().size(), request);
RelatednessClient relatednessClient = relatednessClientFactory.create(request);
Threshold threshold = sf.create(request.getThreshold(), Threshold.class);
Filter filter = sf.create(request.getFilter(), Filter.class);
RelatednessFunction func = sf.create(request.getScoreFunction(), RelatednessFunction.class);
VectorComposer termComposer = sf.create(request.getTermComposition(), VectorComposer.class);
VectorComposer TranslationComposer = sf.create(request.getTranslationComposition(), VectorComposer.class);
Map<String, Map<String, Double>> relatedness = relatednessClient.getNeighborRelatedness(request.getTerms(),
request.getTopk(), threshold, filter, func, termComposer, TranslationComposer);
logger.trace("done");
return relatedness;
}