@Test public void testNoExistingReferentsMerge() throws Exception { AnalysisEngine ae = AnalysisEngineFactory.createEngine( CorefBrackets.class, CorefBrackets.PARAM_MERGE_REFERENTS, true); jCas.setDocumentText("James (Jimmy) visited Thomas and Ben"); Person p1 = new Person(jCas, 0, 5); p1.addToIndexes(); Person p2 = new Person(jCas, 7, 12); p2.addToIndexes(); Person p3 = new Person(jCas, 22, 28); p3.addToIndexes(); Person p4 = new Person(jCas, 33, 36); p4.addToIndexes(); ae.process(jCas); assertNotNull(p1.getReferent()); assertEquals(p1.getReferent(), p2.getReferent()); assertNotEquals(p1.getReferent(), p3.getReferent()); assertNotEquals(p1.getReferent(), p4.getReferent()); assertNull(p3.getReferent()); assertNull(p4.getReferent()); } }
@Test public void testSinglePersonNoReferences() throws Exception { jCas.setDocumentText("Mr Simon Brown, was caught stealing sausages. Brown was found guilty."); Person p = new Person(jCas, 0, 14); p.addToIndexes(); processJCas(); assertEquals(2, JCasUtil.select(jCas, Person.class).size()); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("Mr Simon Brown", p1.getCoveredText()); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals("Brown", p2.getCoveredText()); assertNotNull(p1.getReferent()); assertEquals(p1.getReferent(), p2.getReferent()); }
@Test public void testMultiple() throws Exception { jCas.setDocumentText("His name was Andrew Smith (Drew) (Smithy)"); Person p = new Person(jCas, 13, 41); p.addToIndexes(); processJCas(); assertEquals(3, JCasUtil.select(jCas, Person.class).size()); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("Andrew Smith", p1.getCoveredText()); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals("Drew", p2.getCoveredText()); Person p3 = JCasUtil.selectByIndex(jCas, Person.class, 2); assertEquals("Smithy", p3.getCoveredText()); assertEquals(p1.getReferent(), p2.getReferent()); assertEquals(p1.getReferent(), p3.getReferent()); }
@Test public void testSkippedEntities() throws Exception { AnalysisEngine ae = AnalysisEngineFactory.createEngine(CorefBrackets.class); jCas.setDocumentText(PERSON_TEXT); Annotations.createPerson(jCas, 0, 12, WILLIAM); Annotations.createPerson(jCas, 21, 26, BILLY); ae.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals(rt, p1.getReferent()); assertEquals(rt, p2.getReferent()); }
@Test public void testSinglePersonWithReferences() throws Exception { jCas.setDocumentText("Mr Simon Brown, was caught stealing sausages. Brown was found guilty."); Person p = new Person(jCas, 0, 14); p.setReferent(new ReferenceTarget(jCas)); p.addToIndexes(); processJCas(); assertEquals(2, JCasUtil.select(jCas, Person.class).size()); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("Mr Simon Brown", p1.getCoveredText()); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals("Brown", p2.getCoveredText()); assertNotNull(p1.getReferent()); assertEquals(p1.getReferent(), p2.getReferent()); }
@Test public void testOne() throws Exception { jCas.setDocumentText("His name was Andrew Smith (Andy)"); Person p = new Person(jCas, 13, 32); p.addToIndexes(); processJCas(); assertEquals(2, JCasUtil.select(jCas, Person.class).size()); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("Andrew Smith", p1.getCoveredText()); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals("Andy", p2.getCoveredText()); assertEquals(p1.getReferent(), p2.getReferent()); }
@Test public void testNoExistingReferents() throws Exception { AnalysisEngine corefCapAE = AnalysisEngineFactory.createEngine(CorefCapitalisationAndApostrophe.class); jCas.setDocumentText(TEXT); Annotations.createPerson(jCas, 0, 5, JAMES); Annotations.createPerson(jCas, 22, 27, JAMES_UC); corefCapAE.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1t = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2t = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals(rt, p1t.getReferent()); assertEquals(rt, p2t.getReferent()); }
@Test public void testApostropheS() throws Exception { AnalysisEngine corefCapAE = AnalysisEngineFactory.createEngine(CorefCapitalisationAndApostrophe.class); jCas.setDocumentText("Naomi went to London. Naomi's train was late."); Annotations.createPerson(jCas, 0, 5, "Naomi"); Annotations.createPerson(jCas, 22, 29, "Naomi's"); corefCapAE.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1t = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2t = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals(rt, p1t.getReferent()); assertEquals(rt, p2t.getReferent()); }
@Test public void testMultipleEntities() throws Exception { AnalysisEngine ae = AnalysisEngineFactory.createEngine(CorefBrackets.class); jCas.setDocumentText(PERSON_TEXT); Annotations.createPerson(jCas, 0, 12, WILLIAM); Annotations.createPerson(jCas, 14, 18, BILL); Annotations.createPerson(jCas, 21, 26, BILLY); ae.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 1); Person p3 = JCasUtil.selectByIndex(jCas, Person.class, 2); assertEquals(rt, p1.getReferent()); assertEquals(rt, p2.getReferent()); assertEquals(rt, p3.getReferent()); }
@Test public void testSApostrophe() throws Exception { AnalysisEngine corefCapAE = AnalysisEngineFactory.createEngine(CorefCapitalisationAndApostrophe.class); jCas.setDocumentText("James went to London. James' train was late."); Annotations.createPerson(jCas, 0, 5, "James"); Annotations.createPerson(jCas, 22, 28, "James'"); corefCapAE.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1t = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2t = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals(rt, p1t.getReferent()); assertEquals(rt, p2t.getReferent()); } }
@Test public void testMiddleAndEnd() throws Exception { jCas.setDocumentText("His name was Andrew (Drew) Smith (Obj X)"); Person p = new Person(jCas, 13, 40); p.addToIndexes(); processJCas(); assertEquals(2, JCasUtil.select(jCas, Person.class).size()); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("Andrew (Drew) Smith", p1.getCoveredText()); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals("Obj X", p2.getCoveredText()); assertEquals(p1.getReferent(), p2.getReferent()); } }
@Test public void testOneExistingReferent() throws Exception { AnalysisEngine corefCapAE = AnalysisEngineFactory.createEngine(CorefCapitalisationAndApostrophe.class); jCas.setDocumentText(TEXT); ReferenceTarget rt = Annotations.createReferenceTarget(jCas); Person p1 = Annotations.createPerson(jCas, 0, 5, JAMES); p1.setReferent(rt); Annotations.createPerson(jCas, 22, 27, JAMES_UC); corefCapAE.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rtt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1t = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2t = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals(rtt, p1t.getReferent()); assertEquals(rtt, p2t.getReferent()); }
@Test public void testTwoExistingReferent() throws Exception { AnalysisEngine corefCapAE = AnalysisEngineFactory.createEngine(CorefCapitalisationAndApostrophe.class); jCas.setDocumentText(TEXT + " James has not been to Guatemala."); ReferenceTarget rt = Annotations.createReferenceTarget(jCas); Person p1 = Annotations.createPerson(jCas, 0, 5, JAMES); p1.setReferent(rt); Person p2 = Annotations.createPerson(jCas, 22, 27, JAMES_UC); p2.setReferent(rt); Annotations.createPerson(jCas, 56, 61, JAMES); corefCapAE.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rtt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1t = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2t = JCasUtil.selectByIndex(jCas, Person.class, 1); Person p3t = JCasUtil.selectByIndex(jCas, Person.class, 2); assertEquals(rtt, p1t.getReferent()); assertEquals(rtt, p2t.getReferent()); assertEquals(rtt, p3t.getReferent()); }
@Test public void testMissingValue() throws Exception { AnalysisEngine corefCapAE = AnalysisEngineFactory.createEngine(CorefCapitalisationAndApostrophe.class); jCas.setDocumentText(TEXT); Person p1 = new Person(jCas); p1.setBegin(0); p1.setEnd(5); p1.addToIndexes(); Annotations.createPerson(jCas, 22, 27, JAMES_UC); corefCapAE.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1t = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2t = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals(rt, p1t.getReferent()); assertEquals(rt, p2t.getReferent()); }
@Test public void testIncorrectEntities() throws Exception { AnalysisEngine ae = AnalysisEngineFactory.createEngine(CorefBrackets.class); jCas.setDocumentText(PERSON_TEXT); Annotations.createPerson(jCas, 0, 12, WILLIAM); Annotations.createLocation(jCas, 14, 18, BILL, null); Annotations.createPerson(jCas, 21, 26, BILLY); ae.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 1); Location l = JCasUtil.selectByIndex(jCas, Location.class, 0); assertEquals(rt, p1.getReferent()); assertEquals(rt, p2.getReferent()); assertNull(l.getReferent()); }
@Test public void testExistingReferentsMerge() throws Exception { AnalysisEngine corefCapAE = AnalysisEngineFactory.createEngine( CorefCapitalisationAndApostrophe.class, "mergeReferents", true); jCas.setDocumentText(TEXT); ReferenceTarget rt1 = Annotations.createReferenceTarget(jCas); ReferenceTarget rt2 = Annotations.createReferenceTarget(jCas); Person p1 = Annotations.createPerson(jCas, 0, 5, JAMES); p1.setReferent(rt1); Person p2 = Annotations.createPerson(jCas, 22, 27, JAMES_UC); p2.setReferent(rt2); corefCapAE.process(jCas); assertEquals(1, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rtt = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); Person p1t = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2t = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals(rtt, p1t.getReferent()); assertEquals(rtt, p2t.getReferent()); }
@Test public void testExistingReferentsNoMerge() throws Exception { AnalysisEngine corefCapAE = AnalysisEngineFactory.createEngine(CorefCapitalisationAndApostrophe.class); jCas.setDocumentText(TEXT); ReferenceTarget rt1 = Annotations.createReferenceTarget(jCas); ReferenceTarget rt2 = Annotations.createReferenceTarget(jCas); Person p1 = Annotations.createPerson(jCas, 0, 5, JAMES); p1.setReferent(rt1); Person p2 = Annotations.createPerson(jCas, 22, 27, JAMES_UC); p2.setReferent(rt2); corefCapAE.process(jCas); assertEquals(2, JCasUtil.select(jCas, ReferenceTarget.class).size()); ReferenceTarget rt1t = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 0); ReferenceTarget rt2t = JCasUtil.selectByIndex(jCas, ReferenceTarget.class, 1); Person p1t = JCasUtil.selectByIndex(jCas, Person.class, 0); Person p2t = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals(rt1t, p1t.getReferent()); assertEquals(rt2t, p2t.getReferent()); }
@Test public void testMultiplePersonNoReferences() throws Exception { jCas.setDocumentText( "Mr Simon Brown, was caught stealing sausages. Brown was found guilty. Mr Peter Brown was acquitted."); Person pSimon = new Person(jCas, 0, 14); pSimon.addToIndexes(); Person pPeter = new Person(jCas, 70, 84); pPeter.addToIndexes(); processJCas(); assertEquals(3, JCasUtil.select(jCas, Person.class).size()); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("Mr Simon Brown", p1.getCoveredText()); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 2); assertEquals("Mr Peter Brown", p2.getCoveredText()); Person p3 = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals("Brown", p3.getCoveredText()); assertNull(p3.getReferent()); }
@Test public void testMultiplePersonWithReferences() throws Exception { jCas.setDocumentText( "Mr Simon Brown, was caught stealing sausages. Brown was found guilty. Mr Peter Brown was acquitted."); Person pSimon = new Person(jCas, 0, 14); pSimon.setReferent(new ReferenceTarget(jCas)); pSimon.addToIndexes(); Person pPeter = new Person(jCas, 70, 84); pPeter.setReferent(new ReferenceTarget(jCas)); pPeter.addToIndexes(); processJCas(); assertEquals(3, JCasUtil.select(jCas, Person.class).size()); Person p1 = JCasUtil.selectByIndex(jCas, Person.class, 0); assertEquals("Mr Simon Brown", p1.getCoveredText()); Person p2 = JCasUtil.selectByIndex(jCas, Person.class, 2); assertEquals("Mr Peter Brown", p2.getCoveredText()); Person p3 = JCasUtil.selectByIndex(jCas, Person.class, 1); assertEquals("Brown", p3.getCoveredText()); assertNull(p3.getReferent()); }
public void assertPersonMatches() { final Person inPerson = JCasUtil.selectSingle(in, Person.class); final Person outPerson = JCasUtil.selectSingle(out, Person.class); assertEquals(inPerson.getGender(), outPerson.getGender()); assertEquals(inPerson.getBegin(), outPerson.getBegin()); assertEquals(inPerson.getEnd(), outPerson.getEnd()); assertEquals(inPerson.getValue(), outPerson.getValue()); assertEquals(0, inPerson.getConfidence(), outPerson.getConfidence()); // Check that person to entity is deferenced and its the same as the one we get... final ReferenceTarget inRt = JCasUtil.selectSingle(in, ReferenceTarget.class); final ReferenceTarget outRtFromJCas = JCasUtil.selectSingle(out, ReferenceTarget.class); final ReferenceTarget outRt = outPerson.getReferent(); assertNotNull(outRt); assertEquals(inRt.getBegin(), outRt.getBegin()); assertEquals(inRt.getEnd(), outRt.getEnd()); assertSame(outRt, outRtFromJCas); }