Commit 05086d573805674d1d187bbd149cb08fb08f8384

Authored by Michał Lenart
1 parent 96182ff0

dodanie obsługi nazw własnych i kwalifikatorów w segmentacji

git-svn-id: svn://svn.nlp.ipipan.waw.pl/morfeusz/trunk@277 ff4e3ee1-f430-4e82-ade0-24591c43f1fd
fsabuilder/morfeusz_builder
@@ -180,15 +180,15 @@ def _concatFiles(inputFiles): @@ -180,15 +180,15 @@ def _concatFiles(inputFiles):
180 180
181 def _readNamesAndQualifiers(inputFiles): 181 def _readNamesAndQualifiers(inputFiles):
182 names = set([u'']) 182 names = set([u''])
183 - qualifiers = set([tuple(frozenset([u'']))]) 183 + qualifiers = set([frozenset()])
184 for line in _concatFiles(inputFiles): 184 for line in _concatFiles(inputFiles):
185 line = line.strip().decode('utf8') 185 line = line.strip().decode('utf8')
186 if line: 186 if line:
187 _, _, _, name, qualifier = convertinput.parseLine(line) 187 _, _, _, name, qualifier = convertinput.parseLine(line)
188 names.add(name) 188 names.add(name)
189 - qualifiers.add(tuple(sorted(qualifier.split(u'|')))) 189 + qualifiers.add(convertinput.parseQualifiers(qualifier))
190 namesMap = dict([(name, idx) for idx, name in enumerate(sorted(list(names)))]) 190 namesMap = dict([(name, idx) for idx, name in enumerate(sorted(list(names)))])
191 - qualifiersMap = dict([(frozenset(quals), idx) for idx, quals in enumerate(sorted(list(qualifiers)))]) 191 + qualifiersMap = dict([(quals, idx) for idx, quals in enumerate(sorted(qualifiers, key=lambda q: tuple(sorted(q))))])
192 exceptions.validate( 192 exceptions.validate(
193 len(qualifiersMap) <= limits.MAX_QUALIFIERS_COMBINATIONS, 193 len(qualifiersMap) <= limits.MAX_QUALIFIERS_COMBINATIONS,
194 u'Too many qualifiers combinations. The limit is %d' % limits.MAX_QUALIFIERS_COMBINATIONS) 194 u'Too many qualifiers combinations. The limit is %d' % limits.MAX_QUALIFIERS_COMBINATIONS)
@@ -259,7 +259,7 @@ def _doBuildDictionaryPart(opts, tagset, namesMap, qualifiersMap, isGenerator): @@ -259,7 +259,7 @@ def _doBuildDictionaryPart(opts, tagset, namesMap, qualifiersMap, isGenerator):
259 259
260 logging.info('reading segmentation rules') 260 logging.info('reading segmentation rules')
261 rulesParserVersion = rulesParser.RulesParser.PARSE4ANALYZER if not isGenerator else rulesParser.RulesParser.PARSE4GENERATOR 261 rulesParserVersion = rulesParser.RulesParser.PARSE4ANALYZER if not isGenerator else rulesParser.RulesParser.PARSE4GENERATOR
262 - segmentRulesManager = rulesParser.RulesParser(tagset, rulesParserVersion).parse(opts.segmentsFile) 262 + segmentRulesManager = rulesParser.RulesParser(tagset, namesMap, qualifiersMap, rulesParserVersion).parse(opts.segmentsFile)
263 segmentationRulesData = segmentRulesManager.serialize() 263 segmentationRulesData = segmentRulesManager.serialize()
264 logging.info('done reading segmentation rules') 264 logging.info('done reading segmentation rules')
265 265
fsabuilder/morfeuszbuilder/fsa/convertinput.py
@@ -43,6 +43,12 @@ def parseLine(line): @@ -43,6 +43,12 @@ def parseLine(line):
43 raise ValueError('input line "%s" does not have 3, 4 or 5 tab-separated fields' % line) 43 raise ValueError('input line "%s" does not have 3, 4 or 5 tab-separated fields' % line)
44 return orth, base, tag, name, qualifier 44 return orth, base, tag, name, qualifier
45 45
  46 +def parseQualifiers(string):
  47 + if string:
  48 + return frozenset(string.split(u'|'))
  49 + else:
  50 + return frozenset()
  51 +
46 class PolimorfConverter4Analyzer(object): 52 class PolimorfConverter4Analyzer(object):
47 53
48 def __init__(self, tagset, namesMap, qualifiersMap, encoder, inputEncoding, segmentRulesManager): 54 def __init__(self, tagset, namesMap, qualifiersMap, encoder, inputEncoding, segmentRulesManager):
@@ -62,9 +68,9 @@ class PolimorfConverter4Analyzer(object): @@ -62,9 +68,9 @@ class PolimorfConverter4Analyzer(object):
62 68
63 tagnum = self.tagset.getTagnum4Tag(tag) 69 tagnum = self.tagset.getTagnum4Tag(tag)
64 namenum = self.namesMap[name] 70 namenum = self.namesMap[name]
65 - typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum)  
66 - qualifiers = qualifier.split('|') if qualifier else frozenset([u''])  
67 - qualsnum = self.qualifiersMap[frozenset(qualifiers)] 71 + qualifiers = parseQualifiers(qualifier)
  72 + qualsnum = self.qualifiersMap[qualifiers]
  73 + typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum, namenum, qualsnum)
68 74
69 assert not ( 75 assert not (
70 self.segmentRulesManager.shiftOrthMagic.shouldReplaceLemmaWithOrth(typenum) 76 self.segmentRulesManager.shiftOrthMagic.shouldReplaceLemmaWithOrth(typenum)
@@ -138,9 +144,9 @@ class PolimorfConverter4Generator(object): @@ -138,9 +144,9 @@ class PolimorfConverter4Generator(object):
138 base, homonymId = assumedBase, assumedHomonymId 144 base, homonymId = assumedBase, assumedHomonymId
139 tagnum = self.tagset.getTagnum4Tag(tag) 145 tagnum = self.tagset.getTagnum4Tag(tag)
140 namenum = self.namesMap[name] 146 namenum = self.namesMap[name]
141 - qualifiers = qualifier.split('|') if qualifier else frozenset([u''])  
142 - qualsnum = self.qualifiersMap[frozenset(qualifiers)]  
143 - typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum) 147 + qualifiers = parseQualifiers(qualifier)
  148 + qualsnum = self.qualifiersMap[qualifiers]
  149 + typenum = self.segmentRulesManager.lexeme2SegmentTypeNum(base, tagnum, namenum, qualsnum)
144 150
145 if self.segmentRulesManager.shiftOrthMagic.shouldReplaceLemmaWithOrth(typenum): 151 if self.segmentRulesManager.shiftOrthMagic.shouldReplaceLemmaWithOrth(typenum):
146 # print 'replace %s %s %s %d with %s %s %s %d' % (orth, base, tag, typenum, orth, orth, tag, typenum) 152 # print 'replace %s %s %s %d with %s %s %s %d' % (orth, base, tag, typenum, orth, orth, tag, typenum)
fsabuilder/morfeuszbuilder/segrules/rulesManager.py
@@ -33,8 +33,8 @@ class RulesManager(object): @@ -33,8 +33,8 @@ class RulesManager(object):
33 def addDFA(self, optionsMap, dfa): 33 def addDFA(self, optionsMap, dfa):
34 self.options2DFA[self._options2Key(optionsMap)] = dfa 34 self.options2DFA[self._options2Key(optionsMap)] = dfa
35 35
36 - def lexeme2SegmentTypeNum(self, lemma, tagnum):  
37 - res = self.segtypes.lexeme2Segnum(lemma, tagnum) 36 + def lexeme2SegmentTypeNum(self, lemma, tagnum, namenum, labelsnum):
  37 + res = self.segtypes.lexeme2Segnum(lemma, tagnum, namenum, labelsnum)
38 if res is None: 38 if res is None:
39 raise ValueError() 39 raise ValueError()
40 else: 40 else:
fsabuilder/morfeuszbuilder/segrules/rulesParser.py
@@ -13,8 +13,10 @@ class RulesParser(object): @@ -13,8 +13,10 @@ class RulesParser(object):
13 PARSE4GENERATOR = 1 13 PARSE4GENERATOR = 1
14 PARSE4ANALYZER = 2 14 PARSE4ANALYZER = 2
15 15
16 - def __init__(self, tagset, rulesType): 16 + def __init__(self, tagset, namesMap, labelsMap, rulesType):
17 self.tagset = tagset 17 self.tagset = tagset
  18 + self.namesMap = namesMap
  19 + self.labelsMap = labelsMap
18 assert rulesType in (RulesParser.PARSE4GENERATOR, RulesParser.PARSE4ANALYZER) 20 assert rulesType in (RulesParser.PARSE4GENERATOR, RulesParser.PARSE4ANALYZER)
19 self.rulesType = rulesType 21 self.rulesType = rulesType
20 22
@@ -43,7 +45,7 @@ class RulesParser(object): @@ -43,7 +45,7 @@ class RulesParser(object):
43 'segment types', 45 'segment types',
44 'separator chars']) 46 'separator chars'])
45 key2Defs = self._getKey2Defs(segtypesConfigFile) 47 key2Defs = self._getKey2Defs(segtypesConfigFile)
46 - segtypesHelper = segtypes.Segtypes(self.tagset, segtypesConfigFile) 48 + segtypesHelper = segtypes.Segtypes(self.tagset, self.namesMap, self.labelsMap, segtypesConfigFile)
47 separatorsList = separatorChars.parseSeparatorChars(segtypesConfigFile) \ 49 separatorsList = separatorChars.parseSeparatorChars(segtypesConfigFile) \
48 if self.rulesType == RulesParser.PARSE4ANALYZER \ 50 if self.rulesType == RulesParser.PARSE4ANALYZER \
49 else [] 51 else []
fsabuilder/morfeuszbuilder/tagset/segtypes.py
@@ -5,7 +5,7 @@ Created on 17 lut 2014 @@ -5,7 +5,7 @@ Created on 17 lut 2014
5 ''' 5 '''
6 import re 6 import re
7 import logging 7 import logging
8 -import sys 8 +import itertools
9 from morfeuszbuilder.utils import exceptions 9 from morfeuszbuilder.utils import exceptions
10 10
11 def _cutHomonymFromLemma(lemma): 11 def _cutHomonymFromLemma(lemma):
@@ -15,19 +15,25 @@ def _cutHomonymFromLemma(lemma): @@ -15,19 +15,25 @@ def _cutHomonymFromLemma(lemma):
15 15
16 class Segtypes(object): 16 class Segtypes(object):
17 17
18 - def __init__(self, tagset, segrulesConfigFile): 18 + def __init__(self, tagset, namesMap, labelsMap, segrulesConfigFile):
19 19
20 self.tagset = tagset 20 self.tagset = tagset
  21 + self.namesMap = namesMap
  22 + self.labelsMap = labelsMap
  23 + self._reverseLabelsMap = dict([(v, k) for (k, v) in labelsMap.iteritems()])
21 24
22 self.filename = segrulesConfigFile.filename 25 self.filename = segrulesConfigFile.filename
23 26
24 - self.segtypes = set()  
25 - self.segtype2Segnum = {}  
26 - self.segnum2Segtype = {} 27 + self.segtypes = []
  28 + # self.segtype2Segnum = {}
  29 + # self.segnum2Segtype = {}
27 self.patternsList = [] 30 self.patternsList = []
28 -  
29 - self._tagnum2Segnum = {}  
30 - self._lemmaTagnum2Segnum = {} 31 +
  32 + # (lemma, tagnum) -> [namenum, labelsnum, segnum]
  33 + self._segnumsMap = {}
  34 +
  35 + # self._tagnum2Segnum = {}
  36 + # self._lemmaTagnum2Segnum = {}
31 37
32 self._readSegtypes(segrulesConfigFile) 38 self._readSegtypes(segrulesConfigFile)
33 self._readLexemes(segrulesConfigFile) 39 self._readLexemes(segrulesConfigFile)
@@ -38,11 +44,9 @@ class Segtypes(object): @@ -38,11 +44,9 @@ class Segtypes(object):
38 # print self._tagnum2Segnum 44 # print self._tagnum2Segnum
39 logging.info('segment number -> segment type') 45 logging.info('segment number -> segment type')
40 logging.info('------------------------------') 46 logging.info('------------------------------')
41 - logging.info(str(self.segnum2Segtype)) 47 + logging.info(dict(enumerate(self.segtypes)))
42 logging.info('------------------------------') 48 logging.info('------------------------------')
43 49
44 -# self._debugSegnums()  
45 -  
46 def _validate(self, msg, lineNum, cond): 50 def _validate(self, msg, lineNum, cond):
47 if not cond: 51 if not cond:
48 raise exceptions.ConfigFileException(self.filename, lineNum, msg) 52 raise exceptions.ConfigFileException(self.filename, lineNum, msg)
@@ -58,155 +62,171 @@ class Segtypes(object): @@ -58,155 +62,171 @@ class Segtypes(object):
58 u'Segment type already defined: "%s"' % line, 62 u'Segment type already defined: "%s"' % line,
59 lineNum, 63 lineNum,
60 line not in self.segtypes) 64 line not in self.segtypes)
61 - self.segtypes.add(line)  
62 -  
63 - 65 + self.segtypes.append(line)
  66 +
64 def _readTags(self, segrulesConfigFile): 67 def _readTags(self, segrulesConfigFile):
65 gotWildcardPattern = False 68 gotWildcardPattern = False
66 for lineNum, line in segrulesConfigFile.enumerateLinesInSection('tags'): 69 for lineNum, line in segrulesConfigFile.enumerateLinesInSection('tags'):
67 - splitLine = re.split(r'\s+', line.strip())  
68 - self._validate(  
69 - u'Line in [tags] section must contain exactly two fields - segment type and tag pattern',  
70 - lineNum,  
71 - len(splitLine) == 2)  
72 - segtype, pattern = splitLine  
73 - self._validate(  
74 - u'Undeclared segment type: "%s"' % segtype,  
75 - lineNum,  
76 - segtype in self.segtypes)  
77 - self._validate(  
78 - u'Segment type must be a lowercase alphanumeric with optional underscores',  
79 - lineNum,  
80 - re.match(r'[a-z_]+', segtype))  
81 - self._validate(  
82 - u'Pattern must contain only ":", "%", "." and lowercase alphanumeric letters',  
83 - lineNum,  
84 - re.match(r'[a-z_\.\:\%]+', pattern))  
85 -  
86 - self._validate(  
87 - u'Pattern that matches everything must be the last one',  
88 - lineNum - 1,  
89 - not gotWildcardPattern)  
90 -  
91 - if segtype in self.segtype2Segnum:  
92 - segnum = self.segtype2Segnum[segtype]  
93 - else:  
94 - segnum = len(self.segtype2Segnum)  
95 - self.segtype2Segnum[segtype] = segnum  
96 -  
97 - segtypePattern = SegtypePattern(None, pattern, segnum)  
98 - 70 + self._parsePattern(lineNum, line, withLemma=False)
99 self._validate( 71 self._validate(
100 - u'There is no tag that matches pattern "%s".' % pattern,  
101 - lineNum,  
102 - any([segtypePattern.tryToMatch(None, tag) != -1 for tag in self.tagset.getAllTags()]))  
103 -  
104 - self.patternsList.append(segtypePattern)  
105 -  
106 - gotWildcardPattern = gotWildcardPattern or pattern == '%'  
107 -  
108 - self.segnum2Segtype = dict([(v, k) for (k, v) in self.segtype2Segnum.iteritems()]) 72 + u'Pattern that matches everything must be the last one',
  73 + lineNum - 1,
  74 + not gotWildcardPattern)
  75 + gotWildcardPattern = gotWildcardPattern or self.patternsList[-1].isWildcardPattern()
  76 +
  77 + self._validate(
  78 + u'There must be a pattern that matches everything at the end of [tags] section',
  79 + lineNum,
  80 + self.patternsList[-1].isWildcardPattern())
109 81
110 def _readLexemes(self, segrulesConfigFile): 82 def _readLexemes(self, segrulesConfigFile):
111 for lineNum, line in segrulesConfigFile.enumerateLinesInSection('lexemes'): 83 for lineNum, line in segrulesConfigFile.enumerateLinesInSection('lexemes'):
112 - split = re.split(r'\s+', line.strip())  
113 - self._validate(  
114 - u'Line in [lexemes] section must contain exactly two fields - segment type and lexeme pattern',  
115 - lineNum,  
116 - len(split) == 2)  
117 - segtype, pattern = split 84 + self._parsePattern(lineNum, line, withLemma=True)
  85 +
  86 + def _parseAdditionalConstraints(self, lineNum, fields):
  87 + res = {}
  88 + for f in fields:
  89 + match = re.match(r'(name|labels)=([\w_]+)', f, re.U)
118 self._validate( 90 self._validate(
119 - u'Undeclared segment type: "%s"' % segtype,  
120 - lineNum,  
121 - segtype in self.segtypes) 91 + u'invalid name or labels constraint: "%s"' % f,
  92 + lineNum,
  93 + match)
  94 + key = match.group(1)
  95 + value = match.group(2)
122 self._validate( 96 self._validate(
123 - u'Segment type must be a lowercase alphanumeric with optional underscores',  
124 - lineNum,  
125 - re.match(r'[a-z_]+', segtype)) 97 + u'%s already specified' % key,
  98 + lineNum,
  99 + key not in res)
  100 + if key == 'labels':
  101 + if value:
  102 + value = frozenset(value.split(u'|'))
  103 + else:
  104 + value = frozenset()
  105 + res[key] = value
  106 + return res
  107 +
  108 + def _parsePattern(self, lineNum, line, withLemma):
  109 + split = re.split(r'\s+', line.strip())
  110 + if withLemma:
126 self._validate( 111 self._validate(
127 - u'Pattern must contain encodedForm and part-of-speech fields',  
128 - lineNum,  
129 - re.match(r'.+?\:[a-z_]+', pattern, re.U))  
130 -  
131 - if segtype in self.segtype2Segnum:  
132 - segnum = self.segtype2Segnum[segtype]  
133 - else:  
134 - segnum = len(self.segtype2Segnum)  
135 - self.segtype2Segnum[segtype] = segnum  
136 -  
137 - lemma, pos = pattern.split(':', 1)  
138 -  
139 - segtypePattern = SegtypePattern(lemma, pos + ':%', segnum)  
140 - 112 + u'Line in [lexemes] section must contain 3 to 5 fields - segment type, lemma, tag pattern and optional constraints on name and labels',
  113 + lineNum,
  114 + len(split) in [3, 4, 5])
  115 + segtype = split[0]
  116 + lemma = split[1]
  117 + pattern = split[2]
  118 + additionalConstraints = self._parseAdditionalConstraints(lineNum, split[3:])
  119 + else:
141 self._validate( 120 self._validate(
142 - u'There is no tag that matches pattern "%s".' % (pos + ':%'),  
143 - lineNum,  
144 - any([segtypePattern.tryToMatch(lemma, tag) != -1 for tag in self.tagset.getAllTags()]))  
145 -  
146 - self.patternsList.append(segtypePattern)  
147 -  
148 - def _debugSegnums(self):  
149 - for tagnum, segnum in self._tagnum2Segnum.items():  
150 - print self.tagset.getTag4Tagnum(tagnum), '-->', self.segnum2Segtype[segnum]  
151 -  
152 - for (base, tagnum), segnum in self._lemmaTagnum2Segnum.items():  
153 - print base, self.tagset.getTag4Tagnum(tagnum), '-->', self.segnum2Segtype[segnum]  
154 -  
155 - def _indexSegnums(self):  
156 -# logging.info('indexing segment type numbers...')  
157 - # index tags 121 + u'Line in [tags] section must contain 2 to 4 fields - segment type, tag pattern and optional constraints on name and labels',
  122 + lineNum,
  123 + len(split) in [2, 3, 4])
  124 + segtype = split[0]
  125 + lemma = None
  126 + pattern = split[1]
  127 + additionalConstraints = self._parseAdditionalConstraints(lineNum, split[2:])
  128 + self._validate(
  129 + u'Undeclared segment type: "%s"' % segtype,
  130 + lineNum,
  131 + segtype in self.segtypes)
  132 + segnum = self.segtypes.index(segtype)
  133 +
  134 + self._validate(
  135 + u'Pattern must contain only ":", "%", "." and lowercase alphanumeric letters',
  136 + lineNum,
  137 + re.match(r'[a-z_\.\:\%]+', pattern))
  138 +
  139 + segtypePattern = SegtypePattern(
  140 + lemma,
  141 + pattern,
  142 + additionalConstraints.get('name', u''),
  143 + additionalConstraints.get('labels', frozenset()),
  144 + segnum)
  145 + # print 'segtypePattern', repr(str(segtypePattern))
  146 + self._validate(
  147 + u'There is no tag that matches pattern "%s".' % (pattern),
  148 + lineNum,
  149 + any([segtypePattern.tryToMatch(lemma, tag) != -1 for tag in self.tagset.getAllTags()]))
  150 + self.patternsList.append(segtypePattern)
  151 +
  152 + def _getAllExistingLabelsnumCombinations(self, labels):
  153 + if labels:
  154 + for labelsCombination, labelsnum in self.labelsMap.iteritems():
  155 + if labels <= labelsCombination:
  156 + yield labelsnum
  157 + else:
  158 + yield 0
  159 +
  160 + def _indexOnePattern(self, p):
  161 +
158 for tag in self.tagset.getAllTags(): 162 for tag in self.tagset.getAllTags():
159 - tagnum = self.tagset.getTagnum4Tag(tag)  
160 - for p in self.patternsList:  
161 - segnum = p.tryToMatch(None, tag)  
162 - if segnum >= 0 and tagnum not in self._tagnum2Segnum:  
163 - self._tagnum2Segnum[tagnum] = segnum  
164 - 163 + segnum = p.tryToMatch(p.lemma, tag)
  164 + if segnum != -1:
  165 + tagnum = self.tagset.getTagnum4Tag(tag)
  166 + self._segnumsMap.setdefault((p.lemma, tagnum), [])
  167 + namenum = self.namesMap[p.name]
  168 + for labelsnum in self._getAllExistingLabelsnumCombinations(p.labels):
  169 + self._segnumsMap[(p.lemma, tagnum)].append((namenum, labelsnum, segnum))
  170 +
  171 + def _indexSegnums(self):
  172 + logging.info('indexing segment type numbers...')
  173 +
165 # index lexemes 174 # index lexemes
166 for p in self.patternsList: 175 for p in self.patternsList:
167 - if p.lemma:  
168 - for tag in self.tagset.getAllTags():  
169 - tagnum = self.tagset.getTagnum4Tag(tag)  
170 - if not (p.lemma, tagnum) in self._lemmaTagnum2Segnum:  
171 - segnum = p.tryToMatch(p.lemma, tag)  
172 - if segnum != -1:  
173 - self._lemmaTagnum2Segnum[(p.lemma, tagnum)] = segnum  
174 -# logging.info('indexing segment type numbers - done')  
175 -# self._debugSegnums() 176 + self._indexOnePattern(p)
  177 +
  178 + # logging.info(self._segnumsMap)
176 179
177 def hasSegtype(self, segTypeString): 180 def hasSegtype(self, segTypeString):
178 - return segTypeString in self.segtype2Segnum 181 + # return segTypeString in self.segtype2Segnum
  182 + return segTypeString in self.segtypes
179 183
180 def getSegnum4Segtype(self, segTypeString): 184 def getSegnum4Segtype(self, segTypeString):
181 - return self.segtype2Segnum[segTypeString] 185 + return self.segtypes.index(segTypeString)
  186 + # return self.segtype2Segnum[segTypeString]
182 187
183 - def lexeme2Segnum(self, lemma, tagnum):  
184 - lemma = _cutHomonymFromLemma(lemma)  
185 - res = self._lemmaTagnum2Segnum.get((lemma, tagnum), None)  
186 - if res is None:  
187 - res = self._tagnum2Segnum.get(tagnum, None)  
188 - return res 188 + def lexeme2Segnum(self, lemma, tagnum, namenum, labelsnum):
  189 +
  190 + if (lemma, tagnum) in self._segnumsMap:
  191 + for (n, l, segnum) in self._segnumsMap[(lemma, tagnum)]:
  192 + if (n, l) == (namenum, labelsnum) \
  193 + or (n, l) == (0, 0)\
  194 + or (n == 0 and l == labelsnum)\
  195 + or (l == 0 and n == namenum):
  196 + return segnum
  197 +
  198 + if not lemma is None:
  199 + return self.lexeme2Segnum(None, tagnum, namenum, labelsnum)
  200 + else:
  201 + assert False
189 202
190 def getMaxSegnum(self): 203 def getMaxSegnum(self):
191 - return max(self.segnum2Segtype.keys()) 204 + return len(self.segtypes) - 1
192 205
193 class SegtypePattern(object): 206 class SegtypePattern(object):
194 207
195 - def __init__(self, lemma, pattern, segnum): 208 + def __init__(self, lemma, pattern, name, labels, segnum):
196 self.lemma = _cutHomonymFromLemma(lemma) 209 self.lemma = _cutHomonymFromLemma(lemma)
197 self.pattern = pattern 210 self.pattern = pattern
  211 + self.name = name
  212 + self.labels = labels
198 self.segnum = segnum 213 self.segnum = segnum
199 - 214 +
200 def tryToMatch(self, lemma, tag): 215 def tryToMatch(self, lemma, tag):
201 -# tag2Match = tag + ':' if not tag.endswith(':') else tag  
202 -# print tag2Match  
203 patterns2Match = [] 216 patterns2Match = []
204 patterns2Match.append(self.pattern.replace('%', '.*')) 217 patterns2Match.append(self.pattern.replace('%', '.*'))
205 patterns2Match.append(re.sub(r'\:\%$', '', self.pattern).replace('%', '.*')) 218 patterns2Match.append(re.sub(r'\:\%$', '', self.pattern).replace('%', '.*'))
206 - lemma = _cutHomonymFromLemma(lemma)  
207 - if (self.lemma is None or self.lemma == lemma) \  
208 - and any([re.match(p, tag) for p in patterns2Match]): 219 + # patterns2Match.append(re.sub(r'$', ':%', self.pattern).replace('%', '.*'))
  220 + if self.lemma is None:
  221 + lemma = None
  222 + if any([re.match('^'+p+'$', tag) for p in patterns2Match]) \
  223 + and self.lemma == lemma:
209 return self.segnum 224 return self.segnum
210 else: 225 else:
211 -# print 'NOT match', lemma.encode('utf8') if lemma else '%', tag, self.segnum  
212 return -1 226 return -1
  227 +
  228 + def isWildcardPattern(self):
  229 + return (self.lemma, self.pattern, self.name, self.labels) == (None, '%', u'', frozenset())
  230 +
  231 + def __str__(self):
  232 + return u'%s %s %s %s -> %d' % (self.lemma, self.pattern, self.name, self.labels, self.segnum)
input/segmenty.dat
@@ -506,181 +506,181 @@ pred pred @@ -506,181 +506,181 @@ pred pred
506 samodz % 506 samodz %
507 507
508 [lexemes] 508 [lexemes]
509 -tym tym:adv  
510 -bardziej bardziej:adv  
511 -niemniej niemniej:qub  
512 -pewno pewno:qub  
513 -pol_zloz pół:num:comp  
514 -i i:conj  
515 -by by:qub  
516 -li li:qub  
517 -ze +że:qub  
518 -z +ż:qub  
519 -killfile +ć:qub  
520 -killfile +anka:subst:%  
521 -killfile +owa:subst:%  
522 -killfile +anka:subst:%  
523 -killfile +ina:subst:%  
524 -killfile +yna:subst:%  
525 -killfile +ówna:subst:%  
526 -z_aglt_by aby:comp  
527 -z_aglt bowiem:comp  
528 -z_aglt_by by:comp  
529 -z_aglt cóż:subst  
530 -z_aglt_nwok czemu:adv  
531 -z_aglt_by czyżby:qub  
532 -z_aglt_by choćby:comp  
533 -z_aglt_by chociażby:comp  
534 -z_aglt_nwok dlaczego:adv  
535 -z_aglt_nwok dopóki:comp  
536 -z_aglt_nwok dopóty:conj  
537 -z_aglt_by gdyby:comp  
538 -z_aglt_nwok gdy:adv  
539 -z_aglt_nwok gdzie:qub  
540 -z_aglt_nwok gdzie:adv  
541 -z_aglt_nwok kto:subst:%  
542 -z_aglt_by jakby:comp  
543 -z_aglt_by jakoby:comp  
544 -z_aglt_nwok kiedy:adv  
545 -z_aglt_nwok kiedy:comp  
546 -z_aglt_nwok tylko:qub  
547 -z_aglt_by żeby:comp  
548 -z_aglt_nwok to:conj  
549 -z_aglt_nwok chyba:qub  
550 -z_aglt_nwok że:qub  
551 -z_aglt_nwok czy:conj  
552 -z_aglt_by oby:qub  
553 -z_aglt_by bodajby:qub  
554 -z_aglt_nwok co:comp  
555 -z_aglt_nwok bo:comp  
556 -z_aglt_nwok byle:comp  
557 -z_aglt_by byleby:comp  
558 -dywiz -:interp  
559 -pauza —:interp  
560 -polpauza –:interp  
561 -kropka .:interp  
562 -przecinek ,:interp  
563 -n on:ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep  
564 -adj_anty_zloz ten:adj:%  
565 -adj_anty_zloz tenże:adj:%  
566 -adj_anty_zloz ck:adj:%  
567 -adj_anty_zloz c.k.:adj:%  
568 -adj_anty_zloz ki:adj:%  
569 -adj_anty_zloz si:adj:%  
570 -adj_anty_zloz ow:adj:%  
571 -adj_anty_zloz ów:adj:%  
572 -adj_anty_zloz ówże:adj:%  
573 -adj_anty_zloz mój:adj:%  
574 -adj_anty_zloz a-z:adj:%  
575 -adj_anty_zloz a-ż:adj:%  
576 -adj_anty_zloz kiż:adj:%  
577 -adj_anty_zloz be:adj:%  
578 -adj_anty_zloz caca:adj:%  
579 -adj_anty_zloz czyj:adj:%  
580 -adj_anty_zloz oboj:adj:%  
581 -adj_anty_zloz on:adj:%  
582 -adj_anty_zloz tyli:adj:%  
583 -adj_anty_zloz rany:adj:%  
584 -adj_anty_zloz taki:adj:%  
585 -adj_anty_zloz pop:adj:%  
586 -subst_anty_zloz co:subst:%  
587 -subst_anty_zloz ar:subst:%:m3  
588 -subst_anty_zloz as:subst:%:m2  
589 -subst_anty_zloz as:subst:%:m1  
590 -subst_anty_zloz as:subst:%:m2  
591 -subst_anty_zloz as:subst:%:m3  
592 -subst_anty_zloz as:subst:%:n2  
593 -subst_anty_zloz at:subst:%:n2  
594 -subst_anty_zloz at:subst:%:m2  
595 -subst_anty_zloz az:subst:%:m1  
596 -subst_anty_zloz be:subst:%:n2  
597 -subst_anty_zloz bp:subst:%:m1  
598 -subst_anty_zloz ce:subst:%:n2  
599 -subst_anty_zloz de:subst:%:n2  
600 -subst_anty_zloz do:subst:%:n2  
601 -subst_anty_zloz dr:subst:%:m1  
602 -subst_anty_zloz ef:subst:%:n2  
603 -subst_anty_zloz el:subst:%:n2  
604 -subst_anty_zloz em:subst:%:n2  
605 -subst_anty_zloz en:subst:%:n2  
606 -subst_anty_zloz er:subst:%:n2  
607 -subst_anty_zloz es:subst:%:m3  
608 -subst_anty_zloz es:subst:%:n2  
609 -subst_anty_zloz fa:subst:%:n2  
610 -subst_anty_zloz go:subst:%:n2  
611 -subst_anty_zloz ha:subst:%:n2  
612 -subst_anty_zloz id:subst:%:m3  
613 -subst_anty_zloz id:subst:%:n2  
614 -subst_anty_zloz in:subst:%:n2  
615 -subst_anty_zloz ka:subst:%:n2  
616 -subst_anty_zloz kb:subst:%:m3  
617 -subst_anty_zloz km:subst:%:m3  
618 -subst_anty_zloz ku:subst:%:n2  
619 -subst_anty_zloz la:subst:%:n2  
620 -subst_anty_zloz li:subst:%:n2  
621 -subst_anty_zloz li:subst:%:f  
622 -subst_anty_zloz mi:subst:%:n2  
623 -subst_anty_zloz ni:subst:%:n2  
624 -subst_anty_zloz no:subst:%:n2  
625 -subst_anty_zloz nr:subst:%:m3  
626 -subst_anty_zloz om:subst:%:m3  
627 -subst_anty_zloz oz:subst:%:m3  
628 -subst_anty_zloz pe:subst:%:n2  
629 -subst_anty_zloz pi:subst:%:n2  
630 -subst_anty_zloz re:subst:%:n2  
631 -subst_anty_zloz rh:subst:%:n2  
632 -subst_anty_zloz ro:subst:%:n2  
633 -subst_anty_zloz si:subst:%:n2  
634 -subst_anty_zloz su:subst:%:n2  
635 -subst_anty_zloz te:subst:%:n2  
636 -subst_anty_zloz tv:subst:%:f  
637 -subst_anty_zloz ud:subst:%:m3  
638 -subst_anty_zloz uf:subst:%:m3  
639 -subst_anty_zloz ul:subst:%:m3  
640 -subst_anty_zloz um:subst:%:m3  
641 -subst_anty_zloz ut:subst:%:n2  
642 -subst_anty_zloz vw:subst:%:m3  
643 -subst_anty_zloz vw:subst:%:n2  
644 -subst_anty_zloz wc:subst:%:n2  
645 -subst_anty_zloz we:subst:%:n2  
646 -subst_anty_zloz wf:subst:%:m3  
647 -subst_anty_zloz wu:subst:%:n2  
648 -prep_na na:prep:%  
649 -prep_n do:prep:%  
650 -prep_n dla:prep:%  
651 -prep_n koło:prep:%  
652 -prep_n o:prep:%  
653 -prep_n po:prep:%  
654 -prep_n poza:prep:%  
655 -prep_n spoza:prep:%  
656 -prep_n za:prep:%  
657 -prep_n zza:prep:%  
658 -sufs +znawca:subst:%  
659 -sufs +dawca:subst:%  
660 -sufs +biorca:subst:%  
661 -sufs +żerca:subst:%  
662 -sufs +maniak:subst:%  
663 -sufs +logia:subst:%  
664 -sufs +log:subst:%  
665 -suf_num +latek:subst:%  
666 -suf_num +latka:subst:%  
667 -suf_num +lecie:subst:%  
668 -suf_num +krotność:subst:%  
669 -suf_ord ty:adj:%  
670 -suf_ord y:adj:%  
671 -rom_i I:romandig  
672 -rom_v V:romandig  
673 -rom_x X:romandig  
674 -rom_l L:romandig  
675 -rom_d D:romandig  
676 -rom_c C:romandig  
677 -rom_m M:romandig  
678 -ja ja:ppron12:sg:nom:%  
679 -ty ty:ppron12:sg:nom:%  
680 -my my:ppron12:pl:nom:%  
681 -wy wy:ppron12:pl:nom:%  
682 -pref_dyw e-+:prefa  
683 -pref_dyw e-+:prefs 509 +tym tym adv
  510 +bardziej bardziej adv
  511 +niemniej niemniej qub
  512 +pewno pewno qub
  513 +pol_zloz pół num:comp
  514 +i i conj
  515 +by by qub
  516 +li li qub
  517 +ze +że qub
  518 +z +ż qub
  519 +killfile +ć qub
  520 +killfile +anka subst:%
  521 +killfile +owa subst:%
  522 +killfile +anka subst:%
  523 +killfile +ina subst:%
  524 +killfile +yna subst:%
  525 +killfile +ówna subst:%
  526 +z_aglt_by aby comp
  527 +z_aglt bowiem comp
  528 +z_aglt_by by comp
  529 +z_aglt cóż subst:%
  530 +z_aglt_nwok czemu adv
  531 +z_aglt_by czyżby qub
  532 +z_aglt_by choćby comp
  533 +z_aglt_by chociażby comp
  534 +z_aglt_nwok dlaczego adv
  535 +z_aglt_nwok dopóki comp
  536 +z_aglt_nwok dopóty conj
  537 +z_aglt_by gdyby comp
  538 +z_aglt_nwok gdy adv
  539 +z_aglt_nwok gdzie qub
  540 +z_aglt_nwok gdzie adv
  541 +z_aglt_nwok kto subst:%
  542 +z_aglt_by jakby comp
  543 +z_aglt_by jakoby comp
  544 +z_aglt_nwok kiedy adv
  545 +z_aglt_nwok kiedy comp
  546 +z_aglt_nwok tylko qub
  547 +z_aglt_by żeby comp
  548 +z_aglt_nwok to conj
  549 +z_aglt_nwok chyba qub
  550 +z_aglt_nwok że qub
  551 +z_aglt_nwok czy conj
  552 +z_aglt_by oby qub
  553 +z_aglt_by bodajby qub
  554 +z_aglt_nwok co comp
  555 +z_aglt_nwok bo comp
  556 +z_aglt_nwok byle comp
  557 +z_aglt_by byleby comp
  558 +dywiz - interp
  559 +pauza — interp
  560 +polpauza – interp
  561 +kropka . interp
  562 +przecinek , interp
  563 +n on ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep
  564 +adj_anty_zloz ten adj:%
  565 +adj_anty_zloz tenże adj:%
  566 +adj_anty_zloz ck adj:%
  567 +adj_anty_zloz c.k. adj:%
  568 +adj_anty_zloz ki adj:%
  569 +adj_anty_zloz si adj:%
  570 +adj_anty_zloz ow adj:%
  571 +adj_anty_zloz ów adj:%
  572 +adj_anty_zloz ówże adj:%
  573 +adj_anty_zloz mój adj:%
  574 +adj_anty_zloz a-z adj:%
  575 +adj_anty_zloz a-ż adj:%
  576 +adj_anty_zloz kiż adj:%
  577 +adj_anty_zloz be adj:%
  578 +adj_anty_zloz caca adj:%
  579 +adj_anty_zloz czyj adj:%
  580 +adj_anty_zloz oboj adj:%
  581 +adj_anty_zloz on adj:%
  582 +adj_anty_zloz tyli adj:%
  583 +adj_anty_zloz rany adj:%
  584 +adj_anty_zloz taki adj:%
  585 +adj_anty_zloz pop adj:%
  586 +subst_anty_zloz co subst:%
  587 +subst_anty_zloz ar subst:%:m3
  588 +subst_anty_zloz as subst:%:m2
  589 +subst_anty_zloz as subst:%:m1
  590 +subst_anty_zloz as subst:%:m2
  591 +subst_anty_zloz as subst:%:m3
  592 +subst_anty_zloz as subst:%:n2
  593 +subst_anty_zloz at subst:%:n2
  594 +subst_anty_zloz at subst:%:m2
  595 +subst_anty_zloz az subst:%:m1
  596 +subst_anty_zloz be subst:%:n2
  597 +subst_anty_zloz bp subst:%:m1
  598 +subst_anty_zloz ce subst:%:n2
  599 +subst_anty_zloz de subst:%:n2
  600 +subst_anty_zloz do subst:%:n2
  601 +subst_anty_zloz dr subst:%:m1
  602 +subst_anty_zloz ef subst:%:n2
  603 +subst_anty_zloz el subst:%:n2
  604 +subst_anty_zloz em subst:%:n2
  605 +subst_anty_zloz en subst:%:n2
  606 +subst_anty_zloz er subst:%:n2
  607 +subst_anty_zloz es subst:%:m3
  608 +subst_anty_zloz es subst:%:n2
  609 +subst_anty_zloz fa subst:%:n2
  610 +subst_anty_zloz go subst:%:n2
  611 +subst_anty_zloz ha subst:%:n2
  612 +subst_anty_zloz id subst:%:m3
  613 +subst_anty_zloz id subst:%:n2
  614 +subst_anty_zloz in subst:%:n2
  615 +subst_anty_zloz ka subst:%:n2
  616 +subst_anty_zloz kb subst:%:m3
  617 +subst_anty_zloz km subst:%:m3
  618 +subst_anty_zloz ku subst:%:n2
  619 +subst_anty_zloz la subst:%:n2
  620 +subst_anty_zloz li subst:%:n2
  621 +subst_anty_zloz li subst:%:f
  622 +subst_anty_zloz mi subst:%:n2
  623 +subst_anty_zloz ni subst:%:n2
  624 +subst_anty_zloz no subst:%:n2
  625 +subst_anty_zloz nr subst:%:m3
  626 +subst_anty_zloz om subst:%:m3
  627 +subst_anty_zloz oz subst:%:m3
  628 +subst_anty_zloz pe subst:%:n2
  629 +subst_anty_zloz pi subst:%:n2
  630 +subst_anty_zloz re subst:%:n2
  631 +subst_anty_zloz rh subst:%:n2
  632 +subst_anty_zloz ro subst:%:n2
  633 +subst_anty_zloz si subst:%:n2
  634 +subst_anty_zloz su subst:%:n2
  635 +subst_anty_zloz te subst:%:n2
  636 +subst_anty_zloz tv subst:%:f
  637 +subst_anty_zloz ud subst:%:m3
  638 +subst_anty_zloz uf subst:%:m3
  639 +subst_anty_zloz ul subst:%:m3
  640 +subst_anty_zloz um subst:%:m3
  641 +subst_anty_zloz ut subst:%:n2
  642 +subst_anty_zloz vw subst:%:m3
  643 +subst_anty_zloz vw subst:%:n2
  644 +subst_anty_zloz wc subst:%:n2
  645 +subst_anty_zloz we subst:%:n2
  646 +subst_anty_zloz wf subst:%:m3
  647 +subst_anty_zloz wu subst:%:n2
  648 +prep_na na prep:%
  649 +prep_n do prep:%
  650 +prep_n dla prep:%
  651 +prep_n koło prep:%
  652 +prep_n o prep:%
  653 +prep_n po prep:%
  654 +prep_n poza prep:%
  655 +prep_n spoza prep:%
  656 +prep_n za prep:%
  657 +prep_n zza prep:%
  658 +sufs +znawca subst:%
  659 +sufs +dawca subst:%
  660 +sufs +biorca subst:%
  661 +sufs +żerca subst:%
  662 +sufs +maniak subst:%
  663 +sufs +logia subst:%
  664 +sufs +log subst:%
  665 +suf_num +latek subst:%
  666 +suf_num +latka subst:%
  667 +suf_num +lecie subst:%
  668 +suf_num +krotność subst:%
  669 +suf_ord ty adj:%
  670 +suf_ord y adj:%
  671 +rom_i I romandig
  672 +rom_v V romandig
  673 +rom_x X romandig
  674 +rom_l L romandig
  675 +rom_d D romandig
  676 +rom_c C romandig
  677 +rom_m M romandig
  678 +ja ja ppron12:sg:nom:%
  679 +ty ty ppron12:sg:nom:%
  680 +my my ppron12:pl:nom:%
  681 +wy wy ppron12:pl:nom:%
  682 +pref_dyw e-+ prefa
  683 +pref_dyw e-+ prefs
684 684
685 [separator chars] 685 [separator chars]
686 # , 686 # ,
nbproject/configurations.xml
@@ -339,8 +339,6 @@ @@ -339,8 +339,6 @@
339 ex="false" 339 ex="false"
340 tool="1" 340 tool="1"
341 flavor2="4"> 341 flavor2="4">
342 - <ccTool flags="2">  
343 - </ccTool>  
344 </item> 342 </item>
345 <item path="build/morfeusz/wrappers/morfeuszPERL_wrap.cxx" 343 <item path="build/morfeusz/wrappers/morfeuszPERL_wrap.cxx"
346 ex="false" 344 ex="false"
@@ -969,22 +967,16 @@ @@ -969,22 +967,16 @@
969 ex="false" 967 ex="false"
970 tool="1" 968 tool="1"
971 flavor2="4"> 969 flavor2="4">
972 - <ccTool flags="2">  
973 - </ccTool>  
974 </item> 970 </item>
975 <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Analyzer.cpp" 971 <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Analyzer.cpp"
976 ex="false" 972 ex="false"
977 tool="1" 973 tool="1"
978 flavor2="4"> 974 flavor2="4">
979 - <ccTool flags="2">  
980 - </ccTool>  
981 </item> 975 </item>
982 <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Generator.cpp" 976 <item path="morfeusz/deserialization/morphInterps/InterpretedChunksDecoder4Generator.cpp"
983 ex="false" 977 ex="false"
984 tool="1" 978 tool="1"
985 flavor2="4"> 979 flavor2="4">
986 - <ccTool flags="2">  
987 - </ccTool>  
988 </item> 980 </item>
989 <item path="morfeusz/fsa/const.cpp" ex="false" tool="1" flavor2="4"> 981 <item path="morfeusz/fsa/const.cpp" ex="false" tool="1" flavor2="4">
990 </item> 982 </item>
@@ -1035,12 +1027,8 @@ @@ -1035,12 +1027,8 @@
1035 </ccTool> 1027 </ccTool>
1036 </item> 1028 </item>
1037 <item path="morfeusz/segrules/SegrulesFSA.cpp" ex="false" tool="1" flavor2="4"> 1029 <item path="morfeusz/segrules/SegrulesFSA.cpp" ex="false" tool="1" flavor2="4">
1038 - <ccTool flags="2">  
1039 - </ccTool>  
1040 </item> 1030 </item>
1041 <item path="morfeusz/segrules/segrules.cpp" ex="false" tool="1" flavor2="4"> 1031 <item path="morfeusz/segrules/segrules.cpp" ex="false" tool="1" flavor2="4">
1042 - <ccTool flags="2">  
1043 - </ccTool>  
1044 </item> 1032 </item>
1045 <item path="morfeusz/test_runner.cpp" ex="false" tool="1" flavor2="4"> 1033 <item path="morfeusz/test_runner.cpp" ex="false" tool="1" flavor2="4">
1046 <ccTool flags="0"> 1034 <ccTool flags="0">
tests/analyzer/test_digits/segmentation.dat
@@ -27,9 +27,9 @@ dig @@ -27,9 +27,9 @@ dig
27 samodz 27 samodz
28 28
29 [lexemes] 29 [lexemes]
30 -kropka .:interp  
31 -przecinek ,:interp  
32 -dywiz -:interp 30 +kropka . interp
  31 +przecinek , interp
  32 +dywiz - interp
33 33
34 [tags] 34 [tags]
35 dig dig 35 dig dig
tests/analyzer/test_names/segmentation.dat
@@ -27,9 +27,9 @@ dig @@ -27,9 +27,9 @@ dig
27 samodz 27 samodz
28 28
29 [lexemes] 29 [lexemes]
30 -kropka .:interp  
31 -przecinek ,:interp  
32 -dywiz -:interp 30 +kropka . interp
  31 +przecinek , interp
  32 +dywiz - interp
33 33
34 [tags] 34 [tags]
35 dig dig 35 dig dig
tests/analyzer/test_qualifiers/segmentation.dat
@@ -27,9 +27,9 @@ dig @@ -27,9 +27,9 @@ dig
27 samodz 27 samodz
28 28
29 [lexemes] 29 [lexemes]
30 -kropka .:interp  
31 -przecinek ,:interp  
32 -dywiz -:interp 30 +kropka . interp
  31 +przecinek , interp
  32 +dywiz - interp
33 33
34 [tags] 34 [tags]
35 dig dig 35 dig dig
tests/analyzer/test_segtypes/ARGS 0 → 100644
  1 +--aggl permissive
tests/analyzer/test_segtypes/dictionary.tab 0 → 100644
  1 +mikro mikro prefs
  2 +euro euro prefs
  3 +super super prefs
  4 +kot kot subst:sg:nom:m1 imie mikro|zzz
  5 +kot kot subst:sg:nom:m1 nazwisko euro
  6 +kot kot subst:sg:nom:m1 xxx|yyy|super
  7 +kot kot subst:sg:nom:m1 samodzielnie|zzz
  8 +kot kot subst:sg:nom:m2 imie samodzielnie
  9 +kot kot adj:sg:acc:m3:pos nigdy
  10 +pies pies subst:sg:acc:m3 aaa|zzz|euro
  11 +pies pies subst:sg:nom:m1 nazwisko yyy|zzz|samodzielnie
tests/analyzer/test_segtypes/input.txt 0 → 100644
  1 +kot
  2 +eurokot
  3 +superkot
  4 +mikrokot
  5 +kotkot
  6 +pies
  7 +europies
  8 +superpies
  9 +mikropies
tests/analyzer/test_segtypes/output.txt 0 → 100644
  1 +[0,1,kot,kot,subst:sg:nom:m1,_,samodzielnie|zzz
  2 + 0,1,kot,kot,subst:sg:nom:m2,imie,samodzielnie]
  3 +[0,1,eurokot,eurokot,subst:sg:nom:m1,nazwisko,euro]
  4 +[0,1,superkot,superkot,subst:sg:nom:m1,_,super|xxx|yyy]
  5 +[0,1,mikrokot,mikrokot,subst:sg:nom:m1,imie,mikro|zzz]
  6 +[0,1,kotkot,kotkot,ign,_,_]
  7 +[0,1,pies,pies,subst:sg:nom:m1,nazwisko,samodzielnie|yyy|zzz]
  8 +[0,1,europies,europies,subst:sg:acc:m3,_,aaa|zzz|euro]
  9 +[0,1,superpies,superpies,ign,_,_]
  10 +[0,1,mikropies,mikropies,ign,_,_]
  11 +
tests/analyzer/test_segtypes/segmentation.dat 0 → 100644
  1 +[options]
  2 +aggl=strict permissive isolated
  3 +praet=split composite
  4 +
  5 +[combinations]
  6 +
  7 +samodzielnie
  8 +mikro> tylko_z_mikro
  9 +euro> tylko_z_euro
  10 +super> tylko_z_super
  11 +
  12 +[segment types]
  13 +tylko_z_mikro
  14 +tylko_z_euro
  15 +tylko_z_super
  16 +samodzielnie
  17 +nigdy
  18 +mikro
  19 +euro
  20 +super
  21 +
  22 +[lexemes]
  23 +tylko_z_mikro kot subst:% name=imie labels=zzz
  24 +tylko_z_euro kot subst:% name=nazwisko
  25 +tylko_z_super kot subst:% labels=xxx|yyy
  26 +samodzielnie kot subst:%
  27 +
  28 +mikro mikro %
  29 +euro euro %
  30 +super super %
  31 +
  32 +[tags]
  33 +tylko_z_euro subst:% labels=aaa
  34 +samodzielnie subst:%
  35 +nigdy %
  36 +
  37 +[separator chars]
  38 +# ,
  39 +44
  40 +
  41 +# .
  42 +46
  43 +
  44 +# ;
  45 +59
tests/analyzer/test_segtypes/tagset.dat 0 → 100644
  1 +#!TAGSET-ID pl.sgjp.morfeusz-0.5.0
  2 +
  3 +[TAGS]
  4 +# special: unknown word (ignotum):
  5 +0 ign
  6 +# special: space/blank:
  7 +1 sp
  8 +# NOUNS
  9 +694 subst:sg:nom:m1
  10 +695 subst:sg:nom:m2
  11 +696 subst:sg:nom:m3
  12 +697 subst:sg:nom:n1
  13 +698 subst:sg:nom:n2
  14 +693 subst:sg:nom:f
  15 +676 subst:sg:gen:m1
  16 +677 subst:sg:gen:m2
  17 +678 subst:sg:gen:m3
  18 +679 subst:sg:gen:n1
  19 +680 subst:sg:gen:n2
  20 +675 subst:sg:gen:f
  21 +670 subst:sg:dat:m1
  22 +671 subst:sg:dat:m2
  23 +672 subst:sg:dat:m3
  24 +673 subst:sg:dat:n1
  25 +674 subst:sg:dat:n2
  26 +669 subst:sg:dat:f
  27 +664 subst:sg:acc:m1
  28 +665 subst:sg:acc:m2
  29 +666 subst:sg:acc:m3
  30 +667 subst:sg:acc:n1
  31 +668 subst:sg:acc:n2
  32 +663 subst:sg:acc:f
  33 +682 subst:sg:inst:m1
  34 +683 subst:sg:inst:m2
  35 +684 subst:sg:inst:m3
  36 +685 subst:sg:inst:n1
  37 +686 subst:sg:inst:n2
  38 +681 subst:sg:inst:f
  39 +688 subst:sg:loc:m1
  40 +689 subst:sg:loc:m2
  41 +690 subst:sg:loc:m3
  42 +691 subst:sg:loc:n1
  43 +692 subst:sg:loc:n2
  44 +687 subst:sg:loc:f
  45 +700 subst:sg:voc:m1
  46 +701 subst:sg:voc:m2
  47 +702 subst:sg:voc:m3
  48 +703 subst:sg:voc:n1
  49 +704 subst:sg:voc:n2
  50 +699 subst:sg:voc:f
  51 +646 subst:pl:nom:m1
  52 +647 subst:pl:nom:m2
  53 +648 subst:pl:nom:m3
  54 +649 subst:pl:nom:n1
  55 +650 subst:pl:nom:n2
  56 +651 subst:pl:nom:p1
  57 +652 subst:pl:nom:p2
  58 +653 subst:pl:nom:p3
  59 +645 subst:pl:nom:f
  60 +619 subst:pl:gen:m1
  61 +620 subst:pl:gen:m2
  62 +621 subst:pl:gen:m3
  63 +622 subst:pl:gen:n1
  64 +623 subst:pl:gen:n2
  65 +624 subst:pl:gen:p1
  66 +625 subst:pl:gen:p2
  67 +626 subst:pl:gen:p3
  68 +618 subst:pl:gen:f
  69 +610 subst:pl:dat:m1
  70 +611 subst:pl:dat:m2
  71 +612 subst:pl:dat:m3
  72 +613 subst:pl:dat:n1
  73 +614 subst:pl:dat:n2
  74 +615 subst:pl:dat:p1
  75 +616 subst:pl:dat:p2
  76 +617 subst:pl:dat:p3
  77 +609 subst:pl:dat:f
  78 +601 subst:pl:acc:m1
  79 +602 subst:pl:acc:m2
  80 +603 subst:pl:acc:m3
  81 +604 subst:pl:acc:n1
  82 +605 subst:pl:acc:n2
  83 +606 subst:pl:acc:p1
  84 +607 subst:pl:acc:p2
  85 +608 subst:pl:acc:p3
  86 +600 subst:pl:acc:f
  87 +628 subst:pl:inst:m1
  88 +629 subst:pl:inst:m2
  89 +630 subst:pl:inst:m3
  90 +631 subst:pl:inst:n1
  91 +632 subst:pl:inst:n2
  92 +633 subst:pl:inst:p1
  93 +634 subst:pl:inst:p2
  94 +635 subst:pl:inst:p3
  95 +627 subst:pl:inst:f
  96 +637 subst:pl:loc:m1
  97 +638 subst:pl:loc:m2
  98 +639 subst:pl:loc:m3
  99 +640 subst:pl:loc:n1
  100 +641 subst:pl:loc:n2
  101 +642 subst:pl:loc:p1
  102 +643 subst:pl:loc:p2
  103 +644 subst:pl:loc:p3
  104 +636 subst:pl:loc:f
  105 +654 subst:pl:voc:f
  106 +655 subst:pl:voc:m1
  107 +656 subst:pl:voc:m2
  108 +657 subst:pl:voc:m3
  109 +658 subst:pl:voc:n1
  110 +659 subst:pl:voc:n2
  111 +660 subst:pl:voc:p1
  112 +661 subst:pl:voc:p2
  113 +662 subst:pl:voc:p3
  114 +# depreciative nominal flexeme:
  115 +149 depr:pl:nom:m2
  116 +150 depr:pl:voc:m2
  117 +# nominal compounds forming form:
  118 +599 substa
  119 +# PERSONAL PRONOUNS
  120 +443 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:akc
  121 +444 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:nakc
  122 +445 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:akc
  123 +446 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:nakc
  124 +447 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:akc
  125 +448 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:nakc
  126 +449 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:akc
  127 +450 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:nakc
  128 +451 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:akc
  129 +452 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:nakc
  130 +453 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:akc
  131 +454 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:nakc
  132 +455 ppron12:sg:inst:m1.m2.m3.f.n1.n2:pri
  133 +456 ppron12:sg:inst:m1.m2.m3.f.n1.n2:sec
  134 +457 ppron12:sg:loc:m1.m2.m3.f.n1.n2:pri
  135 +458 ppron12:sg:loc:m1.m2.m3.f.n1.n2:sec
  136 +459 ppron12:sg:nom:m1.m2.m3.f.n1.n2:pri
  137 +460 ppron12:sg:nom:m1.m2.m3.f.n1.n2:sec
  138 +461 ppron12:sg:voc:m1.m2.m3.f.n1.n2:sec
  139 +429 ppron12:pl:acc:_:pri
  140 +430 ppron12:pl:acc:_:sec
  141 +431 ppron12:pl:dat:_:pri
  142 +432 ppron12:pl:dat:_:sec
  143 +433 ppron12:pl:gen:_:pri
  144 +434 ppron12:pl:gen:_:sec
  145 +435 ppron12:pl:inst:_:pri
  146 +436 ppron12:pl:inst:_:sec
  147 +437 ppron12:pl:loc:_:pri
  148 +438 ppron12:pl:loc:_:sec
  149 +439 ppron12:pl:nom:_:pri
  150 +440 ppron12:pl:nom:_:sec
  151 +441 ppron12:pl:voc:_:pri
  152 +442 ppron12:pl:voc:_:sec
  153 +474 ppron3:sg:acc:f:ter:_:npraep
  154 +475 ppron3:sg:acc:f:ter:_:praep
  155 +476 ppron3:sg:acc:m1.m2.m3:ter:akc:npraep
  156 +477 ppron3:sg:acc:m1.m2.m3:ter:akc:praep
  157 +478 ppron3:sg:acc:m1.m2.m3:ter:nakc:npraep
  158 +479 ppron3:sg:acc:m1.m2.m3:ter:nakc:praep
  159 +480 ppron3:sg:acc:n1.n2:ter:_:npraep
  160 +481 ppron3:sg:acc:n1.n2:ter:_:praep
  161 +482 ppron3:sg:dat:f:ter:_:npraep
  162 +483 ppron3:sg:dat:f:ter:_:praep
  163 +484 ppron3:sg:dat:m1.m2.m3:ter:akc:npraep
  164 +485 ppron3:sg:dat:m1.m2.m3:ter:nakc:npraep
  165 +486 ppron3:sg:dat:m1.m2.m3:ter:_:praep
  166 +487 ppron3:sg:dat:n1.n2:ter:akc:npraep
  167 +488 ppron3:sg:dat:n1.n2:ter:nakc:npraep
  168 +489 ppron3:sg:dat:n1.n2:ter:_:praep
  169 +490 ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep
  170 +491 ppron3:sg:gen:f:ter:_:npraep
  171 +492 ppron3:sg:gen:f:ter:_:praep
  172 +493 ppron3:sg:gen:m1.m2.m3:ter:akc:npraep
  173 +494 ppron3:sg:gen:m1.m2.m3:ter:akc:praep
  174 +495 ppron3:sg:gen:m1.m2.m3:ter:nakc:npraep
  175 +496 ppron3:sg:gen:m1.m2.m3:ter:nakc:praep
  176 +497 ppron3:sg:gen:n1.n2:ter:akc:npraep
  177 +498 ppron3:sg:gen:n1.n2:ter:nakc:npraep
  178 +499 ppron3:sg:gen:n1.n2:ter:_:praep
  179 +500 ppron3:sg:inst:f:ter:_:praep
  180 +501 ppron3:sg:inst:m1.m2.m3:ter:_:_
  181 +502 ppron3:sg:inst:n1.n2:ter:_:_
  182 +503 ppron3:sg:loc:f:ter:_:_
  183 +504 ppron3:sg:loc:m1.m2.m3:ter:_:_
  184 +505 ppron3:sg:loc:n1.n2:ter:_:_
  185 +506 ppron3:sg:nom:f:ter:_:_
  186 +507 ppron3:sg:nom:m1.m2.m3:ter:_:_
  187 +508 ppron3:sg:nom:n1.n2:ter:_:_
  188 +462 ppron3:pl:acc:m1.p1:ter:_:npraep
  189 +463 ppron3:pl:acc:m1.p1:ter:_:praep
  190 +464 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:npraep
  191 +465 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:praep
  192 +466 ppron3:pl:dat:_:ter:_:npraep
  193 +467 ppron3:pl:dat:_:ter:_:praep
  194 +468 ppron3:pl:gen:_:ter:_:npraep
  195 +469 ppron3:pl:gen:_:ter:_:praep
  196 +470 ppron3:pl:inst:_:ter:_:_
  197 +471 ppron3:pl:loc:_:ter:_:_
  198 +472 ppron3:pl:nom:m1.p1:ter:_:_
  199 +473 ppron3:pl:nom:m2.m3.f.n1.n2.p2.p3:ter:_:_
  200 +# PRONOUN ‘SIEBIE’
  201 +594 siebie:acc
  202 +595 siebie:dat
  203 +596 siebie:gen
  204 +597 siebie:inst
  205 +598 siebie:loc
  206 +# ADJECTIVES
  207 +5 adj:pl:acc:m1.p1:com
  208 +6 adj:pl:acc:m1.p1:pos
  209 +7 adj:pl:acc:m1.p1:sup
  210 +8 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:com
  211 +9 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:pos
  212 +10 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:sup
  213 +11 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:com
  214 +12 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:pos
  215 +13 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:sup
  216 +14 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:com
  217 +15 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:pos
  218 +16 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:sup
  219 +17 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:com
  220 +18 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:pos
  221 +19 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:sup
  222 +20 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:com
  223 +21 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:pos
  224 +22 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:sup
  225 +23 adj:pl:nom:m1.p1:pos
  226 +24 adj:pl:nom:m2.m3.f.n1.n2.p2.p3:pos
  227 +25 adj:pl:nom.voc:m1.p1:com
  228 +26 adj:pl:nom.voc:m1.p1:pos
  229 +27 adj:pl:nom.voc:m1.p1:sup
  230 +28 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:com
  231 +29 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:pos
  232 +30 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:sup
  233 +31 adj:sg:acc:f:com
  234 +32 adj:sg:acc:f:pos
  235 +33 adj:sg:acc:f:sup
  236 +34 adj:sg:acc:m1.m2:com
  237 +35 adj:sg:acc:m1.m2:pos
  238 +36 adj:sg:acc:m1.m2:sup
  239 +37 adj:sg:acc:m3:com
  240 +38 adj:sg:acc:m3:pos
  241 +39 adj:sg:acc:m3:sup
  242 +40 adj:sg:acc:n1.n2:com
  243 +41 adj:sg:acc:n1.n2:pos
  244 +42 adj:sg:acc:n1.n2:sup
  245 +43 adj:sg:dat:f:com
  246 +44 adj:sg:dat:f:pos
  247 +45 adj:sg:dat:f:sup
  248 +46 adj:sg:dat:m1.m2.m3.n1.n2:com
  249 +47 adj:sg:dat:m1.m2.m3.n1.n2:pos
  250 +48 adj:sg:dat:m1.m2.m3.n1.n2:sup
  251 +49 adj:sg:gen:f:com
  252 +50 adj:sg:gen:f:pos
  253 +51 adj:sg:gen:f:sup
  254 +52 adj:sg:gen:m1.m2.m3.n1.n2:com
  255 +53 adj:sg:gen:m1.m2.m3.n1.n2:pos
  256 +54 adj:sg:gen:m1.m2.m3.n1.n2:sup
  257 +55 adj:sg:inst:f:com
  258 +56 adj:sg:inst:f:pos
  259 +57 adj:sg:inst:f:sup
  260 +58 adj:sg:inst:m1.m2.m3.n1.n2:com
  261 +59 adj:sg:inst:m1.m2.m3.n1.n2:pos
  262 +60 adj:sg:inst:m1.m2.m3.n1.n2:sup
  263 +61 adj:sg:loc:f:com
  264 +62 adj:sg:loc:f:pos
  265 +63 adj:sg:loc:f:sup
  266 +64 adj:sg:loc:m1.m2.m3.n1.n2:com
  267 +65 adj:sg:loc:m1.m2.m3.n1.n2:pos
  268 +66 adj:sg:loc:m1.m2.m3.n1.n2:sup
  269 +67 adj:sg:nom:f:pos
  270 +68 adj:sg:nom:m1.m2.m3:pos
  271 +69 adj:sg:nom:n1.n2:pos
  272 +70 adj:sg:nom.voc:f:com
  273 +71 adj:sg:nom.voc:f:pos
  274 +72 adj:sg:nom.voc:f:sup
  275 +73 adj:sg:nom.voc:m1.m2.m3:com
  276 +74 adj:sg:nom.voc:m1.m2.m3:pos
  277 +75 adj:sg:nom.voc:m1.m2.m3:sup
  278 +76 adj:sg:nom.voc:n1.n2:com
  279 +77 adj:sg:nom.voc:n1.n2:pos
  280 +78 adj:sg:nom.voc:n1.n2:sup
  281 +# adjectival compounds forming form:
  282 +2 adja
  283 +# predicative adjective:
  284 +3 adjc
  285 +# post-prepositional adjective:
  286 +4 adjp
  287 +# VERBS
  288 +# finitive (present/future) flexeme:
  289 +153 fin:pl:pri:imperf
  290 +154 fin:pl:pri:imperf.perf
  291 +155 fin:pl:pri:perf
  292 +156 fin:pl:sec:imperf
  293 +157 fin:pl:sec:imperf.perf
  294 +158 fin:pl:sec:perf
  295 +159 fin:pl:ter:imperf
  296 +160 fin:pl:ter:imperf.perf
  297 +161 fin:pl:ter:perf
  298 +162 fin:sg:pri:imperf
  299 +163 fin:sg:pri:imperf.perf
  300 +164 fin:sg:pri:perf
  301 +165 fin:sg:sec:imperf
  302 +166 fin:sg:sec:imperf.perf
  303 +167 fin:sg:sec:perf
  304 +168 fin:sg:ter:imperf
  305 +169 fin:sg:ter:imperf.perf
  306 +170 fin:sg:ter:perf
  307 +# past flexeme:
  308 +# praet=split (unsued otherwise):
  309 +509 praet:pl:m1.p1:imperf
  310 +510 praet:pl:m1.p1:imperf.perf
  311 +511 praet:pl:m1.p1:perf
  312 +521 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf
  313 +522 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf.perf
  314 +523 praet:pl:m2.m3.f.n1.n2.p2.p3:perf
  315 +533 praet:sg:f:imperf
  316 +534 praet:sg:f:imperf.perf
  317 +535 praet:sg:f:perf
  318 +545 praet:sg:m1.m2.m3:imperf
  319 +546 praet:sg:m1.m2.m3:imperf:agl
  320 +547 praet:sg:m1.m2.m3:imperf:nagl
  321 +548 praet:sg:m1.m2.m3:imperf.perf
  322 +549 praet:sg:m1.m2.m3:perf
  323 +550 praet:sg:m1.m2.m3:perf:agl
  324 +551 praet:sg:m1.m2.m3:perf:nagl
  325 +561 praet:sg:n1.n2:imperf
  326 +562 praet:sg:n1.n2:imperf.perf
  327 +563 praet:sg:n1.n2:perf
  328 +# praet=composite (unsued otherwise):
  329 +512 praet:pl:m1.p1:pri:imperf
  330 +513 praet:pl:m1.p1:pri:imperf.perf
  331 +514 praet:pl:m1.p1:pri:perf
  332 +515 praet:pl:m1.p1:sec:imperf
  333 +516 praet:pl:m1.p1:sec:imperf.perf
  334 +517 praet:pl:m1.p1:sec:perf
  335 +518 praet:pl:m1.p1:ter:imperf
  336 +519 praet:pl:m1.p1:ter:imperf.perf
  337 +520 praet:pl:m1.p1:ter:perf
  338 +524 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf
  339 +525 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf
  340 +526 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:perf
  341 +527 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf
  342 +528 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf
  343 +529 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:perf
  344 +530 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf
  345 +531 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf
  346 +532 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:perf
  347 +536 praet:sg:f:pri:imperf
  348 +537 praet:sg:f:pri:imperf.perf
  349 +538 praet:sg:f:pri:perf
  350 +539 praet:sg:f:sec:imperf
  351 +540 praet:sg:f:sec:imperf.perf
  352 +541 praet:sg:f:sec:perf
  353 +542 praet:sg:f:ter:imperf
  354 +543 praet:sg:f:ter:imperf.perf
  355 +544 praet:sg:f:ter:perf
  356 +552 praet:sg:m1.m2.m3:pri:imperf
  357 +553 praet:sg:m1.m2.m3:pri:imperf.perf
  358 +554 praet:sg:m1.m2.m3:pri:perf
  359 +555 praet:sg:m1.m2.m3:sec:imperf
  360 +556 praet:sg:m1.m2.m3:sec:imperf.perf
  361 +557 praet:sg:m1.m2.m3:sec:perf
  362 +558 praet:sg:m1.m2.m3:ter:imperf
  363 +559 praet:sg:m1.m2.m3:ter:imperf.perf
  364 +560 praet:sg:m1.m2.m3:ter:perf
  365 +564 praet:sg:n1.n2:pri:imperf
  366 +565 praet:sg:n1.n2:pri:imperf.perf
  367 +566 praet:sg:n1.n2:pri:perf
  368 +567 praet:sg:n1.n2:sec:imperf
  369 +568 praet:sg:n1.n2:sec:imperf.perf
  370 +569 praet:sg:n1.n2:sec:perf
  371 +570 praet:sg:n1.n2:ter:imperf
  372 +571 praet:sg:n1.n2:ter:imperf.perf
  373 +572 praet:sg:n1.n2:ter:perf
  374 +# conditional mood (used only with praet=composite)
  375 +100 cond:pl:m1.p1:pri:imperf
  376 +101 cond:pl:m1.p1:pri:imperf.perf
  377 +102 cond:pl:m1.p1:pri:perf
  378 +103 cond:pl:m1.p1:sec:imperf
  379 +104 cond:pl:m1.p1:sec:imperf.perf
  380 +105 cond:pl:m1.p1:sec:perf
  381 +106 cond:pl:m1.p1:ter:imperf
  382 +107 cond:pl:m1.p1:ter:imperf.perf
  383 +108 cond:pl:m1.p1:ter:perf
  384 +109 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf
  385 +110 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf
  386 +111 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:perf
  387 +112 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf
  388 +113 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf
  389 +114 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:perf
  390 +115 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf
  391 +116 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf
  392 +117 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:perf
  393 +118 cond:sg:f:pri:imperf
  394 +119 cond:sg:f:pri:imperf.perf
  395 +120 cond:sg:f:pri:perf
  396 +121 cond:sg:f:sec:imperf
  397 +122 cond:sg:f:sec:imperf.perf
  398 +123 cond:sg:f:sec:perf
  399 +124 cond:sg:f:ter:imperf
  400 +125 cond:sg:f:ter:imperf.perf
  401 +126 cond:sg:f:ter:perf
  402 +127 cond:sg:m1.m2.m3:pri:imperf
  403 +128 cond:sg:m1.m2.m3:pri:imperf.perf
  404 +129 cond:sg:m1.m2.m3:pri:perf
  405 +130 cond:sg:m1.m2.m3:sec:imperf
  406 +131 cond:sg:m1.m2.m3:sec:imperf.perf
  407 +132 cond:sg:m1.m2.m3:sec:perf
  408 +133 cond:sg:m1.m2.m3:ter:imperf
  409 +134 cond:sg:m1.m2.m3:ter:imperf.perf
  410 +135 cond:sg:m1.m2.m3:ter:perf
  411 +136 cond:sg:n1.n2:imperf
  412 +137 cond:sg:n1.n2:imperf.perf
  413 +138 cond:sg:n1.n2:perf
  414 +139 cond:sg:n1.n2:pri:imperf
  415 +140 cond:sg:n1.n2:pri:imperf.perf
  416 +141 cond:sg:n1.n2:pri:perf
  417 +142 cond:sg:n1.n2:sec:imperf
  418 +143 cond:sg:n1.n2:sec:imperf.perf
  419 +144 cond:sg:n1.n2:sec:perf
  420 +145 cond:sg:n1.n2:ter:imperf
  421 +146 cond:sg:n1.n2:ter:imperf.perf
  422 +147 cond:sg:n1.n2:ter:perf
  423 +# impersonal flexeme:
  424 +219 imps:imperf
  425 +220 imps:imperf.perf
  426 +221 imps:perf
  427 +# imperative flexeme:
  428 +222 impt:pl:pri:imperf
  429 +223 impt:pl:pri:imperf.perf
  430 +224 impt:pl:pri:perf
  431 +225 impt:pl:sec:imperf
  432 +226 impt:pl:sec:imperf.perf
  433 +227 impt:pl:sec:perf
  434 +228 impt:sg:sec:imperf
  435 +229 impt:sg:sec:imperf.perf
  436 +230 impt:sg:sec:perf
  437 +# infinitival flexeme:
  438 +231 inf:imperf
  439 +232 inf:imperf.perf
  440 +233 inf:perf
  441 +# agglutinative forms of ‘być’:
  442 +83 aglt:pl:pri:imperf:nwok
  443 +84 aglt:pl:pri:imperf:wok
  444 +85 aglt:pl:sec:imperf:nwok
  445 +86 aglt:pl:sec:imperf:wok
  446 +87 aglt:sg:pri:imperf:nwok
  447 +88 aglt:sg:pri:imperf:wok
  448 +89 aglt:sg:sec:imperf:nwok
  449 +90 aglt:sg:sec:imperf:wok
  450 +# future forms of ‘być’:
  451 +91 bedzie:pl:pri:imperf
  452 +92 bedzie:pl:sec:imperf
  453 +93 bedzie:pl:ter:imperf
  454 +94 bedzie:sg:pri:imperf
  455 +95 bedzie:sg:sec:imperf
  456 +96 bedzie:sg:ter:imperf
  457 +# ‘winien’ type verbs:
  458 +705 winien:pl:m1.p1:imperf
  459 +706 winien:pl:m1.p1:pri:imperf
  460 +707 winien:pl:m1.p1:sec:imperf
  461 +708 winien:pl:m1.p1:ter:imperf
  462 +709 winien:pl:m2.m3.f.n1.n2.p2.p3:imperf
  463 +710 winien:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf
  464 +711 winien:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf
  465 +712 winien:sg:f:imperf
  466 +713 winien:sg:f:pri:imperf
  467 +714 winien:sg:f:sec:imperf
  468 +715 winien:sg:f:ter:imperf
  469 +716 winien:sg:m1.m2.m3:imperf
  470 +717 winien:sg:m1.m2.m3:pri:imperf
  471 +718 winien:sg:m1.m2.m3:sec:imperf
  472 +719 winien:sg:m1.m2.m3:ter:imperf
  473 +720 winien:sg:n1.n2:imperf
  474 +721 winien:sg:n1.n2:pri:imperf
  475 +722 winien:sg:n1.n2:sec:imperf
  476 +723 winien:sg:n1.n2:ter:imperf
  477 +# predicative flexeme:
  478 +573 pred
  479 +# gerunds
  480 +171 ger:pl:dat.loc:n2:imperf:aff
  481 +172 ger:pl:dat.loc:n2:imperf:neg
  482 +173 ger:pl:dat.loc:n2:imperf.perf:aff
  483 +174 ger:pl:dat.loc:n2:imperf.perf:neg
  484 +175 ger:pl:dat.loc:n2:perf:aff
  485 +176 ger:pl:dat.loc:n2:perf:neg
  486 +177 ger:pl:gen:n2:imperf:aff
  487 +178 ger:pl:gen:n2:imperf:neg
  488 +179 ger:pl:gen:n2:imperf.perf:aff
  489 +180 ger:pl:gen:n2:imperf.perf:neg
  490 +181 ger:pl:gen:n2:perf:aff
  491 +182 ger:pl:gen:n2:perf:neg
  492 +183 ger:pl:inst:n2:imperf:aff
  493 +184 ger:pl:inst:n2:imperf:neg
  494 +185 ger:pl:inst:n2:imperf.perf:aff
  495 +186 ger:pl:inst:n2:imperf.perf:neg
  496 +187 ger:pl:inst:n2:perf:aff
  497 +188 ger:pl:inst:n2:perf:neg
  498 +189 ger:pl:nom.acc:n2:imperf:aff
  499 +190 ger:pl:nom.acc:n2:imperf:neg
  500 +191 ger:pl:nom.acc:n2:imperf.perf:aff
  501 +192 ger:pl:nom.acc:n2:imperf.perf:neg
  502 +193 ger:pl:nom.acc:n2:perf:aff
  503 +194 ger:pl:nom.acc:n2:perf:neg
  504 +195 ger:sg:dat.loc:n2:imperf:aff
  505 +196 ger:sg:dat.loc:n2:imperf:neg
  506 +197 ger:sg:dat.loc:n2:imperf.perf:aff
  507 +198 ger:sg:dat.loc:n2:imperf.perf:neg
  508 +199 ger:sg:dat.loc:n2:perf:aff
  509 +200 ger:sg:dat.loc:n2:perf:neg
  510 +201 ger:sg:gen:n2:imperf:aff
  511 +202 ger:sg:gen:n2:imperf:neg
  512 +203 ger:sg:gen:n2:imperf.perf:aff
  513 +204 ger:sg:gen:n2:imperf.perf:neg
  514 +205 ger:sg:gen:n2:perf:aff
  515 +206 ger:sg:gen:n2:perf:neg
  516 +207 ger:sg:inst:n2:imperf:aff
  517 +208 ger:sg:inst:n2:imperf:neg
  518 +209 ger:sg:inst:n2:imperf.perf:aff
  519 +210 ger:sg:inst:n2:imperf.perf:neg
  520 +211 ger:sg:inst:n2:perf:aff
  521 +212 ger:sg:inst:n2:perf:neg
  522 +213 ger:sg:nom.acc:n2:imperf:aff
  523 +214 ger:sg:nom.acc:n2:imperf:neg
  524 +215 ger:sg:nom.acc:n2:imperf.perf:aff
  525 +216 ger:sg:nom.acc:n2:imperf.perf:neg
  526 +217 ger:sg:nom.acc:n2:perf:aff
  527 +218 ger:sg:nom.acc:n2:perf:neg
  528 +# participles
  529 +# adverbial participles:
  530 +332 pcon:imperf
  531 +331 pant:perf
  532 +# adjectival active participle:
  533 +267 pact:pl:acc:m1.p1:imperf:aff
  534 +268 pact:pl:acc:m1.p1:imperf:neg
  535 +269 pact:pl:acc:m1.p1:imperf.perf:aff
  536 +270 pact:pl:acc:m1.p1:imperf.perf:neg
  537 +271 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  538 +272 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  539 +273 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  540 +274 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  541 +275 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  542 +276 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  543 +277 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  544 +278 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  545 +279 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  546 +280 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  547 +281 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  548 +282 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  549 +283 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff
  550 +284 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg
  551 +285 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff
  552 +286 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg
  553 +287 pact:pl:nom.voc:m1.p1:imperf:aff
  554 +288 pact:pl:nom.voc:m1.p1:imperf:neg
  555 +289 pact:pl:nom.voc:m1.p1:imperf.perf:aff
  556 +290 pact:pl:nom.voc:m1.p1:imperf.perf:neg
  557 +291 pact:sg:acc.inst:f:imperf:aff
  558 +292 pact:sg:acc.inst:f:imperf:neg
  559 +293 pact:sg:acc.inst:f:imperf.perf:aff
  560 +294 pact:sg:acc.inst:f:imperf.perf:neg
  561 +295 pact:sg:acc:m1.m2:imperf:aff
  562 +296 pact:sg:acc:m1.m2:imperf:neg
  563 +297 pact:sg:acc:m1.m2:imperf.perf:aff
  564 +298 pact:sg:acc:m1.m2:imperf.perf:neg
  565 +299 pact:sg:acc:m3:imperf:aff
  566 +300 pact:sg:acc:m3:imperf:neg
  567 +301 pact:sg:acc:m3:imperf.perf:aff
  568 +302 pact:sg:acc:m3:imperf.perf:neg
  569 +303 pact:sg:dat:m1.m2.m3.n1.n2:imperf:aff
  570 +304 pact:sg:dat:m1.m2.m3.n1.n2:imperf:neg
  571 +305 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff
  572 +306 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg
  573 +307 pact:sg:gen.dat.loc:f:imperf:aff
  574 +308 pact:sg:gen.dat.loc:f:imperf:neg
  575 +309 pact:sg:gen.dat.loc:f:imperf.perf:aff
  576 +310 pact:sg:gen.dat.loc:f:imperf.perf:neg
  577 +311 pact:sg:gen:m1.m2.m3.n1.n2:imperf:aff
  578 +312 pact:sg:gen:m1.m2.m3.n1.n2:imperf:neg
  579 +313 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff
  580 +314 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg
  581 +315 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff
  582 +316 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg
  583 +317 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff
  584 +318 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg
  585 +319 pact:sg:nom.acc.voc:n1.n2:imperf:aff
  586 +320 pact:sg:nom.acc.voc:n1.n2:imperf:neg
  587 +321 pact:sg:nom.acc.voc:n1.n2:imperf.perf:aff
  588 +322 pact:sg:nom.acc.voc:n1.n2:imperf.perf:neg
  589 +323 pact:sg:nom.voc:f:imperf:aff
  590 +324 pact:sg:nom.voc:f:imperf:neg
  591 +325 pact:sg:nom.voc:f:imperf.perf:aff
  592 +326 pact:sg:nom.voc:f:imperf.perf:neg
  593 +327 pact:sg:nom.voc:m1.m2.m3:imperf:aff
  594 +328 pact:sg:nom.voc:m1.m2.m3:imperf:neg
  595 +329 pact:sg:nom.voc:m1.m2.m3:imperf.perf:aff
  596 +330 pact:sg:nom.voc:m1.m2.m3:imperf.perf:neg
  597 +# adjectival passive participle:
  598 +333 ppas:pl:acc:m1.p1:imperf:aff
  599 +334 ppas:pl:acc:m1.p1:imperf:neg
  600 +335 ppas:pl:acc:m1.p1:imperf.perf:aff
  601 +336 ppas:pl:acc:m1.p1:imperf.perf:neg
  602 +337 ppas:pl:acc:m1.p1:perf:aff
  603 +338 ppas:pl:acc:m1.p1:perf:neg
  604 +339 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  605 +340 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  606 +341 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  607 +342 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  608 +343 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff
  609 +344 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg
  610 +345 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  611 +346 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  612 +347 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  613 +348 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  614 +349 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff
  615 +350 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg
  616 +351 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  617 +352 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  618 +353 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  619 +354 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  620 +355 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff
  621 +356 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg
  622 +357 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff
  623 +358 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg
  624 +359 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff
  625 +360 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg
  626 +361 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:aff
  627 +362 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:neg
  628 +363 ppas:pl:nom.voc:m1.p1:imperf:aff
  629 +364 ppas:pl:nom.voc:m1.p1:imperf:neg
  630 +365 ppas:pl:nom.voc:m1.p1:imperf.perf:aff
  631 +366 ppas:pl:nom.voc:m1.p1:imperf.perf:neg
  632 +367 ppas:pl:nom.voc:m1.p1:perf:aff
  633 +368 ppas:pl:nom.voc:m1.p1:perf:neg
  634 +369 ppas:sg:acc.inst:f:imperf:aff
  635 +370 ppas:sg:acc.inst:f:imperf:neg
  636 +371 ppas:sg:acc.inst:f:imperf.perf:aff
  637 +372 ppas:sg:acc.inst:f:imperf.perf:neg
  638 +373 ppas:sg:acc.inst:f:perf:aff
  639 +374 ppas:sg:acc.inst:f:perf:neg
  640 +375 ppas:sg:acc:m1.m2:imperf:aff
  641 +376 ppas:sg:acc:m1.m2:imperf:neg
  642 +377 ppas:sg:acc:m1.m2:imperf.perf:aff
  643 +378 ppas:sg:acc:m1.m2:imperf.perf:neg
  644 +379 ppas:sg:acc:m1.m2:perf:aff
  645 +380 ppas:sg:acc:m1.m2:perf:neg
  646 +381 ppas:sg:acc:m3:imperf:aff
  647 +382 ppas:sg:acc:m3:imperf:neg
  648 +383 ppas:sg:acc:m3:imperf.perf:aff
  649 +384 ppas:sg:acc:m3:imperf.perf:neg
  650 +385 ppas:sg:acc:m3:perf:aff
  651 +386 ppas:sg:acc:m3:perf:neg
  652 +387 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:aff
  653 +388 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:neg
  654 +389 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff
  655 +390 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg
  656 +391 ppas:sg:dat:m1.m2.m3.n1.n2:perf:aff
  657 +392 ppas:sg:dat:m1.m2.m3.n1.n2:perf:neg
  658 +393 ppas:sg:gen.dat.loc:f:imperf:aff
  659 +394 ppas:sg:gen.dat.loc:f:imperf:neg
  660 +395 ppas:sg:gen.dat.loc:f:imperf.perf:aff
  661 +396 ppas:sg:gen.dat.loc:f:imperf.perf:neg
  662 +397 ppas:sg:gen.dat.loc:f:perf:aff
  663 +398 ppas:sg:gen.dat.loc:f:perf:neg
  664 +399 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:aff
  665 +400 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:neg
  666 +401 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff
  667 +402 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg
  668 +403 ppas:sg:gen:m1.m2.m3.n1.n2:perf:aff
  669 +404 ppas:sg:gen:m1.m2.m3.n1.n2:perf:neg
  670 +405 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff
  671 +406 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg
  672 +407 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff
  673 +408 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg
  674 +409 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:aff
  675 +410 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:neg
  676 +411 ppas:sg:nom.acc.voc:n1.n2:imperf:aff
  677 +412 ppas:sg:nom.acc.voc:n1.n2:imperf:neg
  678 +413 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:aff
  679 +414 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:neg
  680 +415 ppas:sg:nom.acc.voc:n1.n2:perf:aff
  681 +416 ppas:sg:nom.acc.voc:n1.n2:perf:neg
  682 +417 ppas:sg:nom.voc:f:imperf:aff
  683 +418 ppas:sg:nom.voc:f:imperf:neg
  684 +419 ppas:sg:nom.voc:f:imperf.perf:aff
  685 +420 ppas:sg:nom.voc:f:imperf.perf:neg
  686 +421 ppas:sg:nom.voc:f:perf:aff
  687 +422 ppas:sg:nom.voc:f:perf:neg
  688 +423 ppas:sg:nom.voc:m1.m2.m3:imperf:aff
  689 +424 ppas:sg:nom.voc:m1.m2.m3:imperf:neg
  690 +425 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:aff
  691 +426 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:neg
  692 +427 ppas:sg:nom.voc:m1.m2.m3:perf:aff
  693 +428 ppas:sg:nom.voc:m1.m2.m3:perf:neg
  694 +# NUMERALS
  695 +239 num:pl:acc:m1:rec
  696 +240 num:pl:dat.loc:n1.p1.p2:congr.rec
  697 +241 num:pl:dat:m1.m2.m3.n2.f:congr
  698 +242 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n1.n2.p1.p2:congr
  699 +243 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n2:congr
  700 +244 num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr
  701 +245 num:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2:congr
  702 +246 num:pl:gen.loc:m1.m2.m3.n2.f:congr
  703 +247 num:pl:gen:n1.p1.p2:rec
  704 +248 num:pl:inst:f:congr
  705 +249 num:pl:inst:m1.m2.m3.f.n1.n2.p1.p2:congr
  706 +250 num:pl:inst:m1.m2.m3.f.n2:congr
  707 +251 num:pl:inst:m1.m2.m3.n2:congr
  708 +252 num:pl:inst:m1.m2.m3.n2.f:congr
  709 +253 num:pl:inst:n1.p1.p2:rec
  710 +254 num:pl:nom.acc:m1.m2.m3.f.n1.n2.p1.p2:rec
  711 +255 num:pl:nom.acc.voc:f:congr
  712 +256 num:pl:nom.acc.voc:m1:rec
  713 +257 num:pl:nom.acc.voc:m2.m3.f.n1.n2.p1.p2:rec
  714 +258 num:pl:nom.acc.voc:m2.m3.f.n2:rec
  715 +259 num:pl:nom.acc.voc:m2.m3.n2:congr
  716 +260 num:pl:nom.acc.voc:m2.m3.n2.f:congr
  717 +261 num:pl:nom.acc.voc:n1.p1.p2:rec
  718 +262 num:pl:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.f.n1.n2.p1.p2:rec
  719 +263 num:pl:nom.voc:m1:congr
  720 +264 num:pl:nom.voc:m1:rec
  721 +265 num:sg:nom.gen.dat.inst.acc.loc.voc:f:rec
  722 +266 num:sg:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.n1.n2:rec
  723 +# numeral compounds forming form:
  724 +238 num:comp
  725 +# PREPOSITIONS
  726 +578 prep:acc
  727 +579 prep:acc:nwok
  728 +580 prep:acc:wok
  729 +581 prep:dat
  730 +582 prep:gen
  731 +583 prep:gen:nwok
  732 +584 prep:gen:wok
  733 +585 prep:inst
  734 +586 prep:inst:nwok
  735 +587 prep:inst:wok
  736 +588 prep:loc
  737 +589 prep:loc:nwok
  738 +590 prep:loc:wok
  739 +591 prep:nom
  740 +# ADVERBS
  741 +79 adv
  742 +80 adv:com
  743 +81 adv:pos
  744 +82 adv:sup
  745 +# OTHER
  746 +# kubliki (particles):
  747 +592 qub
  748 +# conjunctions:
  749 +148 conj
  750 +# complementizers:
  751 +99 comp
  752 +# interjections:
  753 +234 interj
  754 +# burkinostki (bound words):
  755 +98 burk
  756 +# abbreviations:
  757 +97 brev:pun
  758 +97 brev:npun
  759 +# punctuation:
  760 +235 interp
  761 +# digits:
  762 +151 dig
  763 +# Roman digits:
  764 +593 romandig
  765 +# emoticons:
  766 +152 emoticon
  767 +# prefixes:
  768 +574 prefa
  769 +575 prefppas
  770 +576 prefs
  771 +577 prefv
  772 +# (special)
  773 +236 naj
  774 +237 nie
tests/generator/test_additional_atomic_segments/segmentation.dat
@@ -33,9 +33,9 @@ adj @@ -33,9 +33,9 @@ adj
33 samodz 33 samodz
34 34
35 [lexemes] 35 [lexemes]
36 -kropka .:interp  
37 -przecinek ,:interp  
38 -dywiz -:interp 36 +kropka . interp
  37 +przecinek , interp
  38 +dywiz - interp
39 39
40 [tags] 40 [tags]
41 dig dig 41 dig dig
tests/generator/test_digits/segmentation.dat
@@ -27,9 +27,9 @@ dig @@ -27,9 +27,9 @@ dig
27 samodz 27 samodz
28 28
29 [lexemes] 29 [lexemes]
30 -kropka .:interp  
31 -przecinek ,:interp  
32 -dywiz -:interp 30 +kropka . interp
  31 +przecinek , interp
  32 +dywiz - interp
33 33
34 [tags] 34 [tags]
35 dig dig 35 dig dig
tests/generator/test_names/segmentation.dat
@@ -27,9 +27,9 @@ dig @@ -27,9 +27,9 @@ dig
27 samodz 27 samodz
28 28
29 [lexemes] 29 [lexemes]
30 -kropka .:interp  
31 -przecinek ,:interp  
32 -dywiz -:interp 30 +kropka . interp
  31 +przecinek , interp
  32 +dywiz - interp
33 33
34 [tags] 34 [tags]
35 dig dig 35 dig dig
tests/generator/test_qualifiers/segmentation.dat
@@ -27,9 +27,9 @@ dig @@ -27,9 +27,9 @@ dig
27 samodz 27 samodz
28 28
29 [lexemes] 29 [lexemes]
30 -kropka .:interp  
31 -przecinek ,:interp  
32 -dywiz -:interp 30 +kropka . interp
  31 +przecinek , interp
  32 +dywiz - interp
33 33
34 [tags] 34 [tags]
35 dig dig 35 dig dig
tests/generator/test_segtypes/ARGS 0 → 100644
  1 +--aggl permissive
tests/generator/test_segtypes/dictionary.tab 0 → 100644
  1 +mikro mikro prefs
  2 +euro euro prefs
  3 +super super prefs
  4 +kot kot subst:sg:nom:m1 imie mikro|zzz
  5 +kot kot subst:sg:nom:m1 nazwisko euro
  6 +kot kot subst:sg:nom:m1 xxx|yyy|super
  7 +kot kot subst:sg:nom:m1 samodzielnie|zzz
  8 +kot kot subst:sg:nom:m2 imie samodzielnie
  9 +kot kot adj:sg:acc:m3:pos nigdy
  10 +pies pies subst:sg:acc:m3 aaa|zzz|euro
  11 +pies pies subst:sg:nom:m1 nazwisko yyy|zzz|samodzielnie
tests/generator/test_segtypes/input.txt 0 → 100644
  1 +kot
  2 +eurokot
  3 +superkot
  4 +mikrokot
  5 +kotkot
  6 +pies
  7 +europies
  8 +superpies
  9 +mikropies
tests/generator/test_segtypes/output.txt 0 → 100644
  1 +[kot,kot,subst:sg:nom:m1,_,samodzielnie|zzz
  2 + kot,kot,subst:sg:nom:m2,imie,samodzielnie]
  3 +[eurokot,eurokot,subst:sg:nom:m1,nazwisko,euro]
  4 +[superkot,superkot,subst:sg:nom:m1,_,super|xxx|yyy]
  5 +[mikrokot,mikrokot,subst:sg:nom:m1,imie,mikro|zzz]
  6 +[kotkot,kotkot,ign,_,_]
  7 +[pies,pies,subst:sg:nom:m1,nazwisko,samodzielnie|yyy|zzz]
  8 +[europies,europies,subst:sg:acc:m3,_,aaa|zzz|euro]
  9 +[superpies,superpies,ign,_,_]
  10 +[mikropies,mikropies,ign,_,_]
  11 +
tests/generator/test_segtypes/segmentation.dat 0 → 100644
  1 +[options]
  2 +aggl=strict permissive isolated
  3 +praet=split composite
  4 +
  5 +[combinations]
  6 +
  7 +samodzielnie
  8 +mikro> tylko_z_mikro
  9 +euro> tylko_z_euro
  10 +super> tylko_z_super
  11 +
  12 +[segment types]
  13 +tylko_z_mikro
  14 +tylko_z_euro
  15 +tylko_z_super
  16 +samodzielnie
  17 +nigdy
  18 +mikro
  19 +euro
  20 +super
  21 +
  22 +[lexemes]
  23 +tylko_z_mikro kot subst:% name=imie labels=zzz
  24 +tylko_z_euro kot subst:% name=nazwisko
  25 +tylko_z_super kot subst:% labels=xxx|yyy
  26 +samodzielnie kot subst:%
  27 +
  28 +mikro mikro %
  29 +euro euro %
  30 +super super %
  31 +
  32 +[tags]
  33 +tylko_z_euro subst:% labels=aaa
  34 +samodzielnie subst:%
  35 +nigdy %
  36 +
  37 +[separator chars]
  38 +# ,
  39 +44
  40 +
  41 +# .
  42 +46
  43 +
  44 +# ;
  45 +59
tests/generator/test_segtypes/tagset.dat 0 → 100644
  1 +#!TAGSET-ID pl.sgjp.morfeusz-0.5.0
  2 +
  3 +[TAGS]
  4 +# special: unknown word (ignotum):
  5 +0 ign
  6 +# special: space/blank:
  7 +1 sp
  8 +# NOUNS
  9 +694 subst:sg:nom:m1
  10 +695 subst:sg:nom:m2
  11 +696 subst:sg:nom:m3
  12 +697 subst:sg:nom:n1
  13 +698 subst:sg:nom:n2
  14 +693 subst:sg:nom:f
  15 +676 subst:sg:gen:m1
  16 +677 subst:sg:gen:m2
  17 +678 subst:sg:gen:m3
  18 +679 subst:sg:gen:n1
  19 +680 subst:sg:gen:n2
  20 +675 subst:sg:gen:f
  21 +670 subst:sg:dat:m1
  22 +671 subst:sg:dat:m2
  23 +672 subst:sg:dat:m3
  24 +673 subst:sg:dat:n1
  25 +674 subst:sg:dat:n2
  26 +669 subst:sg:dat:f
  27 +664 subst:sg:acc:m1
  28 +665 subst:sg:acc:m2
  29 +666 subst:sg:acc:m3
  30 +667 subst:sg:acc:n1
  31 +668 subst:sg:acc:n2
  32 +663 subst:sg:acc:f
  33 +682 subst:sg:inst:m1
  34 +683 subst:sg:inst:m2
  35 +684 subst:sg:inst:m3
  36 +685 subst:sg:inst:n1
  37 +686 subst:sg:inst:n2
  38 +681 subst:sg:inst:f
  39 +688 subst:sg:loc:m1
  40 +689 subst:sg:loc:m2
  41 +690 subst:sg:loc:m3
  42 +691 subst:sg:loc:n1
  43 +692 subst:sg:loc:n2
  44 +687 subst:sg:loc:f
  45 +700 subst:sg:voc:m1
  46 +701 subst:sg:voc:m2
  47 +702 subst:sg:voc:m3
  48 +703 subst:sg:voc:n1
  49 +704 subst:sg:voc:n2
  50 +699 subst:sg:voc:f
  51 +646 subst:pl:nom:m1
  52 +647 subst:pl:nom:m2
  53 +648 subst:pl:nom:m3
  54 +649 subst:pl:nom:n1
  55 +650 subst:pl:nom:n2
  56 +651 subst:pl:nom:p1
  57 +652 subst:pl:nom:p2
  58 +653 subst:pl:nom:p3
  59 +645 subst:pl:nom:f
  60 +619 subst:pl:gen:m1
  61 +620 subst:pl:gen:m2
  62 +621 subst:pl:gen:m3
  63 +622 subst:pl:gen:n1
  64 +623 subst:pl:gen:n2
  65 +624 subst:pl:gen:p1
  66 +625 subst:pl:gen:p2
  67 +626 subst:pl:gen:p3
  68 +618 subst:pl:gen:f
  69 +610 subst:pl:dat:m1
  70 +611 subst:pl:dat:m2
  71 +612 subst:pl:dat:m3
  72 +613 subst:pl:dat:n1
  73 +614 subst:pl:dat:n2
  74 +615 subst:pl:dat:p1
  75 +616 subst:pl:dat:p2
  76 +617 subst:pl:dat:p3
  77 +609 subst:pl:dat:f
  78 +601 subst:pl:acc:m1
  79 +602 subst:pl:acc:m2
  80 +603 subst:pl:acc:m3
  81 +604 subst:pl:acc:n1
  82 +605 subst:pl:acc:n2
  83 +606 subst:pl:acc:p1
  84 +607 subst:pl:acc:p2
  85 +608 subst:pl:acc:p3
  86 +600 subst:pl:acc:f
  87 +628 subst:pl:inst:m1
  88 +629 subst:pl:inst:m2
  89 +630 subst:pl:inst:m3
  90 +631 subst:pl:inst:n1
  91 +632 subst:pl:inst:n2
  92 +633 subst:pl:inst:p1
  93 +634 subst:pl:inst:p2
  94 +635 subst:pl:inst:p3
  95 +627 subst:pl:inst:f
  96 +637 subst:pl:loc:m1
  97 +638 subst:pl:loc:m2
  98 +639 subst:pl:loc:m3
  99 +640 subst:pl:loc:n1
  100 +641 subst:pl:loc:n2
  101 +642 subst:pl:loc:p1
  102 +643 subst:pl:loc:p2
  103 +644 subst:pl:loc:p3
  104 +636 subst:pl:loc:f
  105 +654 subst:pl:voc:f
  106 +655 subst:pl:voc:m1
  107 +656 subst:pl:voc:m2
  108 +657 subst:pl:voc:m3
  109 +658 subst:pl:voc:n1
  110 +659 subst:pl:voc:n2
  111 +660 subst:pl:voc:p1
  112 +661 subst:pl:voc:p2
  113 +662 subst:pl:voc:p3
  114 +# depreciative nominal flexeme:
  115 +149 depr:pl:nom:m2
  116 +150 depr:pl:voc:m2
  117 +# nominal compounds forming form:
  118 +599 substa
  119 +# PERSONAL PRONOUNS
  120 +443 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:akc
  121 +444 ppron12:sg:acc:m1.m2.m3.f.n1.n2:pri:nakc
  122 +445 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:akc
  123 +446 ppron12:sg:acc:m1.m2.m3.f.n1.n2:sec:nakc
  124 +447 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:akc
  125 +448 ppron12:sg:dat:m1.m2.m3.f.n1.n2:pri:nakc
  126 +449 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:akc
  127 +450 ppron12:sg:dat:m1.m2.m3.f.n1.n2:sec:nakc
  128 +451 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:akc
  129 +452 ppron12:sg:gen:m1.m2.m3.f.n1.n2:pri:nakc
  130 +453 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:akc
  131 +454 ppron12:sg:gen:m1.m2.m3.f.n1.n2:sec:nakc
  132 +455 ppron12:sg:inst:m1.m2.m3.f.n1.n2:pri
  133 +456 ppron12:sg:inst:m1.m2.m3.f.n1.n2:sec
  134 +457 ppron12:sg:loc:m1.m2.m3.f.n1.n2:pri
  135 +458 ppron12:sg:loc:m1.m2.m3.f.n1.n2:sec
  136 +459 ppron12:sg:nom:m1.m2.m3.f.n1.n2:pri
  137 +460 ppron12:sg:nom:m1.m2.m3.f.n1.n2:sec
  138 +461 ppron12:sg:voc:m1.m2.m3.f.n1.n2:sec
  139 +429 ppron12:pl:acc:_:pri
  140 +430 ppron12:pl:acc:_:sec
  141 +431 ppron12:pl:dat:_:pri
  142 +432 ppron12:pl:dat:_:sec
  143 +433 ppron12:pl:gen:_:pri
  144 +434 ppron12:pl:gen:_:sec
  145 +435 ppron12:pl:inst:_:pri
  146 +436 ppron12:pl:inst:_:sec
  147 +437 ppron12:pl:loc:_:pri
  148 +438 ppron12:pl:loc:_:sec
  149 +439 ppron12:pl:nom:_:pri
  150 +440 ppron12:pl:nom:_:sec
  151 +441 ppron12:pl:voc:_:pri
  152 +442 ppron12:pl:voc:_:sec
  153 +474 ppron3:sg:acc:f:ter:_:npraep
  154 +475 ppron3:sg:acc:f:ter:_:praep
  155 +476 ppron3:sg:acc:m1.m2.m3:ter:akc:npraep
  156 +477 ppron3:sg:acc:m1.m2.m3:ter:akc:praep
  157 +478 ppron3:sg:acc:m1.m2.m3:ter:nakc:npraep
  158 +479 ppron3:sg:acc:m1.m2.m3:ter:nakc:praep
  159 +480 ppron3:sg:acc:n1.n2:ter:_:npraep
  160 +481 ppron3:sg:acc:n1.n2:ter:_:praep
  161 +482 ppron3:sg:dat:f:ter:_:npraep
  162 +483 ppron3:sg:dat:f:ter:_:praep
  163 +484 ppron3:sg:dat:m1.m2.m3:ter:akc:npraep
  164 +485 ppron3:sg:dat:m1.m2.m3:ter:nakc:npraep
  165 +486 ppron3:sg:dat:m1.m2.m3:ter:_:praep
  166 +487 ppron3:sg:dat:n1.n2:ter:akc:npraep
  167 +488 ppron3:sg:dat:n1.n2:ter:nakc:npraep
  168 +489 ppron3:sg:dat:n1.n2:ter:_:praep
  169 +490 ppron3:sg:gen.acc:m1.m2.m3:ter:nakc:praep
  170 +491 ppron3:sg:gen:f:ter:_:npraep
  171 +492 ppron3:sg:gen:f:ter:_:praep
  172 +493 ppron3:sg:gen:m1.m2.m3:ter:akc:npraep
  173 +494 ppron3:sg:gen:m1.m2.m3:ter:akc:praep
  174 +495 ppron3:sg:gen:m1.m2.m3:ter:nakc:npraep
  175 +496 ppron3:sg:gen:m1.m2.m3:ter:nakc:praep
  176 +497 ppron3:sg:gen:n1.n2:ter:akc:npraep
  177 +498 ppron3:sg:gen:n1.n2:ter:nakc:npraep
  178 +499 ppron3:sg:gen:n1.n2:ter:_:praep
  179 +500 ppron3:sg:inst:f:ter:_:praep
  180 +501 ppron3:sg:inst:m1.m2.m3:ter:_:_
  181 +502 ppron3:sg:inst:n1.n2:ter:_:_
  182 +503 ppron3:sg:loc:f:ter:_:_
  183 +504 ppron3:sg:loc:m1.m2.m3:ter:_:_
  184 +505 ppron3:sg:loc:n1.n2:ter:_:_
  185 +506 ppron3:sg:nom:f:ter:_:_
  186 +507 ppron3:sg:nom:m1.m2.m3:ter:_:_
  187 +508 ppron3:sg:nom:n1.n2:ter:_:_
  188 +462 ppron3:pl:acc:m1.p1:ter:_:npraep
  189 +463 ppron3:pl:acc:m1.p1:ter:_:praep
  190 +464 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:npraep
  191 +465 ppron3:pl:acc:m2.m3.f.n1.n2.p2.p3:ter:_:praep
  192 +466 ppron3:pl:dat:_:ter:_:npraep
  193 +467 ppron3:pl:dat:_:ter:_:praep
  194 +468 ppron3:pl:gen:_:ter:_:npraep
  195 +469 ppron3:pl:gen:_:ter:_:praep
  196 +470 ppron3:pl:inst:_:ter:_:_
  197 +471 ppron3:pl:loc:_:ter:_:_
  198 +472 ppron3:pl:nom:m1.p1:ter:_:_
  199 +473 ppron3:pl:nom:m2.m3.f.n1.n2.p2.p3:ter:_:_
  200 +# PRONOUN ‘SIEBIE’
  201 +594 siebie:acc
  202 +595 siebie:dat
  203 +596 siebie:gen
  204 +597 siebie:inst
  205 +598 siebie:loc
  206 +# ADJECTIVES
  207 +5 adj:pl:acc:m1.p1:com
  208 +6 adj:pl:acc:m1.p1:pos
  209 +7 adj:pl:acc:m1.p1:sup
  210 +8 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:com
  211 +9 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:pos
  212 +10 adj:pl:acc:m2.m3.f.n1.n2.p2.p3:sup
  213 +11 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:com
  214 +12 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:pos
  215 +13 adj:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:sup
  216 +14 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:com
  217 +15 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:pos
  218 +16 adj:pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3:sup
  219 +17 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:com
  220 +18 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:pos
  221 +19 adj:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:sup
  222 +20 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:com
  223 +21 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:pos
  224 +22 adj:pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3:sup
  225 +23 adj:pl:nom:m1.p1:pos
  226 +24 adj:pl:nom:m2.m3.f.n1.n2.p2.p3:pos
  227 +25 adj:pl:nom.voc:m1.p1:com
  228 +26 adj:pl:nom.voc:m1.p1:pos
  229 +27 adj:pl:nom.voc:m1.p1:sup
  230 +28 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:com
  231 +29 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:pos
  232 +30 adj:pl:nom.voc:m2.m3.f.n1.n2.p2.p3:sup
  233 +31 adj:sg:acc:f:com
  234 +32 adj:sg:acc:f:pos
  235 +33 adj:sg:acc:f:sup
  236 +34 adj:sg:acc:m1.m2:com
  237 +35 adj:sg:acc:m1.m2:pos
  238 +36 adj:sg:acc:m1.m2:sup
  239 +37 adj:sg:acc:m3:com
  240 +38 adj:sg:acc:m3:pos
  241 +39 adj:sg:acc:m3:sup
  242 +40 adj:sg:acc:n1.n2:com
  243 +41 adj:sg:acc:n1.n2:pos
  244 +42 adj:sg:acc:n1.n2:sup
  245 +43 adj:sg:dat:f:com
  246 +44 adj:sg:dat:f:pos
  247 +45 adj:sg:dat:f:sup
  248 +46 adj:sg:dat:m1.m2.m3.n1.n2:com
  249 +47 adj:sg:dat:m1.m2.m3.n1.n2:pos
  250 +48 adj:sg:dat:m1.m2.m3.n1.n2:sup
  251 +49 adj:sg:gen:f:com
  252 +50 adj:sg:gen:f:pos
  253 +51 adj:sg:gen:f:sup
  254 +52 adj:sg:gen:m1.m2.m3.n1.n2:com
  255 +53 adj:sg:gen:m1.m2.m3.n1.n2:pos
  256 +54 adj:sg:gen:m1.m2.m3.n1.n2:sup
  257 +55 adj:sg:inst:f:com
  258 +56 adj:sg:inst:f:pos
  259 +57 adj:sg:inst:f:sup
  260 +58 adj:sg:inst:m1.m2.m3.n1.n2:com
  261 +59 adj:sg:inst:m1.m2.m3.n1.n2:pos
  262 +60 adj:sg:inst:m1.m2.m3.n1.n2:sup
  263 +61 adj:sg:loc:f:com
  264 +62 adj:sg:loc:f:pos
  265 +63 adj:sg:loc:f:sup
  266 +64 adj:sg:loc:m1.m2.m3.n1.n2:com
  267 +65 adj:sg:loc:m1.m2.m3.n1.n2:pos
  268 +66 adj:sg:loc:m1.m2.m3.n1.n2:sup
  269 +67 adj:sg:nom:f:pos
  270 +68 adj:sg:nom:m1.m2.m3:pos
  271 +69 adj:sg:nom:n1.n2:pos
  272 +70 adj:sg:nom.voc:f:com
  273 +71 adj:sg:nom.voc:f:pos
  274 +72 adj:sg:nom.voc:f:sup
  275 +73 adj:sg:nom.voc:m1.m2.m3:com
  276 +74 adj:sg:nom.voc:m1.m2.m3:pos
  277 +75 adj:sg:nom.voc:m1.m2.m3:sup
  278 +76 adj:sg:nom.voc:n1.n2:com
  279 +77 adj:sg:nom.voc:n1.n2:pos
  280 +78 adj:sg:nom.voc:n1.n2:sup
  281 +# adjectival compounds forming form:
  282 +2 adja
  283 +# predicative adjective:
  284 +3 adjc
  285 +# post-prepositional adjective:
  286 +4 adjp
  287 +# VERBS
  288 +# finitive (present/future) flexeme:
  289 +153 fin:pl:pri:imperf
  290 +154 fin:pl:pri:imperf.perf
  291 +155 fin:pl:pri:perf
  292 +156 fin:pl:sec:imperf
  293 +157 fin:pl:sec:imperf.perf
  294 +158 fin:pl:sec:perf
  295 +159 fin:pl:ter:imperf
  296 +160 fin:pl:ter:imperf.perf
  297 +161 fin:pl:ter:perf
  298 +162 fin:sg:pri:imperf
  299 +163 fin:sg:pri:imperf.perf
  300 +164 fin:sg:pri:perf
  301 +165 fin:sg:sec:imperf
  302 +166 fin:sg:sec:imperf.perf
  303 +167 fin:sg:sec:perf
  304 +168 fin:sg:ter:imperf
  305 +169 fin:sg:ter:imperf.perf
  306 +170 fin:sg:ter:perf
  307 +# past flexeme:
  308 +# praet=split (unsued otherwise):
  309 +509 praet:pl:m1.p1:imperf
  310 +510 praet:pl:m1.p1:imperf.perf
  311 +511 praet:pl:m1.p1:perf
  312 +521 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf
  313 +522 praet:pl:m2.m3.f.n1.n2.p2.p3:imperf.perf
  314 +523 praet:pl:m2.m3.f.n1.n2.p2.p3:perf
  315 +533 praet:sg:f:imperf
  316 +534 praet:sg:f:imperf.perf
  317 +535 praet:sg:f:perf
  318 +545 praet:sg:m1.m2.m3:imperf
  319 +546 praet:sg:m1.m2.m3:imperf:agl
  320 +547 praet:sg:m1.m2.m3:imperf:nagl
  321 +548 praet:sg:m1.m2.m3:imperf.perf
  322 +549 praet:sg:m1.m2.m3:perf
  323 +550 praet:sg:m1.m2.m3:perf:agl
  324 +551 praet:sg:m1.m2.m3:perf:nagl
  325 +561 praet:sg:n1.n2:imperf
  326 +562 praet:sg:n1.n2:imperf.perf
  327 +563 praet:sg:n1.n2:perf
  328 +# praet=composite (unsued otherwise):
  329 +512 praet:pl:m1.p1:pri:imperf
  330 +513 praet:pl:m1.p1:pri:imperf.perf
  331 +514 praet:pl:m1.p1:pri:perf
  332 +515 praet:pl:m1.p1:sec:imperf
  333 +516 praet:pl:m1.p1:sec:imperf.perf
  334 +517 praet:pl:m1.p1:sec:perf
  335 +518 praet:pl:m1.p1:ter:imperf
  336 +519 praet:pl:m1.p1:ter:imperf.perf
  337 +520 praet:pl:m1.p1:ter:perf
  338 +524 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf
  339 +525 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf
  340 +526 praet:pl:m2.m3.f.n1.n2.p2.p3:pri:perf
  341 +527 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf
  342 +528 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf
  343 +529 praet:pl:m2.m3.f.n1.n2.p2.p3:sec:perf
  344 +530 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf
  345 +531 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf
  346 +532 praet:pl:m2.m3.f.n1.n2.p2.p3:ter:perf
  347 +536 praet:sg:f:pri:imperf
  348 +537 praet:sg:f:pri:imperf.perf
  349 +538 praet:sg:f:pri:perf
  350 +539 praet:sg:f:sec:imperf
  351 +540 praet:sg:f:sec:imperf.perf
  352 +541 praet:sg:f:sec:perf
  353 +542 praet:sg:f:ter:imperf
  354 +543 praet:sg:f:ter:imperf.perf
  355 +544 praet:sg:f:ter:perf
  356 +552 praet:sg:m1.m2.m3:pri:imperf
  357 +553 praet:sg:m1.m2.m3:pri:imperf.perf
  358 +554 praet:sg:m1.m2.m3:pri:perf
  359 +555 praet:sg:m1.m2.m3:sec:imperf
  360 +556 praet:sg:m1.m2.m3:sec:imperf.perf
  361 +557 praet:sg:m1.m2.m3:sec:perf
  362 +558 praet:sg:m1.m2.m3:ter:imperf
  363 +559 praet:sg:m1.m2.m3:ter:imperf.perf
  364 +560 praet:sg:m1.m2.m3:ter:perf
  365 +564 praet:sg:n1.n2:pri:imperf
  366 +565 praet:sg:n1.n2:pri:imperf.perf
  367 +566 praet:sg:n1.n2:pri:perf
  368 +567 praet:sg:n1.n2:sec:imperf
  369 +568 praet:sg:n1.n2:sec:imperf.perf
  370 +569 praet:sg:n1.n2:sec:perf
  371 +570 praet:sg:n1.n2:ter:imperf
  372 +571 praet:sg:n1.n2:ter:imperf.perf
  373 +572 praet:sg:n1.n2:ter:perf
  374 +# conditional mood (used only with praet=composite)
  375 +100 cond:pl:m1.p1:pri:imperf
  376 +101 cond:pl:m1.p1:pri:imperf.perf
  377 +102 cond:pl:m1.p1:pri:perf
  378 +103 cond:pl:m1.p1:sec:imperf
  379 +104 cond:pl:m1.p1:sec:imperf.perf
  380 +105 cond:pl:m1.p1:sec:perf
  381 +106 cond:pl:m1.p1:ter:imperf
  382 +107 cond:pl:m1.p1:ter:imperf.perf
  383 +108 cond:pl:m1.p1:ter:perf
  384 +109 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf
  385 +110 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:imperf.perf
  386 +111 cond:pl:m2.m3.f.n1.n2.p2.p3:pri:perf
  387 +112 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf
  388 +113 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf.perf
  389 +114 cond:pl:m2.m3.f.n1.n2.p2.p3:sec:perf
  390 +115 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf
  391 +116 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf.perf
  392 +117 cond:pl:m2.m3.f.n1.n2.p2.p3:ter:perf
  393 +118 cond:sg:f:pri:imperf
  394 +119 cond:sg:f:pri:imperf.perf
  395 +120 cond:sg:f:pri:perf
  396 +121 cond:sg:f:sec:imperf
  397 +122 cond:sg:f:sec:imperf.perf
  398 +123 cond:sg:f:sec:perf
  399 +124 cond:sg:f:ter:imperf
  400 +125 cond:sg:f:ter:imperf.perf
  401 +126 cond:sg:f:ter:perf
  402 +127 cond:sg:m1.m2.m3:pri:imperf
  403 +128 cond:sg:m1.m2.m3:pri:imperf.perf
  404 +129 cond:sg:m1.m2.m3:pri:perf
  405 +130 cond:sg:m1.m2.m3:sec:imperf
  406 +131 cond:sg:m1.m2.m3:sec:imperf.perf
  407 +132 cond:sg:m1.m2.m3:sec:perf
  408 +133 cond:sg:m1.m2.m3:ter:imperf
  409 +134 cond:sg:m1.m2.m3:ter:imperf.perf
  410 +135 cond:sg:m1.m2.m3:ter:perf
  411 +136 cond:sg:n1.n2:imperf
  412 +137 cond:sg:n1.n2:imperf.perf
  413 +138 cond:sg:n1.n2:perf
  414 +139 cond:sg:n1.n2:pri:imperf
  415 +140 cond:sg:n1.n2:pri:imperf.perf
  416 +141 cond:sg:n1.n2:pri:perf
  417 +142 cond:sg:n1.n2:sec:imperf
  418 +143 cond:sg:n1.n2:sec:imperf.perf
  419 +144 cond:sg:n1.n2:sec:perf
  420 +145 cond:sg:n1.n2:ter:imperf
  421 +146 cond:sg:n1.n2:ter:imperf.perf
  422 +147 cond:sg:n1.n2:ter:perf
  423 +# impersonal flexeme:
  424 +219 imps:imperf
  425 +220 imps:imperf.perf
  426 +221 imps:perf
  427 +# imperative flexeme:
  428 +222 impt:pl:pri:imperf
  429 +223 impt:pl:pri:imperf.perf
  430 +224 impt:pl:pri:perf
  431 +225 impt:pl:sec:imperf
  432 +226 impt:pl:sec:imperf.perf
  433 +227 impt:pl:sec:perf
  434 +228 impt:sg:sec:imperf
  435 +229 impt:sg:sec:imperf.perf
  436 +230 impt:sg:sec:perf
  437 +# infinitival flexeme:
  438 +231 inf:imperf
  439 +232 inf:imperf.perf
  440 +233 inf:perf
  441 +# agglutinative forms of ‘być’:
  442 +83 aglt:pl:pri:imperf:nwok
  443 +84 aglt:pl:pri:imperf:wok
  444 +85 aglt:pl:sec:imperf:nwok
  445 +86 aglt:pl:sec:imperf:wok
  446 +87 aglt:sg:pri:imperf:nwok
  447 +88 aglt:sg:pri:imperf:wok
  448 +89 aglt:sg:sec:imperf:nwok
  449 +90 aglt:sg:sec:imperf:wok
  450 +# future forms of ‘być’:
  451 +91 bedzie:pl:pri:imperf
  452 +92 bedzie:pl:sec:imperf
  453 +93 bedzie:pl:ter:imperf
  454 +94 bedzie:sg:pri:imperf
  455 +95 bedzie:sg:sec:imperf
  456 +96 bedzie:sg:ter:imperf
  457 +# ‘winien’ type verbs:
  458 +705 winien:pl:m1.p1:imperf
  459 +706 winien:pl:m1.p1:pri:imperf
  460 +707 winien:pl:m1.p1:sec:imperf
  461 +708 winien:pl:m1.p1:ter:imperf
  462 +709 winien:pl:m2.m3.f.n1.n2.p2.p3:imperf
  463 +710 winien:pl:m2.m3.f.n1.n2.p2.p3:sec:imperf
  464 +711 winien:pl:m2.m3.f.n1.n2.p2.p3:ter:imperf
  465 +712 winien:sg:f:imperf
  466 +713 winien:sg:f:pri:imperf
  467 +714 winien:sg:f:sec:imperf
  468 +715 winien:sg:f:ter:imperf
  469 +716 winien:sg:m1.m2.m3:imperf
  470 +717 winien:sg:m1.m2.m3:pri:imperf
  471 +718 winien:sg:m1.m2.m3:sec:imperf
  472 +719 winien:sg:m1.m2.m3:ter:imperf
  473 +720 winien:sg:n1.n2:imperf
  474 +721 winien:sg:n1.n2:pri:imperf
  475 +722 winien:sg:n1.n2:sec:imperf
  476 +723 winien:sg:n1.n2:ter:imperf
  477 +# predicative flexeme:
  478 +573 pred
  479 +# gerunds
  480 +171 ger:pl:dat.loc:n2:imperf:aff
  481 +172 ger:pl:dat.loc:n2:imperf:neg
  482 +173 ger:pl:dat.loc:n2:imperf.perf:aff
  483 +174 ger:pl:dat.loc:n2:imperf.perf:neg
  484 +175 ger:pl:dat.loc:n2:perf:aff
  485 +176 ger:pl:dat.loc:n2:perf:neg
  486 +177 ger:pl:gen:n2:imperf:aff
  487 +178 ger:pl:gen:n2:imperf:neg
  488 +179 ger:pl:gen:n2:imperf.perf:aff
  489 +180 ger:pl:gen:n2:imperf.perf:neg
  490 +181 ger:pl:gen:n2:perf:aff
  491 +182 ger:pl:gen:n2:perf:neg
  492 +183 ger:pl:inst:n2:imperf:aff
  493 +184 ger:pl:inst:n2:imperf:neg
  494 +185 ger:pl:inst:n2:imperf.perf:aff
  495 +186 ger:pl:inst:n2:imperf.perf:neg
  496 +187 ger:pl:inst:n2:perf:aff
  497 +188 ger:pl:inst:n2:perf:neg
  498 +189 ger:pl:nom.acc:n2:imperf:aff
  499 +190 ger:pl:nom.acc:n2:imperf:neg
  500 +191 ger:pl:nom.acc:n2:imperf.perf:aff
  501 +192 ger:pl:nom.acc:n2:imperf.perf:neg
  502 +193 ger:pl:nom.acc:n2:perf:aff
  503 +194 ger:pl:nom.acc:n2:perf:neg
  504 +195 ger:sg:dat.loc:n2:imperf:aff
  505 +196 ger:sg:dat.loc:n2:imperf:neg
  506 +197 ger:sg:dat.loc:n2:imperf.perf:aff
  507 +198 ger:sg:dat.loc:n2:imperf.perf:neg
  508 +199 ger:sg:dat.loc:n2:perf:aff
  509 +200 ger:sg:dat.loc:n2:perf:neg
  510 +201 ger:sg:gen:n2:imperf:aff
  511 +202 ger:sg:gen:n2:imperf:neg
  512 +203 ger:sg:gen:n2:imperf.perf:aff
  513 +204 ger:sg:gen:n2:imperf.perf:neg
  514 +205 ger:sg:gen:n2:perf:aff
  515 +206 ger:sg:gen:n2:perf:neg
  516 +207 ger:sg:inst:n2:imperf:aff
  517 +208 ger:sg:inst:n2:imperf:neg
  518 +209 ger:sg:inst:n2:imperf.perf:aff
  519 +210 ger:sg:inst:n2:imperf.perf:neg
  520 +211 ger:sg:inst:n2:perf:aff
  521 +212 ger:sg:inst:n2:perf:neg
  522 +213 ger:sg:nom.acc:n2:imperf:aff
  523 +214 ger:sg:nom.acc:n2:imperf:neg
  524 +215 ger:sg:nom.acc:n2:imperf.perf:aff
  525 +216 ger:sg:nom.acc:n2:imperf.perf:neg
  526 +217 ger:sg:nom.acc:n2:perf:aff
  527 +218 ger:sg:nom.acc:n2:perf:neg
  528 +# participles
  529 +# adverbial participles:
  530 +332 pcon:imperf
  531 +331 pant:perf
  532 +# adjectival active participle:
  533 +267 pact:pl:acc:m1.p1:imperf:aff
  534 +268 pact:pl:acc:m1.p1:imperf:neg
  535 +269 pact:pl:acc:m1.p1:imperf.perf:aff
  536 +270 pact:pl:acc:m1.p1:imperf.perf:neg
  537 +271 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  538 +272 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  539 +273 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  540 +274 pact:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  541 +275 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  542 +276 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  543 +277 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  544 +278 pact:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  545 +279 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  546 +280 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  547 +281 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  548 +282 pact:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  549 +283 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff
  550 +284 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg
  551 +285 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff
  552 +286 pact:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg
  553 +287 pact:pl:nom.voc:m1.p1:imperf:aff
  554 +288 pact:pl:nom.voc:m1.p1:imperf:neg
  555 +289 pact:pl:nom.voc:m1.p1:imperf.perf:aff
  556 +290 pact:pl:nom.voc:m1.p1:imperf.perf:neg
  557 +291 pact:sg:acc.inst:f:imperf:aff
  558 +292 pact:sg:acc.inst:f:imperf:neg
  559 +293 pact:sg:acc.inst:f:imperf.perf:aff
  560 +294 pact:sg:acc.inst:f:imperf.perf:neg
  561 +295 pact:sg:acc:m1.m2:imperf:aff
  562 +296 pact:sg:acc:m1.m2:imperf:neg
  563 +297 pact:sg:acc:m1.m2:imperf.perf:aff
  564 +298 pact:sg:acc:m1.m2:imperf.perf:neg
  565 +299 pact:sg:acc:m3:imperf:aff
  566 +300 pact:sg:acc:m3:imperf:neg
  567 +301 pact:sg:acc:m3:imperf.perf:aff
  568 +302 pact:sg:acc:m3:imperf.perf:neg
  569 +303 pact:sg:dat:m1.m2.m3.n1.n2:imperf:aff
  570 +304 pact:sg:dat:m1.m2.m3.n1.n2:imperf:neg
  571 +305 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff
  572 +306 pact:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg
  573 +307 pact:sg:gen.dat.loc:f:imperf:aff
  574 +308 pact:sg:gen.dat.loc:f:imperf:neg
  575 +309 pact:sg:gen.dat.loc:f:imperf.perf:aff
  576 +310 pact:sg:gen.dat.loc:f:imperf.perf:neg
  577 +311 pact:sg:gen:m1.m2.m3.n1.n2:imperf:aff
  578 +312 pact:sg:gen:m1.m2.m3.n1.n2:imperf:neg
  579 +313 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff
  580 +314 pact:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg
  581 +315 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff
  582 +316 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg
  583 +317 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff
  584 +318 pact:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg
  585 +319 pact:sg:nom.acc.voc:n1.n2:imperf:aff
  586 +320 pact:sg:nom.acc.voc:n1.n2:imperf:neg
  587 +321 pact:sg:nom.acc.voc:n1.n2:imperf.perf:aff
  588 +322 pact:sg:nom.acc.voc:n1.n2:imperf.perf:neg
  589 +323 pact:sg:nom.voc:f:imperf:aff
  590 +324 pact:sg:nom.voc:f:imperf:neg
  591 +325 pact:sg:nom.voc:f:imperf.perf:aff
  592 +326 pact:sg:nom.voc:f:imperf.perf:neg
  593 +327 pact:sg:nom.voc:m1.m2.m3:imperf:aff
  594 +328 pact:sg:nom.voc:m1.m2.m3:imperf:neg
  595 +329 pact:sg:nom.voc:m1.m2.m3:imperf.perf:aff
  596 +330 pact:sg:nom.voc:m1.m2.m3:imperf.perf:neg
  597 +# adjectival passive participle:
  598 +333 ppas:pl:acc:m1.p1:imperf:aff
  599 +334 ppas:pl:acc:m1.p1:imperf:neg
  600 +335 ppas:pl:acc:m1.p1:imperf.perf:aff
  601 +336 ppas:pl:acc:m1.p1:imperf.perf:neg
  602 +337 ppas:pl:acc:m1.p1:perf:aff
  603 +338 ppas:pl:acc:m1.p1:perf:neg
  604 +339 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  605 +340 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  606 +341 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  607 +342 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  608 +343 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff
  609 +344 ppas:pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg
  610 +345 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  611 +346 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  612 +347 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  613 +348 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  614 +349 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff
  615 +350 ppas:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg
  616 +351 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:aff
  617 +352 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf:neg
  618 +353 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:aff
  619 +354 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:imperf.perf:neg
  620 +355 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:aff
  621 +356 ppas:pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3:perf:neg
  622 +357 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:aff
  623 +358 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf:neg
  624 +359 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:aff
  625 +360 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:imperf.perf:neg
  626 +361 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:aff
  627 +362 ppas:pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3:perf:neg
  628 +363 ppas:pl:nom.voc:m1.p1:imperf:aff
  629 +364 ppas:pl:nom.voc:m1.p1:imperf:neg
  630 +365 ppas:pl:nom.voc:m1.p1:imperf.perf:aff
  631 +366 ppas:pl:nom.voc:m1.p1:imperf.perf:neg
  632 +367 ppas:pl:nom.voc:m1.p1:perf:aff
  633 +368 ppas:pl:nom.voc:m1.p1:perf:neg
  634 +369 ppas:sg:acc.inst:f:imperf:aff
  635 +370 ppas:sg:acc.inst:f:imperf:neg
  636 +371 ppas:sg:acc.inst:f:imperf.perf:aff
  637 +372 ppas:sg:acc.inst:f:imperf.perf:neg
  638 +373 ppas:sg:acc.inst:f:perf:aff
  639 +374 ppas:sg:acc.inst:f:perf:neg
  640 +375 ppas:sg:acc:m1.m2:imperf:aff
  641 +376 ppas:sg:acc:m1.m2:imperf:neg
  642 +377 ppas:sg:acc:m1.m2:imperf.perf:aff
  643 +378 ppas:sg:acc:m1.m2:imperf.perf:neg
  644 +379 ppas:sg:acc:m1.m2:perf:aff
  645 +380 ppas:sg:acc:m1.m2:perf:neg
  646 +381 ppas:sg:acc:m3:imperf:aff
  647 +382 ppas:sg:acc:m3:imperf:neg
  648 +383 ppas:sg:acc:m3:imperf.perf:aff
  649 +384 ppas:sg:acc:m3:imperf.perf:neg
  650 +385 ppas:sg:acc:m3:perf:aff
  651 +386 ppas:sg:acc:m3:perf:neg
  652 +387 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:aff
  653 +388 ppas:sg:dat:m1.m2.m3.n1.n2:imperf:neg
  654 +389 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:aff
  655 +390 ppas:sg:dat:m1.m2.m3.n1.n2:imperf.perf:neg
  656 +391 ppas:sg:dat:m1.m2.m3.n1.n2:perf:aff
  657 +392 ppas:sg:dat:m1.m2.m3.n1.n2:perf:neg
  658 +393 ppas:sg:gen.dat.loc:f:imperf:aff
  659 +394 ppas:sg:gen.dat.loc:f:imperf:neg
  660 +395 ppas:sg:gen.dat.loc:f:imperf.perf:aff
  661 +396 ppas:sg:gen.dat.loc:f:imperf.perf:neg
  662 +397 ppas:sg:gen.dat.loc:f:perf:aff
  663 +398 ppas:sg:gen.dat.loc:f:perf:neg
  664 +399 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:aff
  665 +400 ppas:sg:gen:m1.m2.m3.n1.n2:imperf:neg
  666 +401 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:aff
  667 +402 ppas:sg:gen:m1.m2.m3.n1.n2:imperf.perf:neg
  668 +403 ppas:sg:gen:m1.m2.m3.n1.n2:perf:aff
  669 +404 ppas:sg:gen:m1.m2.m3.n1.n2:perf:neg
  670 +405 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:aff
  671 +406 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf:neg
  672 +407 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:aff
  673 +408 ppas:sg:inst.loc:m1.m2.m3.n1.n2:imperf.perf:neg
  674 +409 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:aff
  675 +410 ppas:sg:inst.loc:m1.m2.m3.n1.n2:perf:neg
  676 +411 ppas:sg:nom.acc.voc:n1.n2:imperf:aff
  677 +412 ppas:sg:nom.acc.voc:n1.n2:imperf:neg
  678 +413 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:aff
  679 +414 ppas:sg:nom.acc.voc:n1.n2:imperf.perf:neg
  680 +415 ppas:sg:nom.acc.voc:n1.n2:perf:aff
  681 +416 ppas:sg:nom.acc.voc:n1.n2:perf:neg
  682 +417 ppas:sg:nom.voc:f:imperf:aff
  683 +418 ppas:sg:nom.voc:f:imperf:neg
  684 +419 ppas:sg:nom.voc:f:imperf.perf:aff
  685 +420 ppas:sg:nom.voc:f:imperf.perf:neg
  686 +421 ppas:sg:nom.voc:f:perf:aff
  687 +422 ppas:sg:nom.voc:f:perf:neg
  688 +423 ppas:sg:nom.voc:m1.m2.m3:imperf:aff
  689 +424 ppas:sg:nom.voc:m1.m2.m3:imperf:neg
  690 +425 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:aff
  691 +426 ppas:sg:nom.voc:m1.m2.m3:imperf.perf:neg
  692 +427 ppas:sg:nom.voc:m1.m2.m3:perf:aff
  693 +428 ppas:sg:nom.voc:m1.m2.m3:perf:neg
  694 +# NUMERALS
  695 +239 num:pl:acc:m1:rec
  696 +240 num:pl:dat.loc:n1.p1.p2:congr.rec
  697 +241 num:pl:dat:m1.m2.m3.n2.f:congr
  698 +242 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n1.n2.p1.p2:congr
  699 +243 num:pl:gen.dat.inst.loc:m1.m2.m3.f.n2:congr
  700 +244 num:pl:gen.dat.loc:m1.m2.m3.n2.f:congr
  701 +245 num:pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2:congr
  702 +246 num:pl:gen.loc:m1.m2.m3.n2.f:congr
  703 +247 num:pl:gen:n1.p1.p2:rec
  704 +248 num:pl:inst:f:congr
  705 +249 num:pl:inst:m1.m2.m3.f.n1.n2.p1.p2:congr
  706 +250 num:pl:inst:m1.m2.m3.f.n2:congr
  707 +251 num:pl:inst:m1.m2.m3.n2:congr
  708 +252 num:pl:inst:m1.m2.m3.n2.f:congr
  709 +253 num:pl:inst:n1.p1.p2:rec
  710 +254 num:pl:nom.acc:m1.m2.m3.f.n1.n2.p1.p2:rec
  711 +255 num:pl:nom.acc.voc:f:congr
  712 +256 num:pl:nom.acc.voc:m1:rec
  713 +257 num:pl:nom.acc.voc:m2.m3.f.n1.n2.p1.p2:rec
  714 +258 num:pl:nom.acc.voc:m2.m3.f.n2:rec
  715 +259 num:pl:nom.acc.voc:m2.m3.n2:congr
  716 +260 num:pl:nom.acc.voc:m2.m3.n2.f:congr
  717 +261 num:pl:nom.acc.voc:n1.p1.p2:rec
  718 +262 num:pl:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.f.n1.n2.p1.p2:rec
  719 +263 num:pl:nom.voc:m1:congr
  720 +264 num:pl:nom.voc:m1:rec
  721 +265 num:sg:nom.gen.dat.inst.acc.loc.voc:f:rec
  722 +266 num:sg:nom.gen.dat.inst.acc.loc.voc:m1.m2.m3.n1.n2:rec
  723 +# numeral compounds forming form:
  724 +238 num:comp
  725 +# PREPOSITIONS
  726 +578 prep:acc
  727 +579 prep:acc:nwok
  728 +580 prep:acc:wok
  729 +581 prep:dat
  730 +582 prep:gen
  731 +583 prep:gen:nwok
  732 +584 prep:gen:wok
  733 +585 prep:inst
  734 +586 prep:inst:nwok
  735 +587 prep:inst:wok
  736 +588 prep:loc
  737 +589 prep:loc:nwok
  738 +590 prep:loc:wok
  739 +591 prep:nom
  740 +# ADVERBS
  741 +79 adv
  742 +80 adv:com
  743 +81 adv:pos
  744 +82 adv:sup
  745 +# OTHER
  746 +# kubliki (particles):
  747 +592 qub
  748 +# conjunctions:
  749 +148 conj
  750 +# complementizers:
  751 +99 comp
  752 +# interjections:
  753 +234 interj
  754 +# burkinostki (bound words):
  755 +98 burk
  756 +# abbreviations:
  757 +97 brev:pun
  758 +97 brev:npun
  759 +# punctuation:
  760 +235 interp
  761 +# digits:
  762 +151 dig
  763 +# Roman digits:
  764 +593 romandig
  765 +# emoticons:
  766 +152 emoticon
  767 +# prefixes:
  768 +574 prefa
  769 +575 prefppas
  770 +576 prefs
  771 +577 prefv
  772 +# (special)
  773 +236 naj
  774 +237 nie