@Test public void shouldCumulateHits() throws Exception { IndexTestDouble index = new IndexTestDouble().resultFor("2012", "predicate", 1).resultFor("2010", "predicate", 1); AnnotationAlgorithm majorityHitWeighted = new WeightedFrequencyCoverageAndSpecificity( emptyTypes(), index, new OnlyValue(new IndexFields("dbpedia")), new Constant()); List<CandidateProperty> results = majorityHitWeighted.annotate( new ContextualizedValues("any", new String[] {"2012", "2010"})); assertThat(results.get(0).score(), equalTo(0.5142717790222688)); }
@Test public void shouldNotOrderWithoutConsideringTheWeightOfPredicates() throws Exception { Directory directory = buildIndex(); ContextualizedEvidence index = new ContextualizedEvidence(directory, new ConstantSimilarity(), new IndexFields("dbpedia")); AnnotationAlgorithm majorityHitWeighted = new WeightedFrequencyCoverageAndSpecificity( emptyTypes(), index, new OnlyValue(new IndexFields("dbpedia")), new Constant()); List<CandidateProperty> results = majorityHitWeighted.annotate(new ContextualizedValues("context", new String[] {"value"})); assertThat(results.get(0).score(), equalTo(results.get(1).score())); }
@Test public void shouldConsiderCoverageOfThePredicatesOverValues() throws Exception { IndexTestDouble index = new IndexTestDouble() .resultFor("2012", "lowCoveragePredicate", 2) .resultFor("2010", "highCoveragePredicate", 1) .resultFor("2012", "highCoveragePredicate", 1); AnnotationAlgorithm algorithm = new WeightedFrequencyCoverageAndSpecificity( emptyTypes(), index, new OnlyValue(new IndexFields("dbpedia")), new Constant()); List<CandidateProperty> results = algorithm.annotate(new ContextualizedValues("context", new String[] {"2012", "2010"})); assertThat(results.get(0).label(), equalTo("highCoveragePredicate")); }
@Test public void shouldOrderConsideringCompleteContext() throws Exception { Directory directory = buildIndex(); IndexFields fields = new IndexFields("dbpedia"); ContextualizedEvidence index = new ContextualizedEvidence(directory, new ConstantSimilarity(), fields); AnnotationAlgorithm majorityHitWeighted = new WeightedFrequencyCoverageAndSpecificity( emptyTypes(), index, new FullyContextualizedValue(fields), new PropertyContextSpecificity(index, new IndexFields("dbpedia"))); List<CandidateProperty> results = majorityHitWeighted.annotate(new ContextualizedValues("context", new String[] {"value"})); assertThat(results.get(0).score(), greaterThan(results.get(1).score())); }