@Override public SRResult similarity(int pageId1, int pageId2, boolean explanations) throws DaoException { return delegate.similarity(pageId1, pageId2, explanations); }
@Override public SRResult similarity(String phrase1, String phrase2, boolean explanations) throws DaoException { return delegate.similarity(phrase1, phrase2, explanations); }
private void evaluateOneSample() throws DaoException, WikiBrainException, IOException { UniversalPage c1 = concepts.get(random.nextInt(concepts.size())); UniversalPage c2 = concepts.get(random.nextInt(concepts.size())); List<SRResult> results = new ArrayList<SRResult>(); for (Language lang : langs) { SRMetric sr = metrics.get(lang); results.add(sr.similarity(c1.getLocalId(lang), c2.getLocalId(lang), false)); } writeRow(c1, c2, results); }
public void evaluateOneSample() throws DaoException, WikiBrainException, IOException { UniversalPage c1 = concepts.get(random.nextInt(concepts.size())); UniversalPage c2 = concepts.get(random.nextInt(concepts.size())); List<SRResult> results = new ArrayList<SRResult>(); for (Language lang : langs) { SRMetric sr = metrics.get(lang); results.add(sr.similarity(c1.getLocalId(lang), c2.getLocalId(lang), false)); } writeRow(c1, c2, results); }
public void evaluateOneSample() throws DaoException, WikiBrainException, IOException { UniversalPage c1 = concepts.get(random.nextInt(concepts.size())); UniversalPage c2 = concepts.get(random.nextInt(concepts.size())); List<SRResult> results = new ArrayList<SRResult>(); for (Language lang : langs) { SRMetric sr = metrics.get(lang); results.add(sr.similarity(c1.getLocalId(lang), c2.getLocalId(lang), false)); } writeRow(c1, c2, results); }
private void evaluateOneSample() throws DaoException, WikiBrainException, IOException { UniversalPage c1 = concepts.get(random.nextInt(concepts.size())); UniversalPage c2 = concepts.get(random.nextInt(concepts.size())); List<SRResult> results = new ArrayList<SRResult>(); for (Language lang : langs) { SRMetric sr = metrics.get(lang); results.add(sr.similarity(c1.getLocalId(lang), c2.getLocalId(lang), false)); } writeRow(c1, c2, results); }
@Override public SRResult similarity(int pageId1, int pageId2, boolean explanations) throws DaoException { List<SRResult> scores = new ArrayList<SRResult>(); for (SRMetric metric : metrics){ scores.add(metric.similarity(pageId1,pageId2,explanations)); } return normalize(ensemble.predictSimilarity(scores)); }
private void evaluateOneSample() throws DaoException, WikiBrainException, IOException { UniversalPage c1 = concepts.get(random.nextInt(concepts.size())); UniversalPage c2 = concepts.get(random.nextInt(concepts.size())); List<SRResult> results = new ArrayList<SRResult>(); for (Language lang : langs) { SRMetric sr = metrics.get(lang); results.add(sr.similarity(c1.getLocalId(lang), c2.getLocalId(lang), false)); if(sr.similarity(c1.getLocalId(lang), c2.getLocalId(lang), false) == null){ LOG.warn(String.format("error calculating SR for universal page %d %s and %d %s", c1.getUnivId(), c1.getBestEnglishTitle(lpDao, true), c2.getUnivId(), c2.getBestEnglishTitle(lpDao, true))); } } writeRow(c1, c2, results); }
@Override public SRResult similarity(String phrase1, String phrase2, boolean explanations) throws DaoException { if (resolvePhrases) { return super.similarity(phrase1, phrase2, explanations); } List<SRResult> scores = new ArrayList<SRResult>(); for (SRMetric metric : metrics){ scores.add(metric.similarity(phrase1,phrase2,explanations)); } return normalize(ensemble.predictSimilarity(scores)); }
private void evaluateOneSample() throws DaoException, WikiBrainException, IOException { UniversalPage c1 = concepts.get(random.nextInt(concepts.size())); UniversalPage c2 = concepts.get(random.nextInt(concepts.size())); List<SRResult> results = new ArrayList<SRResult>(); for (Language lang : langs) { SRMetric sr = metrics.get(lang); results.add(sr.similarity(c1.getLocalId(lang), c2.getLocalId(lang), false)); if(sr.similarity(c1.getLocalId(lang), c2.getLocalId(lang), false) == null){ LOG.warn(String.format("error calculating SR for universal page %d %s and %d %s", c1.getUnivId(), c1.getBestEnglishTitle(lpDao, true), c2.getUnivId(), c2.getBestEnglishTitle(lpDao, true))); } } writeRow(c1, c2, results); }
public void call(KnownSim ks) throws IOException, DaoException { ks.maybeSwap(); SRResult sim = metric.similarity(ks.phrase1, ks.phrase2, false); trainee.observe(sim == null ? Double.NaN : sim.getScore(), ks.similarity); } }, 100);
for (Language lang : langs) { SRMetric sr = metrics.get(lang); results.add(sr.similarity(c1.getLocalId(lang), c2.getLocalId(lang), false));
@Override public SRResult similarity(String phrase1, String phrase2, boolean explanations) throws DaoException { double sum = 0.0; double divisor = 0.0; for (SubMetric m : metrics) { SRResult r = m.metric.similarity(phrase1, phrase2, false); if (r != null && r.isValid()) { sum += m.coefficient * r.getScore(); divisor += m.coefficient; } } return new SRResult((divisor > 0) ? (sum / divisor) : Double.NaN); }
@Override public void call(KnownSim ks) throws Exception { EnsembleSim es = new EnsembleSim(ks); for (SRMetric metric : metrics){ double score = Double.NaN; try { SRResult result = metric.similarity(ks.phrase1,ks.phrase2,false); if (result != null) { score = result.getScore(); } } catch (Exception e){ LOG.warn("Local sr metric " + metric.getName() + " failed for " + ks, e); } es.add(score, 0); } ensembleSims.add(es); } },
@Override public SRResult similarity(int pageId1, int pageId2, boolean explanations) throws DaoException { // TODO: Handle explanations double sum = 0.0; double divisor = 0.0; for (SubMetric m : metrics) { SRResult r = m.metric.similarity(pageId1, pageId2, false); if (r != null && r.isValid()) { sum += m.coefficient * r.getScore(); divisor += m.coefficient; } } return new SRResult((divisor > 0) ? (sum / divisor) : Double.NaN); }
@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); } }
public static void main(String[] args) { SRResult s = null; try { Env env = new EnvBuilder().build(); Configurator conf = env.getConfigurator(); LocalPageDao lpDao = conf.get(LocalPageDao.class); Language simple = Language.getByLangCode("simple"); SRMetric sr = conf.get( SRMetric.class, "ensemble", "language", simple.getLangCode()); s = sr.similarity("cat","kitty",true); } catch (ConfigurationException e) { System.out.println("Configuration Exception: "+e.getMessage()); } catch (DaoException e) { System.out.println("Dao Exception: "+e.getMessage()); } System.out.println("The score for this two pages:"+s.getScore()); } }
public static void main(String[] args) { SRResult s = null; try { Env env = new EnvBuilder().build(); Configurator conf = env.getConfigurator(); LocalPageDao lpDao = conf.get(LocalPageDao.class); Language simple = Language.getByLangCode("simple"); SRMetric sr = conf.get( SRMetric.class, "ensemble", "language", simple.getLangCode()); s = sr.similarity("cat","kitty",true); } catch (ConfigurationException e) { System.out.println("Configuration Exception: "+e.getMessage()); } catch (DaoException e) { System.out.println("Dao Exception: "+e.getMessage()); } System.out.println("The score for this two pages:"+s.getScore()); } }
private void doSimilarity(WikiBrainWebRequest req) throws ConfigurationException, DaoException { // TODO: support explanations Language lang = req.getLanguage(); List<WebEntity> entities = entityParser.extractEntityList(req); if (entities.size() != 2) { throw new WikiBrainWebException("Similarity requires exactly two entities"); } WebEntity entity1 = entities.get(0); WebEntity entity2 = entities.get(1); SRMetric sr = getSr(lang); SRResult r = null; switch (entity1.getType()) { case ARTICLE_ID: case TITLE: r = sr.similarity(entity1.getArticleId(), entity2.getArticleId(), false); break; case PHRASE: r = sr.similarity(entity1.getPhrase(), entity2.getPhrase(), false); break; default: throw new WikiBrainWebException("Unsupported entity type: " + entity1.getType()); } Double sim = (r != null && r.isValid()) ? r.getScore() : null; req.writeJsonResponse("score", sim, "entity1", entity1.toJson(), "entity2", entity2.toJson()); }
public static void main(String args[]) throws ConfigurationException, DaoException { // Initialize the WikiBrain environment and get the local page dao Env env = EnvBuilder.envFromArgs(args); Configurator conf = env.getConfigurator(); LocalPageDao lpDao = conf.get(LocalPageDao.class); // Retrieve the "ensemble" sr metric for simple english SRMetric sr = conf.get( SRMetric.class, "milnewitten", "language", env.getDefaultLanguage().getLangCode()); //Similarity between strings String pairs[][] = new String[][] { { "cat", "kitty" }, { "Obama", "president" }, { "tires", "car" }, { "java", "computer" }, { "dog", "computer" }, }; ExplanationFormatter formatter= new ExplanationFormatter(lpDao); for (String pair[] : pairs) { SRResult s = sr.similarity(pair[0], pair[1], true); System.out.println(s.getScore() + ": '" + pair[0] + "', '" + pair[1] + "'"); for (Explanation e:s.getExplanations()) { // System.out.println(formatter.formatExplanation(e)); } } } }