@Override public Collection<Candidate> getCandidates(EntityInformation<Location> entityInformation) { Collection<Location> locations = entityInformation.getMentions(); Collection<Candidate> candidates = new HashSet<>(); for (Location location : locations) { try { candidates.addAll(queryByNameContains(location.getValue())); } catch (ParseException e) { LOGGER.error(e.getMessage()); } } return candidates; }
@Override public Collection<Candidate> getCandidates(EntityInformation<Location> entityInformation) { Collection<Location> locations = entityInformation.getMentions(); Collection<Candidate> candidates = new HashSet<>(); for (Location location : locations) { try { candidates.addAll(queryByNameContains(location.getValue())); } catch (ParseException e) { LOGGER.error(e.getMessage()); } } return candidates; }
private void testJCas(JCas jCas, String s) { assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals(s, l.getValue()); assertNotNull(l.getGeoJson()); } }
@Override public void validate(Location t) { super.validate(t); assertEquals(value, t.getValue()); assertEquals(geometry, t.getGeoJson()); } }
@Test public void test() throws Exception { jCas.setDocumentText("Hello world, this is a test"); processJCas(MONGO, erd, COLLECTION, MONGO_COLL, TYPE, LOCATION); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals(WORLD, l.getValue()); assertEquals(WORLD, l.getCoveredText()); }
@Test public void testRegex() throws Exception { jCas.setDocumentText("Hello Sydney (Australia), this is a test"); processJCas(MONGO, erd, COLLECTION, MONGO_COLL, TYPE, LOCATION); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("Sydney (Australia", l.getValue()); assertEquals("Sydney (Australia", l.getCoveredText()); }
@Test public void testWrongType() throws Exception { AnalysisEngine ncAE = AnalysisEngineFactory.createEngine(NormalizeOSGB.class); String coordinateValue = "tq299804"; createAndAddLocationEntity(coordinateValue, "osgb"); ncAE.process(jCas); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); assertEquals("tq299804", JCasUtil.selectByIndex(jCas, Location.class, 0).getValue()); assertEquals(false, JCasUtil.selectByIndex(jCas, Location.class, 0).getIsNormalised()); }
@Test public void testProperty() throws Exception { jCas.setDocumentText("Guy Fawkes was caught in London"); processJCas(MONGO, erd, COLLECTION, MONGO_COLL, TYPE, LOCATION); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Location lLon = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("London", lLon.getValue()); assertEquals("London", lLon.getCoveredText()); assertEquals(LONDON_GEOJSON.toJson(), lLon.getGeoJson()); }
@Test public void testCoref() throws Exception { jCas.setDocumentText("Hello World, Hello Earth"); processJCas(MONGO, erd, COLLECTION, MONGO_COLL, TYPE, LOCATION); assertEquals(2, JCasUtil.select(jCas, Location.class).size()); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Location l1 = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("World", l1.getValue()); assertEquals("World", l1.getCoveredText()); assertEquals(rt, l1.getReferent()); Location l2 = JCasUtil.selectByIndex(jCas, Location.class, 1); assertEquals("Earth", l2.getValue()); assertEquals("Earth", l2.getCoveredText()); assertEquals(rt, l2.getReferent()); } }
@Test public void test() throws Exception { AnalysisEngineDescription aed = AnalysisEngineFactory.createEngineDescription( List.class, List.PARAM_TERMS, terms, List.PARAM_TYPE, LOCATION); AnalysisEngine ae = AnalysisEngineFactory.createEngine(aed); jCas.setDocumentText("Hello world, this is a test"); ae.process(jCas); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals(WORLD, l.getValue()); assertEquals(WORLD, l.getCoveredText()); ae.destroy(); }
@Test public void testmultipleHits() throws Exception { AnalysisEngineDescription aed = AnalysisEngineFactory.createEngineDescription( List.class, List.PARAM_TERMS, terms, List.PARAM_TYPE, LOCATION); AnalysisEngine ae = AnalysisEngineFactory.createEngine(aed); // the same search term appears multiple times in text... jCas.setDocumentText("Hello world, and hello world again."); ae.process(jCas); assertEquals(2, JCasUtil.select(jCas, Location.class).size()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals(WORLD, l.getValue()); assertEquals(WORLD, l.getCoveredText()); ae.destroy(); }
@Test public void testProperty() throws Exception { jCas.setDocumentText("Hello London, this is a test"); processJCas(MONGO, erd, COLLECTION, MONGO_COLL, TYPE, LOCATION); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Location lLon = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("London", lLon.getValue()); assertEquals("London", lLon.getCoveredText()); assertEquals(LONDON_GEOJSON.toJson(), lLon.getGeoJson()); jCas.reset(); jCas.setDocumentText("Hello Madrid, this is a test"); processJCas(MONGO, erd, COLLECTION, MONGO_COLL, TYPE, LOCATION); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Location lMad = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("Madrid", lMad.getValue()); assertEquals("Madrid", lMad.getCoveredText()); assertEquals("Property Test", lMad.getGeoJson()); }
public void assertLocationMatches() { final Location inLocation = JCasUtil.selectSingle(in, Location.class); final Location outLocation = JCasUtil.selectSingle(out, Location.class); assertEquals(inLocation.getGeoJson(), outLocation.getGeoJson()); assertEquals(inLocation.getBegin(), outLocation.getBegin()); assertEquals(inLocation.getEnd(), outLocation.getEnd()); assertEquals(inLocation.getValue(), outLocation.getValue()); assertEquals(0, inLocation.getConfidence(), outLocation.getConfidence()); }
@Test public void testMultipleTypes() throws Exception { jCas.setDocumentText("John Smith was seen at London King's Cross"); Annotations.createPerson(jCas, 0, 4, "John"); Annotations.createPerson(jCas, 5, 10, "Smith"); Annotations.createLocation(jCas, 23, 29, "London", null); Annotations.createLocation(jCas, 30, 42, "King's Cross", null); processJCas("types", new String[] {"Person", "Location"}); assertEquals(1, JCasUtil.select(jCas, Person.class).size()); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Person p = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("John Smith", p.getCoveredText()); assertEquals("John Smith", p.getValue()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("London King's Cross", l.getCoveredText()); assertEquals("London King's Cross", l.getValue()); }
@Test public void testMultipleAdjacentTypes() throws Exception { jCas.setDocumentText("John Smith London King's Cross"); Annotations.createPerson(jCas, 0, 4, "John"); Annotations.createPerson(jCas, 5, 10, "Smith"); Annotations.createLocation(jCas, 11, 17, "London", null); Annotations.createLocation(jCas, 18, 30, "King's Cross", null); processJCas("types", new String[] {"Person", "Location"}); assertEquals(1, JCasUtil.select(jCas, Person.class).size()); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Person p = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("John Smith", p.getCoveredText()); assertEquals("John Smith", p.getValue()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("London King's Cross", l.getCoveredText()); assertEquals("London King's Cross", l.getValue()); }
@Test public void testSubTypesMultiple() throws Exception { jCas.setDocumentText("John Smith was seen at London King's Cross 30N 15E"); Annotations.createLocation(jCas, 23, 29, "London", null); Annotations.createLocation(jCas, 30, 42, "King's Cross", null); Annotations.createCoordinate(jCas, 43, 46, "30N"); Annotations.createCoordinate(jCas, 47, 50, "15E"); processJCas("types", new String[] {"Location", "Coordinate"}); assertEquals(2, JCasUtil.select(jCas, Location.class).size()); // 1 + 1 assertEquals(1, JCasUtil.select(jCas, Coordinate.class).size()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("London King's Cross", l.getCoveredText()); assertEquals("London King's Cross", l.getValue()); Coordinate c = JCasUtil.selectByIndex(jCas, Coordinate.class, 0); assertEquals("30N 15E", c.getCoveredText()); assertEquals("30N 15E", c.getValue()); }
@Test public void testSeparator() throws Exception { jCas.setDocumentText("John Smith was seen at London\tKing's Cross"); Annotations.createPerson(jCas, 0, 4, "John"); Annotations.createPerson(jCas, 8, 13, "Smith"); Annotations.createLocation(jCas, 26, 32, "London", null); Annotations.createLocation(jCas, 33, 45, "King's Cross", null); processJCas("types", new String[] {"Person", "Location"}); assertEquals(1, JCasUtil.select(jCas, Person.class).size()); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Person p = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("John Smith", p.getCoveredText()); assertEquals("John Smith", p.getValue()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("London\tKing's Cross", l.getCoveredText()); assertEquals("London\tKing's Cross", l.getValue()); } }
@Test public void testmultipleHitsWithText() throws Exception { AnalysisEngineDescription aed = AnalysisEngineFactory.createEngineDescription( List.class, List.PARAM_TERMS, terms, List.PARAM_TYPE, LOCATION); AnalysisEngine ae = AnalysisEngineFactory.createEngine(aed); // the same search term appears multiple times in text... jCas.setDocumentText("Hello world, and hello world again."); // but then subset using a Text annotation new Text(jCas, 10, jCas.getDocumentText().length()).addToIndexes(); ae.process(jCas); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals(WORLD, l.getValue()); assertEquals(WORLD, l.getCoveredText()); assertTrue(l.getBegin() > 10); ae.destroy(); } }
@Test public void testSubTypes() throws Exception { jCas.setDocumentText("John Smith was seen at London King's Cross 30N 15E"); Annotations.createLocation(jCas, 23, 29, "London", null); Annotations.createLocation(jCas, 30, 42, "King's Cross", null); Annotations.createCoordinate(jCas, 43, 46, "30N"); Annotations.createCoordinate(jCas, 47, 50, "15E"); processJCas("types", new String[] {"Location"}); assertEquals(3, JCasUtil.select(jCas, Location.class).size()); // 1 + 2 assertEquals(2, JCasUtil.select(jCas, Coordinate.class).size()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("London King's Cross", l.getCoveredText()); assertEquals("London King's Cross", l.getValue()); Coordinate c1 = JCasUtil.selectByIndex(jCas, Coordinate.class, 0); assertEquals("30N", c1.getCoveredText()); assertEquals("30N", c1.getValue()); Coordinate c2 = JCasUtil.selectByIndex(jCas, Coordinate.class, 1); assertEquals("15E", c2.getCoveredText()); assertEquals("15E", c2.getValue()); }
@Test public void test() throws Exception { jCas.setDocumentText("Pierre is French"); Person p = new Person(jCas); p.setBegin(0); p.setEnd(6); p.setValue("Pierre"); p.addToIndexes(); Nationality n = new Nationality(jCas); n.setBegin(10); n.setEnd(16); n.setValue("French"); n.setCountryCode("fra"); n.addToIndexes(); ae.process(jCas); assertEquals(1, JCasUtil.select(jCas, Location.class).size()); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals("French", l.getValue()); assertNotNull(l.getGeoJson()); } }