diff --git a/CMakeLists.txt b/CMakeLists.txt index 69b639f..c255e28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,16 +6,17 @@ set (Morfeusz_VERSION_MAJOR 2) set (Morfeusz_VERSION_MINOR 0) set (Morfeusz_VERSION_PATCH 0) set (Morfeusz_VERSION "${Morfeusz_VERSION_MAJOR}.${Morfeusz_VERSION_MINOR}.${Morfeusz_VERSION_PATCH}") -if (VERSION_SUFFIX) - set (Morfeusz_VERSION_TWEAK "${VERSION_SUFFIX}") +if (DEFAULT_DICT_NAME) + set (Morfeusz_VERSION_TWEAK "${DEFAULT_DICT_NAME}") set (Morfeusz_VERSION "${Morfeusz_VERSION}_${Morfeusz_VERSION_TWEAK}") endif () -set (CMAKE_BUILD_TYPE Debug) +set (CMAKE_BUILD_TYPE Release) #~ set (CMAKE_SKIP_RPATH ON) message ("Version=${Morfeusz_VERSION}") add_definitions (-DMORFEUSZ2_VERSION="${Morfeusz_VERSION}") +add_definitions (-DDEFAULT_DICT_NAME="${DEFAULT_DICT_NAME}") add_definitions (-DBUILDING_MORFEUSZ) if (NOT CMAKE_CROSSCOMPILING AND NOT SKIP_TESTING) @@ -34,7 +35,8 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "") elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set (ARCHITECTURE "amd64") else () - message (FATAL_ERROR "Invalid architecture: ${CMAKE_SYSTEM_PROCESSOR}") + set (ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}") +# message (FATAL_ERROR "Invalid architecture: ${CMAKE_SYSTEM_PROCESSOR}") endif () # PROJECT_VERSION @@ -157,11 +159,6 @@ include (CPack) ##### END initialize some vars ##### file (COPY fsabuilder doTest.sh testJavaWrapper.sh testPythonWrapper.sh morfeusz/wrappers/python/test.py DESTINATION .) -#~ configure_file ( - #~ "${PROJECT_SOURCE_DIR}/morfeusz/morfeusz2_version.h.in" - #~ "${PROJECT_BINARY_DIR}/morfeusz2_version.h" -#~ ) -#~ include_directories("${PROJECT_BINARY_DIR}" ) ###### add main sources ######## add_subdirectory (morfeusz) @@ -175,6 +172,12 @@ macro (test_analyzer analyzerDir) add_test(TestAnalyzer_${dirname} ./doTest.sh morfeusz analyzer ${analyzerDir}) endmacro() +macro (test_generator generatorDir) + message ("adding test dir ${generatorDir}") + get_filename_component (dirname ${generatorTestDir} NAME) + add_test(TestGenerator_${dirname} ./doTest.sh morfeusz generator ${generatorDir}) +endmacro() + file (GLOB analyzerTestDirs "tests/analyzer/*") if (UNIX) foreach (analyzerTestDir ${analyzerTestDirs}) @@ -182,6 +185,13 @@ if (UNIX) endforeach() endif() +file (GLOB generatorTestDirs "tests/generator/*") +if (UNIX) + foreach (generatorTestDir ${generatorTestDirs}) + test_generator(${generatorTestDir}) + endforeach() +endif() + if (UNIX) add_test(TestJavaWrapper ./testJavaWrapper.sh "${CMAKE_CURRENT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}") add_test(TestPythonWrapper ./testPythonWrapper.sh "${PROJECT_BINARY_DIR}") diff --git a/buildAll.sh b/buildAll.sh index 6fc5ab9..b0344d2 100755 --- a/buildAll.sh +++ b/buildAll.sh @@ -3,36 +3,30 @@ set -e -o pipefail if [ "$#" -ne 3 ]; then - echo "Must provide exactly 3 arguments: <CROSSMORFEUSZ_ROOT> <INPUT_DICTIONARIES> <VERSION_SUFFIX>" + echo "Must provide exactly 3 arguments: <CROSSMORFEUSZ_ROOT> <INPUT_DICTIONARIES> <DEFAULT_DICT_NAME>" exit 1 fi export CROSSMORFEUSZ_ROOT="$1" export INPUT_DICTIONARIES="$2" -export VERSION_SUFFIX="$3" +export DEFAULT_DICT_NAME="$3" export ANALYZER_DICTIONARY_CPP=`mktemp`.cpp export GENERATOR_DICTIONARY_CPP=`mktemp`.cpp +export DICT_DIR=`mktemp -d` function buildDictionaries { - INPUT_TAGSET=input/sgjp-morfeusz.tagset + INPUT_TAGSET=input/morfeusz-sgjp.tagset SEGMENT_RULES_FILE=input/segmenty.dat python fsabuilder/morfeusz_builder \ - --analyzer \ --input-files="$INPUT_DICTIONARIES" \ --tagset-file="$INPUT_TAGSET" \ --segments-file="$SEGMENT_RULES_FILE" \ - --cpp --serialization-method=V1 \ - -o "$ANALYZER_DICTIONARY_CPP" - - python fsabuilder/morfeusz_builder \ - --generator \ - --input-files="$INPUT_DICTIONARIES" \ - --tagset-file="$INPUT_TAGSET" \ - --segments-file="$SEGMENT_RULES_FILE" \ - --cpp --serialization-method=V1 \ - -o "$GENERATOR_DICTIONARY_CPP" + --analyzer-cpp="$ANALYZER_DICTIONARY_CPP" \ + --generator-cpp="$GENERATOR_DICTIONARY_CPP" \ + --dict="$DEFAULT_DICT_NAME" \ + --dict-dir="$DICT_DIR" echo "DONE building dictionaries" >&2 } @@ -62,7 +56,7 @@ function build { -D TARGET_DIR=$targetDir \ -D ANALYZER_DICTIONARY_CPP=$ANALYZER_DICTIONARY_CPP \ -D GENERATOR_DICTIONARY_CPP=$GENERATOR_DICTIONARY_CPP \ - -D VERSION_SUFFIX=$VERSION_SUFFIX \ + -D DEFAULT_DICT_NAME=$DEFAULT_DICT_NAME \ -D SKIP_DICTIONARY_BUILDING=1 \ $srcDir 2>&1 echo "building $toolchain" >&2 @@ -97,6 +91,6 @@ buildDictionaries 2>&1 | log All all echo "build Windows amd64 package package-java 2>&1 | log Windows amd64" echo "build Windows i386 package package-java 2>&1 | log Windows i386" echo "build Darwin amd64 package package-java 2>&1 | log Darwin amd64" -} | xargs -n1 -P3 -d$'\n' bash -c +} | xargs -n1 -P2 -d$'\n' bash -c diff --git a/fsabuilder/morfeusz_builder b/fsabuilder/morfeusz_builder index d6f40d6..9c6be2e 100644 --- a/fsabuilder/morfeusz_builder +++ b/fsabuilder/morfeusz_builder @@ -15,6 +15,7 @@ from morfeuszbuilder.fsa.fsa import FSA from morfeuszbuilder.fsa.serializer import Serializer, SerializationMethod from morfeuszbuilder.tagset.tagset import Tagset from morfeuszbuilder.segrules import rulesParser +from morfeuszbuilder.utils import exceptions, limits from optparse import OptionParser def _checkOption(opt, parser, msg): @@ -168,7 +169,6 @@ def _parseOptions(): return opts def _concatFiles(inputFiles): -# return open(inputFiles[0], 'r') for inputFile in inputFiles: if inputFile: with open(inputFile, 'r') as f: @@ -178,14 +178,31 @@ def _concatFiles(inputFiles): else: logging.warn(u'Ignoring line: "%s" - contains space in text form or lemma' % line.strip().decode('utf8')) -def _readPolimorfInput4Analyzer(inputFiles, tagset, encoder, segmentRulesManager): +def _readNamesAndQualifiers(inputFiles): + names = set([u'']) + qualifiers = set([tuple(frozenset([u'']))]) + for line in _concatFiles(inputFiles): + line = line.strip().decode('utf8') + if line: + _, _, _, name, qualifier = convertinput.parseLine(line) + names.add(name) + qualifiers.add(tuple(sorted(qualifier.split(u'|')))) + namesMap = dict([(name, idx) for idx, name in enumerate(sorted(list(names)))]) + qualifiersMap = dict([(frozenset(quals), idx) for idx, quals in enumerate(sorted(list(qualifiers)))]) + exceptions.validate( + len(qualifiersMap) <= limits.MAX_QUALIFIERS_COMBINATIONS, + u'Too many qualifiers combinations. The limit is %d' % limits.MAX_QUALIFIERS_COMBINATIONS) + + return namesMap, qualifiersMap + +def _readPolimorfInput4Analyzer(inputFiles, tagset, namesMap, qualifiersMap, encoder, segmentRulesManager): logging.info('reading analyzer data from %s', str(inputFiles)) - for entry in convertinput.PolimorfConverter4Analyzer(tagset, encoder, 'utf8', segmentRulesManager).convert(_concatFiles(inputFiles)): + for entry in convertinput.PolimorfConverter4Analyzer(tagset, namesMap, qualifiersMap, encoder, 'utf8', segmentRulesManager).convert(_concatFiles(inputFiles)): yield entry -def _readPolimorfInput4Generator(inputFiles, tagset, encoder, segmentRulesManager): +def _readPolimorfInput4Generator(inputFiles, tagset, namesMap, qualifiersMap, encoder, segmentRulesManager): logging.info('reading generator data from %s', str(inputFiles)) - for entry in convertinput.PolimorfConverter4Generator(tagset, encoder, 'utf8', segmentRulesManager).convert(_concatFiles(inputFiles)): + for entry in convertinput.PolimorfConverter4Generator(tagset, namesMap, qualifiersMap, encoder, 'utf8', segmentRulesManager).convert(_concatFiles(inputFiles)): yield entry def _readTrainData(trainFile): @@ -210,10 +227,10 @@ def _printStats(fsa): logging.info('sink states num: '+str(sinkNum)) logging.info('array states num: '+str(arrayNum)) -def buildAnalyzerFromPoliMorf(inputFiles, tagset, segmentRulesManager): +def buildAnalyzerFromPoliMorf(inputFiles, tagset, namesMap, qualifiersMap, segmentRulesManager): encoder = encode.MorphEncoder() fsa = FSA(encoder, tagset) - for word, data in _readPolimorfInput4Analyzer(inputFiles, tagset, encoder, segmentRulesManager): + for word, data in _readPolimorfInput4Analyzer(inputFiles, tagset, namesMap, qualifiersMap, encoder, segmentRulesManager): # print word, data fsa.addEntry(word, data) del word @@ -223,12 +240,12 @@ def buildAnalyzerFromPoliMorf(inputFiles, tagset, segmentRulesManager): logging.info('Analyzer FSA stats:') logging.info('------') _printStats(fsa) - return fsa, encoder.qualifiersMap + return fsa -def buildGeneratorFromPoliMorf(inputFiles, tagset, segmentRulesManager): +def buildGeneratorFromPoliMorf(inputFiles, tagset, namesMap, qualifiersMap, segmentRulesManager): encoder = encode.Encoder4Generator() fsa = FSA(encoder, tagset) - inputData = _readPolimorfInput4Generator(inputFiles, tagset, encoder, segmentRulesManager) + inputData = _readPolimorfInput4Generator(inputFiles, tagset, namesMap, qualifiersMap, encoder, segmentRulesManager) for word, data in inputData: fsa.addEntry(word, data) fsa.close() @@ -236,21 +253,32 @@ def buildGeneratorFromPoliMorf(inputFiles, tagset, segmentRulesManager): logging.info('Generator FSA stats:') logging.info('------') _printStats(fsa) - return fsa, encoder.qualifiersMap + return fsa -def _doBuildDictionaryPart(opts, isGenerator): - tagset = Tagset(opts.tagsetFile) +def _doBuildDictionaryPart(opts, tagset, namesMap, qualifiersMap, isGenerator): + + logging.info('reading segmentation rules') rulesParserVersion = rulesParser.RulesParser.PARSE4ANALYZER if not isGenerator else rulesParser.RulesParser.PARSE4GENERATOR segmentRulesManager = rulesParser.RulesParser(tagset, rulesParserVersion).parse(opts.segmentsFile) - fsa, qualifiersMap = buildAnalyzerFromPoliMorf(opts.inputFiles, tagset, segmentRulesManager) segmentationRulesData = segmentRulesManager.serialize() + logging.info('done reading segmentation rules') + + logging.info('building automaton') + buildFunction = buildAnalyzerFromPoliMorf if not isGenerator else buildGeneratorFromPoliMorf + fsa = buildFunction(opts.inputFiles, tagset, namesMap, qualifiersMap, segmentRulesManager) + logging.info('done building automaton') - if opts.analyzerTrainFile: - logging.info('training with '+opts.analyzerTrainFile+' ...') + if not isGenerator and opts.analyzerTrainFile: + logging.info('training analyzer automaton with '+opts.analyzerTrainFile+' ...') fsa.train(_readTrainData(opts.analyzerTrainFile)) logging.info('done training') - serializer = Serializer.getSerializer(opts.serializationMethod, fsa, tagset, qualifiersMap, segmentationRulesData) + if isGenerator and opts.generatorTrainFile: + logging.info('training generator automaton with '+opts.generatorTrainFile+' ...') + fsa.train(_readTrainData(opts.analyzerTrainFile)) + logging.info('done training') + + serializer = Serializer.getSerializer(opts.serializationMethod, fsa, tagset, namesMap, qualifiersMap, segmentationRulesData) if opts.generatorCpp and isGenerator: serializer.serialize2CppFile(opts.generatorCpp, isGenerator=isGenerator) if opts.analyzerCpp and not isGenerator: @@ -267,14 +295,19 @@ def main(opts): else: logging.basicConfig(level=logging.INFO) - logging.info('reading tagset from %s', opts.tagsetFile) + logging.info('reading tagset') tagset = Tagset(opts.tagsetFile) + logging.info('done reading tagset') + + logging.info('reading names and qualifiers') + namesMap, qualifiersMap = _readNamesAndQualifiers(opts.inputFiles) + logging.info('done reading names and qualifiers') if not opts.onlyGenerator: - _doBuildDictionaryPart(opts, isGenerator=False) + _doBuildDictionaryPart(opts, tagset, namesMap, qualifiersMap, isGenerator=False) - if not opts.onlyGenerator: - _doBuildDictionaryPart(opts, isGenerator=True) + if not opts.onlyAnalyzer: + _doBuildDictionaryPart(opts, tagset, namesMap, qualifiersMap, isGenerator=True) if __name__ == '__main__': import os diff --git a/fsabuilder/morfeuszbuilder/fsa/convertinput.py b/fsabuilder/morfeuszbuilder/fsa/convertinput.py index 701e544..43cfdb2 100644 --- a/fsabuilder/morfeuszbuilder/fsa/convertinput.py +++ b/fsabuilder/morfeuszbuilder/fsa/convertinput.py @@ -27,7 +27,7 @@ def _mergeEntries(inputLines, lowercase): if prevInterps: yield (prevKey, frozenset(prevInterps)) -def _parseLine(line): +def parseLine(line): splitLine = line.strip().split(u'\t') if len(splitLine) == 5: orth, base, tag, name, qualifier = splitLine @@ -44,8 +44,10 @@ def _parseLine(line): class PolimorfConverter4Analyzer(object): - def __init__(self, tagset, encoder, inputEncoding, segmentRulesManager): + def __init__(self, tagset, namesMap, qualifiersMap, encoder, inputEncoding, segmentRulesManager): self.tagset = tagset + self.namesMap = namesMap + self.qualifiersMap = qualifiersMap self.encoder = encoder self.inputEncoding = inputEncoding self.segmentRulesManager = segmentRulesManager @@ -55,18 +57,21 @@ class PolimorfConverter4Analyzer(object): for line in inputLines: line = line.decode(self.inputEncoding).strip('\n') if line: - orth, base, tag, name, qualifier = _parseLine(line) + orth, base, tag, name, qualifier = parseLine(line) tagnum = self.tagset.getTagnum4Tag(tag) - namenum = self.tagset.getNamenum4Name(name) + namenum = self.namesMap[name] typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum) + qualifiers = qualifier.split('|') if qualifier else frozenset([u'']) + qualsnum = self.qualifiersMap[frozenset(qualifiers)] yield '\t'.join(( orth.encode(self.inputEncoding), base.encode(self.inputEncoding), str(tagnum), str(namenum), str(typenum), - qualifier.encode(self.inputEncoding))) + str(qualsnum))) + #~ qualifier.encode(self.inputEncoding))) # input lines are encoded and partially parsed def _sortLines(self, inputLines): @@ -77,20 +82,23 @@ class PolimorfConverter4Analyzer(object): for line in inputLines: line = line.decode(self.inputEncoding).strip(u'\n') if line: - orth, base, tagnum, namenum, typenum, qualifierStr = line.split(u'\t') + orth, base, tagnum, namenum, typenum, qualsnum = line.split(u'\t') tagnum = int(tagnum) namenum = int(namenum) typenum = int(typenum) - qualifiers = qualifierStr.split('|') if qualifierStr else [] - yield (orth, Interpretation4Analyzer(orth, base, tagnum, namenum, typenum, qualifiers)) + #~ qualifiers = qualifierStr.split('|') if qualifierStr else [] + qualsnum = int(qualsnum) + yield (orth, Interpretation4Analyzer(orth, base, tagnum, namenum, typenum, qualsnum)) def convert(self, inputLines): return _mergeEntries(self._reallyParseLines(self._sortLines(self._partiallyParseLines(inputLines))), lowercase=True) class PolimorfConverter4Generator(object): - def __init__(self, tagset, encoder, inputEncoding, segmentRulesManager): + def __init__(self, tagset, namesMap, qualifiersMap, encoder, inputEncoding, segmentRulesManager): self.tagset = tagset + self.namesMap = namesMap + self.qualifiersMap = qualifiersMap self.encoder = encoder self.inputEncoding = inputEncoding self.segmentRulesManager = segmentRulesManager @@ -100,7 +108,7 @@ class PolimorfConverter4Generator(object): for line in inputLines: line = line.decode(self.inputEncoding).strip('\n') if line: - orth, base, tag, name, qualifier = _parseLine(line) + orth, base, tag, name, qualifier = parseLine(line) if base: homonymId = u'' if u':' in base: @@ -108,7 +116,9 @@ class PolimorfConverter4Generator(object): if assumedBase != u'' and assumedHomonymId != u'' and assumedHomonymId.isalnum(): base, homonymId = assumedBase, assumedHomonymId tagnum = self.tagset.getTagnum4Tag(tag) - namenum = self.tagset.getNamenum4Name(name) + namenum = self.namesMap[name] + qualifiers = qualifier.split('|') if qualifier else frozenset([u'']) + qualsnum = self.qualifiersMap[frozenset(qualifiers)] typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum) #~ print '\t'.join(( @@ -126,7 +136,7 @@ class PolimorfConverter4Generator(object): str(namenum), str(typenum), homonymId.encode(self.inputEncoding), - qualifier.encode(self.inputEncoding))) + str(qualsnum))) else: logging.warn('Ignoring line: "%s" - contains empty lemma', line.strip()) @@ -139,15 +149,16 @@ class PolimorfConverter4Generator(object): for line in inputLines: line = line.decode(self.inputEncoding).strip(u'\n') if line and line != prevLine: - orth, base, tagnum, namenum, typenum, homonymId, qualifierStr = line.split(u'\t') + orth, base, tagnum, namenum, typenum, homonymId, qualsnum = line.split(u'\t') # print orth.encode('utf8'), base.encode('utf8'), homonymId tagnum = int(tagnum) namenum = int(namenum) typenum = int(typenum) del prevLine prevLine = line - qualifiers = qualifierStr.split('|') if qualifierStr else () - yield (base, Interpretation4Generator(orth, base, tagnum, namenum, typenum, homonymId, qualifiers)) + qualsnum = int(qualsnum) + #~ qualifiers = qualifierStr.split('|') if qualifierStr else () + yield (base, Interpretation4Generator(orth, base, tagnum, namenum, typenum, homonymId, qualsnum)) def convert(self, inputLines): return _mergeEntries(self._reallyParseLines(self._sortLines(self._partiallyParseLines(inputLines))), lowercase=False) diff --git a/fsabuilder/morfeuszbuilder/fsa/encode.py b/fsabuilder/morfeuszbuilder/fsa/encode.py index 430ab37..86b634c 100644 --- a/fsabuilder/morfeuszbuilder/fsa/encode.py +++ b/fsabuilder/morfeuszbuilder/fsa/encode.py @@ -21,7 +21,7 @@ class Encoder(object): ''' self.lowercase = lowercase self.encoding = encoding - self.qualifiersMap = { frozenset(): 0} + #~ self.qualifiersMap = { frozenset(): 0} def encodeWord(self, word, lowercase=True): assert type(word) == unicode @@ -47,19 +47,20 @@ class Encoder(object): u'Too many segment types. The limit is %d' % limits.MAX_SEGMENT_TYPES) return bytearray([typenum]) - def _encodeQualifiers(self, qualifiers): - res = bytearray() - key = frozenset(qualifiers) - if key in self.qualifiersMap: - n = self.qualifiersMap[key] - else: - n = len(self.qualifiersMap) - self.qualifiersMap[key] = n - exceptions.validate( - n <= limits.MAX_QUALIFIERS_COMBINATIONS, - u'Too many qualifiers combinations. The limit is %d' % limits.MAX_QUALIFIERS_COMBINATIONS) - res.extend(htons(n)) - return res + #~ def _encodeQualifiers(self, qualifiers): + #~ res = bytearray() + #~ key = frozenset(qualifiers) + #~ if key in self.qualifiersMap: + #~ exceptions.validate(key in self.qualifiersMap, u'Unknown qualifiers: %s' % qualifiers) + #~ n = self.qualifiersMap[key] + #~ else: + #~ n = len(self.qualifiersMap) + #~ self.qualifiersMap[key] = n + #~ exceptions.validate( + #~ n <= limits.MAX_QUALIFIERS_COMBINATIONS, + #~ u'Too many qualifiers combinations. The limit is %d' % limits.MAX_QUALIFIERS_COMBINATIONS) + #~ res.extend(htons(n)) + #~ return res def _hasUpperPrefix(self, casePattern): for i in range(len(casePattern) + 1): @@ -213,7 +214,7 @@ class MorphEncoder(Encoder): encodedInterpsList.extend(self._encodeCasePattern(interp.encodedForm.casePattern)) encodedInterpsList.extend(htons(interp.tagnum)) encodedInterpsList.append(interp.namenum) - encodedInterpsList.extend(self._encodeQualifiers(interp.qualifiers)) + encodedInterpsList.extend(htons(interp.qualifiers)) res.extend(htons(len(encodedInterpsList))) res.extend(encodedInterpsList) @@ -238,7 +239,7 @@ class Encoder4Generator(Encoder): encodedInterpsList.extend(serializeString(interp.encodedForm.suffixToAdd)) encodedInterpsList.extend(htons(interp.tagnum)) encodedInterpsList.append(interp.namenum) - encodedInterpsList.extend(self._encodeQualifiers(interp.qualifiers)) + encodedInterpsList.extend(htons(interp.qualifiers)) res.extend(htons(len(encodedInterpsList))) res.extend(encodedInterpsList) diff --git a/fsabuilder/morfeuszbuilder/fsa/serializer.py b/fsabuilder/morfeuszbuilder/fsa/serializer.py index fdc689b..32a8fbe 100644 --- a/fsabuilder/morfeuszbuilder/fsa/serializer.py +++ b/fsabuilder/morfeuszbuilder/fsa/serializer.py @@ -21,17 +21,19 @@ class Serializer(object): def __init__(self, fsa): self._fsa = fsa self.tagset = None + self.namesMap = None self.qualifiersMap = None self.segmentationRulesData = None @staticmethod - def getSerializer(serializationMethod, fsa, tagset, qualifiersMap, segmentationRulesData): + def getSerializer(serializationMethod, fsa, tagset, namesMap, qualifiersMap, segmentationRulesData): res = { SerializationMethod.SIMPLE: SimpleSerializer, SerializationMethod.V1: VLengthSerializer1, SerializationMethod.V2: VLengthSerializer2, }[serializationMethod](fsa) res.tagset = tagset + res.namesMap = namesMap res.qualifiersMap = qualifiersMap res.segmentationRulesData = segmentationRulesData return res @@ -77,8 +79,10 @@ class Serializer(object): raise NotImplementedError('Not implemented') def fsa2bytearray(self, isGenerator): - tagsetData = self.serializeTagset(self.tagset) + tagsetData = self._serializeTags(self.tagset.tag2tagnum) + tagsetData.extend(self._serializeTags(self.namesMap)) qualifiersData = self.serializeQualifiersMap() + #~ qualifiersData = self._serializeTags(self.qualifiersMap) segmentationRulesData = self.segmentationRulesData res = bytearray() res.extend(self.serializePrologue()) @@ -103,24 +107,26 @@ class Serializer(object): return res # serialize tagset data - def serializeTagset(self, tagset): - res = bytearray() - if tagset: - res.extend(self._serializeTags(tagset._tag2tagnum)) - res.extend(self._serializeTags(tagset._name2namenum)) - return res + #~ def serializeTagset(self, tagset): + #~ res = bytearray() + #~ if tagset: + #~ res.extend(self._serializeTags(tagset._tag2tagnum)) + #~ res.extend(self._serializeTags(tagset._name2namenum)) + #~ return res def serializeQualifiersMap(self): - res = bytearray() - res.extend(htons(len(self.qualifiersMap))) label2labelId = dict([ (u'|'.join(qualifiers), n) for qualifiers, n in sorted(self.qualifiersMap.iteritems(), key=lambda (qs, n): n) ]) - res.extend(self._serializeTags(label2labelId)) + return self._serializeTags(label2labelId) + #~ res = bytearray() + #~ res.extend(htons(len(self.qualifiersMap))) + #~ label2labelId = dict([ (u'|'.join(qualifiers), n) for qualifiers, n in sorted(self.qualifiersMap.iteritems(), key=lambda (qs, n): n) ]) + #~ res.extend(self._serializeTags(label2labelId)) #~ for qualifiers, n in sorted(self.qualifiersMap.iteritems(), key=lambda (qs, n): n): #~ res.append(len(qualifiers)) #~ for q in qualifiers: #~ res.extend(q.encode('utf8')) #~ res.append(0) - return res + #~ return res def serializePrologue(self): res = bytearray() diff --git a/fsabuilder/morfeuszbuilder/tagset/tagset.py b/fsabuilder/morfeuszbuilder/tagset/tagset.py index e251dad..bda1505 100644 --- a/fsabuilder/morfeuszbuilder/tagset/tagset.py +++ b/fsabuilder/morfeuszbuilder/tagset/tagset.py @@ -14,26 +14,27 @@ class Tagset(object): SEP = '\t' def __init__(self, filename=None, encoding='utf8'): - self._tag2tagnum = {} - self._name2namenum = {} + self.tag2tagnum = {} + #~ self._name2namenum = {} if filename: self._doInit(filename, encoding) - self._tagnum2tag = dict(map(lambda (k, v): (v, k), self._tag2tagnum.iteritems())) + self._tagnum2tag = dict(map(lambda (k, v): (v, k), self.tag2tagnum.iteritems())) def _doInit(self, filename, encoding): - addingTo = None + insideTags = False with codecs.open(filename, 'r', encoding) as f: for linenum, line in enumerate(f, start=1): line = line.strip('\n\r') if line == u'[TAGS]': - addingTo = Tagset.TAGS - elif line == u'[NAMES]': - addingTo = Tagset.NAMES + insideTags = True + #~ elif line == u'[NAMES]': + #~ addingTo = Tagset.NAMES elif line and not line.startswith(u'#'): - if not addingTo in [Tagset.TAGS, Tagset.NAMES]: + if not insideTags: raise FSABuilderException('"%s" - text outside [TAGS] section in tagset file line %d' % (line, linenum)) - res = {Tagset.TAGS: self._tag2tagnum, - Tagset.NAMES: self._name2namenum}[addingTo] + res = self.tag2tagnum + if len(line.split(Tagset.SEP)) != 2: + raise FSABuilderException('"%s" - invalid line %d' % (line, linenum)) tagNum = line.split(Tagset.SEP)[0] tag = line.split(Tagset.SEP)[1] if tag in res: @@ -41,19 +42,13 @@ class Tagset(object): res[tag] = int(tagNum) def getAllTags(self): - return self._tag2tagnum.keys() + return self.tag2tagnum.keys() def getTagnum4Tag(self, tag): - if tag in self._tag2tagnum: - return self._tag2tagnum[tag] + if tag in self.tag2tagnum: + return self.tag2tagnum[tag] else: raise FSABuilderException('invalid tag: "%s"' % tag) - def getNamenum4Name(self, name): - if name in self._name2namenum: - return self._name2namenum[name] - else: - raise FSABuilderException('invalid name type: "%s"' % name) - def getTag4Tagnum(self, tagnum): return self._tagnum2tag[tagnum] diff --git a/initializeAnalyzerTest.sh b/initializeAnalyzerTest.sh index 8f59731..3528497 100755 --- a/initializeAnalyzerTest.sh +++ b/initializeAnalyzerTest.sh @@ -6,14 +6,15 @@ DIR=$1 shift ARGS=`cat $DIR/ARGS` -DICT_FILE=`mktemp` +DICT_DIR=`mktemp -d` +DICT=test python fsabuilder/morfeusz_builder \ - --analyzer \ + --only-analyzer \ --input-files $DIR/dictionary.tab \ - -o $DICT_FILE \ + --dict-dir=$DICT_DIR \ + --dict=$DICT \ --tagset-file=$DIR/tagset.dat \ - --segments-file=$DIR/segmentation.dat \ - --serialization-method=V1 + --segments-file=$DIR/segmentation.dat -build/morfeusz/morfeusz_analyzer -i $DICT_FILE $ARGS < $DIR/input.txt > $DIR/output.txt +build/morfeusz/morfeusz_analyzer --dict $DICT --dict-dir $DICT_DIR $ARGS < $DIR/input.txt > $DIR/output.txt diff --git a/initializeGeneratorTest.sh b/initializeGeneratorTest.sh new file mode 100755 index 0000000..f6d05f3 --- /dev/null +++ b/initializeGeneratorTest.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -exo pipefail + +DIR=$1 +shift +ARGS=`cat $DIR/ARGS` + +DICT_DIR=`mktemp -d` +DICT=test + +python fsabuilder/morfeusz_builder \ + --only-generator \ + --input-files $DIR/dictionary.tab \ + --dict-dir=$DICT_DIR \ + --dict=$DICT \ + --tagset-file=$DIR/tagset.dat \ + --segments-file=$DIR/segmentation.dat + +build/morfeusz/morfeusz_generator --dict $DICT --dict-dir $DICT_DIR $ARGS < $DIR/input.txt > $DIR/output.txt diff --git a/input/morfeusz-sgjp.tagset b/input/morfeusz-sgjp.tagset index ec020fa..9135c8b 100644 --- a/input/morfeusz-sgjp.tagset +++ b/input/morfeusz-sgjp.tagset @@ -772,31 +772,3 @@ # (special) 236 naj 237 nie - -[NAMES] -0 -1 astr. -2 budowla -3 członek rodu -4 człon nazwiska -5 człon nazwiska (herb) -6 człon nazwy firmy -7 firma -8 geograficzna -9 imię -10 instytucja -11 język programowania -12 krój pisma -13 marka -14 nazwisko -15 oprogramowanie -16 organizacja -17 patronimicum -18 pospolita -19 przydomek -20 pseudonim -21 sufiks nazwiska -22 środek lokomocji -23 święto -24 tytuł -25 własna diff --git a/morfeusz/DictionariesRepository.cpp b/morfeusz/DictionariesRepository.cpp index 628b6d5..d113c1c 100644 --- a/morfeusz/DictionariesRepository.cpp +++ b/morfeusz/DictionariesRepository.cpp @@ -6,6 +6,7 @@ */ #include <fstream> +#include "morfeusz2.h" #include "DictionariesRepository.hpp" #include "data/default_fsa.hpp" #include "const.hpp" @@ -40,7 +41,7 @@ namespace morfeusz { DictionariesRepository::RepositoryEntry defaultEntry; defaultEntry.analyzerDictionary = new Dictionary(DEFAULT_FSA, ANALYZER); defaultEntry.generatorDictionary = new Dictionary(DEFAULT_SYNTH_FSA, GENERATOR); - res[string()] = defaultEntry; + res[Morfeusz::getDefaultDictName()] = defaultEntry; return res; } @@ -49,8 +50,7 @@ namespace morfeusz { } const Dictionary* DictionariesRepository::getDefaultDictionary(MorfeuszProcessorType processorType) { - static string emptyString; - return this->getDictionary(emptyString, processorType); + return this->getDictionary(Morfeusz::getDefaultDictName(), processorType); } Dictionary* DictionariesRepository::RepositoryEntry::getDictionary(MorfeuszProcessorType processorType) const { diff --git a/morfeusz/Dictionary.cpp b/morfeusz/Dictionary.cpp index f05ad71..c9a66b3 100644 --- a/morfeusz/Dictionary.cpp +++ b/morfeusz/Dictionary.cpp @@ -42,4 +42,12 @@ namespace morfeusz { availableAgglOptions(getAvailableOptions(segrulesFSAsMap, "aggl")), availablePraetOptions(getAvailableOptions(segrulesFSAsMap, "praet")) { } + + bool Dictionary::isCompatibleWith(const Dictionary& other) const { + return this->idResolver.isCompatibleWith(other.idResolver) + && this->availableAgglOptions == other.availableAgglOptions + && this->availablePraetOptions == other.availablePraetOptions + && this->defaultSegrulesOptions == other.defaultSegrulesOptions + && this->separatorsList == other.separatorsList; + } } diff --git a/morfeusz/Dictionary.hpp b/morfeusz/Dictionary.hpp index 1550d37..613b185 100644 --- a/morfeusz/Dictionary.hpp +++ b/morfeusz/Dictionary.hpp @@ -25,6 +25,8 @@ namespace morfeusz { struct Dictionary { Dictionary(const unsigned char* ptr, MorfeuszProcessorType processorType); + bool isCompatibleWith(const Dictionary& other) const; + FSAType* fsa; IdResolverImpl idResolver; std::vector<uint32_t> separatorsList; diff --git a/morfeusz/Environment.cpp b/morfeusz/Environment.cpp index cc4d403..25823b8 100644 --- a/morfeusz/Environment.cpp +++ b/morfeusz/Environment.cpp @@ -38,8 +38,9 @@ namespace morfeusz { fsasMap.clear(); } - Environment::Environment(MorfeuszProcessorType processorType) - : currentCharsetConverter(getCharsetConverter(DEFAULT_MORFEUSZ_CHARSET)), + Environment::Environment(MorfeuszProcessorType processorType, bool usable) + : usable(usable), + currentCharsetConverter(getCharsetConverter(DEFAULT_MORFEUSZ_CHARSET)), caseConverter(), dictionary(DictionariesRepository::instance.getDefaultDictionary(processorType)), idResolver(dictionary->idResolver), @@ -169,11 +170,11 @@ namespace morfeusz { } bool Environment::isUsable() const { - return this->dictionary != NULL; + return usable; } - void Environment::setDictionary(const std::string& dictName) { - this->dictionary = DictionariesRepository::instance.getDictionary(dictName, this->processorType); + void Environment::setDictionary(const Dictionary* dict) { + this->dictionary = dict; idResolver = dictionary->idResolver; this->idResolver.setCharsetConverter(currentCharsetConverter); currSegrulesOptions = dictionary->defaultSegrulesOptions; @@ -209,5 +210,4 @@ namespace morfeusz { const set<string>& Environment::getAvailablePraetOptions() const { return this->dictionary->availablePraetOptions; } - } diff --git a/morfeusz/Environment.hpp b/morfeusz/Environment.hpp index d8c6284..f02b45f 100644 --- a/morfeusz/Environment.hpp +++ b/morfeusz/Environment.hpp @@ -43,7 +43,7 @@ public: * @param morfeuszProcessor * @param fileStartPtr */ - explicit Environment(MorfeuszProcessorType morfeuszProcessor); + explicit Environment(MorfeuszProcessorType morfeuszProcessor, bool usable); /** * Sets charset for this environment. @@ -90,11 +90,11 @@ public: const IdResolverImpl& getIdResolver() const; /** - * Sets dictionary file used by this environment. + * Sets dictionary by this environment. * - * @param filename - filename of the dictionary + * @param dict - pointer to the dictionary */ - void setDictionary(const std::string& dictName); + void setDictionary(const Dictionary* dict); /** * Sets segmentation rules option. @@ -156,6 +156,7 @@ public: virtual ~Environment(); private: + bool usable; const CharsetConverter* currentCharsetConverter; const CaseConverter caseConverter; diff --git a/morfeusz/IdResolverImpl.cpp b/morfeusz/IdResolverImpl.cpp index 4a4fba1..e79c052 100644 --- a/morfeusz/IdResolverImpl.cpp +++ b/morfeusz/IdResolverImpl.cpp @@ -130,4 +130,10 @@ namespace morfeusz { size_t IdResolverImpl::getLabelsCount() const { return this->labels.id2String.size(); } + + bool IdResolverImpl::isCompatibleWith(const IdResolverImpl& other) const { + return this->tags.id2String == other.tags.id2String + && this->names.id2String == other.names.id2String + && this->labels.id2String == other.labels.id2String; + } } diff --git a/morfeusz/IdResolverImpl.hpp b/morfeusz/IdResolverImpl.hpp index 9787f0e..e088c63 100644 --- a/morfeusz/IdResolverImpl.hpp +++ b/morfeusz/IdResolverImpl.hpp @@ -44,7 +44,9 @@ namespace morfeusz { std::vector<std::string> id2String; std::map<std::string, int> string2Id; }; - + + bool isCompatibleWith(const IdResolverImpl& other) const; + private: IdStringMapping tags; diff --git a/morfeusz/Morfeusz.cpp b/morfeusz/Morfeusz.cpp index 1318e8d..c9d1526 100644 --- a/morfeusz/Morfeusz.cpp +++ b/morfeusz/Morfeusz.cpp @@ -11,6 +11,11 @@ namespace morfeusz { static string version = MORFEUSZ2_VERSION; return version; } + + string Morfeusz::getDefaultDictName() { + static string dictName = DEFAULT_DICT_NAME; + return dictName; + } Morfeusz* Morfeusz::createInstance(MorfeuszUsage usage) { return new MorfeuszImpl(usage); diff --git a/morfeusz/MorfeuszImpl.cpp b/morfeusz/MorfeuszImpl.cpp index 3c75f78..8cd6596 100644 --- a/morfeusz/MorfeuszImpl.cpp +++ b/morfeusz/MorfeuszImpl.cpp @@ -22,6 +22,7 @@ #include "const.hpp" #include "charset/utf8.h" #include "ChunkBounds.hpp" +#include "DictionariesRepository.hpp" // TODO - konstruktor kopiujący działający Tak-Jak-Trzeba @@ -114,9 +115,10 @@ namespace morfeusz { } MorfeuszImpl::MorfeuszImpl(MorfeuszUsage usage) - : usage(usage), - analyzerEnv(ANALYZER), - generatorEnv(GENERATOR), + : currDictionary(), + usage(usage), + analyzerEnv(ANALYZER, usage != GENERATE_ONLY), + generatorEnv(GENERATOR, usage != ANALYSE_ONLY), options(createDefaultOptions()), accum(), notMatchingCaseSegs(0), @@ -131,19 +133,42 @@ namespace morfeusz { } void MorfeuszImpl::setDictionary(const string& dictName) { - if (usage == ANALYSE_ONLY || usage == BOTH_ANALYSE_AND_GENERATE) { - analyzerEnv.setDictionary(dictName); + + if (dictName != currDictionary) { + + doSetDictionary(dictName); + + currDictionary = dictName; } - if (usage == GENERATE_ONLY || usage == BOTH_ANALYSE_AND_GENERATE) { - generatorEnv.setDictionary(dictName); + } + + void MorfeuszImpl::doSetDictionary(const string& dictName) { + switch (usage) { + case BOTH_ANALYSE_AND_GENERATE: + { + const Dictionary* analyzerDict = DictionariesRepository::instance.getDictionary(dictName, ANALYZER); + const Dictionary* generatorDict = DictionariesRepository::instance.getDictionary(dictName, GENERATOR); + if (analyzerDict->isCompatibleWith(*generatorDict)) { + analyzerEnv.setDictionary(analyzerDict); + generatorEnv.setDictionary(generatorDict); + } else { + throw MorfeuszException("Analyzer and generator dictionaries are incompatible"); + } + } + break; + case ANALYSE_ONLY: + analyzerEnv.setDictionary(DictionariesRepository::instance.getDictionary(dictName, ANALYZER)); + break; + case GENERATE_ONLY: + generatorEnv.setDictionary(DictionariesRepository::instance.getDictionary(dictName, GENERATOR)); + break; } } - + const Environment& MorfeuszImpl::getAnyEnvironment() const { if (analyzerEnv.isUsable()) { return analyzerEnv; - } - else { + } else { return generatorEnv; } } diff --git a/morfeusz/MorfeuszImpl.hpp b/morfeusz/MorfeuszImpl.hpp index 340e1bf..723a7d8 100644 --- a/morfeusz/MorfeuszImpl.hpp +++ b/morfeusz/MorfeuszImpl.hpp @@ -189,7 +189,10 @@ namespace morfeusz { void ensureIsGenerator() const; const Environment& getAnyEnvironment() const; + + void doSetDictionary(const std::string& dictName); + std::string currDictionary; MorfeuszUsage usage; Environment analyzerEnv; Environment generatorEnv; diff --git a/morfeusz/morfeusz2.h b/morfeusz/morfeusz2.h index 99b6240..4dac468 100644 --- a/morfeusz/morfeusz2.h +++ b/morfeusz/morfeusz2.h @@ -108,6 +108,12 @@ namespace morfeusz { * @return */ static std::string getVersion(); + + /** + * Returns a string containing default dictionary name. + * @return + */ + static std::string getDefaultDictName(); /** * Creates actual instance of Morfeusz class. diff --git a/morfeusz/wrappers/java/CMakeLists.txt b/morfeusz/wrappers/java/CMakeLists.txt index 5666350..b1d7119 100644 --- a/morfeusz/wrappers/java/CMakeLists.txt +++ b/morfeusz/wrappers/java/CMakeLists.txt @@ -54,7 +54,6 @@ endif () # build jmorfeusz file(GLOB_RECURSE JAVA_SOURCES "${JAVA_SRC_DIR}" "${JAVA_SRC_DIR}/*.java") -message("SOURCES: ${JAVA_SOURCES}") add_jar (jmorfeusz SOURCES "${JAVA_SOURCES}" ENTRY_POINT pl/waw/ipipan/morfeusz/app/App diff --git a/morfeusz/wrappers/python/CMakeLists.txt b/morfeusz/wrappers/python/CMakeLists.txt index 3410894..ea068d2 100644 --- a/morfeusz/wrappers/python/CMakeLists.txt +++ b/morfeusz/wrappers/python/CMakeLists.txt @@ -69,7 +69,6 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") DEPENDS package-python-deb-build ) list (APPEND PACKAGE_DEPENDS package-python-deb) - message ("PACKAGE_DEPENDS=${PACKAGE_DEPENDS}") add_custom_target (package-python DEPENDS pymorfeusz ${PACKAGE_DEPENDS}) elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT CMAKE_CROSSCOMPILING) diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml index 0dcae54..5ecf170 100644 --- a/nbproject/configurations.xml +++ b/nbproject/configurations.xml @@ -168,9 +168,8 @@ <rebuildPropChanged>false</rebuildPropChanged> </toolsSet> <flagsDictionary> - <element flagsID="0" commonFlags="-std=c++98"/> + <element flagsID="0" commonFlags="-std=c++98 -O3"/> <element flagsID="1" commonFlags="-std=c++98 -O3 -fPIC"/> - <element flagsID="2" commonFlags="-std=c++98 -fPIC"/> </flagsDictionary> <codeAssistance> <includeAdditional>true</includeAdditional> @@ -192,7 +191,6 @@ <pElem>build/fsa</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>__PIC__=2</Elem> <Elem>__pic__=2</Elem> @@ -213,7 +211,6 @@ <pElem>build/fsa</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>__PIC__=2</Elem> <Elem>__pic__=2</Elem> @@ -226,12 +223,13 @@ </ccTool> </item> <item path="build/morfeusz/default_fsa.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> </preprocessorList> </ccTool> @@ -240,12 +238,13 @@ ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> </preprocessorList> </ccTool> @@ -266,7 +265,6 @@ <pElem>build/morfeusz/java</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>__PIC__=2</Elem> <Elem>__pic__=2</Elem> @@ -293,7 +291,6 @@ <pElem>build/morfeusz/perl</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>morfeusz_perl_EXPORTS</Elem> </preprocessorList> @@ -316,7 +313,6 @@ <pElem>build/morfeusz/python</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>__PIC__=2</Elem> <Elem>__pic__=2</Elem> @@ -338,20 +334,21 @@ ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="build/morfeusz/wrappers/morfeuszPERL_wrap.cxx" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>/usr/lib/perl/5.14/CORE</pElem> <pElem>build/morfeusz/wrappers/perl</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> <Elem>morfeusz_perl_EXPORTS</Elem> </preprocessorList> @@ -374,7 +371,6 @@ <pElem>morfeusz/build/morfeusz</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> </preprocessorList> <undefinedList> @@ -392,7 +388,6 @@ <pElem>morfeusz/build/morfeusz</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> </preprocessorList> <undefinedList> @@ -408,7 +403,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -421,7 +418,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -434,7 +433,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -447,7 +448,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -460,7 +463,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -473,7 +478,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -486,7 +493,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -620,6 +629,13 @@ <output>${TESTDIR}/TestFiles/f9</output> </linkerTool> </folder> + <folder path="build"> + <ccTool> + <preprocessorList> + <Elem>NDEBUG</Elem> + </preprocessorList> + </ccTool> + </folder> <folder path="build/morfeusz"> <ccTool> <incDir> @@ -634,6 +650,7 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> <Elem>libjmorfeusz_EXPORTS</Elem> </preprocessorList> @@ -645,9 +662,6 @@ <pElem>build</pElem> <pElem>/usr/include/python2.7</pElem> </incDir> - <preprocessorList> - <Elem>NDEBUG</Elem> - </preprocessorList> </ccTool> </folder> <folder path="java"> @@ -674,6 +688,7 @@ <folder path="morfeusz"> <ccTool> <preprocessorList> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -688,7 +703,6 @@ <pElem>/usr/lib/jvm/default-java/include</pElem> </incDir> <preprocessorList> - <Elem>NDEBUG</Elem> <Elem>_OPTIMIZE__=1</Elem> <Elem>libjmorfeusz_EXPORTS</Elem> </preprocessorList> @@ -708,172 +722,192 @@ ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/Dictionary.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/Environment.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/IdResolverImpl.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/InflexionGraph.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/Morfeusz.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/MorfeuszImpl.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/MorphInterpretation.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/ResultsIteratorImpl.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/c_api/ResultsManager.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/case/CaseConverter.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/case/CasePatternHelper.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/case/caseconv.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/charset/CharsetConverter.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/charset/TextReader.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/charset/conversion_tables.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/cli/cli.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/const.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -882,50 +916,52 @@ ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/deserialization/MorphDeserializer.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Analyzer.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Generator.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/fsa/const.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/morfeusz2_c.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> <incDir> <pElem>morfeusz</pElem> <pElem>build/morfeusz</pElem> </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> <Elem>libmorfeusz_EXPORTS</Elem> </preprocessorList> </ccTool> @@ -938,7 +974,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> </preprocessorList> </ccTool> </item> @@ -950,16 +988,18 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> </preprocessorList> </ccTool> </item> <item path="morfeusz/segrules/SegrulesFSA.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/segrules/segrules.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> + <ccTool flags="1"> </ccTool> </item> <item path="morfeusz/test_runner.cpp" ex="false" tool="1" flavor2="4"> @@ -970,7 +1010,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> </preprocessorList> </ccTool> </item> @@ -984,7 +1026,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> </preprocessorList> </ccTool> </item> @@ -996,7 +1040,9 @@ </incDir> <preprocessorList> <Elem>BUILDING_MORFEUSZ</Elem> + <Elem>DEFAULT_DICT_NAME=""</Elem> <Elem>MORFEUSZ2_VERSION="2.0.0"</Elem> + <Elem>NDEBUG</Elem> </preprocessorList> </ccTool> </item> diff --git a/tests/analyzer/test_digits/tagset.dat b/tests/analyzer/test_digits/tagset.dat index 7758137..aaa55af 100644 --- a/tests/analyzer/test_digits/tagset.dat +++ b/tests/analyzer/test_digits/tagset.dat @@ -726,32 +726,3 @@ 721 winien:sg:n1.n2:pri:imperf 722 winien:sg:n1.n2:sec:imperf 723 winien:sg:n1.n2:ter:imperf - - -[NAMES] -0 -1 astr. -2 budowla -3 członek rodu -4 człon nazwiska -5 człon nazwiska (herb) -6 człon nazwy firmy -7 firma -8 geograficzna -9 imię -10 instytucja -11 język programowania -12 krój pisma -13 marka -14 nazwisko -15 oprogramowanie -16 organizacja -17 patronimicum -18 pospolita -19 przydomek -20 pseudonim -21 sufiks nazwiska -22 środek lokomocji -23 święto -24 tytuł -25 własna diff --git a/tests/analyzer/test_names/ARGS b/tests/analyzer/test_names/ARGS new file mode 100644 index 0000000..4fd99ea --- /dev/null +++ b/tests/analyzer/test_names/ARGS @@ -0,0 +1 @@ +--aggl permissive diff --git a/tests/analyzer/test_names/dictionary.tab b/tests/analyzer/test_names/dictionary.tab new file mode 100644 index 0000000..c8960b0 --- /dev/null +++ b/tests/analyzer/test_names/dictionary.tab @@ -0,0 +1,3 @@ +czerwony czerwony:a1 adj:sg:acc:m3:pos pospolita +czerwony czerwony:a2 adj:sg:acc:m3:pos niepospolita +czerwony czerwony:a3 adj:sg:acc:m3:pos zażółć gęślą jaźń diff --git a/tests/analyzer/test_names/input.txt b/tests/analyzer/test_names/input.txt new file mode 100644 index 0000000..94a3278 --- /dev/null +++ b/tests/analyzer/test_names/input.txt @@ -0,0 +1 @@ +czerwony diff --git a/tests/analyzer/test_names/output.txt b/tests/analyzer/test_names/output.txt new file mode 100644 index 0000000..028f6f5 --- /dev/null +++ b/tests/analyzer/test_names/output.txt @@ -0,0 +1,4 @@ +[0,1,czerwony,czerwony:a1,adj:sg:acc:m3:pos,pospolita,_ + 0,1,czerwony,czerwony:a2,adj:sg:acc:m3:pos,niepospolita,_ + 0,1,czerwony,czerwony:a3,adj:sg:acc:m3:pos,zażółć gęślą jaźń,_] + diff --git a/tests/analyzer/test_names/segmentation.dat b/tests/analyzer/test_names/segmentation.dat new file mode 100644 index 0000000..4bac5b3 --- /dev/null +++ b/tests/analyzer/test_names/segmentation.dat @@ -0,0 +1,47 @@ +[options] +aggl=strict permissive isolated +praet=split composite + +[combinations] +#define wsz_interp (interp|kropka|przecinek|dywiz)* + +#define moze_interp(segmenty) wsz_interp segmenty wsz_interp + +# Segmenty występujące samodzielnie: +# +# domyślny typ segmentu samodzielnego: +moze_interp(samodz) + +# Pojedyncze znaki interpunkcyjne +moze_interp(interp|kropka|przecinek|dywiz) + +# Liczba zapisana jako ciąg cyfr: +moze_interp( dig>* dig ) + +[segment types] +interp +kropka +przecinek +dywiz +dig +samodz + +[lexemes] +kropka .:interp +przecinek ,:interp +dywiz -:interp + +[tags] +dig dig +interp interp +samodz % + +[separator chars] +# , +44 + +# . +46 + +# ; +59 diff --git a/tests/analyzer/test_names/tagset.dat b/tests/analyzer/test_names/tagset.dat new file mode 100644 index 0000000..aaa55af --- /dev/null +++ b/tests/analyzer/test_names/tagset.dat @@ -0,0 +1,728 @@ +#!MORFEUSZ-TAGSET 0.1 + +[TAGS] + +0 ign +1 sp +2 adja +3 adjc +4 adjp +5 adj:pl:acc:m1.p1:com +6 adj:pl:acc:m1.p1:pos +7 adj:pl:acc:m1.p1:sup +8 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:com +9 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:pos +10 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:sup +11 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:com +12 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +13 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +14 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:com +15 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +16 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +17 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:com +18 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +19 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +20 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:com +21 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +22 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +23 adj:pl:nom:m1.p1:pos +24 adj:pl:nom:m2.m3.f.n1.n2.p2.p3:pos +25 adj:pl:nom.voc:m1.p1:com +26 adj:pl:nom.voc:m1.p1:pos +27 adj:pl:nom.voc:m1.p1:sup +28 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:com +29 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:pos +30 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:sup +31 adj:sg:acc:f:com +32 adj:sg:acc:f:pos +33 adj:sg:acc:f:sup +34 adj:sg:acc:m1.m2:com +35 adj:sg:acc:m1.m2:pos +36 adj:sg:acc:m1.m2:sup +37 adj:sg:acc:m3:com +38 adj:sg:acc:m3:pos +39 adj:sg:acc:m3:sup +40 adj:sg:acc:n1.n2:com +41 adj:sg:acc:n1.n2:pos +42 adj:sg:acc:n1.n2:sup +43 adj:sg:dat:f:com +44 adj:sg:dat:f:pos +45 adj:sg:dat:f:sup +46 adj:sg:dat:m1.m2.m3.n1.n2:com +47 adj:sg:dat:m1.m2.m3.n1.n2:pos +48 adj:sg:dat:m1.m2.m3.n1.n2:sup +49 adj:sg:gen:f:com +50 adj:sg:gen:f:pos +51 adj:sg:gen:f:sup +52 adj:sg:gen:m1.m2.m3.n1.n2:com +53 adj:sg:gen:m1.m2.m3.n1.n2:pos +54 adj:sg:gen:m1.m2.m3.n1.n2:sup +55 adj:sg:inst:f:com +56 adj:sg:inst:f:pos +57 adj:sg:inst:f:sup +58 adj:sg:inst:m1.m2.m3.n1.n2:com +59 adj:sg:inst:m1.m2.m3.n1.n2:pos +60 adj:sg:inst:m1.m2.m3.n1.n2:sup +61 adj:sg:loc:f:com +62 adj:sg:loc:f:pos +63 adj:sg:loc:f:sup +64 adj:sg:loc:m1.m2.m3.n1.n2:com +65 adj:sg:loc:m1.m2.m3.n1.n2:pos +66 adj:sg:loc:m1.m2.m3.n1.n2:sup +67 adj:sg:nom:f:pos +68 adj:sg:nom:m1.m2.m3:pos +69 adj:sg:nom:n1.n2:pos +70 adj:sg:nom.voc:f:com +71 adj:sg:nom.voc:f:pos +72 adj:sg:nom.voc:f:sup +73 adj:sg:nom.voc:m1.m2.m3:com +74 adj:sg:nom.voc:m1.m2.m3:pos +75 adj:sg:nom.voc:m1.m2.m3:sup +76 adj:sg:nom.voc:n1.n2:com +77 adj:sg:nom.voc:n1.n2:pos +78 adj:sg:nom.voc:n1.n2:sup +79 adv +80 adv:com +81 adv:pos +82 adv:sup +83 aglt:pl:pri:imperf:nwok +84 aglt:pl:pri:imperf:wok +85 aglt:pl:sec:imperf:nwok +86 aglt:pl:sec:imperf:wok +87 aglt:sg:pri:imperf:nwok +88 aglt:sg:pri:imperf:wok +89 aglt:sg:sec:imperf:nwok +90 aglt:sg:sec:imperf:wok +91 bedzie:pl:pri:imperf +92 bedzie:pl:sec:imperf +93 bedzie:pl:ter:imperf +94 bedzie:sg:pri:imperf +95 bedzie:sg:sec:imperf +96 bedzie:sg:ter:imperf +97 brev:pun +98 burk +99 comp +100 cond:pl:m1.p1:pri:imperf +101 cond:pl:m1.p1:pri:imperf.perf +102 cond:pl:m1.p1:pri:perf +103 cond:pl:m1.p1:sec:imperf +104 cond:pl:m1.p1:sec:imperf.perf +105 cond:pl:m1.p1:sec:perf +106 cond:pl:m1.p1:ter:imperf +107 cond:pl:m1.p1:ter:imperf.perf +108 cond:pl:m1.p1:ter:perf +109 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +110 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +111 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +112 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +113 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +114 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +115 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +116 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +117 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +118 cond:sg:f:pri:imperf +119 cond:sg:f:pri:imperf.perf +120 cond:sg:f:pri:perf +121 cond:sg:f:sec:imperf +122 cond:sg:f:sec:imperf.perf +123 cond:sg:f:sec:perf +124 cond:sg:f:ter:imperf +125 cond:sg:f:ter:imperf.perf +126 cond:sg:f:ter:perf +127 cond:sg:m1.m2.m3:pri:imperf +128 cond:sg:m1.m2.m3:pri:imperf.perf +129 cond:sg:m1.m2.m3:pri:perf +130 cond:sg:m1.m2.m3:sec:imperf +131 cond:sg:m1.m2.m3:sec:imperf.perf +132 cond:sg:m1.m2.m3:sec:perf +133 cond:sg:m1.m2.m3:ter:imperf +134 cond:sg:m1.m2.m3:ter:imperf.perf +135 cond:sg:m1.m2.m3:ter:perf +136 cond:sg:n1.n2:imperf +137 cond:sg:n1.n2:imperf.perf +138 cond:sg:n1.n2:perf +139 cond:sg:n1.n2:pri:imperf +140 cond:sg:n1.n2:pri:imperf.perf +141 cond:sg:n1.n2:pri:perf +142 cond:sg:n1.n2:sec:imperf +143 cond:sg:n1.n2:sec:imperf.perf +144 cond:sg:n1.n2:sec:perf +145 cond:sg:n1.n2:ter:imperf +146 cond:sg:n1.n2:ter:imperf.perf +147 cond:sg:n1.n2:ter:perf +148 conj +149 depr:pl:nom:m2 +150 depr:pl:voc:m2 +151 dig +152 emoticon +153 fin:pl:pri:imperf +154 fin:pl:pri:imperf.perf +155 fin:pl:pri:perf +156 fin:pl:sec:imperf +157 fin:pl:sec:imperf.perf +158 fin:pl:sec:perf +159 fin:pl:ter:imperf +160 fin:pl:ter:imperf.perf +161 fin:pl:ter:perf +162 fin:sg:pri:imperf +163 fin:sg:pri:imperf.perf +164 fin:sg:pri:perf +165 fin:sg:sec:imperf +166 fin:sg:sec:imperf.perf +167 fin:sg:sec:perf +168 fin:sg:ter:imperf +169 fin:sg:ter:imperf.perf +170 fin:sg:ter:perf +171 ger:pl:dat.loc:n2:imperf:aff +172 ger:pl:dat.loc:n2:imperf:neg +173 ger:pl:dat.loc:n2:imperf.perf:aff +174 ger:pl:dat.loc:n2:imperf.perf:neg +175 ger:pl:dat.loc:n2:perf:aff +176 ger:pl:dat.loc:n2:perf:neg +177 ger:pl:gen:n2:imperf:aff +178 ger:pl:gen:n2:imperf:neg +179 ger:pl:gen:n2:imperf.perf:aff +180 ger:pl:gen:n2:imperf.perf:neg +181 ger:pl:gen:n2:perf:aff +182 ger:pl:gen:n2:perf:neg +183 ger:pl:inst:n2:imperf:aff +184 ger:pl:inst:n2:imperf:neg +185 ger:pl:inst:n2:imperf.perf:aff +186 ger:pl:inst:n2:imperf.perf:neg +187 ger:pl:inst:n2:perf:aff +188 ger:pl:inst:n2:perf:neg +189 ger:pl:nom.acc:n2:imperf:aff +190 ger:pl:nom.acc:n2:imperf:neg +191 ger:pl:nom.acc:n2:imperf.perf:aff +192 ger:pl:nom.acc:n2:imperf.perf:neg +193 ger:pl:nom.acc:n2:perf:aff +194 ger:pl:nom.acc:n2:perf:neg +195 ger:sg:dat.loc:n2:imperf:aff +196 ger:sg:dat.loc:n2:imperf:neg +197 ger:sg:dat.loc:n2:imperf.perf:aff +198 ger:sg:dat.loc:n2:imperf.perf:neg +199 ger:sg:dat.loc:n2:perf:aff +200 ger:sg:dat.loc:n2:perf:neg +201 ger:sg:gen:n2:imperf:aff +202 ger:sg:gen:n2:imperf:neg +203 ger:sg:gen:n2:imperf.perf:aff +204 ger:sg:gen:n2:imperf.perf:neg +205 ger:sg:gen:n2:perf:aff +206 ger:sg:gen:n2:perf:neg +207 ger:sg:inst:n2:imperf:aff +208 ger:sg:inst:n2:imperf:neg +209 ger:sg:inst:n2:imperf.perf:aff +210 ger:sg:inst:n2:imperf.perf:neg +211 ger:sg:inst:n2:perf:aff +212 ger:sg:inst:n2:perf:neg +213 ger:sg:nom.acc:n2:imperf:aff +214 ger:sg:nom.acc:n2:imperf:neg +215 ger:sg:nom.acc:n2:imperf.perf:aff +216 ger:sg:nom.acc:n2:imperf.perf:neg +217 ger:sg:nom.acc:n2:perf:aff +218 ger:sg:nom.acc:n2:perf:neg +219 imps:imperf +220 imps:imperf.perf +221 imps:perf +222 impt:pl:pri:imperf +223 impt:pl:pri:imperf.perf +224 impt:pl:pri:perf +225 impt:pl:sec:imperf +226 impt:pl:sec:imperf.perf +227 impt:pl:sec:perf +228 impt:sg:sec:imperf +229 impt:sg:sec:imperf.perf +230 impt:sg:sec:perf +231 inf:imperf +232 inf:imperf.perf +233 inf:perf +234 interj +235 interp +236 naj +237 nie +238 num:comp +239 num:pl:acc:m1:rec +240 num:pl:dat.loc:n1.p1.p2:congr.rec +241 num:pl:dat:m1.m2.m3.n2.f:congr +242 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +243 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n2:congr +244 num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr +245 num:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +246 num:pl:gen.loc:m1.m2.m3.n2.f:congr +247 num:pl:gen:n1.p1.p2:rec +248 num:pl:inst:f:congr +249 num:pl:inst:m1.m2.m3.f.n1.n2.p1.p2:congr +250 num:pl:inst:m1.m2.m3.f.n2:congr +251 num:pl:inst:m1.m2.m3.n2:congr +252 num:pl:inst:m1.m2.m3.n2.f:congr +253 num:pl:inst:n1.p1.p2:rec +254 num:pl:nom.acc:m1.m2.m3.f.n1.n2.p1.p2:rec +255 num:pl:nom.acc.voc:f:congr +256 num:pl:nom.acc.voc:m1:rec +257 num:pl:nom.acc.voc:m2.m3.f.n1.n2.p1.p2:rec +258 num:pl:nom.acc.voc:m2.m3.f.n2:rec +259 num:pl:nom.acc.voc:m2.m3.n2:congr +260 num:pl:nom.acc.voc:m2.m3.n2.f:congr +261 num:pl:nom.acc.voc:n1.p1.p2:rec +262 num:pl:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.f.n1.n2.p1.p2:rec +263 num:pl:nom.voc:m1:congr +264 num:pl:nom.voc:m1:rec +265 num:sg:nom.gen.dat.inst.acc.loc.voc:f:rec +266 num:sg:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.n1.n2:rec +267 pact:pl:acc:m1.p1:imperf:aff +268 pact:pl:acc:m1.p1:imperf:neg +269 pact:pl:acc:m1.p1:imperf.perf:aff +270 pact:pl:acc:m1.p1:imperf.perf:neg +271 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +272 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +273 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +274 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +275 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +276 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +277 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +278 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +279 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +280 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +281 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +282 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +283 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +284 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +285 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +286 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +287 pact:pl:nom.voc:m1.p1:imperf:aff +288 pact:pl:nom.voc:m1.p1:imperf:neg +289 pact:pl:nom.voc:m1.p1:imperf.perf:aff +290 pact:pl:nom.voc:m1.p1:imperf.perf:neg +291 pact:sg:acc.inst:f:imperf:aff +292 pact:sg:acc.inst:f:imperf:neg +293 pact:sg:acc.inst:f:imperf.perf:aff +294 pact:sg:acc.inst:f:imperf.perf:neg +295 pact:sg:acc:m1.m2:imperf:aff +296 pact:sg:acc:m1.m2:imperf:neg +297 pact:sg:acc:m1.m2:imperf.perf:aff +298 pact:sg:acc:m1.m2:imperf.perf:neg +299 pact:sg:acc:m3:imperf:aff +300 pact:sg:acc:m3:imperf:neg +301 pact:sg:acc:m3:imperf.perf:aff +302 pact:sg:acc:m3:imperf.perf:neg +303 pact:sg:dat:m1.m2.m3.n1.n2:imperf:aff +304 pact:sg:dat:m1.m2.m3.n1.n2:imperf:neg +305 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +306 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +307 pact:sg:gen.dat.loc:f:imperf:aff +308 pact:sg:gen.dat.loc:f:imperf:neg +309 pact:sg:gen.dat.loc:f:imperf.perf:aff +310 pact:sg:gen.dat.loc:f:imperf.perf:neg +311 pact:sg:gen:m1.m2.m3.n1.n2:imperf:aff +312 pact:sg:gen:m1.m2.m3.n1.n2:imperf:neg +313 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +314 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +315 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +316 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +317 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +318 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +319 pact:sg:nom.acc.voc:n1.n2:imperf:aff +320 pact:sg:nom.acc.voc:n1.n2:imperf:neg +321 pact:sg:nom.acc.voc:n1.n2:imperf.perf:aff +322 pact:sg:nom.acc.voc:n1.n2:imperf.perf:neg +323 pact:sg:nom.voc:f:imperf:aff +324 pact:sg:nom.voc:f:imperf:neg +325 pact:sg:nom.voc:f:imperf.perf:aff +326 pact:sg:nom.voc:f:imperf.perf:neg +327 pact:sg:nom.voc:m1.m2.m3:imperf:aff +328 pact:sg:nom.voc:m1.m2.m3:imperf:neg +329 pact:sg:nom.voc:m1.m2.m3:imperf.perf:aff +330 pact:sg:nom.voc:m1.m2.m3:imperf.perf:neg +331 pant:perf +332 pcon:imperf +333 ppas:pl:acc:m1.p1:imperf:aff +334 ppas:pl:acc:m1.p1:imperf:neg +335 ppas:pl:acc:m1.p1:imperf.perf:aff +336 ppas:pl:acc:m1.p1:imperf.perf:neg +337 ppas:pl:acc:m1.p1:perf:aff +338 ppas:pl:acc:m1.p1:perf:neg +339 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +340 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +341 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +342 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +343 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +344 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +345 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +346 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +347 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +348 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +349 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +350 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +351 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +352 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +353 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +354 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +355 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +356 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +357 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +358 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +359 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +360 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +361 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:aff +362 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:neg +363 ppas:pl:nom.voc:m1.p1:imperf:aff +364 ppas:pl:nom.voc:m1.p1:imperf:neg +365 ppas:pl:nom.voc:m1.p1:imperf.perf:aff +366 ppas:pl:nom.voc:m1.p1:imperf.perf:neg +367 ppas:pl:nom.voc:m1.p1:perf:aff +368 ppas:pl:nom.voc:m1.p1:perf:neg +369 ppas:sg:acc.inst:f:imperf:aff +370 ppas:sg:acc.inst:f:imperf:neg +371 ppas:sg:acc.inst:f:imperf.perf:aff +372 ppas:sg:acc.inst:f:imperf.perf:neg +373 ppas:sg:acc.inst:f:perf:aff +374 ppas:sg:acc.inst:f:perf:neg +375 ppas:sg:acc:m1.m2:imperf:aff +376 ppas:sg:acc:m1.m2:imperf:neg +377 ppas:sg:acc:m1.m2:imperf.perf:aff +378 ppas:sg:acc:m1.m2:imperf.perf:neg +379 ppas:sg:acc:m1.m2:perf:aff +380 ppas:sg:acc:m1.m2:perf:neg +381 ppas:sg:acc:m3:imperf:aff +382 ppas:sg:acc:m3:imperf:neg +383 ppas:sg:acc:m3:imperf.perf:aff +384 ppas:sg:acc:m3:imperf.perf:neg +385 ppas:sg:acc:m3:perf:aff +386 ppas:sg:acc:m3:perf:neg +387 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:aff +388 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:neg +389 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +390 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +391 ppas:sg:dat:m1.m2.m3.n1.n2:perf:aff +392 ppas:sg:dat:m1.m2.m3.n1.n2:perf:neg +393 ppas:sg:gen.dat.loc:f:imperf:aff +394 ppas:sg:gen.dat.loc:f:imperf:neg +395 ppas:sg:gen.dat.loc:f:imperf.perf:aff +396 ppas:sg:gen.dat.loc:f:imperf.perf:neg +397 ppas:sg:gen.dat.loc:f:perf:aff +398 ppas:sg:gen.dat.loc:f:perf:neg +399 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:aff +400 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:neg +401 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +402 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +403 ppas:sg:gen:m1.m2.m3.n1.n2:perf:aff +404 ppas:sg:gen:m1.m2.m3.n1.n2:perf:neg +405 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +406 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +407 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +408 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +409 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:aff +410 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:neg +411 ppas:sg:nom.acc.voc:n1.n2:imperf:aff +412 ppas:sg:nom.acc.voc:n1.n2:imperf:neg +413 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:aff +414 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:neg +415 ppas:sg:nom.acc.voc:n1.n2:perf:aff +416 ppas:sg:nom.acc.voc:n1.n2:perf:neg +417 ppas:sg:nom.voc:f:imperf:aff +418 ppas:sg:nom.voc:f:imperf:neg +419 ppas:sg:nom.voc:f:imperf.perf:aff +420 ppas:sg:nom.voc:f:imperf.perf:neg +421 ppas:sg:nom.voc:f:perf:aff +422 ppas:sg:nom.voc:f:perf:neg +423 ppas:sg:nom.voc:m1.m2.m3:imperf:aff +424 ppas:sg:nom.voc:m1.m2.m3:imperf:neg +425 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:aff +426 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:neg +427 ppas:sg:nom.voc:m1.m2.m3:perf:aff +428 ppas:sg:nom.voc:m1.m2.m3:perf:neg +429 ppron12:pl:acc:_:pri +430 ppron12:pl:acc:_:sec +431 ppron12:pl:dat:_:pri +432 ppron12:pl:dat:_:sec +433 ppron12:pl:gen:_:pri +434 ppron12:pl:gen:_:sec +435 ppron12:pl:inst:_:pri +436 ppron12:pl:inst:_:sec +437 ppron12:pl:loc:_:pri +438 ppron12:pl:loc:_:sec +439 ppron12:pl:nom:_:pri +440 ppron12:pl:nom:_:sec +441 ppron12:pl:voc:_:pri +442 ppron12:pl:voc:_:sec +443 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:akc +444 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:nakc +445 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:akc +446 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:nakc +447 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:akc +448 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:nakc +449 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:akc +450 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:nakc +451 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:akc +452 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:nakc +453 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:akc +454 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:nakc +455 ppron12:sg:inst:m1.m2.m3.f.n1.n2:pri +456 ppron12:sg:inst:m1.m2.m3.f.n1.n2:sec +457 ppron12:sg:loc:m1.m2.m3.f.n1.n2:pri +458 ppron12:sg:loc:m1.m2.m3.f.n1.n2:sec +459 ppron12:sg:nom:m1.m2.m3.f.n1.n2:pri +460 ppron12:sg:nom:m1.m2.m3.f.n1.n2:sec +461 ppron12:sg:voc:m1.m2.m3.f.n1.n2:sec +462 ppron3:pl:acc:m1.p1:ter:_:npraep +463 ppron3:pl:acc:m1.p1:ter:_:praep +464 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:npraep +465 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:praep +466 ppron3:pl:dat:_:ter:_:npraep +467 ppron3:pl:dat:_:ter:_:praep +468 ppron3:pl:gen:_:ter:_:npraep +469 ppron3:pl:gen:_:ter:_:praep +470 ppron3:pl:inst:_:ter:_:_ +471 ppron3:pl:loc:_:ter:_:_ +472 ppron3:pl:nom:m1.p1:ter:_:_ +473 ppron3:pl:nom:m2.m3.f.n1.n2.p2.p3:ter:_:_ +474 ppron3:sg:acc:f:ter:_:npraep +475 ppron3:sg:acc:f:ter:_:praep +476 ppron3:sg:acc:m1.m2.m3:ter:akc:npraep +477 ppron3:sg:acc:m1.m2.m3:ter:akc:praep +478 ppron3:sg:acc:m1.m2.m3:ter:nakc:npraep +479 ppron3:sg:acc:m1.m2.m3:ter:nakc:praep +480 ppron3:sg:acc:n1.n2:ter:_:npraep +481 ppron3:sg:acc:n1.n2:ter:_:praep +482 ppron3:sg:dat:f:ter:_:npraep +483 ppron3:sg:dat:f:ter:_:praep +484 ppron3:sg:dat:m1.m2.m3:ter:akc:npraep +485 ppron3:sg:dat:m1.m2.m3:ter:nakc:npraep +486 ppron3:sg:dat:m1.m2.m3:ter:_:praep +487 ppron3:sg:dat:n1.n2:ter:akc:npraep +488 ppron3:sg:dat:n1.n2:ter:nakc:npraep +489 ppron3:sg:dat:n1.n2:ter:_:praep +490 ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep +491 ppron3:sg:gen:f:ter:_:npraep +492 ppron3:sg:gen:f:ter:_:praep +493 ppron3:sg:gen:m1.m2.m3:ter:akc:npraep +494 ppron3:sg:gen:m1.m2.m3:ter:akc:praep +495 ppron3:sg:gen:m1.m2.m3:ter:nakc:npraep +496 ppron3:sg:gen:m1.m2.m3:ter:nakc:praep +497 ppron3:sg:gen:n1.n2:ter:akc:npraep +498 ppron3:sg:gen:n1.n2:ter:nakc:npraep +499 ppron3:sg:gen:n1.n2:ter:_:praep +500 ppron3:sg:inst:f:ter:_:praep +501 ppron3:sg:inst:m1.m2.m3:ter:_:_ +502 ppron3:sg:inst:n1.n2:ter:_:_ +503 ppron3:sg:loc:f:ter:_:_ +504 ppron3:sg:loc:m1.m2.m3:ter:_:_ +505 ppron3:sg:loc:n1.n2:ter:_:_ +506 ppron3:sg:nom:f:ter:_:_ +507 ppron3:sg:nom:m1.m2.m3:ter:_:_ +508 ppron3:sg:nom:n1.n2:ter:_:_ +509 praet:pl:m1.p1:imperf +510 praet:pl:m1.p1:imperf.perf +511 praet:pl:m1.p1:perf +512 praet:pl:m1.p1:pri:imperf +513 praet:pl:m1.p1:pri:imperf.perf +514 praet:pl:m1.p1:pri:perf +515 praet:pl:m1.p1:sec:imperf +516 praet:pl:m1.p1:sec:imperf.perf +517 praet:pl:m1.p1:sec:perf +518 praet:pl:m1.p1:ter:imperf +519 praet:pl:m1.p1:ter:imperf.perf +520 praet:pl:m1.p1:ter:perf +521 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf +522 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf.perf +523 praet:pl:m2.m3.f.n1.n2.p2.p3:perf +524 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +525 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +526 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +527 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +528 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +529 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +530 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +531 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +532 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +533 praet:sg:f:imperf +534 praet:sg:f:imperf.perf +535 praet:sg:f:perf +536 praet:sg:f:pri:imperf +537 praet:sg:f:pri:imperf.perf +538 praet:sg:f:pri:perf +539 praet:sg:f:sec:imperf +540 praet:sg:f:sec:imperf.perf +541 praet:sg:f:sec:perf +542 praet:sg:f:ter:imperf +543 praet:sg:f:ter:imperf.perf +544 praet:sg:f:ter:perf +545 praet:sg:m1.m2.m3:imperf +546 praet:sg:m1.m2.m3:imperf:agl +547 praet:sg:m1.m2.m3:imperf:nagl +548 praet:sg:m1.m2.m3:imperf.perf +549 praet:sg:m1.m2.m3:perf +550 praet:sg:m1.m2.m3:perf:agl +551 praet:sg:m1.m2.m3:perf:nagl +552 praet:sg:m1.m2.m3:pri:imperf +553 praet:sg:m1.m2.m3:pri:imperf.perf +554 praet:sg:m1.m2.m3:pri:perf +555 praet:sg:m1.m2.m3:sec:imperf +556 praet:sg:m1.m2.m3:sec:imperf.perf +557 praet:sg:m1.m2.m3:sec:perf +558 praet:sg:m1.m2.m3:ter:imperf +559 praet:sg:m1.m2.m3:ter:imperf.perf +560 praet:sg:m1.m2.m3:ter:perf +561 praet:sg:n1.n2:imperf +562 praet:sg:n1.n2:imperf.perf +563 praet:sg:n1.n2:perf +564 praet:sg:n1.n2:pri:imperf +565 praet:sg:n1.n2:pri:imperf.perf +566 praet:sg:n1.n2:pri:perf +567 praet:sg:n1.n2:sec:imperf +568 praet:sg:n1.n2:sec:imperf.perf +569 praet:sg:n1.n2:sec:perf +570 praet:sg:n1.n2:ter:imperf +571 praet:sg:n1.n2:ter:imperf.perf +572 praet:sg:n1.n2:ter:perf +573 pred +574 prefa +575 prefppas +576 prefs +577 prefv +578 prep:acc +579 prep:acc:nwok +580 prep:acc:wok +581 prep:dat +582 prep:gen +583 prep:gen:nwok +584 prep:gen:wok +585 prep:inst +586 prep:inst:nwok +587 prep:inst:wok +588 prep:loc +589 prep:loc:nwok +590 prep:loc:wok +591 prep:nom +592 qub +593 romandig +594 siebie:acc +595 siebie:dat +596 siebie:gen +597 siebie:inst +598 siebie:loc +599 substa +600 subst:pl:acc:f +601 subst:pl:acc:m1 +602 subst:pl:acc:m2 +603 subst:pl:acc:m3 +604 subst:pl:acc:n1 +605 subst:pl:acc:n2 +606 subst:pl:acc:p1 +607 subst:pl:acc:p2 +608 subst:pl:acc:p3 +609 subst:pl:dat:f +610 subst:pl:dat:m1 +611 subst:pl:dat:m2 +612 subst:pl:dat:m3 +613 subst:pl:dat:n1 +614 subst:pl:dat:n2 +615 subst:pl:dat:p1 +616 subst:pl:dat:p2 +617 subst:pl:dat:p3 +618 subst:pl:gen:f +619 subst:pl:gen:m1 +620 subst:pl:gen:m2 +621 subst:pl:gen:m3 +622 subst:pl:gen:n1 +623 subst:pl:gen:n2 +624 subst:pl:gen:p1 +625 subst:pl:gen:p2 +626 subst:pl:gen:p3 +627 subst:pl:inst:f +628 subst:pl:inst:m1 +629 subst:pl:inst:m2 +630 subst:pl:inst:m3 +631 subst:pl:inst:n1 +632 subst:pl:inst:n2 +633 subst:pl:inst:p1 +634 subst:pl:inst:p2 +635 subst:pl:inst:p3 +636 subst:pl:loc:f +637 subst:pl:loc:m1 +638 subst:pl:loc:m2 +639 subst:pl:loc:m3 +640 subst:pl:loc:n1 +641 subst:pl:loc:n2 +642 subst:pl:loc:p1 +643 subst:pl:loc:p2 +644 subst:pl:loc:p3 +645 subst:pl:nom:f +646 subst:pl:nom:m1 +647 subst:pl:nom:m2 +648 subst:pl:nom:m3 +649 subst:pl:nom:n1 +650 subst:pl:nom:n2 +651 subst:pl:nom:p1 +652 subst:pl:nom:p2 +653 subst:pl:nom:p3 +654 subst:pl:voc:f +655 subst:pl:voc:m1 +656 subst:pl:voc:m2 +657 subst:pl:voc:m3 +658 subst:pl:voc:n1 +659 subst:pl:voc:n2 +660 subst:pl:voc:p1 +661 subst:pl:voc:p2 +662 subst:pl:voc:p3 +663 subst:sg:acc:f +664 subst:sg:acc:m1 +665 subst:sg:acc:m2 +666 subst:sg:acc:m3 +667 subst:sg:acc:n1 +668 subst:sg:acc:n2 +669 subst:sg:dat:f +670 subst:sg:dat:m1 +671 subst:sg:dat:m2 +672 subst:sg:dat:m3 +673 subst:sg:dat:n1 +674 subst:sg:dat:n2 +675 subst:sg:gen:f +676 subst:sg:gen:m1 +677 subst:sg:gen:m2 +678 subst:sg:gen:m3 +679 subst:sg:gen:n1 +680 subst:sg:gen:n2 +681 subst:sg:inst:f +682 subst:sg:inst:m1 +683 subst:sg:inst:m2 +684 subst:sg:inst:m3 +685 subst:sg:inst:n1 +686 subst:sg:inst:n2 +687 subst:sg:loc:f +688 subst:sg:loc:m1 +689 subst:sg:loc:m2 +690 subst:sg:loc:m3 +691 subst:sg:loc:n1 +692 subst:sg:loc:n2 +693 subst:sg:nom:f +694 subst:sg:nom:m1 +695 subst:sg:nom:m2 +696 subst:sg:nom:m3 +697 subst:sg:nom:n1 +698 subst:sg:nom:n2 +699 subst:sg:voc:f +700 subst:sg:voc:m1 +701 subst:sg:voc:m2 +702 subst:sg:voc:m3 +703 subst:sg:voc:n1 +704 subst:sg:voc:n2 +705 winien:pl:m1.p1:imperf +706 winien:pl:m1.p1:pri:imperf +707 winien:pl:m1.p1:sec:imperf +708 winien:pl:m1.p1:ter:imperf +709 winien:pl:m2.m3.f.n1.n2.p2.p3:imperf +710 winien:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +711 winien:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +712 winien:sg:f:imperf +713 winien:sg:f:pri:imperf +714 winien:sg:f:sec:imperf +715 winien:sg:f:ter:imperf +716 winien:sg:m1.m2.m3:imperf +717 winien:sg:m1.m2.m3:pri:imperf +718 winien:sg:m1.m2.m3:sec:imperf +719 winien:sg:m1.m2.m3:ter:imperf +720 winien:sg:n1.n2:imperf +721 winien:sg:n1.n2:pri:imperf +722 winien:sg:n1.n2:sec:imperf +723 winien:sg:n1.n2:ter:imperf diff --git a/tests/analyzer/test_qualifiers/ARGS b/tests/analyzer/test_qualifiers/ARGS new file mode 100644 index 0000000..4fd99ea --- /dev/null +++ b/tests/analyzer/test_qualifiers/ARGS @@ -0,0 +1 @@ +--aggl permissive diff --git a/tests/analyzer/test_qualifiers/dictionary.tab b/tests/analyzer/test_qualifiers/dictionary.tab new file mode 100644 index 0000000..3287c7c --- /dev/null +++ b/tests/analyzer/test_qualifiers/dictionary.tab @@ -0,0 +1,4 @@ +czerwony czerwony:a1 adj:sg:acc:m3:pos pospolita niebieski +czerwony czerwony:a2 adj:sg:acc:m3:pos pospolita żółty1|żółty2 +czerwony czerwony:a3 adj:sg:acc:m3:pos pospolita żółty2|żółty1 +czerwony czerwony:a4 adj:sg:acc:m3:pos pospolita żółty1|żółty2|żółty3 diff --git a/tests/analyzer/test_qualifiers/input.txt b/tests/analyzer/test_qualifiers/input.txt new file mode 100644 index 0000000..94a3278 --- /dev/null +++ b/tests/analyzer/test_qualifiers/input.txt @@ -0,0 +1 @@ +czerwony diff --git a/tests/analyzer/test_qualifiers/output.txt b/tests/analyzer/test_qualifiers/output.txt new file mode 100644 index 0000000..6f85a40 --- /dev/null +++ b/tests/analyzer/test_qualifiers/output.txt @@ -0,0 +1,5 @@ +[0,1,czerwony,czerwony:a1,adj:sg:acc:m3:pos,pospolita,niebieski + 0,1,czerwony,czerwony:a2,adj:sg:acc:m3:pos,pospolita,żółty1|żółty2 + 0,1,czerwony,czerwony:a3,adj:sg:acc:m3:pos,pospolita,żółty1|żółty2 + 0,1,czerwony,czerwony:a4,adj:sg:acc:m3:pos,pospolita,żółty1|żółty2|żółty3] + diff --git a/tests/analyzer/test_qualifiers/segmentation.dat b/tests/analyzer/test_qualifiers/segmentation.dat new file mode 100644 index 0000000..4bac5b3 --- /dev/null +++ b/tests/analyzer/test_qualifiers/segmentation.dat @@ -0,0 +1,47 @@ +[options] +aggl=strict permissive isolated +praet=split composite + +[combinations] +#define wsz_interp (interp|kropka|przecinek|dywiz)* + +#define moze_interp(segmenty) wsz_interp segmenty wsz_interp + +# Segmenty występujące samodzielnie: +# +# domyślny typ segmentu samodzielnego: +moze_interp(samodz) + +# Pojedyncze znaki interpunkcyjne +moze_interp(interp|kropka|przecinek|dywiz) + +# Liczba zapisana jako ciąg cyfr: +moze_interp( dig>* dig ) + +[segment types] +interp +kropka +przecinek +dywiz +dig +samodz + +[lexemes] +kropka .:interp +przecinek ,:interp +dywiz -:interp + +[tags] +dig dig +interp interp +samodz % + +[separator chars] +# , +44 + +# . +46 + +# ; +59 diff --git a/tests/analyzer/test_qualifiers/tagset.dat b/tests/analyzer/test_qualifiers/tagset.dat new file mode 100644 index 0000000..aaa55af --- /dev/null +++ b/tests/analyzer/test_qualifiers/tagset.dat @@ -0,0 +1,728 @@ +#!MORFEUSZ-TAGSET 0.1 + +[TAGS] + +0 ign +1 sp +2 adja +3 adjc +4 adjp +5 adj:pl:acc:m1.p1:com +6 adj:pl:acc:m1.p1:pos +7 adj:pl:acc:m1.p1:sup +8 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:com +9 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:pos +10 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:sup +11 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:com +12 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +13 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +14 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:com +15 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +16 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +17 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:com +18 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +19 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +20 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:com +21 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +22 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +23 adj:pl:nom:m1.p1:pos +24 adj:pl:nom:m2.m3.f.n1.n2.p2.p3:pos +25 adj:pl:nom.voc:m1.p1:com +26 adj:pl:nom.voc:m1.p1:pos +27 adj:pl:nom.voc:m1.p1:sup +28 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:com +29 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:pos +30 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:sup +31 adj:sg:acc:f:com +32 adj:sg:acc:f:pos +33 adj:sg:acc:f:sup +34 adj:sg:acc:m1.m2:com +35 adj:sg:acc:m1.m2:pos +36 adj:sg:acc:m1.m2:sup +37 adj:sg:acc:m3:com +38 adj:sg:acc:m3:pos +39 adj:sg:acc:m3:sup +40 adj:sg:acc:n1.n2:com +41 adj:sg:acc:n1.n2:pos +42 adj:sg:acc:n1.n2:sup +43 adj:sg:dat:f:com +44 adj:sg:dat:f:pos +45 adj:sg:dat:f:sup +46 adj:sg:dat:m1.m2.m3.n1.n2:com +47 adj:sg:dat:m1.m2.m3.n1.n2:pos +48 adj:sg:dat:m1.m2.m3.n1.n2:sup +49 adj:sg:gen:f:com +50 adj:sg:gen:f:pos +51 adj:sg:gen:f:sup +52 adj:sg:gen:m1.m2.m3.n1.n2:com +53 adj:sg:gen:m1.m2.m3.n1.n2:pos +54 adj:sg:gen:m1.m2.m3.n1.n2:sup +55 adj:sg:inst:f:com +56 adj:sg:inst:f:pos +57 adj:sg:inst:f:sup +58 adj:sg:inst:m1.m2.m3.n1.n2:com +59 adj:sg:inst:m1.m2.m3.n1.n2:pos +60 adj:sg:inst:m1.m2.m3.n1.n2:sup +61 adj:sg:loc:f:com +62 adj:sg:loc:f:pos +63 adj:sg:loc:f:sup +64 adj:sg:loc:m1.m2.m3.n1.n2:com +65 adj:sg:loc:m1.m2.m3.n1.n2:pos +66 adj:sg:loc:m1.m2.m3.n1.n2:sup +67 adj:sg:nom:f:pos +68 adj:sg:nom:m1.m2.m3:pos +69 adj:sg:nom:n1.n2:pos +70 adj:sg:nom.voc:f:com +71 adj:sg:nom.voc:f:pos +72 adj:sg:nom.voc:f:sup +73 adj:sg:nom.voc:m1.m2.m3:com +74 adj:sg:nom.voc:m1.m2.m3:pos +75 adj:sg:nom.voc:m1.m2.m3:sup +76 adj:sg:nom.voc:n1.n2:com +77 adj:sg:nom.voc:n1.n2:pos +78 adj:sg:nom.voc:n1.n2:sup +79 adv +80 adv:com +81 adv:pos +82 adv:sup +83 aglt:pl:pri:imperf:nwok +84 aglt:pl:pri:imperf:wok +85 aglt:pl:sec:imperf:nwok +86 aglt:pl:sec:imperf:wok +87 aglt:sg:pri:imperf:nwok +88 aglt:sg:pri:imperf:wok +89 aglt:sg:sec:imperf:nwok +90 aglt:sg:sec:imperf:wok +91 bedzie:pl:pri:imperf +92 bedzie:pl:sec:imperf +93 bedzie:pl:ter:imperf +94 bedzie:sg:pri:imperf +95 bedzie:sg:sec:imperf +96 bedzie:sg:ter:imperf +97 brev:pun +98 burk +99 comp +100 cond:pl:m1.p1:pri:imperf +101 cond:pl:m1.p1:pri:imperf.perf +102 cond:pl:m1.p1:pri:perf +103 cond:pl:m1.p1:sec:imperf +104 cond:pl:m1.p1:sec:imperf.perf +105 cond:pl:m1.p1:sec:perf +106 cond:pl:m1.p1:ter:imperf +107 cond:pl:m1.p1:ter:imperf.perf +108 cond:pl:m1.p1:ter:perf +109 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +110 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +111 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +112 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +113 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +114 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +115 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +116 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +117 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +118 cond:sg:f:pri:imperf +119 cond:sg:f:pri:imperf.perf +120 cond:sg:f:pri:perf +121 cond:sg:f:sec:imperf +122 cond:sg:f:sec:imperf.perf +123 cond:sg:f:sec:perf +124 cond:sg:f:ter:imperf +125 cond:sg:f:ter:imperf.perf +126 cond:sg:f:ter:perf +127 cond:sg:m1.m2.m3:pri:imperf +128 cond:sg:m1.m2.m3:pri:imperf.perf +129 cond:sg:m1.m2.m3:pri:perf +130 cond:sg:m1.m2.m3:sec:imperf +131 cond:sg:m1.m2.m3:sec:imperf.perf +132 cond:sg:m1.m2.m3:sec:perf +133 cond:sg:m1.m2.m3:ter:imperf +134 cond:sg:m1.m2.m3:ter:imperf.perf +135 cond:sg:m1.m2.m3:ter:perf +136 cond:sg:n1.n2:imperf +137 cond:sg:n1.n2:imperf.perf +138 cond:sg:n1.n2:perf +139 cond:sg:n1.n2:pri:imperf +140 cond:sg:n1.n2:pri:imperf.perf +141 cond:sg:n1.n2:pri:perf +142 cond:sg:n1.n2:sec:imperf +143 cond:sg:n1.n2:sec:imperf.perf +144 cond:sg:n1.n2:sec:perf +145 cond:sg:n1.n2:ter:imperf +146 cond:sg:n1.n2:ter:imperf.perf +147 cond:sg:n1.n2:ter:perf +148 conj +149 depr:pl:nom:m2 +150 depr:pl:voc:m2 +151 dig +152 emoticon +153 fin:pl:pri:imperf +154 fin:pl:pri:imperf.perf +155 fin:pl:pri:perf +156 fin:pl:sec:imperf +157 fin:pl:sec:imperf.perf +158 fin:pl:sec:perf +159 fin:pl:ter:imperf +160 fin:pl:ter:imperf.perf +161 fin:pl:ter:perf +162 fin:sg:pri:imperf +163 fin:sg:pri:imperf.perf +164 fin:sg:pri:perf +165 fin:sg:sec:imperf +166 fin:sg:sec:imperf.perf +167 fin:sg:sec:perf +168 fin:sg:ter:imperf +169 fin:sg:ter:imperf.perf +170 fin:sg:ter:perf +171 ger:pl:dat.loc:n2:imperf:aff +172 ger:pl:dat.loc:n2:imperf:neg +173 ger:pl:dat.loc:n2:imperf.perf:aff +174 ger:pl:dat.loc:n2:imperf.perf:neg +175 ger:pl:dat.loc:n2:perf:aff +176 ger:pl:dat.loc:n2:perf:neg +177 ger:pl:gen:n2:imperf:aff +178 ger:pl:gen:n2:imperf:neg +179 ger:pl:gen:n2:imperf.perf:aff +180 ger:pl:gen:n2:imperf.perf:neg +181 ger:pl:gen:n2:perf:aff +182 ger:pl:gen:n2:perf:neg +183 ger:pl:inst:n2:imperf:aff +184 ger:pl:inst:n2:imperf:neg +185 ger:pl:inst:n2:imperf.perf:aff +186 ger:pl:inst:n2:imperf.perf:neg +187 ger:pl:inst:n2:perf:aff +188 ger:pl:inst:n2:perf:neg +189 ger:pl:nom.acc:n2:imperf:aff +190 ger:pl:nom.acc:n2:imperf:neg +191 ger:pl:nom.acc:n2:imperf.perf:aff +192 ger:pl:nom.acc:n2:imperf.perf:neg +193 ger:pl:nom.acc:n2:perf:aff +194 ger:pl:nom.acc:n2:perf:neg +195 ger:sg:dat.loc:n2:imperf:aff +196 ger:sg:dat.loc:n2:imperf:neg +197 ger:sg:dat.loc:n2:imperf.perf:aff +198 ger:sg:dat.loc:n2:imperf.perf:neg +199 ger:sg:dat.loc:n2:perf:aff +200 ger:sg:dat.loc:n2:perf:neg +201 ger:sg:gen:n2:imperf:aff +202 ger:sg:gen:n2:imperf:neg +203 ger:sg:gen:n2:imperf.perf:aff +204 ger:sg:gen:n2:imperf.perf:neg +205 ger:sg:gen:n2:perf:aff +206 ger:sg:gen:n2:perf:neg +207 ger:sg:inst:n2:imperf:aff +208 ger:sg:inst:n2:imperf:neg +209 ger:sg:inst:n2:imperf.perf:aff +210 ger:sg:inst:n2:imperf.perf:neg +211 ger:sg:inst:n2:perf:aff +212 ger:sg:inst:n2:perf:neg +213 ger:sg:nom.acc:n2:imperf:aff +214 ger:sg:nom.acc:n2:imperf:neg +215 ger:sg:nom.acc:n2:imperf.perf:aff +216 ger:sg:nom.acc:n2:imperf.perf:neg +217 ger:sg:nom.acc:n2:perf:aff +218 ger:sg:nom.acc:n2:perf:neg +219 imps:imperf +220 imps:imperf.perf +221 imps:perf +222 impt:pl:pri:imperf +223 impt:pl:pri:imperf.perf +224 impt:pl:pri:perf +225 impt:pl:sec:imperf +226 impt:pl:sec:imperf.perf +227 impt:pl:sec:perf +228 impt:sg:sec:imperf +229 impt:sg:sec:imperf.perf +230 impt:sg:sec:perf +231 inf:imperf +232 inf:imperf.perf +233 inf:perf +234 interj +235 interp +236 naj +237 nie +238 num:comp +239 num:pl:acc:m1:rec +240 num:pl:dat.loc:n1.p1.p2:congr.rec +241 num:pl:dat:m1.m2.m3.n2.f:congr +242 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +243 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n2:congr +244 num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr +245 num:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +246 num:pl:gen.loc:m1.m2.m3.n2.f:congr +247 num:pl:gen:n1.p1.p2:rec +248 num:pl:inst:f:congr +249 num:pl:inst:m1.m2.m3.f.n1.n2.p1.p2:congr +250 num:pl:inst:m1.m2.m3.f.n2:congr +251 num:pl:inst:m1.m2.m3.n2:congr +252 num:pl:inst:m1.m2.m3.n2.f:congr +253 num:pl:inst:n1.p1.p2:rec +254 num:pl:nom.acc:m1.m2.m3.f.n1.n2.p1.p2:rec +255 num:pl:nom.acc.voc:f:congr +256 num:pl:nom.acc.voc:m1:rec +257 num:pl:nom.acc.voc:m2.m3.f.n1.n2.p1.p2:rec +258 num:pl:nom.acc.voc:m2.m3.f.n2:rec +259 num:pl:nom.acc.voc:m2.m3.n2:congr +260 num:pl:nom.acc.voc:m2.m3.n2.f:congr +261 num:pl:nom.acc.voc:n1.p1.p2:rec +262 num:pl:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.f.n1.n2.p1.p2:rec +263 num:pl:nom.voc:m1:congr +264 num:pl:nom.voc:m1:rec +265 num:sg:nom.gen.dat.inst.acc.loc.voc:f:rec +266 num:sg:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.n1.n2:rec +267 pact:pl:acc:m1.p1:imperf:aff +268 pact:pl:acc:m1.p1:imperf:neg +269 pact:pl:acc:m1.p1:imperf.perf:aff +270 pact:pl:acc:m1.p1:imperf.perf:neg +271 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +272 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +273 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +274 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +275 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +276 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +277 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +278 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +279 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +280 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +281 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +282 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +283 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +284 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +285 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +286 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +287 pact:pl:nom.voc:m1.p1:imperf:aff +288 pact:pl:nom.voc:m1.p1:imperf:neg +289 pact:pl:nom.voc:m1.p1:imperf.perf:aff +290 pact:pl:nom.voc:m1.p1:imperf.perf:neg +291 pact:sg:acc.inst:f:imperf:aff +292 pact:sg:acc.inst:f:imperf:neg +293 pact:sg:acc.inst:f:imperf.perf:aff +294 pact:sg:acc.inst:f:imperf.perf:neg +295 pact:sg:acc:m1.m2:imperf:aff +296 pact:sg:acc:m1.m2:imperf:neg +297 pact:sg:acc:m1.m2:imperf.perf:aff +298 pact:sg:acc:m1.m2:imperf.perf:neg +299 pact:sg:acc:m3:imperf:aff +300 pact:sg:acc:m3:imperf:neg +301 pact:sg:acc:m3:imperf.perf:aff +302 pact:sg:acc:m3:imperf.perf:neg +303 pact:sg:dat:m1.m2.m3.n1.n2:imperf:aff +304 pact:sg:dat:m1.m2.m3.n1.n2:imperf:neg +305 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +306 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +307 pact:sg:gen.dat.loc:f:imperf:aff +308 pact:sg:gen.dat.loc:f:imperf:neg +309 pact:sg:gen.dat.loc:f:imperf.perf:aff +310 pact:sg:gen.dat.loc:f:imperf.perf:neg +311 pact:sg:gen:m1.m2.m3.n1.n2:imperf:aff +312 pact:sg:gen:m1.m2.m3.n1.n2:imperf:neg +313 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +314 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +315 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +316 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +317 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +318 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +319 pact:sg:nom.acc.voc:n1.n2:imperf:aff +320 pact:sg:nom.acc.voc:n1.n2:imperf:neg +321 pact:sg:nom.acc.voc:n1.n2:imperf.perf:aff +322 pact:sg:nom.acc.voc:n1.n2:imperf.perf:neg +323 pact:sg:nom.voc:f:imperf:aff +324 pact:sg:nom.voc:f:imperf:neg +325 pact:sg:nom.voc:f:imperf.perf:aff +326 pact:sg:nom.voc:f:imperf.perf:neg +327 pact:sg:nom.voc:m1.m2.m3:imperf:aff +328 pact:sg:nom.voc:m1.m2.m3:imperf:neg +329 pact:sg:nom.voc:m1.m2.m3:imperf.perf:aff +330 pact:sg:nom.voc:m1.m2.m3:imperf.perf:neg +331 pant:perf +332 pcon:imperf +333 ppas:pl:acc:m1.p1:imperf:aff +334 ppas:pl:acc:m1.p1:imperf:neg +335 ppas:pl:acc:m1.p1:imperf.perf:aff +336 ppas:pl:acc:m1.p1:imperf.perf:neg +337 ppas:pl:acc:m1.p1:perf:aff +338 ppas:pl:acc:m1.p1:perf:neg +339 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +340 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +341 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +342 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +343 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +344 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +345 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +346 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +347 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +348 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +349 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +350 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +351 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +352 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +353 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +354 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +355 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +356 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +357 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +358 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +359 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +360 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +361 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:aff +362 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:neg +363 ppas:pl:nom.voc:m1.p1:imperf:aff +364 ppas:pl:nom.voc:m1.p1:imperf:neg +365 ppas:pl:nom.voc:m1.p1:imperf.perf:aff +366 ppas:pl:nom.voc:m1.p1:imperf.perf:neg +367 ppas:pl:nom.voc:m1.p1:perf:aff +368 ppas:pl:nom.voc:m1.p1:perf:neg +369 ppas:sg:acc.inst:f:imperf:aff +370 ppas:sg:acc.inst:f:imperf:neg +371 ppas:sg:acc.inst:f:imperf.perf:aff +372 ppas:sg:acc.inst:f:imperf.perf:neg +373 ppas:sg:acc.inst:f:perf:aff +374 ppas:sg:acc.inst:f:perf:neg +375 ppas:sg:acc:m1.m2:imperf:aff +376 ppas:sg:acc:m1.m2:imperf:neg +377 ppas:sg:acc:m1.m2:imperf.perf:aff +378 ppas:sg:acc:m1.m2:imperf.perf:neg +379 ppas:sg:acc:m1.m2:perf:aff +380 ppas:sg:acc:m1.m2:perf:neg +381 ppas:sg:acc:m3:imperf:aff +382 ppas:sg:acc:m3:imperf:neg +383 ppas:sg:acc:m3:imperf.perf:aff +384 ppas:sg:acc:m3:imperf.perf:neg +385 ppas:sg:acc:m3:perf:aff +386 ppas:sg:acc:m3:perf:neg +387 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:aff +388 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:neg +389 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +390 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +391 ppas:sg:dat:m1.m2.m3.n1.n2:perf:aff +392 ppas:sg:dat:m1.m2.m3.n1.n2:perf:neg +393 ppas:sg:gen.dat.loc:f:imperf:aff +394 ppas:sg:gen.dat.loc:f:imperf:neg +395 ppas:sg:gen.dat.loc:f:imperf.perf:aff +396 ppas:sg:gen.dat.loc:f:imperf.perf:neg +397 ppas:sg:gen.dat.loc:f:perf:aff +398 ppas:sg:gen.dat.loc:f:perf:neg +399 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:aff +400 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:neg +401 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +402 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +403 ppas:sg:gen:m1.m2.m3.n1.n2:perf:aff +404 ppas:sg:gen:m1.m2.m3.n1.n2:perf:neg +405 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +406 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +407 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +408 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +409 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:aff +410 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:neg +411 ppas:sg:nom.acc.voc:n1.n2:imperf:aff +412 ppas:sg:nom.acc.voc:n1.n2:imperf:neg +413 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:aff +414 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:neg +415 ppas:sg:nom.acc.voc:n1.n2:perf:aff +416 ppas:sg:nom.acc.voc:n1.n2:perf:neg +417 ppas:sg:nom.voc:f:imperf:aff +418 ppas:sg:nom.voc:f:imperf:neg +419 ppas:sg:nom.voc:f:imperf.perf:aff +420 ppas:sg:nom.voc:f:imperf.perf:neg +421 ppas:sg:nom.voc:f:perf:aff +422 ppas:sg:nom.voc:f:perf:neg +423 ppas:sg:nom.voc:m1.m2.m3:imperf:aff +424 ppas:sg:nom.voc:m1.m2.m3:imperf:neg +425 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:aff +426 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:neg +427 ppas:sg:nom.voc:m1.m2.m3:perf:aff +428 ppas:sg:nom.voc:m1.m2.m3:perf:neg +429 ppron12:pl:acc:_:pri +430 ppron12:pl:acc:_:sec +431 ppron12:pl:dat:_:pri +432 ppron12:pl:dat:_:sec +433 ppron12:pl:gen:_:pri +434 ppron12:pl:gen:_:sec +435 ppron12:pl:inst:_:pri +436 ppron12:pl:inst:_:sec +437 ppron12:pl:loc:_:pri +438 ppron12:pl:loc:_:sec +439 ppron12:pl:nom:_:pri +440 ppron12:pl:nom:_:sec +441 ppron12:pl:voc:_:pri +442 ppron12:pl:voc:_:sec +443 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:akc +444 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:nakc +445 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:akc +446 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:nakc +447 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:akc +448 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:nakc +449 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:akc +450 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:nakc +451 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:akc +452 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:nakc +453 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:akc +454 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:nakc +455 ppron12:sg:inst:m1.m2.m3.f.n1.n2:pri +456 ppron12:sg:inst:m1.m2.m3.f.n1.n2:sec +457 ppron12:sg:loc:m1.m2.m3.f.n1.n2:pri +458 ppron12:sg:loc:m1.m2.m3.f.n1.n2:sec +459 ppron12:sg:nom:m1.m2.m3.f.n1.n2:pri +460 ppron12:sg:nom:m1.m2.m3.f.n1.n2:sec +461 ppron12:sg:voc:m1.m2.m3.f.n1.n2:sec +462 ppron3:pl:acc:m1.p1:ter:_:npraep +463 ppron3:pl:acc:m1.p1:ter:_:praep +464 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:npraep +465 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:praep +466 ppron3:pl:dat:_:ter:_:npraep +467 ppron3:pl:dat:_:ter:_:praep +468 ppron3:pl:gen:_:ter:_:npraep +469 ppron3:pl:gen:_:ter:_:praep +470 ppron3:pl:inst:_:ter:_:_ +471 ppron3:pl:loc:_:ter:_:_ +472 ppron3:pl:nom:m1.p1:ter:_:_ +473 ppron3:pl:nom:m2.m3.f.n1.n2.p2.p3:ter:_:_ +474 ppron3:sg:acc:f:ter:_:npraep +475 ppron3:sg:acc:f:ter:_:praep +476 ppron3:sg:acc:m1.m2.m3:ter:akc:npraep +477 ppron3:sg:acc:m1.m2.m3:ter:akc:praep +478 ppron3:sg:acc:m1.m2.m3:ter:nakc:npraep +479 ppron3:sg:acc:m1.m2.m3:ter:nakc:praep +480 ppron3:sg:acc:n1.n2:ter:_:npraep +481 ppron3:sg:acc:n1.n2:ter:_:praep +482 ppron3:sg:dat:f:ter:_:npraep +483 ppron3:sg:dat:f:ter:_:praep +484 ppron3:sg:dat:m1.m2.m3:ter:akc:npraep +485 ppron3:sg:dat:m1.m2.m3:ter:nakc:npraep +486 ppron3:sg:dat:m1.m2.m3:ter:_:praep +487 ppron3:sg:dat:n1.n2:ter:akc:npraep +488 ppron3:sg:dat:n1.n2:ter:nakc:npraep +489 ppron3:sg:dat:n1.n2:ter:_:praep +490 ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep +491 ppron3:sg:gen:f:ter:_:npraep +492 ppron3:sg:gen:f:ter:_:praep +493 ppron3:sg:gen:m1.m2.m3:ter:akc:npraep +494 ppron3:sg:gen:m1.m2.m3:ter:akc:praep +495 ppron3:sg:gen:m1.m2.m3:ter:nakc:npraep +496 ppron3:sg:gen:m1.m2.m3:ter:nakc:praep +497 ppron3:sg:gen:n1.n2:ter:akc:npraep +498 ppron3:sg:gen:n1.n2:ter:nakc:npraep +499 ppron3:sg:gen:n1.n2:ter:_:praep +500 ppron3:sg:inst:f:ter:_:praep +501 ppron3:sg:inst:m1.m2.m3:ter:_:_ +502 ppron3:sg:inst:n1.n2:ter:_:_ +503 ppron3:sg:loc:f:ter:_:_ +504 ppron3:sg:loc:m1.m2.m3:ter:_:_ +505 ppron3:sg:loc:n1.n2:ter:_:_ +506 ppron3:sg:nom:f:ter:_:_ +507 ppron3:sg:nom:m1.m2.m3:ter:_:_ +508 ppron3:sg:nom:n1.n2:ter:_:_ +509 praet:pl:m1.p1:imperf +510 praet:pl:m1.p1:imperf.perf +511 praet:pl:m1.p1:perf +512 praet:pl:m1.p1:pri:imperf +513 praet:pl:m1.p1:pri:imperf.perf +514 praet:pl:m1.p1:pri:perf +515 praet:pl:m1.p1:sec:imperf +516 praet:pl:m1.p1:sec:imperf.perf +517 praet:pl:m1.p1:sec:perf +518 praet:pl:m1.p1:ter:imperf +519 praet:pl:m1.p1:ter:imperf.perf +520 praet:pl:m1.p1:ter:perf +521 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf +522 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf.perf +523 praet:pl:m2.m3.f.n1.n2.p2.p3:perf +524 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +525 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +526 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +527 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +528 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +529 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +530 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +531 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +532 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +533 praet:sg:f:imperf +534 praet:sg:f:imperf.perf +535 praet:sg:f:perf +536 praet:sg:f:pri:imperf +537 praet:sg:f:pri:imperf.perf +538 praet:sg:f:pri:perf +539 praet:sg:f:sec:imperf +540 praet:sg:f:sec:imperf.perf +541 praet:sg:f:sec:perf +542 praet:sg:f:ter:imperf +543 praet:sg:f:ter:imperf.perf +544 praet:sg:f:ter:perf +545 praet:sg:m1.m2.m3:imperf +546 praet:sg:m1.m2.m3:imperf:agl +547 praet:sg:m1.m2.m3:imperf:nagl +548 praet:sg:m1.m2.m3:imperf.perf +549 praet:sg:m1.m2.m3:perf +550 praet:sg:m1.m2.m3:perf:agl +551 praet:sg:m1.m2.m3:perf:nagl +552 praet:sg:m1.m2.m3:pri:imperf +553 praet:sg:m1.m2.m3:pri:imperf.perf +554 praet:sg:m1.m2.m3:pri:perf +555 praet:sg:m1.m2.m3:sec:imperf +556 praet:sg:m1.m2.m3:sec:imperf.perf +557 praet:sg:m1.m2.m3:sec:perf +558 praet:sg:m1.m2.m3:ter:imperf +559 praet:sg:m1.m2.m3:ter:imperf.perf +560 praet:sg:m1.m2.m3:ter:perf +561 praet:sg:n1.n2:imperf +562 praet:sg:n1.n2:imperf.perf +563 praet:sg:n1.n2:perf +564 praet:sg:n1.n2:pri:imperf +565 praet:sg:n1.n2:pri:imperf.perf +566 praet:sg:n1.n2:pri:perf +567 praet:sg:n1.n2:sec:imperf +568 praet:sg:n1.n2:sec:imperf.perf +569 praet:sg:n1.n2:sec:perf +570 praet:sg:n1.n2:ter:imperf +571 praet:sg:n1.n2:ter:imperf.perf +572 praet:sg:n1.n2:ter:perf +573 pred +574 prefa +575 prefppas +576 prefs +577 prefv +578 prep:acc +579 prep:acc:nwok +580 prep:acc:wok +581 prep:dat +582 prep:gen +583 prep:gen:nwok +584 prep:gen:wok +585 prep:inst +586 prep:inst:nwok +587 prep:inst:wok +588 prep:loc +589 prep:loc:nwok +590 prep:loc:wok +591 prep:nom +592 qub +593 romandig +594 siebie:acc +595 siebie:dat +596 siebie:gen +597 siebie:inst +598 siebie:loc +599 substa +600 subst:pl:acc:f +601 subst:pl:acc:m1 +602 subst:pl:acc:m2 +603 subst:pl:acc:m3 +604 subst:pl:acc:n1 +605 subst:pl:acc:n2 +606 subst:pl:acc:p1 +607 subst:pl:acc:p2 +608 subst:pl:acc:p3 +609 subst:pl:dat:f +610 subst:pl:dat:m1 +611 subst:pl:dat:m2 +612 subst:pl:dat:m3 +613 subst:pl:dat:n1 +614 subst:pl:dat:n2 +615 subst:pl:dat:p1 +616 subst:pl:dat:p2 +617 subst:pl:dat:p3 +618 subst:pl:gen:f +619 subst:pl:gen:m1 +620 subst:pl:gen:m2 +621 subst:pl:gen:m3 +622 subst:pl:gen:n1 +623 subst:pl:gen:n2 +624 subst:pl:gen:p1 +625 subst:pl:gen:p2 +626 subst:pl:gen:p3 +627 subst:pl:inst:f +628 subst:pl:inst:m1 +629 subst:pl:inst:m2 +630 subst:pl:inst:m3 +631 subst:pl:inst:n1 +632 subst:pl:inst:n2 +633 subst:pl:inst:p1 +634 subst:pl:inst:p2 +635 subst:pl:inst:p3 +636 subst:pl:loc:f +637 subst:pl:loc:m1 +638 subst:pl:loc:m2 +639 subst:pl:loc:m3 +640 subst:pl:loc:n1 +641 subst:pl:loc:n2 +642 subst:pl:loc:p1 +643 subst:pl:loc:p2 +644 subst:pl:loc:p3 +645 subst:pl:nom:f +646 subst:pl:nom:m1 +647 subst:pl:nom:m2 +648 subst:pl:nom:m3 +649 subst:pl:nom:n1 +650 subst:pl:nom:n2 +651 subst:pl:nom:p1 +652 subst:pl:nom:p2 +653 subst:pl:nom:p3 +654 subst:pl:voc:f +655 subst:pl:voc:m1 +656 subst:pl:voc:m2 +657 subst:pl:voc:m3 +658 subst:pl:voc:n1 +659 subst:pl:voc:n2 +660 subst:pl:voc:p1 +661 subst:pl:voc:p2 +662 subst:pl:voc:p3 +663 subst:sg:acc:f +664 subst:sg:acc:m1 +665 subst:sg:acc:m2 +666 subst:sg:acc:m3 +667 subst:sg:acc:n1 +668 subst:sg:acc:n2 +669 subst:sg:dat:f +670 subst:sg:dat:m1 +671 subst:sg:dat:m2 +672 subst:sg:dat:m3 +673 subst:sg:dat:n1 +674 subst:sg:dat:n2 +675 subst:sg:gen:f +676 subst:sg:gen:m1 +677 subst:sg:gen:m2 +678 subst:sg:gen:m3 +679 subst:sg:gen:n1 +680 subst:sg:gen:n2 +681 subst:sg:inst:f +682 subst:sg:inst:m1 +683 subst:sg:inst:m2 +684 subst:sg:inst:m3 +685 subst:sg:inst:n1 +686 subst:sg:inst:n2 +687 subst:sg:loc:f +688 subst:sg:loc:m1 +689 subst:sg:loc:m2 +690 subst:sg:loc:m3 +691 subst:sg:loc:n1 +692 subst:sg:loc:n2 +693 subst:sg:nom:f +694 subst:sg:nom:m1 +695 subst:sg:nom:m2 +696 subst:sg:nom:m3 +697 subst:sg:nom:n1 +698 subst:sg:nom:n2 +699 subst:sg:voc:f +700 subst:sg:voc:m1 +701 subst:sg:voc:m2 +702 subst:sg:voc:m3 +703 subst:sg:voc:n1 +704 subst:sg:voc:n2 +705 winien:pl:m1.p1:imperf +706 winien:pl:m1.p1:pri:imperf +707 winien:pl:m1.p1:sec:imperf +708 winien:pl:m1.p1:ter:imperf +709 winien:pl:m2.m3.f.n1.n2.p2.p3:imperf +710 winien:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +711 winien:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +712 winien:sg:f:imperf +713 winien:sg:f:pri:imperf +714 winien:sg:f:sec:imperf +715 winien:sg:f:ter:imperf +716 winien:sg:m1.m2.m3:imperf +717 winien:sg:m1.m2.m3:pri:imperf +718 winien:sg:m1.m2.m3:sec:imperf +719 winien:sg:m1.m2.m3:ter:imperf +720 winien:sg:n1.n2:imperf +721 winien:sg:n1.n2:pri:imperf +722 winien:sg:n1.n2:sec:imperf +723 winien:sg:n1.n2:ter:imperf diff --git a/tests/generator/test_digits/ARGS b/tests/generator/test_digits/ARGS new file mode 100644 index 0000000..4fd99ea --- /dev/null +++ b/tests/generator/test_digits/ARGS @@ -0,0 +1 @@ +--aggl permissive diff --git a/tests/generator/test_digits/dictionary.tab b/tests/generator/test_digits/dictionary.tab new file mode 100644 index 0000000..cfd1767 --- /dev/null +++ b/tests/generator/test_digits/dictionary.tab @@ -0,0 +1,10 @@ +0 0 dig +1 1 dig +2 2 dig +3 3 dig +4 4 dig +5 5 dig +6 6 dig +7 7 dig +8 8 dig +9 9 dig diff --git a/tests/generator/test_digits/input.txt b/tests/generator/test_digits/input.txt new file mode 100644 index 0000000..af63b3c --- /dev/null +++ b/tests/generator/test_digits/input.txt @@ -0,0 +1,7 @@ +1 +12 +123 +1234 +012341 +1234seasdfa +sdfa123 diff --git a/tests/generator/test_digits/output.txt b/tests/generator/test_digits/output.txt new file mode 100644 index 0000000..d73b352 --- /dev/null +++ b/tests/generator/test_digits/output.txt @@ -0,0 +1,8 @@ +[1,1,dig,_,_] +[12,12,dig,_,_] +[123,123,dig,_,_] +[1234,1234,dig,_,_] +[012341,012341,dig,_,_] +[1234seasdfa,1234seasdfa,ign,_,_] +[sdfa123,sdfa123,ign,_,_] + diff --git a/tests/generator/test_digits/segmentation.dat b/tests/generator/test_digits/segmentation.dat new file mode 100644 index 0000000..4bac5b3 --- /dev/null +++ b/tests/generator/test_digits/segmentation.dat @@ -0,0 +1,47 @@ +[options] +aggl=strict permissive isolated +praet=split composite + +[combinations] +#define wsz_interp (interp|kropka|przecinek|dywiz)* + +#define moze_interp(segmenty) wsz_interp segmenty wsz_interp + +# Segmenty występujące samodzielnie: +# +# domyślny typ segmentu samodzielnego: +moze_interp(samodz) + +# Pojedyncze znaki interpunkcyjne +moze_interp(interp|kropka|przecinek|dywiz) + +# Liczba zapisana jako ciąg cyfr: +moze_interp( dig>* dig ) + +[segment types] +interp +kropka +przecinek +dywiz +dig +samodz + +[lexemes] +kropka .:interp +przecinek ,:interp +dywiz -:interp + +[tags] +dig dig +interp interp +samodz % + +[separator chars] +# , +44 + +# . +46 + +# ; +59 diff --git a/tests/generator/test_digits/tagset.dat b/tests/generator/test_digits/tagset.dat new file mode 100644 index 0000000..aaa55af --- /dev/null +++ b/tests/generator/test_digits/tagset.dat @@ -0,0 +1,728 @@ +#!MORFEUSZ-TAGSET 0.1 + +[TAGS] + +0 ign +1 sp +2 adja +3 adjc +4 adjp +5 adj:pl:acc:m1.p1:com +6 adj:pl:acc:m1.p1:pos +7 adj:pl:acc:m1.p1:sup +8 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:com +9 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:pos +10 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:sup +11 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:com +12 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +13 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +14 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:com +15 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +16 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +17 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:com +18 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +19 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +20 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:com +21 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +22 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +23 adj:pl:nom:m1.p1:pos +24 adj:pl:nom:m2.m3.f.n1.n2.p2.p3:pos +25 adj:pl:nom.voc:m1.p1:com +26 adj:pl:nom.voc:m1.p1:pos +27 adj:pl:nom.voc:m1.p1:sup +28 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:com +29 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:pos +30 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:sup +31 adj:sg:acc:f:com +32 adj:sg:acc:f:pos +33 adj:sg:acc:f:sup +34 adj:sg:acc:m1.m2:com +35 adj:sg:acc:m1.m2:pos +36 adj:sg:acc:m1.m2:sup +37 adj:sg:acc:m3:com +38 adj:sg:acc:m3:pos +39 adj:sg:acc:m3:sup +40 adj:sg:acc:n1.n2:com +41 adj:sg:acc:n1.n2:pos +42 adj:sg:acc:n1.n2:sup +43 adj:sg:dat:f:com +44 adj:sg:dat:f:pos +45 adj:sg:dat:f:sup +46 adj:sg:dat:m1.m2.m3.n1.n2:com +47 adj:sg:dat:m1.m2.m3.n1.n2:pos +48 adj:sg:dat:m1.m2.m3.n1.n2:sup +49 adj:sg:gen:f:com +50 adj:sg:gen:f:pos +51 adj:sg:gen:f:sup +52 adj:sg:gen:m1.m2.m3.n1.n2:com +53 adj:sg:gen:m1.m2.m3.n1.n2:pos +54 adj:sg:gen:m1.m2.m3.n1.n2:sup +55 adj:sg:inst:f:com +56 adj:sg:inst:f:pos +57 adj:sg:inst:f:sup +58 adj:sg:inst:m1.m2.m3.n1.n2:com +59 adj:sg:inst:m1.m2.m3.n1.n2:pos +60 adj:sg:inst:m1.m2.m3.n1.n2:sup +61 adj:sg:loc:f:com +62 adj:sg:loc:f:pos +63 adj:sg:loc:f:sup +64 adj:sg:loc:m1.m2.m3.n1.n2:com +65 adj:sg:loc:m1.m2.m3.n1.n2:pos +66 adj:sg:loc:m1.m2.m3.n1.n2:sup +67 adj:sg:nom:f:pos +68 adj:sg:nom:m1.m2.m3:pos +69 adj:sg:nom:n1.n2:pos +70 adj:sg:nom.voc:f:com +71 adj:sg:nom.voc:f:pos +72 adj:sg:nom.voc:f:sup +73 adj:sg:nom.voc:m1.m2.m3:com +74 adj:sg:nom.voc:m1.m2.m3:pos +75 adj:sg:nom.voc:m1.m2.m3:sup +76 adj:sg:nom.voc:n1.n2:com +77 adj:sg:nom.voc:n1.n2:pos +78 adj:sg:nom.voc:n1.n2:sup +79 adv +80 adv:com +81 adv:pos +82 adv:sup +83 aglt:pl:pri:imperf:nwok +84 aglt:pl:pri:imperf:wok +85 aglt:pl:sec:imperf:nwok +86 aglt:pl:sec:imperf:wok +87 aglt:sg:pri:imperf:nwok +88 aglt:sg:pri:imperf:wok +89 aglt:sg:sec:imperf:nwok +90 aglt:sg:sec:imperf:wok +91 bedzie:pl:pri:imperf +92 bedzie:pl:sec:imperf +93 bedzie:pl:ter:imperf +94 bedzie:sg:pri:imperf +95 bedzie:sg:sec:imperf +96 bedzie:sg:ter:imperf +97 brev:pun +98 burk +99 comp +100 cond:pl:m1.p1:pri:imperf +101 cond:pl:m1.p1:pri:imperf.perf +102 cond:pl:m1.p1:pri:perf +103 cond:pl:m1.p1:sec:imperf +104 cond:pl:m1.p1:sec:imperf.perf +105 cond:pl:m1.p1:sec:perf +106 cond:pl:m1.p1:ter:imperf +107 cond:pl:m1.p1:ter:imperf.perf +108 cond:pl:m1.p1:ter:perf +109 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +110 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +111 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +112 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +113 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +114 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +115 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +116 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +117 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +118 cond:sg:f:pri:imperf +119 cond:sg:f:pri:imperf.perf +120 cond:sg:f:pri:perf +121 cond:sg:f:sec:imperf +122 cond:sg:f:sec:imperf.perf +123 cond:sg:f:sec:perf +124 cond:sg:f:ter:imperf +125 cond:sg:f:ter:imperf.perf +126 cond:sg:f:ter:perf +127 cond:sg:m1.m2.m3:pri:imperf +128 cond:sg:m1.m2.m3:pri:imperf.perf +129 cond:sg:m1.m2.m3:pri:perf +130 cond:sg:m1.m2.m3:sec:imperf +131 cond:sg:m1.m2.m3:sec:imperf.perf +132 cond:sg:m1.m2.m3:sec:perf +133 cond:sg:m1.m2.m3:ter:imperf +134 cond:sg:m1.m2.m3:ter:imperf.perf +135 cond:sg:m1.m2.m3:ter:perf +136 cond:sg:n1.n2:imperf +137 cond:sg:n1.n2:imperf.perf +138 cond:sg:n1.n2:perf +139 cond:sg:n1.n2:pri:imperf +140 cond:sg:n1.n2:pri:imperf.perf +141 cond:sg:n1.n2:pri:perf +142 cond:sg:n1.n2:sec:imperf +143 cond:sg:n1.n2:sec:imperf.perf +144 cond:sg:n1.n2:sec:perf +145 cond:sg:n1.n2:ter:imperf +146 cond:sg:n1.n2:ter:imperf.perf +147 cond:sg:n1.n2:ter:perf +148 conj +149 depr:pl:nom:m2 +150 depr:pl:voc:m2 +151 dig +152 emoticon +153 fin:pl:pri:imperf +154 fin:pl:pri:imperf.perf +155 fin:pl:pri:perf +156 fin:pl:sec:imperf +157 fin:pl:sec:imperf.perf +158 fin:pl:sec:perf +159 fin:pl:ter:imperf +160 fin:pl:ter:imperf.perf +161 fin:pl:ter:perf +162 fin:sg:pri:imperf +163 fin:sg:pri:imperf.perf +164 fin:sg:pri:perf +165 fin:sg:sec:imperf +166 fin:sg:sec:imperf.perf +167 fin:sg:sec:perf +168 fin:sg:ter:imperf +169 fin:sg:ter:imperf.perf +170 fin:sg:ter:perf +171 ger:pl:dat.loc:n2:imperf:aff +172 ger:pl:dat.loc:n2:imperf:neg +173 ger:pl:dat.loc:n2:imperf.perf:aff +174 ger:pl:dat.loc:n2:imperf.perf:neg +175 ger:pl:dat.loc:n2:perf:aff +176 ger:pl:dat.loc:n2:perf:neg +177 ger:pl:gen:n2:imperf:aff +178 ger:pl:gen:n2:imperf:neg +179 ger:pl:gen:n2:imperf.perf:aff +180 ger:pl:gen:n2:imperf.perf:neg +181 ger:pl:gen:n2:perf:aff +182 ger:pl:gen:n2:perf:neg +183 ger:pl:inst:n2:imperf:aff +184 ger:pl:inst:n2:imperf:neg +185 ger:pl:inst:n2:imperf.perf:aff +186 ger:pl:inst:n2:imperf.perf:neg +187 ger:pl:inst:n2:perf:aff +188 ger:pl:inst:n2:perf:neg +189 ger:pl:nom.acc:n2:imperf:aff +190 ger:pl:nom.acc:n2:imperf:neg +191 ger:pl:nom.acc:n2:imperf.perf:aff +192 ger:pl:nom.acc:n2:imperf.perf:neg +193 ger:pl:nom.acc:n2:perf:aff +194 ger:pl:nom.acc:n2:perf:neg +195 ger:sg:dat.loc:n2:imperf:aff +196 ger:sg:dat.loc:n2:imperf:neg +197 ger:sg:dat.loc:n2:imperf.perf:aff +198 ger:sg:dat.loc:n2:imperf.perf:neg +199 ger:sg:dat.loc:n2:perf:aff +200 ger:sg:dat.loc:n2:perf:neg +201 ger:sg:gen:n2:imperf:aff +202 ger:sg:gen:n2:imperf:neg +203 ger:sg:gen:n2:imperf.perf:aff +204 ger:sg:gen:n2:imperf.perf:neg +205 ger:sg:gen:n2:perf:aff +206 ger:sg:gen:n2:perf:neg +207 ger:sg:inst:n2:imperf:aff +208 ger:sg:inst:n2:imperf:neg +209 ger:sg:inst:n2:imperf.perf:aff +210 ger:sg:inst:n2:imperf.perf:neg +211 ger:sg:inst:n2:perf:aff +212 ger:sg:inst:n2:perf:neg +213 ger:sg:nom.acc:n2:imperf:aff +214 ger:sg:nom.acc:n2:imperf:neg +215 ger:sg:nom.acc:n2:imperf.perf:aff +216 ger:sg:nom.acc:n2:imperf.perf:neg +217 ger:sg:nom.acc:n2:perf:aff +218 ger:sg:nom.acc:n2:perf:neg +219 imps:imperf +220 imps:imperf.perf +221 imps:perf +222 impt:pl:pri:imperf +223 impt:pl:pri:imperf.perf +224 impt:pl:pri:perf +225 impt:pl:sec:imperf +226 impt:pl:sec:imperf.perf +227 impt:pl:sec:perf +228 impt:sg:sec:imperf +229 impt:sg:sec:imperf.perf +230 impt:sg:sec:perf +231 inf:imperf +232 inf:imperf.perf +233 inf:perf +234 interj +235 interp +236 naj +237 nie +238 num:comp +239 num:pl:acc:m1:rec +240 num:pl:dat.loc:n1.p1.p2:congr.rec +241 num:pl:dat:m1.m2.m3.n2.f:congr +242 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +243 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n2:congr +244 num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr +245 num:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +246 num:pl:gen.loc:m1.m2.m3.n2.f:congr +247 num:pl:gen:n1.p1.p2:rec +248 num:pl:inst:f:congr +249 num:pl:inst:m1.m2.m3.f.n1.n2.p1.p2:congr +250 num:pl:inst:m1.m2.m3.f.n2:congr +251 num:pl:inst:m1.m2.m3.n2:congr +252 num:pl:inst:m1.m2.m3.n2.f:congr +253 num:pl:inst:n1.p1.p2:rec +254 num:pl:nom.acc:m1.m2.m3.f.n1.n2.p1.p2:rec +255 num:pl:nom.acc.voc:f:congr +256 num:pl:nom.acc.voc:m1:rec +257 num:pl:nom.acc.voc:m2.m3.f.n1.n2.p1.p2:rec +258 num:pl:nom.acc.voc:m2.m3.f.n2:rec +259 num:pl:nom.acc.voc:m2.m3.n2:congr +260 num:pl:nom.acc.voc:m2.m3.n2.f:congr +261 num:pl:nom.acc.voc:n1.p1.p2:rec +262 num:pl:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.f.n1.n2.p1.p2:rec +263 num:pl:nom.voc:m1:congr +264 num:pl:nom.voc:m1:rec +265 num:sg:nom.gen.dat.inst.acc.loc.voc:f:rec +266 num:sg:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.n1.n2:rec +267 pact:pl:acc:m1.p1:imperf:aff +268 pact:pl:acc:m1.p1:imperf:neg +269 pact:pl:acc:m1.p1:imperf.perf:aff +270 pact:pl:acc:m1.p1:imperf.perf:neg +271 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +272 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +273 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +274 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +275 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +276 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +277 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +278 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +279 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +280 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +281 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +282 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +283 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +284 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +285 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +286 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +287 pact:pl:nom.voc:m1.p1:imperf:aff +288 pact:pl:nom.voc:m1.p1:imperf:neg +289 pact:pl:nom.voc:m1.p1:imperf.perf:aff +290 pact:pl:nom.voc:m1.p1:imperf.perf:neg +291 pact:sg:acc.inst:f:imperf:aff +292 pact:sg:acc.inst:f:imperf:neg +293 pact:sg:acc.inst:f:imperf.perf:aff +294 pact:sg:acc.inst:f:imperf.perf:neg +295 pact:sg:acc:m1.m2:imperf:aff +296 pact:sg:acc:m1.m2:imperf:neg +297 pact:sg:acc:m1.m2:imperf.perf:aff +298 pact:sg:acc:m1.m2:imperf.perf:neg +299 pact:sg:acc:m3:imperf:aff +300 pact:sg:acc:m3:imperf:neg +301 pact:sg:acc:m3:imperf.perf:aff +302 pact:sg:acc:m3:imperf.perf:neg +303 pact:sg:dat:m1.m2.m3.n1.n2:imperf:aff +304 pact:sg:dat:m1.m2.m3.n1.n2:imperf:neg +305 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +306 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +307 pact:sg:gen.dat.loc:f:imperf:aff +308 pact:sg:gen.dat.loc:f:imperf:neg +309 pact:sg:gen.dat.loc:f:imperf.perf:aff +310 pact:sg:gen.dat.loc:f:imperf.perf:neg +311 pact:sg:gen:m1.m2.m3.n1.n2:imperf:aff +312 pact:sg:gen:m1.m2.m3.n1.n2:imperf:neg +313 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +314 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +315 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +316 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +317 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +318 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +319 pact:sg:nom.acc.voc:n1.n2:imperf:aff +320 pact:sg:nom.acc.voc:n1.n2:imperf:neg +321 pact:sg:nom.acc.voc:n1.n2:imperf.perf:aff +322 pact:sg:nom.acc.voc:n1.n2:imperf.perf:neg +323 pact:sg:nom.voc:f:imperf:aff +324 pact:sg:nom.voc:f:imperf:neg +325 pact:sg:nom.voc:f:imperf.perf:aff +326 pact:sg:nom.voc:f:imperf.perf:neg +327 pact:sg:nom.voc:m1.m2.m3:imperf:aff +328 pact:sg:nom.voc:m1.m2.m3:imperf:neg +329 pact:sg:nom.voc:m1.m2.m3:imperf.perf:aff +330 pact:sg:nom.voc:m1.m2.m3:imperf.perf:neg +331 pant:perf +332 pcon:imperf +333 ppas:pl:acc:m1.p1:imperf:aff +334 ppas:pl:acc:m1.p1:imperf:neg +335 ppas:pl:acc:m1.p1:imperf.perf:aff +336 ppas:pl:acc:m1.p1:imperf.perf:neg +337 ppas:pl:acc:m1.p1:perf:aff +338 ppas:pl:acc:m1.p1:perf:neg +339 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +340 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +341 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +342 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +343 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +344 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +345 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +346 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +347 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +348 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +349 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +350 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +351 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +352 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +353 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +354 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +355 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +356 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +357 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +358 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +359 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +360 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +361 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:aff +362 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:neg +363 ppas:pl:nom.voc:m1.p1:imperf:aff +364 ppas:pl:nom.voc:m1.p1:imperf:neg +365 ppas:pl:nom.voc:m1.p1:imperf.perf:aff +366 ppas:pl:nom.voc:m1.p1:imperf.perf:neg +367 ppas:pl:nom.voc:m1.p1:perf:aff +368 ppas:pl:nom.voc:m1.p1:perf:neg +369 ppas:sg:acc.inst:f:imperf:aff +370 ppas:sg:acc.inst:f:imperf:neg +371 ppas:sg:acc.inst:f:imperf.perf:aff +372 ppas:sg:acc.inst:f:imperf.perf:neg +373 ppas:sg:acc.inst:f:perf:aff +374 ppas:sg:acc.inst:f:perf:neg +375 ppas:sg:acc:m1.m2:imperf:aff +376 ppas:sg:acc:m1.m2:imperf:neg +377 ppas:sg:acc:m1.m2:imperf.perf:aff +378 ppas:sg:acc:m1.m2:imperf.perf:neg +379 ppas:sg:acc:m1.m2:perf:aff +380 ppas:sg:acc:m1.m2:perf:neg +381 ppas:sg:acc:m3:imperf:aff +382 ppas:sg:acc:m3:imperf:neg +383 ppas:sg:acc:m3:imperf.perf:aff +384 ppas:sg:acc:m3:imperf.perf:neg +385 ppas:sg:acc:m3:perf:aff +386 ppas:sg:acc:m3:perf:neg +387 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:aff +388 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:neg +389 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +390 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +391 ppas:sg:dat:m1.m2.m3.n1.n2:perf:aff +392 ppas:sg:dat:m1.m2.m3.n1.n2:perf:neg +393 ppas:sg:gen.dat.loc:f:imperf:aff +394 ppas:sg:gen.dat.loc:f:imperf:neg +395 ppas:sg:gen.dat.loc:f:imperf.perf:aff +396 ppas:sg:gen.dat.loc:f:imperf.perf:neg +397 ppas:sg:gen.dat.loc:f:perf:aff +398 ppas:sg:gen.dat.loc:f:perf:neg +399 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:aff +400 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:neg +401 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +402 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +403 ppas:sg:gen:m1.m2.m3.n1.n2:perf:aff +404 ppas:sg:gen:m1.m2.m3.n1.n2:perf:neg +405 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +406 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +407 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +408 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +409 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:aff +410 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:neg +411 ppas:sg:nom.acc.voc:n1.n2:imperf:aff +412 ppas:sg:nom.acc.voc:n1.n2:imperf:neg +413 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:aff +414 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:neg +415 ppas:sg:nom.acc.voc:n1.n2:perf:aff +416 ppas:sg:nom.acc.voc:n1.n2:perf:neg +417 ppas:sg:nom.voc:f:imperf:aff +418 ppas:sg:nom.voc:f:imperf:neg +419 ppas:sg:nom.voc:f:imperf.perf:aff +420 ppas:sg:nom.voc:f:imperf.perf:neg +421 ppas:sg:nom.voc:f:perf:aff +422 ppas:sg:nom.voc:f:perf:neg +423 ppas:sg:nom.voc:m1.m2.m3:imperf:aff +424 ppas:sg:nom.voc:m1.m2.m3:imperf:neg +425 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:aff +426 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:neg +427 ppas:sg:nom.voc:m1.m2.m3:perf:aff +428 ppas:sg:nom.voc:m1.m2.m3:perf:neg +429 ppron12:pl:acc:_:pri +430 ppron12:pl:acc:_:sec +431 ppron12:pl:dat:_:pri +432 ppron12:pl:dat:_:sec +433 ppron12:pl:gen:_:pri +434 ppron12:pl:gen:_:sec +435 ppron12:pl:inst:_:pri +436 ppron12:pl:inst:_:sec +437 ppron12:pl:loc:_:pri +438 ppron12:pl:loc:_:sec +439 ppron12:pl:nom:_:pri +440 ppron12:pl:nom:_:sec +441 ppron12:pl:voc:_:pri +442 ppron12:pl:voc:_:sec +443 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:akc +444 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:nakc +445 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:akc +446 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:nakc +447 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:akc +448 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:nakc +449 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:akc +450 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:nakc +451 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:akc +452 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:nakc +453 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:akc +454 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:nakc +455 ppron12:sg:inst:m1.m2.m3.f.n1.n2:pri +456 ppron12:sg:inst:m1.m2.m3.f.n1.n2:sec +457 ppron12:sg:loc:m1.m2.m3.f.n1.n2:pri +458 ppron12:sg:loc:m1.m2.m3.f.n1.n2:sec +459 ppron12:sg:nom:m1.m2.m3.f.n1.n2:pri +460 ppron12:sg:nom:m1.m2.m3.f.n1.n2:sec +461 ppron12:sg:voc:m1.m2.m3.f.n1.n2:sec +462 ppron3:pl:acc:m1.p1:ter:_:npraep +463 ppron3:pl:acc:m1.p1:ter:_:praep +464 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:npraep +465 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:praep +466 ppron3:pl:dat:_:ter:_:npraep +467 ppron3:pl:dat:_:ter:_:praep +468 ppron3:pl:gen:_:ter:_:npraep +469 ppron3:pl:gen:_:ter:_:praep +470 ppron3:pl:inst:_:ter:_:_ +471 ppron3:pl:loc:_:ter:_:_ +472 ppron3:pl:nom:m1.p1:ter:_:_ +473 ppron3:pl:nom:m2.m3.f.n1.n2.p2.p3:ter:_:_ +474 ppron3:sg:acc:f:ter:_:npraep +475 ppron3:sg:acc:f:ter:_:praep +476 ppron3:sg:acc:m1.m2.m3:ter:akc:npraep +477 ppron3:sg:acc:m1.m2.m3:ter:akc:praep +478 ppron3:sg:acc:m1.m2.m3:ter:nakc:npraep +479 ppron3:sg:acc:m1.m2.m3:ter:nakc:praep +480 ppron3:sg:acc:n1.n2:ter:_:npraep +481 ppron3:sg:acc:n1.n2:ter:_:praep +482 ppron3:sg:dat:f:ter:_:npraep +483 ppron3:sg:dat:f:ter:_:praep +484 ppron3:sg:dat:m1.m2.m3:ter:akc:npraep +485 ppron3:sg:dat:m1.m2.m3:ter:nakc:npraep +486 ppron3:sg:dat:m1.m2.m3:ter:_:praep +487 ppron3:sg:dat:n1.n2:ter:akc:npraep +488 ppron3:sg:dat:n1.n2:ter:nakc:npraep +489 ppron3:sg:dat:n1.n2:ter:_:praep +490 ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep +491 ppron3:sg:gen:f:ter:_:npraep +492 ppron3:sg:gen:f:ter:_:praep +493 ppron3:sg:gen:m1.m2.m3:ter:akc:npraep +494 ppron3:sg:gen:m1.m2.m3:ter:akc:praep +495 ppron3:sg:gen:m1.m2.m3:ter:nakc:npraep +496 ppron3:sg:gen:m1.m2.m3:ter:nakc:praep +497 ppron3:sg:gen:n1.n2:ter:akc:npraep +498 ppron3:sg:gen:n1.n2:ter:nakc:npraep +499 ppron3:sg:gen:n1.n2:ter:_:praep +500 ppron3:sg:inst:f:ter:_:praep +501 ppron3:sg:inst:m1.m2.m3:ter:_:_ +502 ppron3:sg:inst:n1.n2:ter:_:_ +503 ppron3:sg:loc:f:ter:_:_ +504 ppron3:sg:loc:m1.m2.m3:ter:_:_ +505 ppron3:sg:loc:n1.n2:ter:_:_ +506 ppron3:sg:nom:f:ter:_:_ +507 ppron3:sg:nom:m1.m2.m3:ter:_:_ +508 ppron3:sg:nom:n1.n2:ter:_:_ +509 praet:pl:m1.p1:imperf +510 praet:pl:m1.p1:imperf.perf +511 praet:pl:m1.p1:perf +512 praet:pl:m1.p1:pri:imperf +513 praet:pl:m1.p1:pri:imperf.perf +514 praet:pl:m1.p1:pri:perf +515 praet:pl:m1.p1:sec:imperf +516 praet:pl:m1.p1:sec:imperf.perf +517 praet:pl:m1.p1:sec:perf +518 praet:pl:m1.p1:ter:imperf +519 praet:pl:m1.p1:ter:imperf.perf +520 praet:pl:m1.p1:ter:perf +521 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf +522 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf.perf +523 praet:pl:m2.m3.f.n1.n2.p2.p3:perf +524 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +525 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +526 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +527 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +528 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +529 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +530 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +531 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +532 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +533 praet:sg:f:imperf +534 praet:sg:f:imperf.perf +535 praet:sg:f:perf +536 praet:sg:f:pri:imperf +537 praet:sg:f:pri:imperf.perf +538 praet:sg:f:pri:perf +539 praet:sg:f:sec:imperf +540 praet:sg:f:sec:imperf.perf +541 praet:sg:f:sec:perf +542 praet:sg:f:ter:imperf +543 praet:sg:f:ter:imperf.perf +544 praet:sg:f:ter:perf +545 praet:sg:m1.m2.m3:imperf +546 praet:sg:m1.m2.m3:imperf:agl +547 praet:sg:m1.m2.m3:imperf:nagl +548 praet:sg:m1.m2.m3:imperf.perf +549 praet:sg:m1.m2.m3:perf +550 praet:sg:m1.m2.m3:perf:agl +551 praet:sg:m1.m2.m3:perf:nagl +552 praet:sg:m1.m2.m3:pri:imperf +553 praet:sg:m1.m2.m3:pri:imperf.perf +554 praet:sg:m1.m2.m3:pri:perf +555 praet:sg:m1.m2.m3:sec:imperf +556 praet:sg:m1.m2.m3:sec:imperf.perf +557 praet:sg:m1.m2.m3:sec:perf +558 praet:sg:m1.m2.m3:ter:imperf +559 praet:sg:m1.m2.m3:ter:imperf.perf +560 praet:sg:m1.m2.m3:ter:perf +561 praet:sg:n1.n2:imperf +562 praet:sg:n1.n2:imperf.perf +563 praet:sg:n1.n2:perf +564 praet:sg:n1.n2:pri:imperf +565 praet:sg:n1.n2:pri:imperf.perf +566 praet:sg:n1.n2:pri:perf +567 praet:sg:n1.n2:sec:imperf +568 praet:sg:n1.n2:sec:imperf.perf +569 praet:sg:n1.n2:sec:perf +570 praet:sg:n1.n2:ter:imperf +571 praet:sg:n1.n2:ter:imperf.perf +572 praet:sg:n1.n2:ter:perf +573 pred +574 prefa +575 prefppas +576 prefs +577 prefv +578 prep:acc +579 prep:acc:nwok +580 prep:acc:wok +581 prep:dat +582 prep:gen +583 prep:gen:nwok +584 prep:gen:wok +585 prep:inst +586 prep:inst:nwok +587 prep:inst:wok +588 prep:loc +589 prep:loc:nwok +590 prep:loc:wok +591 prep:nom +592 qub +593 romandig +594 siebie:acc +595 siebie:dat +596 siebie:gen +597 siebie:inst +598 siebie:loc +599 substa +600 subst:pl:acc:f +601 subst:pl:acc:m1 +602 subst:pl:acc:m2 +603 subst:pl:acc:m3 +604 subst:pl:acc:n1 +605 subst:pl:acc:n2 +606 subst:pl:acc:p1 +607 subst:pl:acc:p2 +608 subst:pl:acc:p3 +609 subst:pl:dat:f +610 subst:pl:dat:m1 +611 subst:pl:dat:m2 +612 subst:pl:dat:m3 +613 subst:pl:dat:n1 +614 subst:pl:dat:n2 +615 subst:pl:dat:p1 +616 subst:pl:dat:p2 +617 subst:pl:dat:p3 +618 subst:pl:gen:f +619 subst:pl:gen:m1 +620 subst:pl:gen:m2 +621 subst:pl:gen:m3 +622 subst:pl:gen:n1 +623 subst:pl:gen:n2 +624 subst:pl:gen:p1 +625 subst:pl:gen:p2 +626 subst:pl:gen:p3 +627 subst:pl:inst:f +628 subst:pl:inst:m1 +629 subst:pl:inst:m2 +630 subst:pl:inst:m3 +631 subst:pl:inst:n1 +632 subst:pl:inst:n2 +633 subst:pl:inst:p1 +634 subst:pl:inst:p2 +635 subst:pl:inst:p3 +636 subst:pl:loc:f +637 subst:pl:loc:m1 +638 subst:pl:loc:m2 +639 subst:pl:loc:m3 +640 subst:pl:loc:n1 +641 subst:pl:loc:n2 +642 subst:pl:loc:p1 +643 subst:pl:loc:p2 +644 subst:pl:loc:p3 +645 subst:pl:nom:f +646 subst:pl:nom:m1 +647 subst:pl:nom:m2 +648 subst:pl:nom:m3 +649 subst:pl:nom:n1 +650 subst:pl:nom:n2 +651 subst:pl:nom:p1 +652 subst:pl:nom:p2 +653 subst:pl:nom:p3 +654 subst:pl:voc:f +655 subst:pl:voc:m1 +656 subst:pl:voc:m2 +657 subst:pl:voc:m3 +658 subst:pl:voc:n1 +659 subst:pl:voc:n2 +660 subst:pl:voc:p1 +661 subst:pl:voc:p2 +662 subst:pl:voc:p3 +663 subst:sg:acc:f +664 subst:sg:acc:m1 +665 subst:sg:acc:m2 +666 subst:sg:acc:m3 +667 subst:sg:acc:n1 +668 subst:sg:acc:n2 +669 subst:sg:dat:f +670 subst:sg:dat:m1 +671 subst:sg:dat:m2 +672 subst:sg:dat:m3 +673 subst:sg:dat:n1 +674 subst:sg:dat:n2 +675 subst:sg:gen:f +676 subst:sg:gen:m1 +677 subst:sg:gen:m2 +678 subst:sg:gen:m3 +679 subst:sg:gen:n1 +680 subst:sg:gen:n2 +681 subst:sg:inst:f +682 subst:sg:inst:m1 +683 subst:sg:inst:m2 +684 subst:sg:inst:m3 +685 subst:sg:inst:n1 +686 subst:sg:inst:n2 +687 subst:sg:loc:f +688 subst:sg:loc:m1 +689 subst:sg:loc:m2 +690 subst:sg:loc:m3 +691 subst:sg:loc:n1 +692 subst:sg:loc:n2 +693 subst:sg:nom:f +694 subst:sg:nom:m1 +695 subst:sg:nom:m2 +696 subst:sg:nom:m3 +697 subst:sg:nom:n1 +698 subst:sg:nom:n2 +699 subst:sg:voc:f +700 subst:sg:voc:m1 +701 subst:sg:voc:m2 +702 subst:sg:voc:m3 +703 subst:sg:voc:n1 +704 subst:sg:voc:n2 +705 winien:pl:m1.p1:imperf +706 winien:pl:m1.p1:pri:imperf +707 winien:pl:m1.p1:sec:imperf +708 winien:pl:m1.p1:ter:imperf +709 winien:pl:m2.m3.f.n1.n2.p2.p3:imperf +710 winien:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +711 winien:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +712 winien:sg:f:imperf +713 winien:sg:f:pri:imperf +714 winien:sg:f:sec:imperf +715 winien:sg:f:ter:imperf +716 winien:sg:m1.m2.m3:imperf +717 winien:sg:m1.m2.m3:pri:imperf +718 winien:sg:m1.m2.m3:sec:imperf +719 winien:sg:m1.m2.m3:ter:imperf +720 winien:sg:n1.n2:imperf +721 winien:sg:n1.n2:pri:imperf +722 winien:sg:n1.n2:sec:imperf +723 winien:sg:n1.n2:ter:imperf diff --git a/tests/generator/test_names/ARGS b/tests/generator/test_names/ARGS new file mode 100644 index 0000000..4fd99ea --- /dev/null +++ b/tests/generator/test_names/ARGS @@ -0,0 +1 @@ +--aggl permissive diff --git a/tests/generator/test_names/dictionary.tab b/tests/generator/test_names/dictionary.tab new file mode 100644 index 0000000..c8960b0 --- /dev/null +++ b/tests/generator/test_names/dictionary.tab @@ -0,0 +1,3 @@ +czerwony czerwony:a1 adj:sg:acc:m3:pos pospolita +czerwony czerwony:a2 adj:sg:acc:m3:pos niepospolita +czerwony czerwony:a3 adj:sg:acc:m3:pos zażółć gęślą jaźń diff --git a/tests/generator/test_names/input.txt b/tests/generator/test_names/input.txt new file mode 100644 index 0000000..94a3278 --- /dev/null +++ b/tests/generator/test_names/input.txt @@ -0,0 +1 @@ +czerwony diff --git a/tests/generator/test_names/output.txt b/tests/generator/test_names/output.txt new file mode 100644 index 0000000..8b7ebc8 --- /dev/null +++ b/tests/generator/test_names/output.txt @@ -0,0 +1,4 @@ +[czerwony,czerwony:a1,adj:sg:acc:m3:pos,pospolita,_ + czerwony,czerwony:a2,adj:sg:acc:m3:pos,niepospolita,_ + czerwony,czerwony:a3,adj:sg:acc:m3:pos,zażółć gęślą jaźń,_] + diff --git a/tests/generator/test_names/segmentation.dat b/tests/generator/test_names/segmentation.dat new file mode 100644 index 0000000..4bac5b3 --- /dev/null +++ b/tests/generator/test_names/segmentation.dat @@ -0,0 +1,47 @@ +[options] +aggl=strict permissive isolated +praet=split composite + +[combinations] +#define wsz_interp (interp|kropka|przecinek|dywiz)* + +#define moze_interp(segmenty) wsz_interp segmenty wsz_interp + +# Segmenty występujące samodzielnie: +# +# domyślny typ segmentu samodzielnego: +moze_interp(samodz) + +# Pojedyncze znaki interpunkcyjne +moze_interp(interp|kropka|przecinek|dywiz) + +# Liczba zapisana jako ciąg cyfr: +moze_interp( dig>* dig ) + +[segment types] +interp +kropka +przecinek +dywiz +dig +samodz + +[lexemes] +kropka .:interp +przecinek ,:interp +dywiz -:interp + +[tags] +dig dig +interp interp +samodz % + +[separator chars] +# , +44 + +# . +46 + +# ; +59 diff --git a/tests/generator/test_names/tagset.dat b/tests/generator/test_names/tagset.dat new file mode 100644 index 0000000..aaa55af --- /dev/null +++ b/tests/generator/test_names/tagset.dat @@ -0,0 +1,728 @@ +#!MORFEUSZ-TAGSET 0.1 + +[TAGS] + +0 ign +1 sp +2 adja +3 adjc +4 adjp +5 adj:pl:acc:m1.p1:com +6 adj:pl:acc:m1.p1:pos +7 adj:pl:acc:m1.p1:sup +8 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:com +9 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:pos +10 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:sup +11 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:com +12 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +13 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +14 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:com +15 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +16 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +17 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:com +18 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +19 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +20 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:com +21 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +22 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +23 adj:pl:nom:m1.p1:pos +24 adj:pl:nom:m2.m3.f.n1.n2.p2.p3:pos +25 adj:pl:nom.voc:m1.p1:com +26 adj:pl:nom.voc:m1.p1:pos +27 adj:pl:nom.voc:m1.p1:sup +28 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:com +29 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:pos +30 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:sup +31 adj:sg:acc:f:com +32 adj:sg:acc:f:pos +33 adj:sg:acc:f:sup +34 adj:sg:acc:m1.m2:com +35 adj:sg:acc:m1.m2:pos +36 adj:sg:acc:m1.m2:sup +37 adj:sg:acc:m3:com +38 adj:sg:acc:m3:pos +39 adj:sg:acc:m3:sup +40 adj:sg:acc:n1.n2:com +41 adj:sg:acc:n1.n2:pos +42 adj:sg:acc:n1.n2:sup +43 adj:sg:dat:f:com +44 adj:sg:dat:f:pos +45 adj:sg:dat:f:sup +46 adj:sg:dat:m1.m2.m3.n1.n2:com +47 adj:sg:dat:m1.m2.m3.n1.n2:pos +48 adj:sg:dat:m1.m2.m3.n1.n2:sup +49 adj:sg:gen:f:com +50 adj:sg:gen:f:pos +51 adj:sg:gen:f:sup +52 adj:sg:gen:m1.m2.m3.n1.n2:com +53 adj:sg:gen:m1.m2.m3.n1.n2:pos +54 adj:sg:gen:m1.m2.m3.n1.n2:sup +55 adj:sg:inst:f:com +56 adj:sg:inst:f:pos +57 adj:sg:inst:f:sup +58 adj:sg:inst:m1.m2.m3.n1.n2:com +59 adj:sg:inst:m1.m2.m3.n1.n2:pos +60 adj:sg:inst:m1.m2.m3.n1.n2:sup +61 adj:sg:loc:f:com +62 adj:sg:loc:f:pos +63 adj:sg:loc:f:sup +64 adj:sg:loc:m1.m2.m3.n1.n2:com +65 adj:sg:loc:m1.m2.m3.n1.n2:pos +66 adj:sg:loc:m1.m2.m3.n1.n2:sup +67 adj:sg:nom:f:pos +68 adj:sg:nom:m1.m2.m3:pos +69 adj:sg:nom:n1.n2:pos +70 adj:sg:nom.voc:f:com +71 adj:sg:nom.voc:f:pos +72 adj:sg:nom.voc:f:sup +73 adj:sg:nom.voc:m1.m2.m3:com +74 adj:sg:nom.voc:m1.m2.m3:pos +75 adj:sg:nom.voc:m1.m2.m3:sup +76 adj:sg:nom.voc:n1.n2:com +77 adj:sg:nom.voc:n1.n2:pos +78 adj:sg:nom.voc:n1.n2:sup +79 adv +80 adv:com +81 adv:pos +82 adv:sup +83 aglt:pl:pri:imperf:nwok +84 aglt:pl:pri:imperf:wok +85 aglt:pl:sec:imperf:nwok +86 aglt:pl:sec:imperf:wok +87 aglt:sg:pri:imperf:nwok +88 aglt:sg:pri:imperf:wok +89 aglt:sg:sec:imperf:nwok +90 aglt:sg:sec:imperf:wok +91 bedzie:pl:pri:imperf +92 bedzie:pl:sec:imperf +93 bedzie:pl:ter:imperf +94 bedzie:sg:pri:imperf +95 bedzie:sg:sec:imperf +96 bedzie:sg:ter:imperf +97 brev:pun +98 burk +99 comp +100 cond:pl:m1.p1:pri:imperf +101 cond:pl:m1.p1:pri:imperf.perf +102 cond:pl:m1.p1:pri:perf +103 cond:pl:m1.p1:sec:imperf +104 cond:pl:m1.p1:sec:imperf.perf +105 cond:pl:m1.p1:sec:perf +106 cond:pl:m1.p1:ter:imperf +107 cond:pl:m1.p1:ter:imperf.perf +108 cond:pl:m1.p1:ter:perf +109 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +110 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +111 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +112 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +113 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +114 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +115 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +116 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +117 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +118 cond:sg:f:pri:imperf +119 cond:sg:f:pri:imperf.perf +120 cond:sg:f:pri:perf +121 cond:sg:f:sec:imperf +122 cond:sg:f:sec:imperf.perf +123 cond:sg:f:sec:perf +124 cond:sg:f:ter:imperf +125 cond:sg:f:ter:imperf.perf +126 cond:sg:f:ter:perf +127 cond:sg:m1.m2.m3:pri:imperf +128 cond:sg:m1.m2.m3:pri:imperf.perf +129 cond:sg:m1.m2.m3:pri:perf +130 cond:sg:m1.m2.m3:sec:imperf +131 cond:sg:m1.m2.m3:sec:imperf.perf +132 cond:sg:m1.m2.m3:sec:perf +133 cond:sg:m1.m2.m3:ter:imperf +134 cond:sg:m1.m2.m3:ter:imperf.perf +135 cond:sg:m1.m2.m3:ter:perf +136 cond:sg:n1.n2:imperf +137 cond:sg:n1.n2:imperf.perf +138 cond:sg:n1.n2:perf +139 cond:sg:n1.n2:pri:imperf +140 cond:sg:n1.n2:pri:imperf.perf +141 cond:sg:n1.n2:pri:perf +142 cond:sg:n1.n2:sec:imperf +143 cond:sg:n1.n2:sec:imperf.perf +144 cond:sg:n1.n2:sec:perf +145 cond:sg:n1.n2:ter:imperf +146 cond:sg:n1.n2:ter:imperf.perf +147 cond:sg:n1.n2:ter:perf +148 conj +149 depr:pl:nom:m2 +150 depr:pl:voc:m2 +151 dig +152 emoticon +153 fin:pl:pri:imperf +154 fin:pl:pri:imperf.perf +155 fin:pl:pri:perf +156 fin:pl:sec:imperf +157 fin:pl:sec:imperf.perf +158 fin:pl:sec:perf +159 fin:pl:ter:imperf +160 fin:pl:ter:imperf.perf +161 fin:pl:ter:perf +162 fin:sg:pri:imperf +163 fin:sg:pri:imperf.perf +164 fin:sg:pri:perf +165 fin:sg:sec:imperf +166 fin:sg:sec:imperf.perf +167 fin:sg:sec:perf +168 fin:sg:ter:imperf +169 fin:sg:ter:imperf.perf +170 fin:sg:ter:perf +171 ger:pl:dat.loc:n2:imperf:aff +172 ger:pl:dat.loc:n2:imperf:neg +173 ger:pl:dat.loc:n2:imperf.perf:aff +174 ger:pl:dat.loc:n2:imperf.perf:neg +175 ger:pl:dat.loc:n2:perf:aff +176 ger:pl:dat.loc:n2:perf:neg +177 ger:pl:gen:n2:imperf:aff +178 ger:pl:gen:n2:imperf:neg +179 ger:pl:gen:n2:imperf.perf:aff +180 ger:pl:gen:n2:imperf.perf:neg +181 ger:pl:gen:n2:perf:aff +182 ger:pl:gen:n2:perf:neg +183 ger:pl:inst:n2:imperf:aff +184 ger:pl:inst:n2:imperf:neg +185 ger:pl:inst:n2:imperf.perf:aff +186 ger:pl:inst:n2:imperf.perf:neg +187 ger:pl:inst:n2:perf:aff +188 ger:pl:inst:n2:perf:neg +189 ger:pl:nom.acc:n2:imperf:aff +190 ger:pl:nom.acc:n2:imperf:neg +191 ger:pl:nom.acc:n2:imperf.perf:aff +192 ger:pl:nom.acc:n2:imperf.perf:neg +193 ger:pl:nom.acc:n2:perf:aff +194 ger:pl:nom.acc:n2:perf:neg +195 ger:sg:dat.loc:n2:imperf:aff +196 ger:sg:dat.loc:n2:imperf:neg +197 ger:sg:dat.loc:n2:imperf.perf:aff +198 ger:sg:dat.loc:n2:imperf.perf:neg +199 ger:sg:dat.loc:n2:perf:aff +200 ger:sg:dat.loc:n2:perf:neg +201 ger:sg:gen:n2:imperf:aff +202 ger:sg:gen:n2:imperf:neg +203 ger:sg:gen:n2:imperf.perf:aff +204 ger:sg:gen:n2:imperf.perf:neg +205 ger:sg:gen:n2:perf:aff +206 ger:sg:gen:n2:perf:neg +207 ger:sg:inst:n2:imperf:aff +208 ger:sg:inst:n2:imperf:neg +209 ger:sg:inst:n2:imperf.perf:aff +210 ger:sg:inst:n2:imperf.perf:neg +211 ger:sg:inst:n2:perf:aff +212 ger:sg:inst:n2:perf:neg +213 ger:sg:nom.acc:n2:imperf:aff +214 ger:sg:nom.acc:n2:imperf:neg +215 ger:sg:nom.acc:n2:imperf.perf:aff +216 ger:sg:nom.acc:n2:imperf.perf:neg +217 ger:sg:nom.acc:n2:perf:aff +218 ger:sg:nom.acc:n2:perf:neg +219 imps:imperf +220 imps:imperf.perf +221 imps:perf +222 impt:pl:pri:imperf +223 impt:pl:pri:imperf.perf +224 impt:pl:pri:perf +225 impt:pl:sec:imperf +226 impt:pl:sec:imperf.perf +227 impt:pl:sec:perf +228 impt:sg:sec:imperf +229 impt:sg:sec:imperf.perf +230 impt:sg:sec:perf +231 inf:imperf +232 inf:imperf.perf +233 inf:perf +234 interj +235 interp +236 naj +237 nie +238 num:comp +239 num:pl:acc:m1:rec +240 num:pl:dat.loc:n1.p1.p2:congr.rec +241 num:pl:dat:m1.m2.m3.n2.f:congr +242 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +243 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n2:congr +244 num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr +245 num:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +246 num:pl:gen.loc:m1.m2.m3.n2.f:congr +247 num:pl:gen:n1.p1.p2:rec +248 num:pl:inst:f:congr +249 num:pl:inst:m1.m2.m3.f.n1.n2.p1.p2:congr +250 num:pl:inst:m1.m2.m3.f.n2:congr +251 num:pl:inst:m1.m2.m3.n2:congr +252 num:pl:inst:m1.m2.m3.n2.f:congr +253 num:pl:inst:n1.p1.p2:rec +254 num:pl:nom.acc:m1.m2.m3.f.n1.n2.p1.p2:rec +255 num:pl:nom.acc.voc:f:congr +256 num:pl:nom.acc.voc:m1:rec +257 num:pl:nom.acc.voc:m2.m3.f.n1.n2.p1.p2:rec +258 num:pl:nom.acc.voc:m2.m3.f.n2:rec +259 num:pl:nom.acc.voc:m2.m3.n2:congr +260 num:pl:nom.acc.voc:m2.m3.n2.f:congr +261 num:pl:nom.acc.voc:n1.p1.p2:rec +262 num:pl:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.f.n1.n2.p1.p2:rec +263 num:pl:nom.voc:m1:congr +264 num:pl:nom.voc:m1:rec +265 num:sg:nom.gen.dat.inst.acc.loc.voc:f:rec +266 num:sg:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.n1.n2:rec +267 pact:pl:acc:m1.p1:imperf:aff +268 pact:pl:acc:m1.p1:imperf:neg +269 pact:pl:acc:m1.p1:imperf.perf:aff +270 pact:pl:acc:m1.p1:imperf.perf:neg +271 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +272 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +273 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +274 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +275 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +276 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +277 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +278 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +279 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +280 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +281 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +282 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +283 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +284 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +285 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +286 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +287 pact:pl:nom.voc:m1.p1:imperf:aff +288 pact:pl:nom.voc:m1.p1:imperf:neg +289 pact:pl:nom.voc:m1.p1:imperf.perf:aff +290 pact:pl:nom.voc:m1.p1:imperf.perf:neg +291 pact:sg:acc.inst:f:imperf:aff +292 pact:sg:acc.inst:f:imperf:neg +293 pact:sg:acc.inst:f:imperf.perf:aff +294 pact:sg:acc.inst:f:imperf.perf:neg +295 pact:sg:acc:m1.m2:imperf:aff +296 pact:sg:acc:m1.m2:imperf:neg +297 pact:sg:acc:m1.m2:imperf.perf:aff +298 pact:sg:acc:m1.m2:imperf.perf:neg +299 pact:sg:acc:m3:imperf:aff +300 pact:sg:acc:m3:imperf:neg +301 pact:sg:acc:m3:imperf.perf:aff +302 pact:sg:acc:m3:imperf.perf:neg +303 pact:sg:dat:m1.m2.m3.n1.n2:imperf:aff +304 pact:sg:dat:m1.m2.m3.n1.n2:imperf:neg +305 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +306 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +307 pact:sg:gen.dat.loc:f:imperf:aff +308 pact:sg:gen.dat.loc:f:imperf:neg +309 pact:sg:gen.dat.loc:f:imperf.perf:aff +310 pact:sg:gen.dat.loc:f:imperf.perf:neg +311 pact:sg:gen:m1.m2.m3.n1.n2:imperf:aff +312 pact:sg:gen:m1.m2.m3.n1.n2:imperf:neg +313 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +314 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +315 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +316 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +317 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +318 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +319 pact:sg:nom.acc.voc:n1.n2:imperf:aff +320 pact:sg:nom.acc.voc:n1.n2:imperf:neg +321 pact:sg:nom.acc.voc:n1.n2:imperf.perf:aff +322 pact:sg:nom.acc.voc:n1.n2:imperf.perf:neg +323 pact:sg:nom.voc:f:imperf:aff +324 pact:sg:nom.voc:f:imperf:neg +325 pact:sg:nom.voc:f:imperf.perf:aff +326 pact:sg:nom.voc:f:imperf.perf:neg +327 pact:sg:nom.voc:m1.m2.m3:imperf:aff +328 pact:sg:nom.voc:m1.m2.m3:imperf:neg +329 pact:sg:nom.voc:m1.m2.m3:imperf.perf:aff +330 pact:sg:nom.voc:m1.m2.m3:imperf.perf:neg +331 pant:perf +332 pcon:imperf +333 ppas:pl:acc:m1.p1:imperf:aff +334 ppas:pl:acc:m1.p1:imperf:neg +335 ppas:pl:acc:m1.p1:imperf.perf:aff +336 ppas:pl:acc:m1.p1:imperf.perf:neg +337 ppas:pl:acc:m1.p1:perf:aff +338 ppas:pl:acc:m1.p1:perf:neg +339 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +340 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +341 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +342 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +343 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +344 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +345 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +346 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +347 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +348 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +349 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +350 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +351 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +352 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +353 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +354 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +355 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +356 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +357 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +358 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +359 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +360 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +361 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:aff +362 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:neg +363 ppas:pl:nom.voc:m1.p1:imperf:aff +364 ppas:pl:nom.voc:m1.p1:imperf:neg +365 ppas:pl:nom.voc:m1.p1:imperf.perf:aff +366 ppas:pl:nom.voc:m1.p1:imperf.perf:neg +367 ppas:pl:nom.voc:m1.p1:perf:aff +368 ppas:pl:nom.voc:m1.p1:perf:neg +369 ppas:sg:acc.inst:f:imperf:aff +370 ppas:sg:acc.inst:f:imperf:neg +371 ppas:sg:acc.inst:f:imperf.perf:aff +372 ppas:sg:acc.inst:f:imperf.perf:neg +373 ppas:sg:acc.inst:f:perf:aff +374 ppas:sg:acc.inst:f:perf:neg +375 ppas:sg:acc:m1.m2:imperf:aff +376 ppas:sg:acc:m1.m2:imperf:neg +377 ppas:sg:acc:m1.m2:imperf.perf:aff +378 ppas:sg:acc:m1.m2:imperf.perf:neg +379 ppas:sg:acc:m1.m2:perf:aff +380 ppas:sg:acc:m1.m2:perf:neg +381 ppas:sg:acc:m3:imperf:aff +382 ppas:sg:acc:m3:imperf:neg +383 ppas:sg:acc:m3:imperf.perf:aff +384 ppas:sg:acc:m3:imperf.perf:neg +385 ppas:sg:acc:m3:perf:aff +386 ppas:sg:acc:m3:perf:neg +387 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:aff +388 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:neg +389 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +390 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +391 ppas:sg:dat:m1.m2.m3.n1.n2:perf:aff +392 ppas:sg:dat:m1.m2.m3.n1.n2:perf:neg +393 ppas:sg:gen.dat.loc:f:imperf:aff +394 ppas:sg:gen.dat.loc:f:imperf:neg +395 ppas:sg:gen.dat.loc:f:imperf.perf:aff +396 ppas:sg:gen.dat.loc:f:imperf.perf:neg +397 ppas:sg:gen.dat.loc:f:perf:aff +398 ppas:sg:gen.dat.loc:f:perf:neg +399 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:aff +400 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:neg +401 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +402 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +403 ppas:sg:gen:m1.m2.m3.n1.n2:perf:aff +404 ppas:sg:gen:m1.m2.m3.n1.n2:perf:neg +405 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +406 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +407 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +408 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +409 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:aff +410 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:neg +411 ppas:sg:nom.acc.voc:n1.n2:imperf:aff +412 ppas:sg:nom.acc.voc:n1.n2:imperf:neg +413 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:aff +414 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:neg +415 ppas:sg:nom.acc.voc:n1.n2:perf:aff +416 ppas:sg:nom.acc.voc:n1.n2:perf:neg +417 ppas:sg:nom.voc:f:imperf:aff +418 ppas:sg:nom.voc:f:imperf:neg +419 ppas:sg:nom.voc:f:imperf.perf:aff +420 ppas:sg:nom.voc:f:imperf.perf:neg +421 ppas:sg:nom.voc:f:perf:aff +422 ppas:sg:nom.voc:f:perf:neg +423 ppas:sg:nom.voc:m1.m2.m3:imperf:aff +424 ppas:sg:nom.voc:m1.m2.m3:imperf:neg +425 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:aff +426 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:neg +427 ppas:sg:nom.voc:m1.m2.m3:perf:aff +428 ppas:sg:nom.voc:m1.m2.m3:perf:neg +429 ppron12:pl:acc:_:pri +430 ppron12:pl:acc:_:sec +431 ppron12:pl:dat:_:pri +432 ppron12:pl:dat:_:sec +433 ppron12:pl:gen:_:pri +434 ppron12:pl:gen:_:sec +435 ppron12:pl:inst:_:pri +436 ppron12:pl:inst:_:sec +437 ppron12:pl:loc:_:pri +438 ppron12:pl:loc:_:sec +439 ppron12:pl:nom:_:pri +440 ppron12:pl:nom:_:sec +441 ppron12:pl:voc:_:pri +442 ppron12:pl:voc:_:sec +443 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:akc +444 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:nakc +445 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:akc +446 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:nakc +447 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:akc +448 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:nakc +449 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:akc +450 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:nakc +451 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:akc +452 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:nakc +453 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:akc +454 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:nakc +455 ppron12:sg:inst:m1.m2.m3.f.n1.n2:pri +456 ppron12:sg:inst:m1.m2.m3.f.n1.n2:sec +457 ppron12:sg:loc:m1.m2.m3.f.n1.n2:pri +458 ppron12:sg:loc:m1.m2.m3.f.n1.n2:sec +459 ppron12:sg:nom:m1.m2.m3.f.n1.n2:pri +460 ppron12:sg:nom:m1.m2.m3.f.n1.n2:sec +461 ppron12:sg:voc:m1.m2.m3.f.n1.n2:sec +462 ppron3:pl:acc:m1.p1:ter:_:npraep +463 ppron3:pl:acc:m1.p1:ter:_:praep +464 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:npraep +465 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:praep +466 ppron3:pl:dat:_:ter:_:npraep +467 ppron3:pl:dat:_:ter:_:praep +468 ppron3:pl:gen:_:ter:_:npraep +469 ppron3:pl:gen:_:ter:_:praep +470 ppron3:pl:inst:_:ter:_:_ +471 ppron3:pl:loc:_:ter:_:_ +472 ppron3:pl:nom:m1.p1:ter:_:_ +473 ppron3:pl:nom:m2.m3.f.n1.n2.p2.p3:ter:_:_ +474 ppron3:sg:acc:f:ter:_:npraep +475 ppron3:sg:acc:f:ter:_:praep +476 ppron3:sg:acc:m1.m2.m3:ter:akc:npraep +477 ppron3:sg:acc:m1.m2.m3:ter:akc:praep +478 ppron3:sg:acc:m1.m2.m3:ter:nakc:npraep +479 ppron3:sg:acc:m1.m2.m3:ter:nakc:praep +480 ppron3:sg:acc:n1.n2:ter:_:npraep +481 ppron3:sg:acc:n1.n2:ter:_:praep +482 ppron3:sg:dat:f:ter:_:npraep +483 ppron3:sg:dat:f:ter:_:praep +484 ppron3:sg:dat:m1.m2.m3:ter:akc:npraep +485 ppron3:sg:dat:m1.m2.m3:ter:nakc:npraep +486 ppron3:sg:dat:m1.m2.m3:ter:_:praep +487 ppron3:sg:dat:n1.n2:ter:akc:npraep +488 ppron3:sg:dat:n1.n2:ter:nakc:npraep +489 ppron3:sg:dat:n1.n2:ter:_:praep +490 ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep +491 ppron3:sg:gen:f:ter:_:npraep +492 ppron3:sg:gen:f:ter:_:praep +493 ppron3:sg:gen:m1.m2.m3:ter:akc:npraep +494 ppron3:sg:gen:m1.m2.m3:ter:akc:praep +495 ppron3:sg:gen:m1.m2.m3:ter:nakc:npraep +496 ppron3:sg:gen:m1.m2.m3:ter:nakc:praep +497 ppron3:sg:gen:n1.n2:ter:akc:npraep +498 ppron3:sg:gen:n1.n2:ter:nakc:npraep +499 ppron3:sg:gen:n1.n2:ter:_:praep +500 ppron3:sg:inst:f:ter:_:praep +501 ppron3:sg:inst:m1.m2.m3:ter:_:_ +502 ppron3:sg:inst:n1.n2:ter:_:_ +503 ppron3:sg:loc:f:ter:_:_ +504 ppron3:sg:loc:m1.m2.m3:ter:_:_ +505 ppron3:sg:loc:n1.n2:ter:_:_ +506 ppron3:sg:nom:f:ter:_:_ +507 ppron3:sg:nom:m1.m2.m3:ter:_:_ +508 ppron3:sg:nom:n1.n2:ter:_:_ +509 praet:pl:m1.p1:imperf +510 praet:pl:m1.p1:imperf.perf +511 praet:pl:m1.p1:perf +512 praet:pl:m1.p1:pri:imperf +513 praet:pl:m1.p1:pri:imperf.perf +514 praet:pl:m1.p1:pri:perf +515 praet:pl:m1.p1:sec:imperf +516 praet:pl:m1.p1:sec:imperf.perf +517 praet:pl:m1.p1:sec:perf +518 praet:pl:m1.p1:ter:imperf +519 praet:pl:m1.p1:ter:imperf.perf +520 praet:pl:m1.p1:ter:perf +521 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf +522 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf.perf +523 praet:pl:m2.m3.f.n1.n2.p2.p3:perf +524 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +525 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +526 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +527 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +528 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +529 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +530 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +531 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +532 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +533 praet:sg:f:imperf +534 praet:sg:f:imperf.perf +535 praet:sg:f:perf +536 praet:sg:f:pri:imperf +537 praet:sg:f:pri:imperf.perf +538 praet:sg:f:pri:perf +539 praet:sg:f:sec:imperf +540 praet:sg:f:sec:imperf.perf +541 praet:sg:f:sec:perf +542 praet:sg:f:ter:imperf +543 praet:sg:f:ter:imperf.perf +544 praet:sg:f:ter:perf +545 praet:sg:m1.m2.m3:imperf +546 praet:sg:m1.m2.m3:imperf:agl +547 praet:sg:m1.m2.m3:imperf:nagl +548 praet:sg:m1.m2.m3:imperf.perf +549 praet:sg:m1.m2.m3:perf +550 praet:sg:m1.m2.m3:perf:agl +551 praet:sg:m1.m2.m3:perf:nagl +552 praet:sg:m1.m2.m3:pri:imperf +553 praet:sg:m1.m2.m3:pri:imperf.perf +554 praet:sg:m1.m2.m3:pri:perf +555 praet:sg:m1.m2.m3:sec:imperf +556 praet:sg:m1.m2.m3:sec:imperf.perf +557 praet:sg:m1.m2.m3:sec:perf +558 praet:sg:m1.m2.m3:ter:imperf +559 praet:sg:m1.m2.m3:ter:imperf.perf +560 praet:sg:m1.m2.m3:ter:perf +561 praet:sg:n1.n2:imperf +562 praet:sg:n1.n2:imperf.perf +563 praet:sg:n1.n2:perf +564 praet:sg:n1.n2:pri:imperf +565 praet:sg:n1.n2:pri:imperf.perf +566 praet:sg:n1.n2:pri:perf +567 praet:sg:n1.n2:sec:imperf +568 praet:sg:n1.n2:sec:imperf.perf +569 praet:sg:n1.n2:sec:perf +570 praet:sg:n1.n2:ter:imperf +571 praet:sg:n1.n2:ter:imperf.perf +572 praet:sg:n1.n2:ter:perf +573 pred +574 prefa +575 prefppas +576 prefs +577 prefv +578 prep:acc +579 prep:acc:nwok +580 prep:acc:wok +581 prep:dat +582 prep:gen +583 prep:gen:nwok +584 prep:gen:wok +585 prep:inst +586 prep:inst:nwok +587 prep:inst:wok +588 prep:loc +589 prep:loc:nwok +590 prep:loc:wok +591 prep:nom +592 qub +593 romandig +594 siebie:acc +595 siebie:dat +596 siebie:gen +597 siebie:inst +598 siebie:loc +599 substa +600 subst:pl:acc:f +601 subst:pl:acc:m1 +602 subst:pl:acc:m2 +603 subst:pl:acc:m3 +604 subst:pl:acc:n1 +605 subst:pl:acc:n2 +606 subst:pl:acc:p1 +607 subst:pl:acc:p2 +608 subst:pl:acc:p3 +609 subst:pl:dat:f +610 subst:pl:dat:m1 +611 subst:pl:dat:m2 +612 subst:pl:dat:m3 +613 subst:pl:dat:n1 +614 subst:pl:dat:n2 +615 subst:pl:dat:p1 +616 subst:pl:dat:p2 +617 subst:pl:dat:p3 +618 subst:pl:gen:f +619 subst:pl:gen:m1 +620 subst:pl:gen:m2 +621 subst:pl:gen:m3 +622 subst:pl:gen:n1 +623 subst:pl:gen:n2 +624 subst:pl:gen:p1 +625 subst:pl:gen:p2 +626 subst:pl:gen:p3 +627 subst:pl:inst:f +628 subst:pl:inst:m1 +629 subst:pl:inst:m2 +630 subst:pl:inst:m3 +631 subst:pl:inst:n1 +632 subst:pl:inst:n2 +633 subst:pl:inst:p1 +634 subst:pl:inst:p2 +635 subst:pl:inst:p3 +636 subst:pl:loc:f +637 subst:pl:loc:m1 +638 subst:pl:loc:m2 +639 subst:pl:loc:m3 +640 subst:pl:loc:n1 +641 subst:pl:loc:n2 +642 subst:pl:loc:p1 +643 subst:pl:loc:p2 +644 subst:pl:loc:p3 +645 subst:pl:nom:f +646 subst:pl:nom:m1 +647 subst:pl:nom:m2 +648 subst:pl:nom:m3 +649 subst:pl:nom:n1 +650 subst:pl:nom:n2 +651 subst:pl:nom:p1 +652 subst:pl:nom:p2 +653 subst:pl:nom:p3 +654 subst:pl:voc:f +655 subst:pl:voc:m1 +656 subst:pl:voc:m2 +657 subst:pl:voc:m3 +658 subst:pl:voc:n1 +659 subst:pl:voc:n2 +660 subst:pl:voc:p1 +661 subst:pl:voc:p2 +662 subst:pl:voc:p3 +663 subst:sg:acc:f +664 subst:sg:acc:m1 +665 subst:sg:acc:m2 +666 subst:sg:acc:m3 +667 subst:sg:acc:n1 +668 subst:sg:acc:n2 +669 subst:sg:dat:f +670 subst:sg:dat:m1 +671 subst:sg:dat:m2 +672 subst:sg:dat:m3 +673 subst:sg:dat:n1 +674 subst:sg:dat:n2 +675 subst:sg:gen:f +676 subst:sg:gen:m1 +677 subst:sg:gen:m2 +678 subst:sg:gen:m3 +679 subst:sg:gen:n1 +680 subst:sg:gen:n2 +681 subst:sg:inst:f +682 subst:sg:inst:m1 +683 subst:sg:inst:m2 +684 subst:sg:inst:m3 +685 subst:sg:inst:n1 +686 subst:sg:inst:n2 +687 subst:sg:loc:f +688 subst:sg:loc:m1 +689 subst:sg:loc:m2 +690 subst:sg:loc:m3 +691 subst:sg:loc:n1 +692 subst:sg:loc:n2 +693 subst:sg:nom:f +694 subst:sg:nom:m1 +695 subst:sg:nom:m2 +696 subst:sg:nom:m3 +697 subst:sg:nom:n1 +698 subst:sg:nom:n2 +699 subst:sg:voc:f +700 subst:sg:voc:m1 +701 subst:sg:voc:m2 +702 subst:sg:voc:m3 +703 subst:sg:voc:n1 +704 subst:sg:voc:n2 +705 winien:pl:m1.p1:imperf +706 winien:pl:m1.p1:pri:imperf +707 winien:pl:m1.p1:sec:imperf +708 winien:pl:m1.p1:ter:imperf +709 winien:pl:m2.m3.f.n1.n2.p2.p3:imperf +710 winien:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +711 winien:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +712 winien:sg:f:imperf +713 winien:sg:f:pri:imperf +714 winien:sg:f:sec:imperf +715 winien:sg:f:ter:imperf +716 winien:sg:m1.m2.m3:imperf +717 winien:sg:m1.m2.m3:pri:imperf +718 winien:sg:m1.m2.m3:sec:imperf +719 winien:sg:m1.m2.m3:ter:imperf +720 winien:sg:n1.n2:imperf +721 winien:sg:n1.n2:pri:imperf +722 winien:sg:n1.n2:sec:imperf +723 winien:sg:n1.n2:ter:imperf diff --git a/tests/generator/test_qualifiers/ARGS b/tests/generator/test_qualifiers/ARGS new file mode 100644 index 0000000..4fd99ea --- /dev/null +++ b/tests/generator/test_qualifiers/ARGS @@ -0,0 +1 @@ +--aggl permissive diff --git a/tests/generator/test_qualifiers/dictionary.tab b/tests/generator/test_qualifiers/dictionary.tab new file mode 100644 index 0000000..3287c7c --- /dev/null +++ b/tests/generator/test_qualifiers/dictionary.tab @@ -0,0 +1,4 @@ +czerwony czerwony:a1 adj:sg:acc:m3:pos pospolita niebieski +czerwony czerwony:a2 adj:sg:acc:m3:pos pospolita żółty1|żółty2 +czerwony czerwony:a3 adj:sg:acc:m3:pos pospolita żółty2|żółty1 +czerwony czerwony:a4 adj:sg:acc:m3:pos pospolita żółty1|żółty2|żółty3 diff --git a/tests/generator/test_qualifiers/input.txt b/tests/generator/test_qualifiers/input.txt new file mode 100644 index 0000000..94a3278 --- /dev/null +++ b/tests/generator/test_qualifiers/input.txt @@ -0,0 +1 @@ +czerwony diff --git a/tests/generator/test_qualifiers/output.txt b/tests/generator/test_qualifiers/output.txt new file mode 100644 index 0000000..f8d2e9a --- /dev/null +++ b/tests/generator/test_qualifiers/output.txt @@ -0,0 +1,5 @@ +[czerwony,czerwony:a1,adj:sg:acc:m3:pos,pospolita,niebieski + czerwony,czerwony:a2,adj:sg:acc:m3:pos,pospolita,żółty1|żółty2 + czerwony,czerwony:a3,adj:sg:acc:m3:pos,pospolita,żółty1|żółty2 + czerwony,czerwony:a4,adj:sg:acc:m3:pos,pospolita,żółty1|żółty2|żółty3] + diff --git a/tests/generator/test_qualifiers/segmentation.dat b/tests/generator/test_qualifiers/segmentation.dat new file mode 100644 index 0000000..4bac5b3 --- /dev/null +++ b/tests/generator/test_qualifiers/segmentation.dat @@ -0,0 +1,47 @@ +[options] +aggl=strict permissive isolated +praet=split composite + +[combinations] +#define wsz_interp (interp|kropka|przecinek|dywiz)* + +#define moze_interp(segmenty) wsz_interp segmenty wsz_interp + +# Segmenty występujące samodzielnie: +# +# domyślny typ segmentu samodzielnego: +moze_interp(samodz) + +# Pojedyncze znaki interpunkcyjne +moze_interp(interp|kropka|przecinek|dywiz) + +# Liczba zapisana jako ciąg cyfr: +moze_interp( dig>* dig ) + +[segment types] +interp +kropka +przecinek +dywiz +dig +samodz + +[lexemes] +kropka .:interp +przecinek ,:interp +dywiz -:interp + +[tags] +dig dig +interp interp +samodz % + +[separator chars] +# , +44 + +# . +46 + +# ; +59 diff --git a/tests/generator/test_qualifiers/tagset.dat b/tests/generator/test_qualifiers/tagset.dat new file mode 100644 index 0000000..aaa55af --- /dev/null +++ b/tests/generator/test_qualifiers/tagset.dat @@ -0,0 +1,728 @@ +#!MORFEUSZ-TAGSET 0.1 + +[TAGS] + +0 ign +1 sp +2 adja +3 adjc +4 adjp +5 adj:pl:acc:m1.p1:com +6 adj:pl:acc:m1.p1:pos +7 adj:pl:acc:m1.p1:sup +8 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:com +9 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:pos +10 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:sup +11 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:com +12 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +13 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +14 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:com +15 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +16 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +17 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:com +18 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +19 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +20 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:com +21 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:pos +22 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:sup +23 adj:pl:nom:m1.p1:pos +24 adj:pl:nom:m2.m3.f.n1.n2.p2.p3:pos +25 adj:pl:nom.voc:m1.p1:com +26 adj:pl:nom.voc:m1.p1:pos +27 adj:pl:nom.voc:m1.p1:sup +28 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:com +29 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:pos +30 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:sup +31 adj:sg:acc:f:com +32 adj:sg:acc:f:pos +33 adj:sg:acc:f:sup +34 adj:sg:acc:m1.m2:com +35 adj:sg:acc:m1.m2:pos +36 adj:sg:acc:m1.m2:sup +37 adj:sg:acc:m3:com +38 adj:sg:acc:m3:pos +39 adj:sg:acc:m3:sup +40 adj:sg:acc:n1.n2:com +41 adj:sg:acc:n1.n2:pos +42 adj:sg:acc:n1.n2:sup +43 adj:sg:dat:f:com +44 adj:sg:dat:f:pos +45 adj:sg:dat:f:sup +46 adj:sg:dat:m1.m2.m3.n1.n2:com +47 adj:sg:dat:m1.m2.m3.n1.n2:pos +48 adj:sg:dat:m1.m2.m3.n1.n2:sup +49 adj:sg:gen:f:com +50 adj:sg:gen:f:pos +51 adj:sg:gen:f:sup +52 adj:sg:gen:m1.m2.m3.n1.n2:com +53 adj:sg:gen:m1.m2.m3.n1.n2:pos +54 adj:sg:gen:m1.m2.m3.n1.n2:sup +55 adj:sg:inst:f:com +56 adj:sg:inst:f:pos +57 adj:sg:inst:f:sup +58 adj:sg:inst:m1.m2.m3.n1.n2:com +59 adj:sg:inst:m1.m2.m3.n1.n2:pos +60 adj:sg:inst:m1.m2.m3.n1.n2:sup +61 adj:sg:loc:f:com +62 adj:sg:loc:f:pos +63 adj:sg:loc:f:sup +64 adj:sg:loc:m1.m2.m3.n1.n2:com +65 adj:sg:loc:m1.m2.m3.n1.n2:pos +66 adj:sg:loc:m1.m2.m3.n1.n2:sup +67 adj:sg:nom:f:pos +68 adj:sg:nom:m1.m2.m3:pos +69 adj:sg:nom:n1.n2:pos +70 adj:sg:nom.voc:f:com +71 adj:sg:nom.voc:f:pos +72 adj:sg:nom.voc:f:sup +73 adj:sg:nom.voc:m1.m2.m3:com +74 adj:sg:nom.voc:m1.m2.m3:pos +75 adj:sg:nom.voc:m1.m2.m3:sup +76 adj:sg:nom.voc:n1.n2:com +77 adj:sg:nom.voc:n1.n2:pos +78 adj:sg:nom.voc:n1.n2:sup +79 adv +80 adv:com +81 adv:pos +82 adv:sup +83 aglt:pl:pri:imperf:nwok +84 aglt:pl:pri:imperf:wok +85 aglt:pl:sec:imperf:nwok +86 aglt:pl:sec:imperf:wok +87 aglt:sg:pri:imperf:nwok +88 aglt:sg:pri:imperf:wok +89 aglt:sg:sec:imperf:nwok +90 aglt:sg:sec:imperf:wok +91 bedzie:pl:pri:imperf +92 bedzie:pl:sec:imperf +93 bedzie:pl:ter:imperf +94 bedzie:sg:pri:imperf +95 bedzie:sg:sec:imperf +96 bedzie:sg:ter:imperf +97 brev:pun +98 burk +99 comp +100 cond:pl:m1.p1:pri:imperf +101 cond:pl:m1.p1:pri:imperf.perf +102 cond:pl:m1.p1:pri:perf +103 cond:pl:m1.p1:sec:imperf +104 cond:pl:m1.p1:sec:imperf.perf +105 cond:pl:m1.p1:sec:perf +106 cond:pl:m1.p1:ter:imperf +107 cond:pl:m1.p1:ter:imperf.perf +108 cond:pl:m1.p1:ter:perf +109 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +110 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +111 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +112 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +113 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +114 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +115 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +116 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +117 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +118 cond:sg:f:pri:imperf +119 cond:sg:f:pri:imperf.perf +120 cond:sg:f:pri:perf +121 cond:sg:f:sec:imperf +122 cond:sg:f:sec:imperf.perf +123 cond:sg:f:sec:perf +124 cond:sg:f:ter:imperf +125 cond:sg:f:ter:imperf.perf +126 cond:sg:f:ter:perf +127 cond:sg:m1.m2.m3:pri:imperf +128 cond:sg:m1.m2.m3:pri:imperf.perf +129 cond:sg:m1.m2.m3:pri:perf +130 cond:sg:m1.m2.m3:sec:imperf +131 cond:sg:m1.m2.m3:sec:imperf.perf +132 cond:sg:m1.m2.m3:sec:perf +133 cond:sg:m1.m2.m3:ter:imperf +134 cond:sg:m1.m2.m3:ter:imperf.perf +135 cond:sg:m1.m2.m3:ter:perf +136 cond:sg:n1.n2:imperf +137 cond:sg:n1.n2:imperf.perf +138 cond:sg:n1.n2:perf +139 cond:sg:n1.n2:pri:imperf +140 cond:sg:n1.n2:pri:imperf.perf +141 cond:sg:n1.n2:pri:perf +142 cond:sg:n1.n2:sec:imperf +143 cond:sg:n1.n2:sec:imperf.perf +144 cond:sg:n1.n2:sec:perf +145 cond:sg:n1.n2:ter:imperf +146 cond:sg:n1.n2:ter:imperf.perf +147 cond:sg:n1.n2:ter:perf +148 conj +149 depr:pl:nom:m2 +150 depr:pl:voc:m2 +151 dig +152 emoticon +153 fin:pl:pri:imperf +154 fin:pl:pri:imperf.perf +155 fin:pl:pri:perf +156 fin:pl:sec:imperf +157 fin:pl:sec:imperf.perf +158 fin:pl:sec:perf +159 fin:pl:ter:imperf +160 fin:pl:ter:imperf.perf +161 fin:pl:ter:perf +162 fin:sg:pri:imperf +163 fin:sg:pri:imperf.perf +164 fin:sg:pri:perf +165 fin:sg:sec:imperf +166 fin:sg:sec:imperf.perf +167 fin:sg:sec:perf +168 fin:sg:ter:imperf +169 fin:sg:ter:imperf.perf +170 fin:sg:ter:perf +171 ger:pl:dat.loc:n2:imperf:aff +172 ger:pl:dat.loc:n2:imperf:neg +173 ger:pl:dat.loc:n2:imperf.perf:aff +174 ger:pl:dat.loc:n2:imperf.perf:neg +175 ger:pl:dat.loc:n2:perf:aff +176 ger:pl:dat.loc:n2:perf:neg +177 ger:pl:gen:n2:imperf:aff +178 ger:pl:gen:n2:imperf:neg +179 ger:pl:gen:n2:imperf.perf:aff +180 ger:pl:gen:n2:imperf.perf:neg +181 ger:pl:gen:n2:perf:aff +182 ger:pl:gen:n2:perf:neg +183 ger:pl:inst:n2:imperf:aff +184 ger:pl:inst:n2:imperf:neg +185 ger:pl:inst:n2:imperf.perf:aff +186 ger:pl:inst:n2:imperf.perf:neg +187 ger:pl:inst:n2:perf:aff +188 ger:pl:inst:n2:perf:neg +189 ger:pl:nom.acc:n2:imperf:aff +190 ger:pl:nom.acc:n2:imperf:neg +191 ger:pl:nom.acc:n2:imperf.perf:aff +192 ger:pl:nom.acc:n2:imperf.perf:neg +193 ger:pl:nom.acc:n2:perf:aff +194 ger:pl:nom.acc:n2:perf:neg +195 ger:sg:dat.loc:n2:imperf:aff +196 ger:sg:dat.loc:n2:imperf:neg +197 ger:sg:dat.loc:n2:imperf.perf:aff +198 ger:sg:dat.loc:n2:imperf.perf:neg +199 ger:sg:dat.loc:n2:perf:aff +200 ger:sg:dat.loc:n2:perf:neg +201 ger:sg:gen:n2:imperf:aff +202 ger:sg:gen:n2:imperf:neg +203 ger:sg:gen:n2:imperf.perf:aff +204 ger:sg:gen:n2:imperf.perf:neg +205 ger:sg:gen:n2:perf:aff +206 ger:sg:gen:n2:perf:neg +207 ger:sg:inst:n2:imperf:aff +208 ger:sg:inst:n2:imperf:neg +209 ger:sg:inst:n2:imperf.perf:aff +210 ger:sg:inst:n2:imperf.perf:neg +211 ger:sg:inst:n2:perf:aff +212 ger:sg:inst:n2:perf:neg +213 ger:sg:nom.acc:n2:imperf:aff +214 ger:sg:nom.acc:n2:imperf:neg +215 ger:sg:nom.acc:n2:imperf.perf:aff +216 ger:sg:nom.acc:n2:imperf.perf:neg +217 ger:sg:nom.acc:n2:perf:aff +218 ger:sg:nom.acc:n2:perf:neg +219 imps:imperf +220 imps:imperf.perf +221 imps:perf +222 impt:pl:pri:imperf +223 impt:pl:pri:imperf.perf +224 impt:pl:pri:perf +225 impt:pl:sec:imperf +226 impt:pl:sec:imperf.perf +227 impt:pl:sec:perf +228 impt:sg:sec:imperf +229 impt:sg:sec:imperf.perf +230 impt:sg:sec:perf +231 inf:imperf +232 inf:imperf.perf +233 inf:perf +234 interj +235 interp +236 naj +237 nie +238 num:comp +239 num:pl:acc:m1:rec +240 num:pl:dat.loc:n1.p1.p2:congr.rec +241 num:pl:dat:m1.m2.m3.n2.f:congr +242 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +243 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n2:congr +244 num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr +245 num:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2:congr +246 num:pl:gen.loc:m1.m2.m3.n2.f:congr +247 num:pl:gen:n1.p1.p2:rec +248 num:pl:inst:f:congr +249 num:pl:inst:m1.m2.m3.f.n1.n2.p1.p2:congr +250 num:pl:inst:m1.m2.m3.f.n2:congr +251 num:pl:inst:m1.m2.m3.n2:congr +252 num:pl:inst:m1.m2.m3.n2.f:congr +253 num:pl:inst:n1.p1.p2:rec +254 num:pl:nom.acc:m1.m2.m3.f.n1.n2.p1.p2:rec +255 num:pl:nom.acc.voc:f:congr +256 num:pl:nom.acc.voc:m1:rec +257 num:pl:nom.acc.voc:m2.m3.f.n1.n2.p1.p2:rec +258 num:pl:nom.acc.voc:m2.m3.f.n2:rec +259 num:pl:nom.acc.voc:m2.m3.n2:congr +260 num:pl:nom.acc.voc:m2.m3.n2.f:congr +261 num:pl:nom.acc.voc:n1.p1.p2:rec +262 num:pl:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.f.n1.n2.p1.p2:rec +263 num:pl:nom.voc:m1:congr +264 num:pl:nom.voc:m1:rec +265 num:sg:nom.gen.dat.inst.acc.loc.voc:f:rec +266 num:sg:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.n1.n2:rec +267 pact:pl:acc:m1.p1:imperf:aff +268 pact:pl:acc:m1.p1:imperf:neg +269 pact:pl:acc:m1.p1:imperf.perf:aff +270 pact:pl:acc:m1.p1:imperf.perf:neg +271 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +272 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +273 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +274 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +275 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +276 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +277 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +278 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +279 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +280 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +281 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +282 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +283 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +284 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +285 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +286 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +287 pact:pl:nom.voc:m1.p1:imperf:aff +288 pact:pl:nom.voc:m1.p1:imperf:neg +289 pact:pl:nom.voc:m1.p1:imperf.perf:aff +290 pact:pl:nom.voc:m1.p1:imperf.perf:neg +291 pact:sg:acc.inst:f:imperf:aff +292 pact:sg:acc.inst:f:imperf:neg +293 pact:sg:acc.inst:f:imperf.perf:aff +294 pact:sg:acc.inst:f:imperf.perf:neg +295 pact:sg:acc:m1.m2:imperf:aff +296 pact:sg:acc:m1.m2:imperf:neg +297 pact:sg:acc:m1.m2:imperf.perf:aff +298 pact:sg:acc:m1.m2:imperf.perf:neg +299 pact:sg:acc:m3:imperf:aff +300 pact:sg:acc:m3:imperf:neg +301 pact:sg:acc:m3:imperf.perf:aff +302 pact:sg:acc:m3:imperf.perf:neg +303 pact:sg:dat:m1.m2.m3.n1.n2:imperf:aff +304 pact:sg:dat:m1.m2.m3.n1.n2:imperf:neg +305 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +306 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +307 pact:sg:gen.dat.loc:f:imperf:aff +308 pact:sg:gen.dat.loc:f:imperf:neg +309 pact:sg:gen.dat.loc:f:imperf.perf:aff +310 pact:sg:gen.dat.loc:f:imperf.perf:neg +311 pact:sg:gen:m1.m2.m3.n1.n2:imperf:aff +312 pact:sg:gen:m1.m2.m3.n1.n2:imperf:neg +313 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +314 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +315 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +316 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +317 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +318 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +319 pact:sg:nom.acc.voc:n1.n2:imperf:aff +320 pact:sg:nom.acc.voc:n1.n2:imperf:neg +321 pact:sg:nom.acc.voc:n1.n2:imperf.perf:aff +322 pact:sg:nom.acc.voc:n1.n2:imperf.perf:neg +323 pact:sg:nom.voc:f:imperf:aff +324 pact:sg:nom.voc:f:imperf:neg +325 pact:sg:nom.voc:f:imperf.perf:aff +326 pact:sg:nom.voc:f:imperf.perf:neg +327 pact:sg:nom.voc:m1.m2.m3:imperf:aff +328 pact:sg:nom.voc:m1.m2.m3:imperf:neg +329 pact:sg:nom.voc:m1.m2.m3:imperf.perf:aff +330 pact:sg:nom.voc:m1.m2.m3:imperf.perf:neg +331 pant:perf +332 pcon:imperf +333 ppas:pl:acc:m1.p1:imperf:aff +334 ppas:pl:acc:m1.p1:imperf:neg +335 ppas:pl:acc:m1.p1:imperf.perf:aff +336 ppas:pl:acc:m1.p1:imperf.perf:neg +337 ppas:pl:acc:m1.p1:perf:aff +338 ppas:pl:acc:m1.p1:perf:neg +339 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +340 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +341 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +342 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +343 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +344 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +345 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +346 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +347 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +348 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +349 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +350 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +351 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff +352 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg +353 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff +354 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg +355 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff +356 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg +357 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff +358 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg +359 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff +360 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg +361 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:aff +362 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:neg +363 ppas:pl:nom.voc:m1.p1:imperf:aff +364 ppas:pl:nom.voc:m1.p1:imperf:neg +365 ppas:pl:nom.voc:m1.p1:imperf.perf:aff +366 ppas:pl:nom.voc:m1.p1:imperf.perf:neg +367 ppas:pl:nom.voc:m1.p1:perf:aff +368 ppas:pl:nom.voc:m1.p1:perf:neg +369 ppas:sg:acc.inst:f:imperf:aff +370 ppas:sg:acc.inst:f:imperf:neg +371 ppas:sg:acc.inst:f:imperf.perf:aff +372 ppas:sg:acc.inst:f:imperf.perf:neg +373 ppas:sg:acc.inst:f:perf:aff +374 ppas:sg:acc.inst:f:perf:neg +375 ppas:sg:acc:m1.m2:imperf:aff +376 ppas:sg:acc:m1.m2:imperf:neg +377 ppas:sg:acc:m1.m2:imperf.perf:aff +378 ppas:sg:acc:m1.m2:imperf.perf:neg +379 ppas:sg:acc:m1.m2:perf:aff +380 ppas:sg:acc:m1.m2:perf:neg +381 ppas:sg:acc:m3:imperf:aff +382 ppas:sg:acc:m3:imperf:neg +383 ppas:sg:acc:m3:imperf.perf:aff +384 ppas:sg:acc:m3:imperf.perf:neg +385 ppas:sg:acc:m3:perf:aff +386 ppas:sg:acc:m3:perf:neg +387 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:aff +388 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:neg +389 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff +390 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg +391 ppas:sg:dat:m1.m2.m3.n1.n2:perf:aff +392 ppas:sg:dat:m1.m2.m3.n1.n2:perf:neg +393 ppas:sg:gen.dat.loc:f:imperf:aff +394 ppas:sg:gen.dat.loc:f:imperf:neg +395 ppas:sg:gen.dat.loc:f:imperf.perf:aff +396 ppas:sg:gen.dat.loc:f:imperf.perf:neg +397 ppas:sg:gen.dat.loc:f:perf:aff +398 ppas:sg:gen.dat.loc:f:perf:neg +399 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:aff +400 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:neg +401 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff +402 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg +403 ppas:sg:gen:m1.m2.m3.n1.n2:perf:aff +404 ppas:sg:gen:m1.m2.m3.n1.n2:perf:neg +405 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff +406 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg +407 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff +408 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg +409 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:aff +410 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:neg +411 ppas:sg:nom.acc.voc:n1.n2:imperf:aff +412 ppas:sg:nom.acc.voc:n1.n2:imperf:neg +413 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:aff +414 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:neg +415 ppas:sg:nom.acc.voc:n1.n2:perf:aff +416 ppas:sg:nom.acc.voc:n1.n2:perf:neg +417 ppas:sg:nom.voc:f:imperf:aff +418 ppas:sg:nom.voc:f:imperf:neg +419 ppas:sg:nom.voc:f:imperf.perf:aff +420 ppas:sg:nom.voc:f:imperf.perf:neg +421 ppas:sg:nom.voc:f:perf:aff +422 ppas:sg:nom.voc:f:perf:neg +423 ppas:sg:nom.voc:m1.m2.m3:imperf:aff +424 ppas:sg:nom.voc:m1.m2.m3:imperf:neg +425 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:aff +426 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:neg +427 ppas:sg:nom.voc:m1.m2.m3:perf:aff +428 ppas:sg:nom.voc:m1.m2.m3:perf:neg +429 ppron12:pl:acc:_:pri +430 ppron12:pl:acc:_:sec +431 ppron12:pl:dat:_:pri +432 ppron12:pl:dat:_:sec +433 ppron12:pl:gen:_:pri +434 ppron12:pl:gen:_:sec +435 ppron12:pl:inst:_:pri +436 ppron12:pl:inst:_:sec +437 ppron12:pl:loc:_:pri +438 ppron12:pl:loc:_:sec +439 ppron12:pl:nom:_:pri +440 ppron12:pl:nom:_:sec +441 ppron12:pl:voc:_:pri +442 ppron12:pl:voc:_:sec +443 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:akc +444 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:nakc +445 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:akc +446 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:nakc +447 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:akc +448 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:nakc +449 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:akc +450 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:nakc +451 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:akc +452 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:nakc +453 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:akc +454 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:nakc +455 ppron12:sg:inst:m1.m2.m3.f.n1.n2:pri +456 ppron12:sg:inst:m1.m2.m3.f.n1.n2:sec +457 ppron12:sg:loc:m1.m2.m3.f.n1.n2:pri +458 ppron12:sg:loc:m1.m2.m3.f.n1.n2:sec +459 ppron12:sg:nom:m1.m2.m3.f.n1.n2:pri +460 ppron12:sg:nom:m1.m2.m3.f.n1.n2:sec +461 ppron12:sg:voc:m1.m2.m3.f.n1.n2:sec +462 ppron3:pl:acc:m1.p1:ter:_:npraep +463 ppron3:pl:acc:m1.p1:ter:_:praep +464 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:npraep +465 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:praep +466 ppron3:pl:dat:_:ter:_:npraep +467 ppron3:pl:dat:_:ter:_:praep +468 ppron3:pl:gen:_:ter:_:npraep +469 ppron3:pl:gen:_:ter:_:praep +470 ppron3:pl:inst:_:ter:_:_ +471 ppron3:pl:loc:_:ter:_:_ +472 ppron3:pl:nom:m1.p1:ter:_:_ +473 ppron3:pl:nom:m2.m3.f.n1.n2.p2.p3:ter:_:_ +474 ppron3:sg:acc:f:ter:_:npraep +475 ppron3:sg:acc:f:ter:_:praep +476 ppron3:sg:acc:m1.m2.m3:ter:akc:npraep +477 ppron3:sg:acc:m1.m2.m3:ter:akc:praep +478 ppron3:sg:acc:m1.m2.m3:ter:nakc:npraep +479 ppron3:sg:acc:m1.m2.m3:ter:nakc:praep +480 ppron3:sg:acc:n1.n2:ter:_:npraep +481 ppron3:sg:acc:n1.n2:ter:_:praep +482 ppron3:sg:dat:f:ter:_:npraep +483 ppron3:sg:dat:f:ter:_:praep +484 ppron3:sg:dat:m1.m2.m3:ter:akc:npraep +485 ppron3:sg:dat:m1.m2.m3:ter:nakc:npraep +486 ppron3:sg:dat:m1.m2.m3:ter:_:praep +487 ppron3:sg:dat:n1.n2:ter:akc:npraep +488 ppron3:sg:dat:n1.n2:ter:nakc:npraep +489 ppron3:sg:dat:n1.n2:ter:_:praep +490 ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep +491 ppron3:sg:gen:f:ter:_:npraep +492 ppron3:sg:gen:f:ter:_:praep +493 ppron3:sg:gen:m1.m2.m3:ter:akc:npraep +494 ppron3:sg:gen:m1.m2.m3:ter:akc:praep +495 ppron3:sg:gen:m1.m2.m3:ter:nakc:npraep +496 ppron3:sg:gen:m1.m2.m3:ter:nakc:praep +497 ppron3:sg:gen:n1.n2:ter:akc:npraep +498 ppron3:sg:gen:n1.n2:ter:nakc:npraep +499 ppron3:sg:gen:n1.n2:ter:_:praep +500 ppron3:sg:inst:f:ter:_:praep +501 ppron3:sg:inst:m1.m2.m3:ter:_:_ +502 ppron3:sg:inst:n1.n2:ter:_:_ +503 ppron3:sg:loc:f:ter:_:_ +504 ppron3:sg:loc:m1.m2.m3:ter:_:_ +505 ppron3:sg:loc:n1.n2:ter:_:_ +506 ppron3:sg:nom:f:ter:_:_ +507 ppron3:sg:nom:m1.m2.m3:ter:_:_ +508 ppron3:sg:nom:n1.n2:ter:_:_ +509 praet:pl:m1.p1:imperf +510 praet:pl:m1.p1:imperf.perf +511 praet:pl:m1.p1:perf +512 praet:pl:m1.p1:pri:imperf +513 praet:pl:m1.p1:pri:imperf.perf +514 praet:pl:m1.p1:pri:perf +515 praet:pl:m1.p1:sec:imperf +516 praet:pl:m1.p1:sec:imperf.perf +517 praet:pl:m1.p1:sec:perf +518 praet:pl:m1.p1:ter:imperf +519 praet:pl:m1.p1:ter:imperf.perf +520 praet:pl:m1.p1:ter:perf +521 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf +522 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf.perf +523 praet:pl:m2.m3.f.n1.n2.p2.p3:perf +524 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf +525 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf +526 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:perf +527 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +528 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf +529 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:perf +530 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +531 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf +532 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:perf +533 praet:sg:f:imperf +534 praet:sg:f:imperf.perf +535 praet:sg:f:perf +536 praet:sg:f:pri:imperf +537 praet:sg:f:pri:imperf.perf +538 praet:sg:f:pri:perf +539 praet:sg:f:sec:imperf +540 praet:sg:f:sec:imperf.perf +541 praet:sg:f:sec:perf +542 praet:sg:f:ter:imperf +543 praet:sg:f:ter:imperf.perf +544 praet:sg:f:ter:perf +545 praet:sg:m1.m2.m3:imperf +546 praet:sg:m1.m2.m3:imperf:agl +547 praet:sg:m1.m2.m3:imperf:nagl +548 praet:sg:m1.m2.m3:imperf.perf +549 praet:sg:m1.m2.m3:perf +550 praet:sg:m1.m2.m3:perf:agl +551 praet:sg:m1.m2.m3:perf:nagl +552 praet:sg:m1.m2.m3:pri:imperf +553 praet:sg:m1.m2.m3:pri:imperf.perf +554 praet:sg:m1.m2.m3:pri:perf +555 praet:sg:m1.m2.m3:sec:imperf +556 praet:sg:m1.m2.m3:sec:imperf.perf +557 praet:sg:m1.m2.m3:sec:perf +558 praet:sg:m1.m2.m3:ter:imperf +559 praet:sg:m1.m2.m3:ter:imperf.perf +560 praet:sg:m1.m2.m3:ter:perf +561 praet:sg:n1.n2:imperf +562 praet:sg:n1.n2:imperf.perf +563 praet:sg:n1.n2:perf +564 praet:sg:n1.n2:pri:imperf +565 praet:sg:n1.n2:pri:imperf.perf +566 praet:sg:n1.n2:pri:perf +567 praet:sg:n1.n2:sec:imperf +568 praet:sg:n1.n2:sec:imperf.perf +569 praet:sg:n1.n2:sec:perf +570 praet:sg:n1.n2:ter:imperf +571 praet:sg:n1.n2:ter:imperf.perf +572 praet:sg:n1.n2:ter:perf +573 pred +574 prefa +575 prefppas +576 prefs +577 prefv +578 prep:acc +579 prep:acc:nwok +580 prep:acc:wok +581 prep:dat +582 prep:gen +583 prep:gen:nwok +584 prep:gen:wok +585 prep:inst +586 prep:inst:nwok +587 prep:inst:wok +588 prep:loc +589 prep:loc:nwok +590 prep:loc:wok +591 prep:nom +592 qub +593 romandig +594 siebie:acc +595 siebie:dat +596 siebie:gen +597 siebie:inst +598 siebie:loc +599 substa +600 subst:pl:acc:f +601 subst:pl:acc:m1 +602 subst:pl:acc:m2 +603 subst:pl:acc:m3 +604 subst:pl:acc:n1 +605 subst:pl:acc:n2 +606 subst:pl:acc:p1 +607 subst:pl:acc:p2 +608 subst:pl:acc:p3 +609 subst:pl:dat:f +610 subst:pl:dat:m1 +611 subst:pl:dat:m2 +612 subst:pl:dat:m3 +613 subst:pl:dat:n1 +614 subst:pl:dat:n2 +615 subst:pl:dat:p1 +616 subst:pl:dat:p2 +617 subst:pl:dat:p3 +618 subst:pl:gen:f +619 subst:pl:gen:m1 +620 subst:pl:gen:m2 +621 subst:pl:gen:m3 +622 subst:pl:gen:n1 +623 subst:pl:gen:n2 +624 subst:pl:gen:p1 +625 subst:pl:gen:p2 +626 subst:pl:gen:p3 +627 subst:pl:inst:f +628 subst:pl:inst:m1 +629 subst:pl:inst:m2 +630 subst:pl:inst:m3 +631 subst:pl:inst:n1 +632 subst:pl:inst:n2 +633 subst:pl:inst:p1 +634 subst:pl:inst:p2 +635 subst:pl:inst:p3 +636 subst:pl:loc:f +637 subst:pl:loc:m1 +638 subst:pl:loc:m2 +639 subst:pl:loc:m3 +640 subst:pl:loc:n1 +641 subst:pl:loc:n2 +642 subst:pl:loc:p1 +643 subst:pl:loc:p2 +644 subst:pl:loc:p3 +645 subst:pl:nom:f +646 subst:pl:nom:m1 +647 subst:pl:nom:m2 +648 subst:pl:nom:m3 +649 subst:pl:nom:n1 +650 subst:pl:nom:n2 +651 subst:pl:nom:p1 +652 subst:pl:nom:p2 +653 subst:pl:nom:p3 +654 subst:pl:voc:f +655 subst:pl:voc:m1 +656 subst:pl:voc:m2 +657 subst:pl:voc:m3 +658 subst:pl:voc:n1 +659 subst:pl:voc:n2 +660 subst:pl:voc:p1 +661 subst:pl:voc:p2 +662 subst:pl:voc:p3 +663 subst:sg:acc:f +664 subst:sg:acc:m1 +665 subst:sg:acc:m2 +666 subst:sg:acc:m3 +667 subst:sg:acc:n1 +668 subst:sg:acc:n2 +669 subst:sg:dat:f +670 subst:sg:dat:m1 +671 subst:sg:dat:m2 +672 subst:sg:dat:m3 +673 subst:sg:dat:n1 +674 subst:sg:dat:n2 +675 subst:sg:gen:f +676 subst:sg:gen:m1 +677 subst:sg:gen:m2 +678 subst:sg:gen:m3 +679 subst:sg:gen:n1 +680 subst:sg:gen:n2 +681 subst:sg:inst:f +682 subst:sg:inst:m1 +683 subst:sg:inst:m2 +684 subst:sg:inst:m3 +685 subst:sg:inst:n1 +686 subst:sg:inst:n2 +687 subst:sg:loc:f +688 subst:sg:loc:m1 +689 subst:sg:loc:m2 +690 subst:sg:loc:m3 +691 subst:sg:loc:n1 +692 subst:sg:loc:n2 +693 subst:sg:nom:f +694 subst:sg:nom:m1 +695 subst:sg:nom:m2 +696 subst:sg:nom:m3 +697 subst:sg:nom:n1 +698 subst:sg:nom:n2 +699 subst:sg:voc:f +700 subst:sg:voc:m1 +701 subst:sg:voc:m2 +702 subst:sg:voc:m3 +703 subst:sg:voc:n1 +704 subst:sg:voc:n2 +705 winien:pl:m1.p1:imperf +706 winien:pl:m1.p1:pri:imperf +707 winien:pl:m1.p1:sec:imperf +708 winien:pl:m1.p1:ter:imperf +709 winien:pl:m2.m3.f.n1.n2.p2.p3:imperf +710 winien:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf +711 winien:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf +712 winien:sg:f:imperf +713 winien:sg:f:pri:imperf +714 winien:sg:f:sec:imperf +715 winien:sg:f:ter:imperf +716 winien:sg:m1.m2.m3:imperf +717 winien:sg:m1.m2.m3:pri:imperf +718 winien:sg:m1.m2.m3:sec:imperf +719 winien:sg:m1.m2.m3:ter:imperf +720 winien:sg:n1.n2:imperf +721 winien:sg:n1.n2:pri:imperf +722 winien:sg:n1.n2:sec:imperf +723 winien:sg:n1.n2:ter:imperf