Checking a Kashubian adjective-like declension
Check if I haven't left anything out
def _list_to_check(pos):
num = ['sg', 'pl']
gen = ['mp', 'ma', 'mi', 'f', 'nt']
cas = ['nom', 'gen', 'dat', 'acc', 'ins', 'loc', 'voc']
out = []
for n in num:
for g in gen:
for c in cas:
out.append(f"{pos}.{g}.{n}.{c}")
return out
len(_list_to_check('num.ord'))
dredzi = """
drëdżi drëdżi num.ord.mp|ma|mi.sg.nom|voc
drëgô drëdżi num.ord.f.sg.nom|voc
drëdżé drëdżi num.ord.nt.sg.nom|acc|voc
drëgą drëdżi num.ord.f.sg.acc|ins
drëdżi drëdżi num.ord.f.sg.gen|dat|loc
drëdżim drëdżi num.ord.mp|ma|mi|nt.sg.loc|ins
drëdżé drëdżi num.ord.nt|f|mi|ma.pl.nom|acc|voc
drëdżich drëdżi num.ord.nt|f|mi|ma|mp.pl.gen|loc
drëdżima drëdżi num.ord.nt|f|mi|ma.pl.ins
drëdżégò drëdżi num.ord.nt|mi|ma|mp.sg.gen
drëdżégò drëdżi num.ord.ma|mp.sg.acc
drëdżémù drëdżi num.ord.nt|mi|ma|mp.sg.dat
drëdżi drëdżi num.ord.mp.pl.nom|voc
drëdżich drëdżi num.ord.mp.pl.acc
drëdżim drëdżi num.ord.nt|f|mi|ma|mp.pl.dat
"""
def _do_expand(stack, todo):
onward = []
if not '.' in todo:
return [f'{a}.{b}' for a in stack for b in todo.split('|')]
cur, rest = todo.split('.', 1)
if stack == []:
onward = cur.split('|')
return _do_expand(onward, rest)
else:
onward = [f'{a}.{b}' for a in stack for b in cur.split('|')]
return _do_expand(onward, rest)
def expand_compressed(lines):
output = []
for i in lines:
form, lemma, postag = i.split('\t')
newtags = _do_expand([], postag)
output.extend([f"{form}\t{lemma}\t{itag}" for itag in newtags])
return output
expand_compressed([l for l in dredzi.split('\n') if l != ''])
vals = expand_compressed([l for l in dredzi.split('\n') if l != ''])
tags = [a.split('\t')[-1] for a in vals]
for tc in _list_to_check('num.ord'):
if not tc in tags:
print(tc)
dredzi = """
drëdżi drëdżi num.ord.mp|ma|mi.sg.nom|voc
drëdżi drëdżi num.ord.mi.sg.acc
drëgô drëdżi num.ord.f.sg.nom|voc
drëdżé drëdżi num.ord.nt.sg.nom|acc|voc
drëgą drëdżi num.ord.f.sg.acc|ins
drëdżi drëdżi num.ord.f.sg.gen|dat|loc
drëdżim drëdżi num.ord.mp|ma|mi|nt.sg.loc|ins
drëdżé drëdżi num.ord.nt|f|mi|ma.pl.nom|acc|voc
drëdżich drëdżi num.ord.nt|f|mi|ma|mp.pl.gen|loc
drëdżima drëdżi num.ord.nt|f|mi|ma|mp.pl.ins
drëdżégò drëdżi num.ord.nt|mi|ma|mp.sg.gen
drëdżégò drëdżi num.ord.ma|mp.sg.acc
drëdżémù drëdżi num.ord.nt|mi|ma|mp.sg.dat
drëdżi drëdżi num.ord.mp.pl.nom|voc
drëdżich drëdżi num.ord.mp.pl.acc
drëdżim drëdżi num.ord.nt|f|mi|ma|mp.pl.dat
"""