public class GermanTaggerTest extends TestCase {
public void testTagger() throws IOException {
final GermanTagger tagger = new GermanTagger();
AnalyzedTokenReadings aToken = tagger.lookup("Haus");
assertEquals("Haus[Haus/SUB:AKK:SIN:NEU, Haus/SUB:DAT:SIN:NEU, Haus/SUB:NOM:SIN:NEU]", toSortedString(aToken));
assertEquals("Haus", aToken.getReadings().get(0).getLemma());
assertEquals("Haus", aToken.getReadings().get(1).getLemma());
assertEquals("Haus", aToken.getReadings().get(2).getLemma());
aToken = tagger.lookup("Hauses");
assertEquals("Hauses[Haus/SUB:GEN:SIN:NEU]", toSortedString(aToken));
assertEquals("Haus", aToken.getReadings().get(0).getLemma());
assertNull(tagger.lookup("hauses"));
assertNull(tagger.lookup("Groß"));
assertEquals("Lieblingsbuchstabe[Lieblingsbuchstabe/SUB:NOM:SIN:MAS]", toSortedString(tagger.lookup("Lieblingsbuchstabe")));
aToken = tagger.lookup("großer");
assertEquals("großer[groß/ADJ:DAT:SIN:FEM:GRU:SOL, groß/ADJ:GEN:PLU:FEM:GRU:SOL, groß/ADJ:GEN:PLU:MAS:GRU:SOL, " +
"groß/ADJ:GEN:PLU:NEU:GRU:SOL, groß/ADJ:GEN:SIN:FEM:GRU:SOL, groß/ADJ:NOM:SIN:MAS:GRU:IND, " +
"groß/ADJ:NOM:SIN:MAS:GRU:SOL]", toSortedString(tagger.lookup("großer")));
assertEquals("groß", aToken.getReadings().get(0).getLemma());
// from both german.dict and added.txt:
aToken = tagger.lookup("Interessen");
assertEquals("Interessen[Interesse/SUB:AKK:PLU:NEU, Interesse/SUB:DAT:PLU:NEU, " +
"Interesse/SUB:GEN:PLU:NEU, Interesse/SUB:NOM:PLU:NEU]",
toSortedString(aToken));
assertEquals("Interesse", aToken.getReadings().get(0).getLemma());
assertEquals("Interesse", aToken.getReadings().get(1).getLemma());
assertEquals("Interesse", aToken.getReadings().get(2).getLemma());
assertEquals("Interesse", aToken.getReadings().get(3).getLemma());
// words that are not in the dictionary but that are recognized thanks to noun splitting:
aToken = tagger.lookup("Donaudampfschiff");
assertEquals("Donaudampfschiff[Donaudampfschiff/SUB:AKK:SIN:NEU, Donaudampfschiff/SUB:DAT:SIN:NEU, " +
"Donaudampfschiff/SUB:NOM:SIN:NEU]", toSortedString(aToken));
assertEquals("Donaudampfschiff", aToken.getReadings().get(0).getLemma());
assertEquals("Donaudampfschiff", aToken.getReadings().get(1).getLemma());
aToken = tagger.lookup("Häuserkämpfe");
assertEquals("Häuserkämpfe[Häuserkampf/SUB:AKK:PLU:MAS, Häuserkampf/SUB:GEN:PLU:MAS, Häuserkampf/SUB:NOM:PLU:MAS]",
toSortedString(aToken));
assertEquals("Häuserkampf", aToken.getReadings().get(0).getLemma());
assertEquals("Häuserkampf", aToken.getReadings().get(1).getLemma());
assertEquals("Häuserkampf", aToken.getReadings().get(2).getLemma());
aToken = tagger.lookup("Häuserkampfes");
assertEquals("Häuserkampfes[Häuserkampf/SUB:GEN:SIN:MAS]", toSortedString(aToken));
assertEquals("Häuserkampf", aToken.getReadings().get(0).getLemma());
aToken = tagger.lookup("Häuserkampfs");
assertEquals("Häuserkampfs[Häuserkampf/SUB:GEN:SIN:MAS]", toSortedString(aToken));
assertEquals("Häuserkampf", aToken.getReadings().get(0).getLemma());
aToken = tagger.lookup("Lieblingsfarben");
assertEquals("Lieblingsfarben[Lieblingsfarbe/SUB:AKK:PLU:FEM, Lieblingsfarbe/SUB:DAT:PLU:FEM, " +
"Lieblingsfarbe/SUB:GEN:PLU:FEM, Lieblingsfarbe/SUB:NOM:PLU:FEM]", toSortedString(aToken));
assertEquals("Lieblingsfarbe", aToken.getReadings().get(0).getLemma());
aToken = tagger.lookup("Autolieblingsfarben");
assertEquals("Autolieblingsfarben[Autolieblingsfarbe/SUB:AKK:PLU:FEM, Autolieblingsfarbe/SUB:DAT:PLU:FEM, " +
"Autolieblingsfarbe/SUB:GEN:PLU:FEM, Autolieblingsfarbe/SUB:NOM:PLU:FEM]", toSortedString(aToken));
assertEquals("Autolieblingsfarbe", aToken.getReadings().get(0).getLemma());
aToken = tagger.lookup("übrigbleibst");
assertEquals("übrigbleibst[übrigbleiben/VER:2:SIN:PRÄ:NON:NEB]", toSortedString(aToken));
assertEquals("übrigbleiben", aToken.getReadings().get(0).getLemma());
}