public List<T> getCurrentlyBestAxioms(double accuracyThreshold) { List<T> bestAxioms = new ArrayList<T>(); for (EvaluatedAxiom<T> evAx : getCurrentlyBestEvaluatedAxioms(accuracyThreshold)) { bestAxioms.add(evAx.getAxiom()); } return bestAxioms; }
public List<EvaluatedAxiom<T>> getCurrentlyBestEvaluatedAxioms( int nrOfAxioms, double accuracyThreshold) { List<EvaluatedAxiom<T>> returnList = new ArrayList<EvaluatedAxiom<T>>(); // get the currently best evaluated axioms List<EvaluatedAxiom<T>> currentlyBestEvAxioms = getCurrentlyBestEvaluatedAxioms(); for (EvaluatedAxiom<T> evAx : currentlyBestEvAxioms) { if (evAx.getScore().getAccuracy() >= accuracyThreshold && returnList.size() < nrOfAxioms) { if (returnOnlyNewAxioms) { if (!existingAxioms.contains(evAx.getAxiom())) { returnList.add(evAx); } } else { returnList.add(evAx); } } } return returnList; }
public void explainScore(EvaluatedAxiom<T> evAxiom) { AxiomScore score = evAxiom.getScore(); int posExampleCnt = score.getNrOfPositiveExamples(); int negExampleCnt = score.getNrOfNegativeExamples(); int total = posExampleCnt + negExampleCnt; StringBuilder sb = new StringBuilder(); String lb = "\n"; sb.append("######################################").append(lb); sb.append("Explanation:").append(lb); sb.append("Score(") .append(evAxiom.getAxiom()) .append(") = ") .append(evAxiom.getScore().getAccuracy()) .append(lb); sb.append("Total number of resources:\t").append(total).append(lb); sb.append("Number of positive examples:\t").append(posExampleCnt).append(lb); sb.append("Number of negative examples:\t").append(negExampleCnt).append(lb); sb.append("Based on sample: \t").append(score.isSampleBased()).append(lb); if (sample != null) { sb.append("Sample size(#triples): \t").append(sample.size()).append(lb); } sb.append("######################################"); System.out.println(sb.toString()); }