Repository navigation
Create Annotator
- Open pom.xml of textimager-uima project
- Click on Create...
- Create project with nameconvention: textimager-uima-{PROJEKTNAME}, e.g. textimager-uima-marmot
- Open pom.xml File of newly created project.
- Add the following dependency:
<dependencies>
...
<dependency>
<groupId>org.hucompute.textimager.uima</groupId>
<artifactId>textimager-uima-types</artifactId>
<version>${project.version}</version>
</dependency>
...
</dependencies>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_ImplBaseOverride 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"
}
)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)
);
}Test