//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.annotators.grammatical;
import org.apache.uima.UIMAException;
import org.apache.uima.analysis_engine.AnalysisEngine;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
import org.apache.uima.fit.factory.AnalysisEngineFactory;
import org.apache.uima.fit.factory.ExternalResourceFactory;
import org.apache.uima.resource.ExternalResourceDescription;
import org.junit.Before;
import org.junit.Test;
import uk.gov.dstl.baleen.annotators.grammatical.TOLocationEntity;
import uk.gov.dstl.baleen.annotators.language.OpenNLP;
import uk.gov.dstl.baleen.annotators.testing.AbstractAnnotatorTest;
import uk.gov.dstl.baleen.annotators.testing.TestEntity;
import uk.gov.dstl.baleen.resources.SharedOpenNLPModel;
import uk.gov.dstl.baleen.types.semantic.Location;
/**
* Tests for {@link TOLocationEntity}.
*
*
*/
public class TOLocationEntityTest extends AbstractAnnotatorTest {
public TOLocationEntityTest() {
super(TOLocationEntity.class);
}
private AnalysisEngine languageAE;
@Before
public void before() throws UIMAException{
ExternalResourceDescription tokensDesc = ExternalResourceFactory.createExternalResourceDescription("tokens", SharedOpenNLPModel.class);
ExternalResourceDescription sentencesDesc = ExternalResourceFactory.createExternalResourceDescription("sentences", SharedOpenNLPModel.class);
ExternalResourceDescription posDesc = ExternalResourceFactory.createExternalResourceDescription("posTags", SharedOpenNLPModel.class);
ExternalResourceDescription chunksDesc = ExternalResourceFactory.createExternalResourceDescription("phraseChunks", SharedOpenNLPModel.class);
AnalysisEngineDescription desc = AnalysisEngineFactory.createEngineDescription(OpenNLP.class, "tokens", tokensDesc, "sentences", sentencesDesc, "posTags", posDesc, "phraseChunks", chunksDesc);
languageAE = AnalysisEngineFactory.createEngine(desc);
}
@Test
public void testSingleNNP() throws UIMAException {
jCas.setDocumentText("James went to London.");
process();
assertAnnotations(1, Location.class, new TestEntity<>(0, "London"));
}
@Test
public void testMultipleNNP() throws UIMAException {
jCas.setDocumentText("James went to East London.");
process();
assertAnnotations(1, Location.class, new TestEntity<>(0, "East London"));
}
@Test
public void testFollowingWords() throws UIMAException {
jCas.setDocumentText("James went to South London on the 13th of last month.");
process();
assertAnnotations(1, Location.class, new TestEntity<>(0, "South London"));
}
@Test
public void testEndOfSentence() throws UIMAException {
jCas.setDocumentText("James went to London");
process();
assertAnnotations(1, Location.class, new TestEntity<>(0, "London"));
}
@Test
public void testIncorrect() throws UIMAException {
jCas.setDocumentText("James sent a letter to Sam");
process();
assertAnnotations(0, Location.class);
}
private void process() throws UIMAException{
languageAE.process(jCas);
processJCas();
}
}