/** * This tests the EntityLinker functionality (if the expected Entities are linked) * * @throws Exception */ @Test public void testTaxonomyLinker() throws Exception { OpenNlpAnalysedContentFactory acf = OpenNlpAnalysedContentFactory.getInstance(openNLP, new TextAnalyzerConfig()); EntityLinkerConfig config = new EntityLinkerConfig(); config.setRedirectProcessingMode(RedirectProcessingMode.FOLLOW); EntityLinker linker = new EntityLinker(acf.create(TEST_TEXT, "en"), searcher, config); linker.process(); Map<String, List<String>> expectedResults = new HashMap<String, List<String>>(); expectedResults.put( "Patrick Marshall", new ArrayList<String>(Arrays.asList("urn:test:PatrickMarshall"))); expectedResults.put( "geologist", new ArrayList<String>( Arrays.asList("urn:test:redirect:Geologist"))); // the redirected entity expectedResults.put("New Zealand", new ArrayList<String>(Arrays.asList("urn:test:NewZealand"))); expectedResults.put( "University of Otago", new ArrayList<String>( Arrays.asList("urn:test:UniversityOfOtago", "urn:test:UniversityOfOtago_Texas"))); for (LinkedEntity linkedEntity : linker.getLinkedEntities().values()) { List<String> expectedSuggestions = expectedResults.remove(linkedEntity.getSelectedText()); assertNotNull( "LinkedEntity " + linkedEntity.getSelectedText() + "is not an expected Result (or was found twice)", expectedSuggestions); linkedEntity.getSuggestions().iterator(); assertEquals( "Number of suggestions " + linkedEntity.getSuggestions().size() + " != number of expected suggestions " + expectedSuggestions.size() + "for selection " + linkedEntity.getSelectedText(), linkedEntity.getSuggestions().size(), expectedSuggestions.size()); double score = linkedEntity.getScore(); for (int i = 0; i < expectedSuggestions.size(); i++) { Suggestion suggestion = linkedEntity.getSuggestions().get(i); assertEquals( "Expecced Suggestion at Rank " + i + " expected: " + expectedSuggestions.get(i) + " suggestion: " + suggestion.getRepresentation().getId(), expectedSuggestions.get(i), suggestion.getRepresentation().getId()); assertTrue( "Score of suggestion " + i + "(" + suggestion.getScore() + " > as of the previous one (" + score + ")", score >= suggestion.getScore()); score = suggestion.getScore(); } } }