From 05086d573805674d1d187bbd149cb08fb08f8384 Mon Sep 17 00:00:00 2001 From: Michał Lenart <michall@ipipan.waw.pl> Date: Fri, 22 Aug 2014 16:42:33 +0000 Subject: [PATCH] dodanie obsługi nazw własnych i kwalifikatorów w segmentacji --- fsabuilder/morfeusz_builder | 8 ++++---- fsabuilder/morfeuszbuilder/fsa/convertinput.py | 18 ++++++++++++------ fsabuilder/morfeuszbuilder/segrules/rulesManager.py | 4 ++-- fsabuilder/morfeuszbuilder/segrules/rulesParser.py | 6 ++++-- fsabuilder/morfeuszbuilder/tagset/segtypes.py | 278 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------- input/segmenty.dat | 350 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- nbproject/configurations.xml | 12 ------------ tests/analyzer/test_digits/segmentation.dat | 6 +++--- tests/analyzer/test_names/segmentation.dat | 6 +++--- tests/analyzer/test_qualifiers/segmentation.dat | 6 +++--- tests/analyzer/test_segtypes/ARGS | 1 + tests/analyzer/test_segtypes/dictionary.tab | 11 +++++++++++ tests/analyzer/test_segtypes/input.txt | 9 +++++++++ tests/analyzer/test_segtypes/output.txt | 11 +++++++++++ tests/analyzer/test_segtypes/segmentation.dat | 45 +++++++++++++++++++++++++++++++++++++++++++++ tests/analyzer/test_segtypes/tagset.dat | 774 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/generator/test_additional_atomic_segments/segmentation.dat | 6 +++--- tests/generator/test_digits/segmentation.dat | 6 +++--- tests/generator/test_names/segmentation.dat | 6 +++--- tests/generator/test_qualifiers/segmentation.dat | 6 +++--- tests/generator/test_segtypes/ARGS | 1 + tests/generator/test_segtypes/dictionary.tab | 11 +++++++++++ tests/generator/test_segtypes/input.txt | 9 +++++++++ tests/generator/test_segtypes/output.txt | 11 +++++++++++ tests/generator/test_segtypes/segmentation.dat | 45 +++++++++++++++++++++++++++++++++++++++++++++ tests/generator/test_segtypes/tagset.dat | 774 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 26 files changed, 2069 insertions(+), 351 deletions(-) create mode 100644 tests/analyzer/test_segtypes/ARGS create mode 100644 tests/analyzer/test_segtypes/dictionary.tab create mode 100644 tests/analyzer/test_segtypes/input.txt create mode 100644 tests/analyzer/test_segtypes/output.txt create mode 100644 tests/analyzer/test_segtypes/segmentation.dat create mode 100644 tests/analyzer/test_segtypes/tagset.dat create mode 100644 tests/generator/test_segtypes/ARGS create mode 100644 tests/generator/test_segtypes/dictionary.tab create mode 100644 tests/generator/test_segtypes/input.txt create mode 100644 tests/generator/test_segtypes/output.txt create mode 100644 tests/generator/test_segtypes/segmentation.dat create mode 100644 tests/generator/test_segtypes/tagset.dat diff --git a/fsabuilder/morfeusz_builder b/fsabuilder/morfeusz_builder index 9c6be2e..3d2825b 100644 --- a/fsabuilder/morfeusz_builder +++ b/fsabuilder/morfeusz_builder @@ -180,15 +180,15 @@ def _concatFiles(inputFiles): def _readNamesAndQualifiers(inputFiles): names = set([u'']) - qualifiers = set([tuple(frozenset([u'']))]) + qualifiers = set([frozenset()]) 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'|')))) + qualifiers.add(convertinput.parseQualifiers(qualifier)) 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)))]) + qualifiersMap = dict([(quals, idx) for idx, quals in enumerate(sorted(qualifiers, key=lambda q: tuple(sorted(q))))]) exceptions.validate( len(qualifiersMap) <= limits.MAX_QUALIFIERS_COMBINATIONS, u'Too many qualifiers combinations. The limit is %d' % limits.MAX_QUALIFIERS_COMBINATIONS) @@ -259,7 +259,7 @@ 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) + segmentRulesManager = rulesParser.RulesParser(tagset, namesMap, qualifiersMap, rulesParserVersion).parse(opts.segmentsFile) segmentationRulesData = segmentRulesManager.serialize() logging.info('done reading segmentation rules') diff --git a/fsabuilder/morfeuszbuilder/fsa/convertinput.py b/fsabuilder/morfeuszbuilder/fsa/convertinput.py index deb937f..33f4fae 100644 --- a/fsabuilder/morfeuszbuilder/fsa/convertinput.py +++ b/fsabuilder/morfeuszbuilder/fsa/convertinput.py @@ -43,6 +43,12 @@ def parseLine(line): raise ValueError('input line "%s" does not have 3, 4 or 5 tab-separated fields' % line) return orth, base, tag, name, qualifier +def parseQualifiers(string): + if string: + return frozenset(string.split(u'|')) + else: + return frozenset() + class PolimorfConverter4Analyzer(object): def __init__(self, tagset, namesMap, qualifiersMap, encoder, inputEncoding, segmentRulesManager): @@ -62,9 +68,9 @@ class PolimorfConverter4Analyzer(object): tagnum = self.tagset.getTagnum4Tag(tag) namenum = self.namesMap[name] - typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum) - qualifiers = qualifier.split('|') if qualifier else frozenset([u'']) - qualsnum = self.qualifiersMap[frozenset(qualifiers)] + qualifiers = parseQualifiers(qualifier) + qualsnum = self.qualifiersMap[qualifiers] + typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum, namenum, qualsnum) assert not ( self.segmentRulesManager.shiftOrthMagic.shouldReplaceLemmaWithOrth(typenum) @@ -138,9 +144,9 @@ class PolimorfConverter4Generator(object): base, homonymId = assumedBase, assumedHomonymId tagnum = self.tagset.getTagnum4Tag(tag) namenum = self.namesMap[name] - qualifiers = qualifier.split('|') if qualifier else frozenset([u'']) - qualsnum = self.qualifiersMap[frozenset(qualifiers)] - typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum) + qualifiers = parseQualifiers(qualifier) + qualsnum = self.qualifiersMap[qualifiers] + typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum, namenum, qualsnum) if self.segmentRulesManager.shiftOrthMagic.shouldReplaceLemmaWithOrth(typenum): # print 'replace %s %s %s %d with %s %s %s %d' % (orth, base, tag, typenum, orth, orth, tag, typenum) diff --git a/fsabuilder/morfeuszbuilder/segrules/rulesManager.py b/fsabuilder/morfeuszbuilder/segrules/rulesManager.py index ac1cf76..182e53a 100644 --- a/fsabuilder/morfeuszbuilder/segrules/rulesManager.py +++ b/fsabuilder/morfeuszbuilder/segrules/rulesManager.py @@ -33,8 +33,8 @@ class RulesManager(object): def addDFA(self, optionsMap, dfa): self.options2DFA[self._options2Key(optionsMap)] = dfa - def lexeme2SegmentTypeNum(self, lemma, tagnum): - res = self.segtypes.lexeme2Segnum(lemma, tagnum) + def lexeme2SegmentTypeNum(self, lemma, tagnum, namenum, labelsnum): + res = self.segtypes.lexeme2Segnum(lemma, tagnum, namenum, labelsnum) if res is None: raise ValueError() else: diff --git a/fsabuilder/morfeuszbuilder/segrules/rulesParser.py b/fsabuilder/morfeuszbuilder/segrules/rulesParser.py index 190a61b..611f56f 100644 --- a/fsabuilder/morfeuszbuilder/segrules/rulesParser.py +++ b/fsabuilder/morfeuszbuilder/segrules/rulesParser.py @@ -13,8 +13,10 @@ class RulesParser(object): PARSE4GENERATOR = 1 PARSE4ANALYZER = 2 - def __init__(self, tagset, rulesType): + def __init__(self, tagset, namesMap, labelsMap, rulesType): self.tagset = tagset + self.namesMap = namesMap + self.labelsMap = labelsMap assert rulesType in (RulesParser.PARSE4GENERATOR, RulesParser.PARSE4ANALYZER) self.rulesType = rulesType @@ -43,7 +45,7 @@ class RulesParser(object): 'segment types', 'separator chars']) key2Defs = self._getKey2Defs(segtypesConfigFile) - segtypesHelper = segtypes.Segtypes(self.tagset, segtypesConfigFile) + segtypesHelper = segtypes.Segtypes(self.tagset, self.namesMap, self.labelsMap, segtypesConfigFile) separatorsList = separatorChars.parseSeparatorChars(segtypesConfigFile) \ if self.rulesType == RulesParser.PARSE4ANALYZER \ else [] diff --git a/fsabuilder/morfeuszbuilder/tagset/segtypes.py b/fsabuilder/morfeuszbuilder/tagset/segtypes.py index e3b7222..cc639f6 100644 --- a/fsabuilder/morfeuszbuilder/tagset/segtypes.py +++ b/fsabuilder/morfeuszbuilder/tagset/segtypes.py @@ -5,7 +5,7 @@ Created on 17 lut 2014 ''' import re import logging -import sys +import itertools from morfeuszbuilder.utils import exceptions def _cutHomonymFromLemma(lemma): @@ -15,19 +15,25 @@ def _cutHomonymFromLemma(lemma): class Segtypes(object): - def __init__(self, tagset, segrulesConfigFile): + def __init__(self, tagset, namesMap, labelsMap, segrulesConfigFile): self.tagset = tagset + self.namesMap = namesMap + self.labelsMap = labelsMap + self._reverseLabelsMap = dict([(v, k) for (k, v) in labelsMap.iteritems()]) self.filename = segrulesConfigFile.filename - self.segtypes = set() - self.segtype2Segnum = {} - self.segnum2Segtype = {} + self.segtypes = [] + # self.segtype2Segnum = {} + # self.segnum2Segtype = {} self.patternsList = [] - - self._tagnum2Segnum = {} - self._lemmaTagnum2Segnum = {} + + # (lemma, tagnum) -> [namenum, labelsnum, segnum] + self._segnumsMap = {} + + # self._tagnum2Segnum = {} + # self._lemmaTagnum2Segnum = {} self._readSegtypes(segrulesConfigFile) self._readLexemes(segrulesConfigFile) @@ -38,11 +44,9 @@ class Segtypes(object): # print self._tagnum2Segnum logging.info('segment number -> segment type') logging.info('------------------------------') - logging.info(str(self.segnum2Segtype)) + logging.info(dict(enumerate(self.segtypes))) logging.info('------------------------------') -# self._debugSegnums() - def _validate(self, msg, lineNum, cond): if not cond: raise exceptions.ConfigFileException(self.filename, lineNum, msg) @@ -58,155 +62,171 @@ class Segtypes(object): u'Segment type already defined: "%s"' % line, lineNum, line not in self.segtypes) - self.segtypes.add(line) - - + self.segtypes.append(line) + def _readTags(self, segrulesConfigFile): gotWildcardPattern = False for lineNum, line in segrulesConfigFile.enumerateLinesInSection('tags'): - splitLine = re.split(r'\s+', line.strip()) - self._validate( - u'Line in [tags] section must contain exactly two fields - segment type and tag pattern', - lineNum, - len(splitLine) == 2) - segtype, pattern = splitLine - self._validate( - u'Undeclared segment type: "%s"' % segtype, - lineNum, - segtype in self.segtypes) - self._validate( - u'Segment type must be a lowercase alphanumeric with optional underscores', - lineNum, - re.match(r'[a-z_]+', segtype)) - self._validate( - u'Pattern must contain only ":", "%", "." and lowercase alphanumeric letters', - lineNum, - re.match(r'[a-z_\.\:\%]+', pattern)) - - self._validate( - u'Pattern that matches everything must be the last one', - lineNum - 1, - not gotWildcardPattern) - - if segtype in self.segtype2Segnum: - segnum = self.segtype2Segnum[segtype] - else: - segnum = len(self.segtype2Segnum) - self.segtype2Segnum[segtype] = segnum - - segtypePattern = SegtypePattern(None, pattern, segnum) - + self._parsePattern(lineNum, line, withLemma=False) self._validate( - u'There is no tag that matches pattern "%s".' % pattern, - lineNum, - any([segtypePattern.tryToMatch(None, tag) != -1 for tag in self.tagset.getAllTags()])) - - self.patternsList.append(segtypePattern) - - gotWildcardPattern = gotWildcardPattern or pattern == '%' - - self.segnum2Segtype = dict([(v, k) for (k, v) in self.segtype2Segnum.iteritems()]) + u'Pattern that matches everything must be the last one', + lineNum - 1, + not gotWildcardPattern) + gotWildcardPattern = gotWildcardPattern or self.patternsList[-1].isWildcardPattern() + + self._validate( + u'There must be a pattern that matches everything at the end of [tags] section', + lineNum, + self.patternsList[-1].isWildcardPattern()) def _readLexemes(self, segrulesConfigFile): for lineNum, line in segrulesConfigFile.enumerateLinesInSection('lexemes'): - split = re.split(r'\s+', line.strip()) - self._validate( - u'Line in [lexemes] section must contain exactly two fields - segment type and lexeme pattern', - lineNum, - len(split) == 2) - segtype, pattern = split + self._parsePattern(lineNum, line, withLemma=True) + + def _parseAdditionalConstraints(self, lineNum, fields): + res = {} + for f in fields: + match = re.match(r'(name|labels)=([\w_]+)', f, re.U) self._validate( - u'Undeclared segment type: "%s"' % segtype, - lineNum, - segtype in self.segtypes) + u'invalid name or labels constraint: "%s"' % f, + lineNum, + match) + key = match.group(1) + value = match.group(2) self._validate( - u'Segment type must be a lowercase alphanumeric with optional underscores', - lineNum, - re.match(r'[a-z_]+', segtype)) + u'%s already specified' % key, + lineNum, + key not in res) + if key == 'labels': + if value: + value = frozenset(value.split(u'|')) + else: + value = frozenset() + res[key] = value + return res + + def _parsePattern(self, lineNum, line, withLemma): + split = re.split(r'\s+', line.strip()) + if withLemma: self._validate( - u'Pattern must contain encodedForm and part-of-speech fields', - lineNum, - re.match(r'.+?\:[a-z_]+', pattern, re.U)) - - if segtype in self.segtype2Segnum: - segnum = self.segtype2Segnum[segtype] - else: - segnum = len(self.segtype2Segnum) - self.segtype2Segnum[segtype] = segnum - - lemma, pos = pattern.split(':', 1) - - segtypePattern = SegtypePattern(lemma, pos + ':%', segnum) - + u'Line in [lexemes] section must contain 3 to 5 fields - segment type, lemma, tag pattern and optional constraints on name and labels', + lineNum, + len(split) in [3, 4, 5]) + segtype = split[0] + lemma = split[1] + pattern = split[2] + additionalConstraints = self._parseAdditionalConstraints(lineNum, split[3:]) + else: self._validate( - u'There is no tag that matches pattern "%s".' % (pos + ':%'), - lineNum, - any([segtypePattern.tryToMatch(lemma, tag) != -1 for tag in self.tagset.getAllTags()])) - - self.patternsList.append(segtypePattern) - - def _debugSegnums(self): - for tagnum, segnum in self._tagnum2Segnum.items(): - print self.tagset.getTag4Tagnum(tagnum), '-->', self.segnum2Segtype[segnum] - - for (base, tagnum), segnum in self._lemmaTagnum2Segnum.items(): - print base, self.tagset.getTag4Tagnum(tagnum), '-->', self.segnum2Segtype[segnum] - - def _indexSegnums(self): -# logging.info('indexing segment type numbers...') - # index tags + u'Line in [tags] section must contain 2 to 4 fields - segment type, tag pattern and optional constraints on name and labels', + lineNum, + len(split) in [2, 3, 4]) + segtype = split[0] + lemma = None + pattern = split[1] + additionalConstraints = self._parseAdditionalConstraints(lineNum, split[2:]) + self._validate( + u'Undeclared segment type: "%s"' % segtype, + lineNum, + segtype in self.segtypes) + segnum = self.segtypes.index(segtype) + + self._validate( + u'Pattern must contain only ":", "%", "." and lowercase alphanumeric letters', + lineNum, + re.match(r'[a-z_\.\:\%]+', pattern)) + + segtypePattern = SegtypePattern( + lemma, + pattern, + additionalConstraints.get('name', u''), + additionalConstraints.get('labels', frozenset()), + segnum) + # print 'segtypePattern', repr(str(segtypePattern)) + self._validate( + u'There is no tag that matches pattern "%s".' % (pattern), + lineNum, + any([segtypePattern.tryToMatch(lemma, tag) != -1 for tag in self.tagset.getAllTags()])) + self.patternsList.append(segtypePattern) + + def _getAllExistingLabelsnumCombinations(self, labels): + if labels: + for labelsCombination, labelsnum in self.labelsMap.iteritems(): + if labels <= labelsCombination: + yield labelsnum + else: + yield 0 + + def _indexOnePattern(self, p): + for tag in self.tagset.getAllTags(): - tagnum = self.tagset.getTagnum4Tag(tag) - for p in self.patternsList: - segnum = p.tryToMatch(None, tag) - if segnum >= 0 and tagnum not in self._tagnum2Segnum: - self._tagnum2Segnum[tagnum] = segnum - + segnum = p.tryToMatch(p.lemma, tag) + if segnum != -1: + tagnum = self.tagset.getTagnum4Tag(tag) + self._segnumsMap.setdefault((p.lemma, tagnum), []) + namenum = self.namesMap[p.name] + for labelsnum in self._getAllExistingLabelsnumCombinations(p.labels): + self._segnumsMap[(p.lemma, tagnum)].append((namenum, labelsnum, segnum)) + + def _indexSegnums(self): + logging.info('indexing segment type numbers...') + # index lexemes for p in self.patternsList: - if p.lemma: - for tag in self.tagset.getAllTags(): - tagnum = self.tagset.getTagnum4Tag(tag) - if not (p.lemma, tagnum) in self._lemmaTagnum2Segnum: - segnum = p.tryToMatch(p.lemma, tag) - if segnum != -1: - self._lemmaTagnum2Segnum[(p.lemma, tagnum)] = segnum -# logging.info('indexing segment type numbers - done') -# self._debugSegnums() + self._indexOnePattern(p) + + # logging.info(self._segnumsMap) def hasSegtype(self, segTypeString): - return segTypeString in self.segtype2Segnum + # return segTypeString in self.segtype2Segnum + return segTypeString in self.segtypes def getSegnum4Segtype(self, segTypeString): - return self.segtype2Segnum[segTypeString] + return self.segtypes.index(segTypeString) + # return self.segtype2Segnum[segTypeString] - def lexeme2Segnum(self, lemma, tagnum): - lemma = _cutHomonymFromLemma(lemma) - res = self._lemmaTagnum2Segnum.get((lemma, tagnum), None) - if res is None: - res = self._tagnum2Segnum.get(tagnum, None) - return res + def lexeme2Segnum(self, lemma, tagnum, namenum, labelsnum): + + if (lemma, tagnum) in self._segnumsMap: + for (n, l, segnum) in self._segnumsMap[(lemma, tagnum)]: + if (n, l) == (namenum, labelsnum) \ + or (n, l) == (0, 0)\ + or (n == 0 and l == labelsnum)\ + or (l == 0 and n == namenum): + return segnum + + if not lemma is None: + return self.lexeme2Segnum(None, tagnum, namenum, labelsnum) + else: + assert False def getMaxSegnum(self): - return max(self.segnum2Segtype.keys()) + return len(self.segtypes) - 1 class SegtypePattern(object): - def __init__(self, lemma, pattern, segnum): + def __init__(self, lemma, pattern, name, labels, segnum): self.lemma = _cutHomonymFromLemma(lemma) self.pattern = pattern + self.name = name + self.labels = labels self.segnum = segnum - + def tryToMatch(self, lemma, tag): -# tag2Match = tag + ':' if not tag.endswith(':') else tag -# print tag2Match patterns2Match = [] patterns2Match.append(self.pattern.replace('%', '.*')) patterns2Match.append(re.sub(r'\:\%$', '', self.pattern).replace('%', '.*')) - lemma = _cutHomonymFromLemma(lemma) - if (self.lemma is None or self.lemma == lemma) \ - and any([re.match(p, tag) for p in patterns2Match]): + # patterns2Match.append(re.sub(r'$', ':%', self.pattern).replace('%', '.*')) + if self.lemma is None: + lemma = None + if any([re.match('^'+p+'$', tag) for p in patterns2Match]) \ + and self.lemma == lemma: return self.segnum else: -# print 'NOT match', lemma.encode('utf8') if lemma else '%', tag, self.segnum return -1 + + def isWildcardPattern(self): + return (self.lemma, self.pattern, self.name, self.labels) == (None, '%', u'', frozenset()) + + def __str__(self): + return u'%s %s %s %s -> %d' % (self.lemma, self.pattern, self.name, self.labels, self.segnum) diff --git a/input/segmenty.dat b/input/segmenty.dat index 025415a..994310c 100644 --- a/input/segmenty.dat +++ b/input/segmenty.dat @@ -506,181 +506,181 @@ pred pred samodz % [lexemes] -tym tym:adv -bardziej bardziej:adv -niemniej niemniej:qub -pewno pewno:qub -pol_zloz pół:num:comp -i i:conj -by by:qub -li li:qub -ze +że:qub -z +ż:qub -killfile +ć:qub -killfile +anka:subst:% -killfile +owa:subst:% -killfile +anka:subst:% -killfile +ina:subst:% -killfile +yna:subst:% -killfile +ówna:subst:% -z_aglt_by aby:comp -z_aglt bowiem:comp -z_aglt_by by:comp -z_aglt cóż:subst -z_aglt_nwok czemu:adv -z_aglt_by czyżby:qub -z_aglt_by choćby:comp -z_aglt_by chociażby:comp -z_aglt_nwok dlaczego:adv -z_aglt_nwok dopóki:comp -z_aglt_nwok dopóty:conj -z_aglt_by gdyby:comp -z_aglt_nwok gdy:adv -z_aglt_nwok gdzie:qub -z_aglt_nwok gdzie:adv -z_aglt_nwok kto:subst:% -z_aglt_by jakby:comp -z_aglt_by jakoby:comp -z_aglt_nwok kiedy:adv -z_aglt_nwok kiedy:comp -z_aglt_nwok tylko:qub -z_aglt_by żeby:comp -z_aglt_nwok to:conj -z_aglt_nwok chyba:qub -z_aglt_nwok że:qub -z_aglt_nwok czy:conj -z_aglt_by oby:qub -z_aglt_by bodajby:qub -z_aglt_nwok co:comp -z_aglt_nwok bo:comp -z_aglt_nwok byle:comp -z_aglt_by byleby:comp -dywiz -:interp -pauza —:interp -polpauza –:interp -kropka .:interp -przecinek ,:interp -n on:ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep -adj_anty_zloz ten:adj:% -adj_anty_zloz tenże:adj:% -adj_anty_zloz ck:adj:% -adj_anty_zloz c.k.:adj:% -adj_anty_zloz ki:adj:% -adj_anty_zloz si:adj:% -adj_anty_zloz ow:adj:% -adj_anty_zloz ów:adj:% -adj_anty_zloz ówże:adj:% -adj_anty_zloz mój:adj:% -adj_anty_zloz a-z:adj:% -adj_anty_zloz a-ż:adj:% -adj_anty_zloz kiż:adj:% -adj_anty_zloz be:adj:% -adj_anty_zloz caca:adj:% -adj_anty_zloz czyj:adj:% -adj_anty_zloz oboj:adj:% -adj_anty_zloz on:adj:% -adj_anty_zloz tyli:adj:% -adj_anty_zloz rany:adj:% -adj_anty_zloz taki:adj:% -adj_anty_zloz pop:adj:% -subst_anty_zloz co:subst:% -subst_anty_zloz ar:subst:%:m3 -subst_anty_zloz as:subst:%:m2 -subst_anty_zloz as:subst:%:m1 -subst_anty_zloz as:subst:%:m2 -subst_anty_zloz as:subst:%:m3 -subst_anty_zloz as:subst:%:n2 -subst_anty_zloz at:subst:%:n2 -subst_anty_zloz at:subst:%:m2 -subst_anty_zloz az:subst:%:m1 -subst_anty_zloz be:subst:%:n2 -subst_anty_zloz bp:subst:%:m1 -subst_anty_zloz ce:subst:%:n2 -subst_anty_zloz de:subst:%:n2 -subst_anty_zloz do:subst:%:n2 -subst_anty_zloz dr:subst:%:m1 -subst_anty_zloz ef:subst:%:n2 -subst_anty_zloz el:subst:%:n2 -subst_anty_zloz em:subst:%:n2 -subst_anty_zloz en:subst:%:n2 -subst_anty_zloz er:subst:%:n2 -subst_anty_zloz es:subst:%:m3 -subst_anty_zloz es:subst:%:n2 -subst_anty_zloz fa:subst:%:n2 -subst_anty_zloz go:subst:%:n2 -subst_anty_zloz ha:subst:%:n2 -subst_anty_zloz id:subst:%:m3 -subst_anty_zloz id:subst:%:n2 -subst_anty_zloz in:subst:%:n2 -subst_anty_zloz ka:subst:%:n2 -subst_anty_zloz kb:subst:%:m3 -subst_anty_zloz km:subst:%:m3 -subst_anty_zloz ku:subst:%:n2 -subst_anty_zloz la:subst:%:n2 -subst_anty_zloz li:subst:%:n2 -subst_anty_zloz li:subst:%:f -subst_anty_zloz mi:subst:%:n2 -subst_anty_zloz ni:subst:%:n2 -subst_anty_zloz no:subst:%:n2 -subst_anty_zloz nr:subst:%:m3 -subst_anty_zloz om:subst:%:m3 -subst_anty_zloz oz:subst:%:m3 -subst_anty_zloz pe:subst:%:n2 -subst_anty_zloz pi:subst:%:n2 -subst_anty_zloz re:subst:%:n2 -subst_anty_zloz rh:subst:%:n2 -subst_anty_zloz ro:subst:%:n2 -subst_anty_zloz si:subst:%:n2 -subst_anty_zloz su:subst:%:n2 -subst_anty_zloz te:subst:%:n2 -subst_anty_zloz tv:subst:%:f -subst_anty_zloz ud:subst:%:m3 -subst_anty_zloz uf:subst:%:m3 -subst_anty_zloz ul:subst:%:m3 -subst_anty_zloz um:subst:%:m3 -subst_anty_zloz ut:subst:%:n2 -subst_anty_zloz vw:subst:%:m3 -subst_anty_zloz vw:subst:%:n2 -subst_anty_zloz wc:subst:%:n2 -subst_anty_zloz we:subst:%:n2 -subst_anty_zloz wf:subst:%:m3 -subst_anty_zloz wu:subst:%:n2 -prep_na na:prep:% -prep_n do:prep:% -prep_n dla:prep:% -prep_n koło:prep:% -prep_n o:prep:% -prep_n po:prep:% -prep_n poza:prep:% -prep_n spoza:prep:% -prep_n za:prep:% -prep_n zza:prep:% -sufs +znawca:subst:% -sufs +dawca:subst:% -sufs +biorca:subst:% -sufs +żerca:subst:% -sufs +maniak:subst:% -sufs +logia:subst:% -sufs +log:subst:% -suf_num +latek:subst:% -suf_num +latka:subst:% -suf_num +lecie:subst:% -suf_num +krotność:subst:% -suf_ord ty:adj:% -suf_ord y:adj:% -rom_i I:romandig -rom_v V:romandig -rom_x X:romandig -rom_l L:romandig -rom_d D:romandig -rom_c C:romandig -rom_m M:romandig -ja ja:ppron12:sg:nom:% -ty ty:ppron12:sg:nom:% -my my:ppron12:pl:nom:% -wy wy:ppron12:pl:nom:% -pref_dyw e-+:prefa -pref_dyw e-+:prefs +tym tym adv +bardziej bardziej adv +niemniej niemniej qub +pewno pewno qub +pol_zloz pół num:comp +i i conj +by by qub +li li qub +ze +że qub +z +ż qub +killfile +ć qub +killfile +anka subst:% +killfile +owa subst:% +killfile +anka subst:% +killfile +ina subst:% +killfile +yna subst:% +killfile +ówna subst:% +z_aglt_by aby comp +z_aglt bowiem comp +z_aglt_by by comp +z_aglt cóż subst:% +z_aglt_nwok czemu adv +z_aglt_by czyżby qub +z_aglt_by choćby comp +z_aglt_by chociażby comp +z_aglt_nwok dlaczego adv +z_aglt_nwok dopóki comp +z_aglt_nwok dopóty conj +z_aglt_by gdyby comp +z_aglt_nwok gdy adv +z_aglt_nwok gdzie qub +z_aglt_nwok gdzie adv +z_aglt_nwok kto subst:% +z_aglt_by jakby comp +z_aglt_by jakoby comp +z_aglt_nwok kiedy adv +z_aglt_nwok kiedy comp +z_aglt_nwok tylko qub +z_aglt_by żeby comp +z_aglt_nwok to conj +z_aglt_nwok chyba qub +z_aglt_nwok że qub +z_aglt_nwok czy conj +z_aglt_by oby qub +z_aglt_by bodajby qub +z_aglt_nwok co comp +z_aglt_nwok bo comp +z_aglt_nwok byle comp +z_aglt_by byleby comp +dywiz - interp +pauza — interp +polpauza – interp +kropka . interp +przecinek , interp +n on ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep +adj_anty_zloz ten adj:% +adj_anty_zloz tenże adj:% +adj_anty_zloz ck adj:% +adj_anty_zloz c.k. adj:% +adj_anty_zloz ki adj:% +adj_anty_zloz si adj:% +adj_anty_zloz ow adj:% +adj_anty_zloz ów adj:% +adj_anty_zloz ówże adj:% +adj_anty_zloz mój adj:% +adj_anty_zloz a-z adj:% +adj_anty_zloz a-ż adj:% +adj_anty_zloz kiż adj:% +adj_anty_zloz be adj:% +adj_anty_zloz caca adj:% +adj_anty_zloz czyj adj:% +adj_anty_zloz oboj adj:% +adj_anty_zloz on adj:% +adj_anty_zloz tyli adj:% +adj_anty_zloz rany adj:% +adj_anty_zloz taki adj:% +adj_anty_zloz pop adj:% +subst_anty_zloz co subst:% +subst_anty_zloz ar subst:%:m3 +subst_anty_zloz as subst:%:m2 +subst_anty_zloz as subst:%:m1 +subst_anty_zloz as subst:%:m2 +subst_anty_zloz as subst:%:m3 +subst_anty_zloz as subst:%:n2 +subst_anty_zloz at subst:%:n2 +subst_anty_zloz at subst:%:m2 +subst_anty_zloz az subst:%:m1 +subst_anty_zloz be subst:%:n2 +subst_anty_zloz bp subst:%:m1 +subst_anty_zloz ce subst:%:n2 +subst_anty_zloz de subst:%:n2 +subst_anty_zloz do subst:%:n2 +subst_anty_zloz dr subst:%:m1 +subst_anty_zloz ef subst:%:n2 +subst_anty_zloz el subst:%:n2 +subst_anty_zloz em subst:%:n2 +subst_anty_zloz en subst:%:n2 +subst_anty_zloz er subst:%:n2 +subst_anty_zloz es subst:%:m3 +subst_anty_zloz es subst:%:n2 +subst_anty_zloz fa subst:%:n2 +subst_anty_zloz go subst:%:n2 +subst_anty_zloz ha subst:%:n2 +subst_anty_zloz id subst:%:m3 +subst_anty_zloz id subst:%:n2 +subst_anty_zloz in subst:%:n2 +subst_anty_zloz ka subst:%:n2 +subst_anty_zloz kb subst:%:m3 +subst_anty_zloz km subst:%:m3 +subst_anty_zloz ku subst:%:n2 +subst_anty_zloz la subst:%:n2 +subst_anty_zloz li subst:%:n2 +subst_anty_zloz li subst:%:f +subst_anty_zloz mi subst:%:n2 +subst_anty_zloz ni subst:%:n2 +subst_anty_zloz no subst:%:n2 +subst_anty_zloz nr subst:%:m3 +subst_anty_zloz om subst:%:m3 +subst_anty_zloz oz subst:%:m3 +subst_anty_zloz pe subst:%:n2 +subst_anty_zloz pi subst:%:n2 +subst_anty_zloz re subst:%:n2 +subst_anty_zloz rh subst:%:n2 +subst_anty_zloz ro subst:%:n2 +subst_anty_zloz si subst:%:n2 +subst_anty_zloz su subst:%:n2 +subst_anty_zloz te subst:%:n2 +subst_anty_zloz tv subst:%:f +subst_anty_zloz ud subst:%:m3 +subst_anty_zloz uf subst:%:m3 +subst_anty_zloz ul subst:%:m3 +subst_anty_zloz um subst:%:m3 +subst_anty_zloz ut subst:%:n2 +subst_anty_zloz vw subst:%:m3 +subst_anty_zloz vw subst:%:n2 +subst_anty_zloz wc subst:%:n2 +subst_anty_zloz we subst:%:n2 +subst_anty_zloz wf subst:%:m3 +subst_anty_zloz wu subst:%:n2 +prep_na na prep:% +prep_n do prep:% +prep_n dla prep:% +prep_n koło prep:% +prep_n o prep:% +prep_n po prep:% +prep_n poza prep:% +prep_n spoza prep:% +prep_n za prep:% +prep_n zza prep:% +sufs +znawca subst:% +sufs +dawca subst:% +sufs +biorca subst:% +sufs +żerca subst:% +sufs +maniak subst:% +sufs +logia subst:% +sufs +log subst:% +suf_num +latek subst:% +suf_num +latka subst:% +suf_num +lecie subst:% +suf_num +krotność subst:% +suf_ord ty adj:% +suf_ord y adj:% +rom_i I romandig +rom_v V romandig +rom_x X romandig +rom_l L romandig +rom_d D romandig +rom_c C romandig +rom_m M romandig +ja ja ppron12:sg:nom:% +ty ty ppron12:sg:nom:% +my my ppron12:pl:nom:% +wy wy ppron12:pl:nom:% +pref_dyw e-+ prefa +pref_dyw e-+ prefs [separator chars] # , diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml index 29438be..05c0cc6 100644 --- a/nbproject/configurations.xml +++ b/nbproject/configurations.xml @@ -339,8 +339,6 @@ ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - </ccTool> </item> <item path="build/morfeusz/wrappers/morfeuszPERL_wrap.cxx" ex="false" @@ -969,22 +967,16 @@ ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - </ccTool> </item> <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Analyzer.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - </ccTool> </item> <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Generator.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - </ccTool> </item> <item path="morfeusz/fsa/const.cpp" ex="false" tool="1" flavor2="4"> </item> @@ -1035,12 +1027,8 @@ </ccTool> </item> <item path="morfeusz/segrules/SegrulesFSA.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - </ccTool> </item> <item path="morfeusz/segrules/segrules.cpp" ex="false" tool="1" flavor2="4"> - <ccTool flags="2"> - </ccTool> </item> <item path="morfeusz/test_runner.cpp" ex="false" tool="1" flavor2="4"> <ccTool flags="0"> diff --git a/tests/analyzer/test_digits/segmentation.dat b/tests/analyzer/test_digits/segmentation.dat index 4bac5b3..2fb6a49 100644 --- a/tests/analyzer/test_digits/segmentation.dat +++ b/tests/analyzer/test_digits/segmentation.dat @@ -27,9 +27,9 @@ dig samodz [lexemes] -kropka .:interp -przecinek ,:interp -dywiz -:interp +kropka . interp +przecinek , interp +dywiz - interp [tags] dig dig diff --git a/tests/analyzer/test_names/segmentation.dat b/tests/analyzer/test_names/segmentation.dat index 4bac5b3..2fb6a49 100644 --- a/tests/analyzer/test_names/segmentation.dat +++ b/tests/analyzer/test_names/segmentation.dat @@ -27,9 +27,9 @@ dig samodz [lexemes] -kropka .:interp -przecinek ,:interp -dywiz -:interp +kropka . interp +przecinek , interp +dywiz - interp [tags] dig dig diff --git a/tests/analyzer/test_qualifiers/segmentation.dat b/tests/analyzer/test_qualifiers/segmentation.dat index 4bac5b3..2fb6a49 100644 --- a/tests/analyzer/test_qualifiers/segmentation.dat +++ b/tests/analyzer/test_qualifiers/segmentation.dat @@ -27,9 +27,9 @@ dig samodz [lexemes] -kropka .:interp -przecinek ,:interp -dywiz -:interp +kropka . interp +przecinek , interp +dywiz - interp [tags] dig dig diff --git a/tests/analyzer/test_segtypes/ARGS b/tests/analyzer/test_segtypes/ARGS new file mode 100644 index 0000000..4fd99ea --- /dev/null +++ b/tests/analyzer/test_segtypes/ARGS @@ -0,0 +1 @@ +--aggl permissive diff --git a/tests/analyzer/test_segtypes/dictionary.tab b/tests/analyzer/test_segtypes/dictionary.tab new file mode 100644 index 0000000..109a0bb --- /dev/null +++ b/tests/analyzer/test_segtypes/dictionary.tab @@ -0,0 +1,11 @@ +mikro mikro prefs +euro euro prefs +super super prefs +kot kot subst:sg:nom:m1 imie mikro|zzz +kot kot subst:sg:nom:m1 nazwisko euro +kot kot subst:sg:nom:m1 xxx|yyy|super +kot kot subst:sg:nom:m1 samodzielnie|zzz +kot kot subst:sg:nom:m2 imie samodzielnie +kot kot adj:sg:acc:m3:pos nigdy +pies pies subst:sg:acc:m3 aaa|zzz|euro +pies pies subst:sg:nom:m1 nazwisko yyy|zzz|samodzielnie diff --git a/tests/analyzer/test_segtypes/input.txt b/tests/analyzer/test_segtypes/input.txt new file mode 100644 index 0000000..ba1c944 --- /dev/null +++ b/tests/analyzer/test_segtypes/input.txt @@ -0,0 +1,9 @@ +kot +eurokot +superkot +mikrokot +kotkot +pies +europies +superpies +mikropies diff --git a/tests/analyzer/test_segtypes/output.txt b/tests/analyzer/test_segtypes/output.txt new file mode 100644 index 0000000..86e12d2 --- /dev/null +++ b/tests/analyzer/test_segtypes/output.txt @@ -0,0 +1,11 @@ +[0,1,kot,kot,subst:sg:nom:m1,_,samodzielnie|zzz + 0,1,kot,kot,subst:sg:nom:m2,imie,samodzielnie] +[0,1,eurokot,eurokot,subst:sg:nom:m1,nazwisko,euro] +[0,1,superkot,superkot,subst:sg:nom:m1,_,super|xxx|yyy] +[0,1,mikrokot,mikrokot,subst:sg:nom:m1,imie,mikro|zzz] +[0,1,kotkot,kotkot,ign,_,_] +[0,1,pies,pies,subst:sg:nom:m1,nazwisko,samodzielnie|yyy|zzz] +[0,1,europies,europies,subst:sg:acc:m3,_,aaa|zzz|euro] +[0,1,superpies,superpies,ign,_,_] +[0,1,mikropies,mikropies,ign,_,_] + diff --git a/tests/analyzer/test_segtypes/segmentation.dat b/tests/analyzer/test_segtypes/segmentation.dat new file mode 100644 index 0000000..1914f71 --- /dev/null +++ b/tests/analyzer/test_segtypes/segmentation.dat @@ -0,0 +1,45 @@ +[options] +aggl=strict permissive isolated +praet=split composite + +[combinations] + +samodzielnie +mikro> tylko_z_mikro +euro> tylko_z_euro +super> tylko_z_super + +[segment types] +tylko_z_mikro +tylko_z_euro +tylko_z_super +samodzielnie +nigdy +mikro +euro +super + +[lexemes] +tylko_z_mikro kot subst:% name=imie labels=zzz +tylko_z_euro kot subst:% name=nazwisko +tylko_z_super kot subst:% labels=xxx|yyy +samodzielnie kot subst:% + +mikro mikro % +euro euro % +super super % + +[tags] +tylko_z_euro subst:% labels=aaa +samodzielnie subst:% +nigdy % + +[separator chars] +# , +44 + +# . +46 + +# ; +59 diff --git a/tests/analyzer/test_segtypes/tagset.dat b/tests/analyzer/test_segtypes/tagset.dat new file mode 100644 index 0000000..b04a3aa --- /dev/null +++ b/tests/analyzer/test_segtypes/tagset.dat @@ -0,0 +1,774 @@ +#!TAGSET-ID pl.sgjp.morfeusz-0.5.0 + +[TAGS] +# special: unknown word (ignotum): +0 ign +# special: space/blank: +1 sp +# NOUNS +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 +693 subst:sg:nom: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 +675 subst:sg:gen: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 +669 subst:sg:dat: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 +663 subst:sg:acc: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 +681 subst:sg:inst: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 +687 subst:sg:loc: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 +699 subst:sg:voc: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 +645 subst:pl:nom: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 +618 subst:pl:gen: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 +609 subst:pl:dat: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 +600 subst:pl:acc: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 +627 subst:pl:inst: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 +636 subst:pl:loc:f +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 +# depreciative nominal flexeme: +149 depr:pl:nom:m2 +150 depr:pl:voc:m2 +# nominal compounds forming form: +599 substa +# PERSONAL PRONOUNS +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 +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 +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:_:_ +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:_:_ +# PRONOUN ‘SIEBIE’ +594 siebie:acc +595 siebie:dat +596 siebie:gen +597 siebie:inst +598 siebie:loc +# ADJECTIVES +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 +# adjectival compounds forming form: +2 adja +# predicative adjective: +3 adjc +# post-prepositional adjective: +4 adjp +# VERBS +# finitive (present/future) flexeme: +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 +# past flexeme: +# praet=split (unsued otherwise): +509 praet:pl:m1.p1:imperf +510 praet:pl:m1.p1:imperf.perf +511 praet:pl:m1.p1: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 +533 praet:sg:f:imperf +534 praet:sg:f:imperf.perf +535 praet:sg:f: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 +561 praet:sg:n1.n2:imperf +562 praet:sg:n1.n2:imperf.perf +563 praet:sg:n1.n2:perf +# praet=composite (unsued otherwise): +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 +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 +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 +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 +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 +# conditional mood (used only with praet=composite) +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 +# impersonal flexeme: +219 imps:imperf +220 imps:imperf.perf +221 imps:perf +# imperative flexeme: +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 +# infinitival flexeme: +231 inf:imperf +232 inf:imperf.perf +233 inf:perf +# agglutinative forms of ‘być’: +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 +# future forms of ‘być’: +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 +# ‘winien’ type verbs: +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 +# predicative flexeme: +573 pred +# gerunds +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 +# participles +# adverbial participles: +332 pcon:imperf +331 pant:perf +# adjectival active participle: +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 +# adjectival passive participle: +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 +# NUMERALS +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 +# numeral compounds forming form: +238 num:comp +# PREPOSITIONS +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 +# ADVERBS +79 adv +80 adv:com +81 adv:pos +82 adv:sup +# OTHER +# kubliki (particles): +592 qub +# conjunctions: +148 conj +# complementizers: +99 comp +# interjections: +234 interj +# burkinostki (bound words): +98 burk +# abbreviations: +97 brev:pun +97 brev:npun +# punctuation: +235 interp +# digits: +151 dig +# Roman digits: +593 romandig +# emoticons: +152 emoticon +# prefixes: +574 prefa +575 prefppas +576 prefs +577 prefv +# (special) +236 naj +237 nie diff --git a/tests/generator/test_additional_atomic_segments/segmentation.dat b/tests/generator/test_additional_atomic_segments/segmentation.dat index 51f32db..91b43ed 100644 --- a/tests/generator/test_additional_atomic_segments/segmentation.dat +++ b/tests/generator/test_additional_atomic_segments/segmentation.dat @@ -33,9 +33,9 @@ adj samodz [lexemes] -kropka .:interp -przecinek ,:interp -dywiz -:interp +kropka . interp +przecinek , interp +dywiz - interp [tags] dig dig diff --git a/tests/generator/test_digits/segmentation.dat b/tests/generator/test_digits/segmentation.dat index 4bac5b3..2fb6a49 100644 --- a/tests/generator/test_digits/segmentation.dat +++ b/tests/generator/test_digits/segmentation.dat @@ -27,9 +27,9 @@ dig samodz [lexemes] -kropka .:interp -przecinek ,:interp -dywiz -:interp +kropka . interp +przecinek , interp +dywiz - interp [tags] dig dig diff --git a/tests/generator/test_names/segmentation.dat b/tests/generator/test_names/segmentation.dat index 4bac5b3..2fb6a49 100644 --- a/tests/generator/test_names/segmentation.dat +++ b/tests/generator/test_names/segmentation.dat @@ -27,9 +27,9 @@ dig samodz [lexemes] -kropka .:interp -przecinek ,:interp -dywiz -:interp +kropka . interp +przecinek , interp +dywiz - interp [tags] dig dig diff --git a/tests/generator/test_qualifiers/segmentation.dat b/tests/generator/test_qualifiers/segmentation.dat index 4bac5b3..2fb6a49 100644 --- a/tests/generator/test_qualifiers/segmentation.dat +++ b/tests/generator/test_qualifiers/segmentation.dat @@ -27,9 +27,9 @@ dig samodz [lexemes] -kropka .:interp -przecinek ,:interp -dywiz -:interp +kropka . interp +przecinek , interp +dywiz - interp [tags] dig dig diff --git a/tests/generator/test_segtypes/ARGS b/tests/generator/test_segtypes/ARGS new file mode 100644 index 0000000..4fd99ea --- /dev/null +++ b/tests/generator/test_segtypes/ARGS @@ -0,0 +1 @@ +--aggl permissive diff --git a/tests/generator/test_segtypes/dictionary.tab b/tests/generator/test_segtypes/dictionary.tab new file mode 100644 index 0000000..109a0bb --- /dev/null +++ b/tests/generator/test_segtypes/dictionary.tab @@ -0,0 +1,11 @@ +mikro mikro prefs +euro euro prefs +super super prefs +kot kot subst:sg:nom:m1 imie mikro|zzz +kot kot subst:sg:nom:m1 nazwisko euro +kot kot subst:sg:nom:m1 xxx|yyy|super +kot kot subst:sg:nom:m1 samodzielnie|zzz +kot kot subst:sg:nom:m2 imie samodzielnie +kot kot adj:sg:acc:m3:pos nigdy +pies pies subst:sg:acc:m3 aaa|zzz|euro +pies pies subst:sg:nom:m1 nazwisko yyy|zzz|samodzielnie diff --git a/tests/generator/test_segtypes/input.txt b/tests/generator/test_segtypes/input.txt new file mode 100644 index 0000000..ba1c944 --- /dev/null +++ b/tests/generator/test_segtypes/input.txt @@ -0,0 +1,9 @@ +kot +eurokot +superkot +mikrokot +kotkot +pies +europies +superpies +mikropies diff --git a/tests/generator/test_segtypes/output.txt b/tests/generator/test_segtypes/output.txt new file mode 100644 index 0000000..21f6e70 --- /dev/null +++ b/tests/generator/test_segtypes/output.txt @@ -0,0 +1,11 @@ +[kot,kot,subst:sg:nom:m1,_,samodzielnie|zzz + kot,kot,subst:sg:nom:m2,imie,samodzielnie] +[eurokot,eurokot,subst:sg:nom:m1,nazwisko,euro] +[superkot,superkot,subst:sg:nom:m1,_,super|xxx|yyy] +[mikrokot,mikrokot,subst:sg:nom:m1,imie,mikro|zzz] +[kotkot,kotkot,ign,_,_] +[pies,pies,subst:sg:nom:m1,nazwisko,samodzielnie|yyy|zzz] +[europies,europies,subst:sg:acc:m3,_,aaa|zzz|euro] +[superpies,superpies,ign,_,_] +[mikropies,mikropies,ign,_,_] + diff --git a/tests/generator/test_segtypes/segmentation.dat b/tests/generator/test_segtypes/segmentation.dat new file mode 100644 index 0000000..1914f71 --- /dev/null +++ b/tests/generator/test_segtypes/segmentation.dat @@ -0,0 +1,45 @@ +[options] +aggl=strict permissive isolated +praet=split composite + +[combinations] + +samodzielnie +mikro> tylko_z_mikro +euro> tylko_z_euro +super> tylko_z_super + +[segment types] +tylko_z_mikro +tylko_z_euro +tylko_z_super +samodzielnie +nigdy +mikro +euro +super + +[lexemes] +tylko_z_mikro kot subst:% name=imie labels=zzz +tylko_z_euro kot subst:% name=nazwisko +tylko_z_super kot subst:% labels=xxx|yyy +samodzielnie kot subst:% + +mikro mikro % +euro euro % +super super % + +[tags] +tylko_z_euro subst:% labels=aaa +samodzielnie subst:% +nigdy % + +[separator chars] +# , +44 + +# . +46 + +# ; +59 diff --git a/tests/generator/test_segtypes/tagset.dat b/tests/generator/test_segtypes/tagset.dat new file mode 100644 index 0000000..b04a3aa --- /dev/null +++ b/tests/generator/test_segtypes/tagset.dat @@ -0,0 +1,774 @@ +#!TAGSET-ID pl.sgjp.morfeusz-0.5.0 + +[TAGS] +# special: unknown word (ignotum): +0 ign +# special: space/blank: +1 sp +# NOUNS +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 +693 subst:sg:nom: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 +675 subst:sg:gen: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 +669 subst:sg:dat: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 +663 subst:sg:acc: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 +681 subst:sg:inst: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 +687 subst:sg:loc: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 +699 subst:sg:voc: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 +645 subst:pl:nom: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 +618 subst:pl:gen: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 +609 subst:pl:dat: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 +600 subst:pl:acc: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 +627 subst:pl:inst: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 +636 subst:pl:loc:f +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 +# depreciative nominal flexeme: +149 depr:pl:nom:m2 +150 depr:pl:voc:m2 +# nominal compounds forming form: +599 substa +# PERSONAL PRONOUNS +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 +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 +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:_:_ +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:_:_ +# PRONOUN ‘SIEBIE’ +594 siebie:acc +595 siebie:dat +596 siebie:gen +597 siebie:inst +598 siebie:loc +# ADJECTIVES +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 +# adjectival compounds forming form: +2 adja +# predicative adjective: +3 adjc +# post-prepositional adjective: +4 adjp +# VERBS +# finitive (present/future) flexeme: +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 +# past flexeme: +# praet=split (unsued otherwise): +509 praet:pl:m1.p1:imperf +510 praet:pl:m1.p1:imperf.perf +511 praet:pl:m1.p1: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 +533 praet:sg:f:imperf +534 praet:sg:f:imperf.perf +535 praet:sg:f: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 +561 praet:sg:n1.n2:imperf +562 praet:sg:n1.n2:imperf.perf +563 praet:sg:n1.n2:perf +# praet=composite (unsued otherwise): +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 +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 +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 +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 +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 +# conditional mood (used only with praet=composite) +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 +# impersonal flexeme: +219 imps:imperf +220 imps:imperf.perf +221 imps:perf +# imperative flexeme: +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 +# infinitival flexeme: +231 inf:imperf +232 inf:imperf.perf +233 inf:perf +# agglutinative forms of ‘być’: +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 +# future forms of ‘być’: +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 +# ‘winien’ type verbs: +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 +# predicative flexeme: +573 pred +# gerunds +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 +# participles +# adverbial participles: +332 pcon:imperf +331 pant:perf +# adjectival active participle: +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 +# adjectival passive participle: +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 +# NUMERALS +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 +# numeral compounds forming form: +238 num:comp +# PREPOSITIONS +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 +# ADVERBS +79 adv +80 adv:com +81 adv:pos +82 adv:sup +# OTHER +# kubliki (particles): +592 qub +# conjunctions: +148 conj +# complementizers: +99 comp +# interjections: +234 interj +# burkinostki (bound words): +98 burk +# abbreviations: +97 brev:pun +97 brev:npun +# punctuation: +235 interp +# digits: +151 dig +# Roman digits: +593 romandig +# emoticons: +152 emoticon +# prefixes: +574 prefa +575 prefppas +576 prefs +577 prefv +# (special) +236 naj +237 nie -- libgit2 0.22.2