Skip to content

Create Annotator

Wahed Hemati edited this page Nov 12, 2020 · 2 revisions

Requierments

  1. Eclipse
  2. UIMA Eclipse Plugin

Create Projekt

  1. Open pom.xml of textimager-uima project
  2. Click on Create...
  3. Create project with nameconvention: textimager-uima-{PROJEKTNAME}, e.g. textimager-uima-marmot

Add requiered Dependencies

  1. Open pom.xml File of newly created project.
  2. Add the following dependency:
    <dependencies>
    ...
	<dependency>
		<groupId>org.hucompute.textimager.uima</groupId>
		<artifactId>textimager-uima-types</artifactId>
		<version>${project.version}</version>
	</dependency>
    ...
    </dependencies>

Create Annotator

A detailed documentation can be found at DKPro: https://dkpro.github.io/dkpro-core/releases/1.8.0/docs/developer-guide.html

When all dependencies have been loaded, add a package to src/main/java and name it org.hucompute.textimager.uima.{PROJECT NAME} Create a new class in this package and name it after the scheme: {PROJECTNAME}{TOOLNAME} The created class has to be extended with JCasAnnotator_ImplBase:

    import org.apache.uima.fit.component.JCasAnnotator_ImplBase;

And then extend the class

    public class ... extends JCasAnnotator_ImplBase

Override the process function

    @Override
    public void process(JCas  
            JCas) throws AnalysisEngineProcessException {
    }

The TypeCapability must be specified. This specifies the input the tool needs and the output it produces. An example from a POS Tagger.

    @TypeCapability(
        inputs = {
            "de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Token",
            "de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Sentence"
        },
        outputs = {
            "de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos.POS",
            "de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.pos.Lemma",
            "de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.morph.Morpheme"
        }
    )

Create Unittests

A unit test should be written for each annotator. Create a test class in the src/test/java folder, which imports the unit test classes:

    import static org.junit.Assert.*;
    import org.junit.Test;

The following shows a test method to test the output of a tokenizer.:

    @Test
    public void TokenizerDE() throws UIMAException{
        JCas cas = JCasFactory.createText("Das ist ein guter Test.", "de");
    
        AggregateBuilder builder = new AggregateBuilder();
        builder.add(createEngineDescription(OpenerProjectTokenizer.class));
        SimplePipeline.runPipeline(cas,builder.createAggregate());
    
        AssertAnnotations.assertToken(
            new String[]{"Das", "ist", "ein", "guter", "Test","."},
            JCasUtil.select(cas, Token.class)
        );    
    }

Resources by Language

Japanese

Korean

Romanian

Spanish

Turkish

Clone this wiki locally