DKPro Core - Normalizing a text with UmlautNormalizer

Analytics

Takes a text and checks for umlauts written as “ae”, “oe”, or “ue” and normalizes them if they really are umlauts.

@GrabResolver(name='ukp-oss-releases',
root='http://zoidberg.ukp.informatik.tu-darmstadt.de/artifactory/public-releases')

@Grab(group='de.tudarmstadt.ukp.dkpro.core', version='1.6.1',
module='de.tudarmstadt.ukp.dkpro.core.umlautnormalizer-asl')

@Grab(group='de.tudarmstadt.ukp.dkpro.core', version='1.6.1',
module='de.tudarmstadt.ukp.dkpro.core.opennlp-asl')

@Grab(group='de.tudarmstadt.ukp.dkpro.core', version='20121116.0',
module='de.tudarmstadt.ukp.dkpro.core.umlautnormalizer-model-normalizer-de-default')

import static org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription

import org.apache.uima.analysis_engine.AnalysisEngine
import org.apache.uima.fit.factory.AggregateBuilder
import org.apache.uima.jcas.JCas

import de.tudarmstadt.ukp.dkpro.core.api.metadata.type.DocumentMetaData
import de.tudarmstadt.ukp.dkpro.core.castransformation.ApplyChangesAnnotator
import de.tudarmstadt.ukp.dkpro.core.opennlp.OpenNlpSegmenter
import de.tudarmstadt.ukp.dkpro.core.umlautnormalizer.UmlautNormalizer


def builder = new AggregateBuilder()
builder.add(createEngineDescription(OpenNlpSegmenter))
builder.add(createEngineDescription(UmlautNormalizer))
builder.add(createEngineDescription(ApplyChangesAnnotator), "source",
"_InitialView", "target", "umlaut_cleaned")

def engine = builder.createAggregate()

def text = "Die Buechsenoeffner koennen oefter benuetzt werden. Neuerscheinungen muss " +
"der kaeufer kaufen. Schon zum Fruehstueck traf er auf den Maerchenerzaehler, " +
"den Uebergeek und den Ueberraschungeioeffner. Sein Oeuvre ist beeindruckend."
def jcas = engine.newJCas()
jcas.setDocumentText(text)
jcas.setDocumentLanguage("de")
DocumentMetaData.create(jcas)

engine.process(jcas)

def view = jcas.getView("umlaut_cleaned")
println view.getDocumentText()

Example output:

Jul 03, 2014 10:29:49 AM de.tudarmstadt.ukp.dkpro.core.api.resources.ResourceObjectProviderBase info
Information: :: loading settings :: url = jar:file:/usr/share/groovy/lib/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
Jul 03, 2014 10:29:49 AM de.tudarmstadt.ukp.dkpro.core.api.resources.ResourceObjectProviderBase loadResource
Information: Producing resource from jar:file:/home/santos/.ivy2/cache/de.tudarmstadt.ukp.dkpro.core/de.tudarmstadt.ukp.dkpro.core.opennlp-upstream-sentence-de-maxent/jars/de.tudarmstadt.ukp.dkpro.core.opennlp-upstream-sentence-de-maxent-20120616.jar!/de/tudarmstadt/ukp/dkpro/core/opennlp/lib/sentence-de-maxent.bin
Jul 03, 2014 10:29:49 AM de.tudarmstadt.ukp.dkpro.core.api.resources.ResourceObjectProviderBase info
Information: :: loading settings :: url = jar:file:/usr/share/groovy/lib/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
Jul 03, 2014 10:29:49 AM de.tudarmstadt.ukp.dkpro.core.api.resources.ResourceObjectProviderBase loadResource
Information: Producing resource from jar:file:/home/santos/.ivy2/cache/de.tudarmstadt.ukp.dkpro.core/de.tudarmstadt.ukp.dkpro.core.opennlp-upstream-token-de-maxent/jars/de.tudarmstadt.ukp.dkpro.core.opennlp-upstream-token-de-maxent-20120616.jar!/de/tudarmstadt/ukp/dkpro/core/opennlp/lib/token-de-maxent.bin
Buechsenoeffner - 0
Büchsenöffner - 1732
koennen - 831456
können - 97598630
oefter - 24194
öfter - 988405
benuetzt - 2058
benützt - 98690
Neuerscheinungen - 905024
Neürscheinungen - 0
kaeufer - 2344
käufer - 30327
Fruehstueck - 104788
Frühstück - 2249076
Maerchenerzaehler - 310
Märchenerzähler - 15785
Uebergeek - 0
Übergeek - 0
Ueberraschungeioeffner - 0
Überraschungeiöffner - 0
Oeuvre - 0
Öuvre - 0
Jul 03, 2014 10:29:50 AM de.tudarmstadt.ukp.dkpro.core.castransformation.ApplyChangesAnnotator applyChanges(81)
Information: Found 10 changes
Adding from [_InitialView] to [umlaut_cleaned] on [510065709]
Die Büchsenöffner können öfter benützt werden. Neuerscheinungen muss der käufer kaufen. Schon zum Frühstück traf er auf den Märchenerzähler, den Uebergeek und den Ueberraschungeioeffner. Sein Oeuvre ist beeindruckend.