@Override public SRResult similarity(int pageId1, int pageId2, boolean explanations) throws DaoException { SRResult r1 = inlink.similarity(pageId1, pageId2, explanations); SRResult r2 = outlink.similarity(pageId1, pageId2, explanations); if (r1 == null || r2 == null || !r1.isValid() || !r2.isValid()) { return new SRResult(Double.NaN); } else { SRResult finalResult=new SRResult(0.5 * r1.getScore() + 0.5 * r2.getScore()); if (explanations) { List<Explanation> explanationList = new ArrayList<Explanation>(); explanationList.addAll(r1.getExplanations()); explanationList.addAll(r2.getExplanations()); finalResult.setExplanations(explanationList); } return normalize(finalResult); } }
@Override public SRResult similarity(String phrase1, String phrase2, boolean explanations) throws DaoException { if (featureFilter != null) { throw new UnsupportedOperationException(); } TIntFloatMap vector1 = null; TIntFloatMap vector2 = null; // try using phrases directly try { vector1 = generator.getVector(phrase1); vector2 = generator.getVector(phrase2); } catch (UnsupportedOperationException e) { // try using other methods } if (vector1 == null || vector2 == null) { return super.similarity(phrase1, phrase2, explanations); } else { SRResult result= new SRResult(similarity.similarity(vector1, vector2)); if(explanations) { result.setExplanations(generator.getExplanations(phrase1, phrase2, vector1, vector2, result)); } return normalize(result); } }
@Override public SRResult similarity(int pageId1, int pageId2, boolean explanations) throws DaoException { try { float [] v1 = getPageVector(pageId1); float [] v2 = getPageVector(pageId2); SRResult result = new SRResult(normalize(SimUtils.cosineSimilarity(v1, v2))); if (explanations) { result.setExplanations(generator.getExplanations(pageId1, pageId2, v1, v2, result)); } return result; } catch (IOException e) { throw new DaoException(e); } }
@Override public SRResult similarity(String phrase1, String phrase2, boolean explanations) throws DaoException { float [] vector1 = null; float [] vector2 = null; // try using phrases directly try { vector1 = generator.getVector(phrase1); vector2 = generator.getVector(phrase2); } catch (UnsupportedOperationException e) { // try using other methods } if (vector1 == null || vector2 == null) { return super.similarity(phrase1, phrase2, explanations); } else { SRResult result= new SRResult(SimUtils.cosineSimilarity(vector1, vector2)); if(explanations) { result.setExplanations(generator.getExplanations(phrase1, phrase2, vector1, vector2, result)); } return normalize(result); } }
SRResult result= new SRResult(similarity.similarity(vector1, vector2)); if(explanations) { result.setExplanations(generator.getExplanations(phrase1, phrase2, vector1, vector2, result));
TIntFloatHashMap tfm1=row1.asTroveMap(); TIntFloatHashMap tfm2=row2.asTroveMap(); result.setExplanations(generator.getExplanations(pageId1, pageId2, tfm1, tfm2, result));