Blame common/hfconv.py

Packit 1f3717
# -*- coding: utf-8 -*-
Packit 1f3717
Packit 1f3717
# Copyright 2005 - 2007 Harri Pitkänen (hatapitk@iki.fi)
Packit 1f3717
# Functions and data for Joukahainen -> Suomi-malaga converter
Packit 1f3717
Packit 1f3717
# This program is free software; you can redistribute it and/or modify
Packit 1f3717
# it under the terms of the GNU General Public License as published by
Packit 1f3717
# the Free Software Foundation; either version 2 of the License, or
Packit 1f3717
# (at your option) any later version.
Packit 1f3717
#
Packit 1f3717
# This program is distributed in the hope that it will be useful,
Packit 1f3717
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 1f3717
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 1f3717
# GNU General Public License for more details.
Packit 1f3717
#
Packit 1f3717
# You should have received a copy of the GNU General Public License
Packit 1f3717
# along with this program; if not, write to the Free Software
Packit 1f3717
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Packit 1f3717
Packit 1f3717
Packit 1f3717
# Hannu Väisänen has added some inflection types.
Packit 1f3717
Packit 1f3717
import re
Packit 1f3717
Packit 1f3717
grads = [ (u'sw', u'tt', u'av1'),
Packit 1f3717
	(u'sw', u'pp', u'av1'),
Packit 1f3717
	(u'sw', u'kk', u'av1'),
Packit 1f3717
	(u'sw', u'mp', u'av1'),
Packit 1f3717
	(u'sw', u'p', u'av1'),
Packit 1f3717
	(u'sw', u'nt', u'av1'),
Packit 1f3717
	(u'sw', u'lt', u'av1'),
Packit 1f3717
	(u'sw', u'rt', u'av1'),
Packit 1f3717
	(u'sw', u't', u'av1'),
Packit 1f3717
	(u'sw', u'nk', u'av1'),
Packit 1f3717
	(u'sw', u'uku', u'av1'),
Packit 1f3717
	(u'sw', u'yky', u'av1'),
Packit 1f3717
	(u'ws', u'b', u'av2'),
Packit 1f3717
	(u'ws', u'g', u'av2'),
Packit 1f3717
	(u'ws', u't', u'av2'),
Packit 1f3717
	(u'ws', u'p', u'av2'),
Packit 1f3717
	(u'ws', u'k', u'av2'),
Packit 1f3717
	(u'ws', u'mm', u'av2'),
Packit 1f3717
	(u'ws', u'v', u'av2'),
Packit 1f3717
	(u'ws', u'nn', u'av2'),
Packit 1f3717
	(u'ws', u'll', u'av2'),
Packit 1f3717
	(u'ws', u'rr', u'av2'),
Packit 1f3717
	(u'ws', u'd', u'av2'),
Packit 1f3717
	(u'ws', u'ng', u'av2'),
Packit 1f3717
	(u'sw', u'k>j', u'av3'),
Packit 1f3717
	(u'ws', u'j>k', u'av4'),
Packit 1f3717
	(u'sw', u'k>', u'av5'),
Packit 1f3717
	(u'ws', u'>k', u'av6')   ]
Packit 1f3717
Packit 1f3717
# Joukahainen word classes
Packit 1f3717
SUBST = 1
Packit 1f3717
ADJ = 2
Packit 1f3717
VERB = 3
Packit 1f3717
Packit 1f3717
modern_classmap = [(u'valo', u'sw', [(None,u'(.*)',u'valo'),
Packit 1f3717
			(u'k>',u'(ko)ko',u'koko'),
Packit 1f3717
			(u'k>',u'(.*uo)ko',u'ruoko'),
Packit 1f3717
			(u'kk',u'(.*k)kU',u'alku'),
Packit 1f3717
			(u'uku',u'(.*U)kU',u'luku'),
Packit 1f3717
			(u'k>',u'(..U)kU',u'tiuku'),
Packit 1f3717
			(u'k>',u'(.*)kU',u'alku'),
Packit 1f3717
			(u'lt',u'(.*l)tO',u'aalto'),
Packit 1f3717
			(u'nt',u'(.*n)tO',u'anto'),
Packit 1f3717
			(u'nt',u'(.*n)tU',u'lintu'),
Packit 1f3717
			(u'nk',u'(.*n)kO',u'hanko'),
Packit 1f3717
			(u'tt',u'(.*t)tU',u'hattu'),
Packit 1f3717
			(u'tt',u'(.*t)tO',u'liitto'),
Packit 1f3717
			(u'nk',u'(.*n)kU',u'hinku'),
Packit 1f3717
			(u'pp',u'(.*p)pU',u'hoppu'),
Packit 1f3717
			(u'rt',u'(.*r)tO',u'kaarto'),
Packit 1f3717
			(u'pp',u'(.*p)pO',u'kippo'),
Packit 1f3717
			(u'mp',u'(.*m)pO',u'sampo'),
Packit 1f3717
			(u'mp',u'(.*m)pU',u'kumpu'),
Packit 1f3717
			(u't',u'(.*)tU',u'laatu'),
Packit 1f3717
			(u'p',u'(.*)pU',u'apu'),
Packit 1f3717
			(u'p',u'(.*)pO',u'lepo'),
Packit 1f3717
			(u't',u'(.*)tO',u'leuto'),
Packit 1f3717
			(u'kk',u'(.*k)kO',u'verkko'),
Packit 1f3717
			(u'k>',u'(.*h)kO',u'vihko'),
Packit 1f3717
			(u'k>',u'(.*)kO',u'verkko')   ]),
Packit 1f3717
	(u'arvelu', u'sw', [(None,u'(.*Ce[lr])O',u'hontelo',[ADJ]),
Packit 1f3717
			(None,u'(.*)',u'arvelu'),
Packit 1f3717
			(u'nk',u'(.*n)kO',u'alanko'),
Packit 1f3717
			(u'nt',u'(.*n)tO',u'avanto'),
Packit 1f3717
			(u'kk',u'(.*k)kO',u'laatikko'),
Packit 1f3717
			(u'tt',u'(.*t)tO',u'pihatto'),
Packit 1f3717
			(u'tt',u'(.*t)tU',u'raamattu') ]),
Packit 1f3717
	(u'autio', u'-', [(None,u'(.*)',u'autio')]),
Packit 1f3717
	(u'kiiski', u'-', [(None,u'(.*)i',u'kiiski')]),
Packit 1f3717
	(u'siisti', u'-', [(None,u'(.*)i',u'siisti')]),
Packit 1f3717
	(u'risti', u'sw', [(None,u'(.*)i',u'risti'),
Packit 1f3717
			(u'pp',u'(pop)pi',u'pop'),
Packit 1f3717
			(u'pp',u'(.*p)pi',u'keppi'),
Packit 1f3717
			(u'lt',u'(.*l)ti',u'pelti'),
Packit 1f3717
			(u'nk',u'(.*n)ki',u'renki'),
Packit 1f3717
			(u'kk',u'(punk)ki',u'punk'),
Packit 1f3717
			(u'kk',u'(.*k)ki',u'takki'),
Packit 1f3717
			(u'tt',u'(.*t)ti',u'tatti'),
Packit 1f3717
			(u'nt',u'(.*n)ti',u'tunti'),
Packit 1f3717
			(u'p',u'(.*)pi',u'hupi'),
Packit 1f3717
			(u't',u'(.*)ti',u'vati'),
Packit 1f3717
			(u'k>',u'(.*)ki',u'takki')]),
Packit 1f3717
	(u'paperi', u'sw', [(None,u'(.*)i',u'paperi'),
Packit 1f3717
			(u'nt',u'(.*n)ti',u'hollanti'),
Packit 1f3717
			(u'nk',u'(.*n)ki',u'killinki'),
Packit 1f3717
			(u'kk',u'(.*k)ki',u'kajakki'),
Packit 1f3717
			(u'tt',u'(.*t)ti',u'salaatti'),
Packit 1f3717
			(u'pp',u'(.*p)pi',u'sinappi'),
Packit 1f3717
			(u't',u'(.*)ti',u'konvehti') ]),
Packit 1f3717
	(u'edam', u'-', [(None,u'(.*C)',u'edam')]),
Packit 1f3717
	(u'kalsium', u'-', [(None,u'(.*)i',u'fan'),
Packit 1f3717
			 (None,u'(.*)',u'kalsium')]),
Packit 1f3717
	(u'lovi', u'sw',   [(None,u'(.*)i',u'lovi'),
Packit 1f3717
			(u'nk',u'(.*n)ki',u'hanki'),
Packit 1f3717
			(u'pp',u'(.*p)pi',u'happi'),
Packit 1f3717
			(u'mp',u'(.*lam)pi',u'lampi'),
Packit 1f3717
			(u'mp',u'(.*m)pi',u'sampi'),
Packit 1f3717
			(u'kk',u'(.*k)ki',u'kaikki'),
Packit 1f3717
			(u'k>j',u'(.*)ki',u'kylki'),
Packit 1f3717
			(u't',u'(.*lah)ti',u'lahti'),
Packit 1f3717
			(u't',u'(.*h)ti',u'lehti'),
Packit 1f3717
			(u'p',u'(.*)pi',u'siipi'),
Packit 1f3717
			(u'k>',u'(.*i)ki',u'piki'),
Packit 1f3717
			(u'k>',u'(.*)ki',u'kaikki')]),
Packit 1f3717
	(u'toholampi', u'-', [(None,u'(.*lam)pi',u'toholampi')]),
Packit 1f3717
	(u'suksi', u'-', [(None,u'(.*u)ksi',u'suksi')]),
Packit 1f3717
	(u'veli', u'-', [(None,u'(.*el)i',u'veli')]),
Packit 1f3717
	(u'nalle', u'sw', [(None,u'(.*Ce)',u'nalle'),
Packit 1f3717
			 (None,u'(.*Cé)',u'nalle'),
Packit 1f3717
		         (None,u'(.*[iu]e)',u'nalle'),
Packit 1f3717
		         (u'tt',u'(.*t)te',u'atte'),
Packit 1f3717
		         (u'kk',u'(.*k)ke',u'nukke')]),
Packit 1f3717
	(u'kala', u'sw',   [(None,u'(.*)A',u'kala'),
Packit 1f3717
			(u'tt',u'(.*t)tA',u'aitta'),
Packit 1f3717
			(u'nk',u'(.*n)kA',u'hanka'),
Packit 1f3717
			(u'mp',u'(.*m)pA',u'kampa'),
Packit 1f3717
			(u'nt',u'(.*n)tA',u'kanta'),
Packit 1f3717
			(u'pp',u'(.*p)pA',u'kappa'),
Packit 1f3717
			(u'rt',u'(.*r)tA',u'parta'),
Packit 1f3717
			(u'lt',u'(.*l)tA',u'valta'),
Packit 1f3717
			(u'kk',u'(.*k)kA',u'haka'),
Packit 1f3717
			(u'p',u'(.*)pA',u'napa'),
Packit 1f3717
			(u't',u'(.*)tA',u'pata'),
Packit 1f3717
			(u'k>j',u'(.*A)ikA',u'aika'),
Packit 1f3717
			(u'k>',u'(.*AA)kA',u'raaka'),
Packit 1f3717
			(u'k>',u'(.*V)kA',u'liika'),
Packit 1f3717
			(u'k>',u'(.*C)kA',u'haka')]),
Packit 1f3717
	(u'nahka', u'-', [(None,u'(.*)kA',u'nahka')]),
Packit 1f3717
	(u'jumala', u'-', [(None,u'(.*l)A',u'jumala')]),
Packit 1f3717
	(u'koira', u'sw',   [(None,u'(.*)A',u'koira'),
Packit 1f3717
			(u'tt',u'(.*t)tA',u'kenttä'),
Packit 1f3717
			(u'nk',u'(.*n)kA',u'honka'),
Packit 1f3717
			(u'mp',u'(.*m)pA',u'kompa'),
Packit 1f3717
			(u'nt',u'(.*n)tA',u'suunta'),
Packit 1f3717
			(u'pp',u'(.*p)pA',u'tolppa'),
Packit 1f3717
			(u'rt',u'(.*r)tA',u'turta'),
Packit 1f3717
			(u'lt',u'(.*l)tA',u'kulta'),
Packit 1f3717
			(u'kk',u'(.*k)kA',u'hoikka'),
Packit 1f3717
			(u'p',u'(.*)pA',u'huopa'),
Packit 1f3717
			(u't',u'(.*)tA',u'juhta'),
Packit 1f3717
			(u'k>',u'(.*i)kA',u'ikä'),
Packit 1f3717
			(u'k>',u'(.*)kA',u'hoikka')]),
Packit 1f3717
	(u'ylkä', u'-', [(None,u'(.*l)kA',u'ylkä')]),
Packit 1f3717
	(u'pitkä', u'-', [(None,u'(.*pi)tkA',u'pitkä')]),
Packit 1f3717
	(u'ruoka', u'-', [(None,u'(.*ru)oka',u'ruoka')]),
Packit 1f3717
	(u'poika', u'-', [(None,u'(.*po)ikA',u'poika')]),
Packit 1f3717
	(u'matala', u'-', [(None,u'(.*C)A',u'matala')]),
Packit 1f3717
	(u'asema', u'sw',  [(None,u'(.*)A',u'asema'),
Packit 1f3717
			(u'tt',u'(.*t)tA',u'opotta'),
Packit 1f3717
			(u'nt',u'(.*n)tA',u'emäntä')]),
Packit 1f3717
	(u'kulkija', u'-', [(None,u'(.*i)jA',u'kulkija'),
Packit 1f3717
			(None,u'(.*)A',u'apila')]),
Packit 1f3717
	(u'video', u'-', [(None,u'(.*deO)',u'video')]),
Packit 1f3717
	(u'karahka', u'sw', [(None,u'(.*)A',u'karahka'),
Packit 1f3717
			(u'tt',u'(.*t)tA',u'savotta'),
Packit 1f3717
			(u'pp',u'(.*p)pA',u'ulappa'),
Packit 1f3717
			(u'kk',u'(.*k)kA',u'solakka'),
Packit 1f3717
		        (u'nt',u'(.*n)tA',u'veranta')]),
Packit 1f3717
	(u'apaja', u'-', [(None,u'(.*C)A',u'apaja')]),
Packit 1f3717
	(u'peruna', u'-', [(None,u'(.*C)A',u'peruna')]),
Packit 1f3717
	(u'korkea', u'-', [(None,u'(.*C)eA',u'korkea'),
Packit 1f3717
		         (None,u'(.*O)A',u'ainoa')]),
Packit 1f3717
	(u'suurempi', u'sw', [(u'mp',u'(.*V)mpi',u'suurempi')]),
Packit 1f3717
	(u'vapaa', u'-', [(None,u'(.*CA)A',u'vapaa'),
Packit 1f3717
		        (None,u'(.*CO)O',u'tienoo'),
Packit 1f3717
		        (None,u'(.*CU)U',u'leikkuu')]),
Packit 1f3717
	(u'kamee', u'-',   [(None,u'(.*Ce)e',u'kamee'),
Packit 1f3717
			(None,u'(.*CA)A',u'nugaa'),
Packit 1f3717
			(None,u'(.*CO)O',u'trikoo'),
Packit 1f3717
			(None,u'(.*CU)U',u'revyy')]),
Packit 1f3717
	(u'pii', u'-', [(None,u'(.*V)i',u'pii'),
Packit 1f3717
		      (None,u'(.*A)A',u'maa'),
Packit 1f3717
		      (None,u'(.*Ce)e',u'tee'),
Packit 1f3717
		      (None,u'(.*U)U',u'puu')]),
Packit 1f3717
	(u'suo', u'-', [(None,u'(.*C)UO',u'suo')]),
Packit 1f3717
	(u'askel', u'ws', [(None,u'(.*VC)',u'askel'),
Packit 1f3717
		         (u'nn',u'(.*n)nel',u'kannel'),
Packit 1f3717
		         (u'nn',u'(.*n)ner',u'kinner'),
Packit 1f3717
		         (u'nn',u'(.*n)nAr',u'piennar'),
Packit 1f3717
		         (u'mm',u'(.*m)mel',u'ommel'),
Packit 1f3717
		         (u'ng',u'(.*n)ger',u'penger'),
Packit 1f3717
		         (u'd',u'(.*)dAr',u'udar'),
Packit 1f3717
		         (u'v',u'(.*)vAl',u'taival'),
Packit 1f3717
		         (u'>k',u'(.*)en',u'säen')]),
Packit 1f3717
	(u'rosé', u'-', [(None,u'(.*V)',u'rosé')]),
Packit 1f3717
	(u'spray', u'-', [(None,u'(.*[ao]y)',u'spray')]),
Packit 1f3717
	(u'parfait', u'-', [(None,u'(.*)',u'parfait')]),
Packit 1f3717
	(u'huuli', u'-', [(None,u'(.*C)i',u'tuohi')]),
Packit 1f3717
	(u'meri', u'-', [(None,u'(.*er)i',u'meri')]),
Packit 1f3717
	(u'tuohi', u'-', [(None,u'(.*C)i',u'lohi')]),
Packit 1f3717
	(u'niemi', u'-', [(None,u'(.*V)mi',u'niemi')]),
Packit 1f3717
	(u'pieni', u'-', [(None,u'(.*n)i',u'pieni')]),
Packit 1f3717
	(u'lumi', u'-', [(None,u'(.*V)mi',u'lumi')]),
Packit 1f3717
	(u'susi', u'-', [(None,u'(.*V)si',u'susi')]),
Packit 1f3717
	(u'tosi', u'-', [(None,u'(.*V)si',u'tosi')]),
Packit 1f3717
	(u'kansi', u'-', [(None,u'(.*n)si',u'kansi'),
Packit 1f3717
	                  (None,u'(.*r)si',u'hirsi'),
Packit 1f3717
		        (None,u'(.*l)si',u'jälsi')]),
Packit 1f3717
	(u'sisar', u'ws', [(None,u'(.*CVC)',u'sisar'),
Packit 1f3717
		         (u't',u'(.*t)Ar',u'tytär'),
Packit 1f3717
		         (u'>k',u'(.*i)en',u'ien')]),
Packit 1f3717
	(u'hapan', u'-', [(None,u'(.*p)An',u'hapan')]),
Packit 1f3717
	(u'uistin', u'ws', [(None,u'(.*[iaä])n',u'uistin'),
Packit 1f3717
	                    (u'nn',u'(.*n)nin',u'vaimennin'),
Packit 1f3717
		          (u'll',u'(.*l)lin',u'sivellin'),
Packit 1f3717
		          (u'rr',u'(.*r)rin',u'kiharrin'),
Packit 1f3717
		          (u'rr',u'(.*r)rOin',u'kerroin'),
Packit 1f3717
		          (u'd',u'(.*)din',u'kaadin'),
Packit 1f3717
		          (u'v',u'(.*)vin',u'kaavin'),
Packit 1f3717
			  (u't',u'(.*t)in',u'suodatin'),
Packit 1f3717
			  (u'k',u'(.*k)in',u'puin'),
Packit 1f3717
		          (u'j>k',u'(.*l)jin',u'poljin'),
Packit 1f3717
		          (u'>k',u'(.*)in',u'puin')]),
Packit 1f3717
	(u'laidun', u'-', [(None,u'(.*)dUn',u'laidun')]),
Packit 1f3717
	(u'onneton', u'ws', [(None,u'(.*t)On',u'alaston'),
Packit 1f3717
	                     (u't',u'(.*t)On',u'onneton')]),
Packit 1f3717
	(u'lämmin', u'-', [(None,u'(.*m)min',u'lämmin')]),
Packit 1f3717
	(u'vasen', u'-', [(None,u'(.*e)n',u'vasen')]),
Packit 1f3717
	(u'sisin', u'', [(None,u'(.*)in',u'pahin')]),
Packit 1f3717
	(u'nainen', u'-', [(None,u'(.*)nen',u'nainen')]),
Packit 1f3717
	(u'vastaus', u'-', [(None,u'(.*V)s',u'vastaus')]),
Packit 1f3717
	(u'kalleus', u'-', [(None,u'(.*VU)s',u'kalleus'),
Packit 1f3717
	                    (None,u'(.*vU)s',u'kalleus')]),
Packit 1f3717
	(u'kaunis', u'-', [(None,u'(.*C)is',u'kaunis')]),
Packit 1f3717
	(u'autuas', u'-', [(None,u'(.*U)As',u'autuas')]),
Packit 1f3717
	(u'laupias', u'-', [(None,u'(.*p)iAs',u'laupias')]),
Packit 1f3717
	(u'vieras', u'ws', [(None,u'(.*[lmr]i[aä])s',u'antelias'),
Packit 1f3717
		            (None,u'(.*il[aä])s',u'antelias'),
Packit 1f3717
		            (None,u'(.*A)s',u'vieras'),
Packit 1f3717
	                    (None,u'(.*)is',u'kauris'),
Packit 1f3717
			(None,u'(.*e)s',u'kirves'),
Packit 1f3717
	                    (u'nn',u'(.*n)nAs',u'kinnas'),
Packit 1f3717
		          (u'll',u'(.*l)lAs',u'allas'),
Packit 1f3717
		          (u'rr',u'(.*r)rAs',u'harras'),
Packit 1f3717
		          (u'mm',u'(.*m)mAs',u'hammas'),
Packit 1f3717
		          (u'ng',u'(.*n)gAs',u'kangas'),
Packit 1f3717
			(u'k',u'(.*k)As',u'avokas',[SUBST]),
Packit 1f3717
			(u'k',u'(.*k)As',u'vilkas',[ADJ]),
Packit 1f3717
		          (u'p',u'(.*p)As',u'saapas'),
Packit 1f3717
		          (u'd',u'(.*)dAs',u'ahdas'),
Packit 1f3717
		          (u'v',u'(.*)vAs',u'varvas'),
Packit 1f3717
		          (u't',u'(.*t)As',u'ratas'),
Packit 1f3717
			(u't',u'(.*t)is',u'altis'),
Packit 1f3717
		          (u'>k',u'(.*)As',u'varas'),
Packit 1f3717
			(u'>k',u'(.*)is',u'ruis'),
Packit 1f3717
			(u'>k',u'(.*)es',u'ies')]),
Packit 1f3717
	(u'iäkäs', u'ws', [(u'k',u'(.*k)As',u'iäkäs',[ADJ]),
Packit 1f3717
		         (u'k',u'(.*k)As',u'asiakas',[SUBST])]),
Packit 1f3717
	(u'ohut', u'-', [(None,u'(.*CU)t',u'airut')]),
Packit 1f3717
	(u'kevät', u'-', [(None,u'(.*A)t',u'kevät')]),
Packit 1f3717
	(u'mies', u'-', [(None,u'(.*mie)s',u'mies')]),
Packit 1f3717
	(u'kuollut', u'-', [(None,u'(.*C)Ut',u'kuollut')]),
Packit 1f3717
	(u'hame', u'ws', [(None,u'(.*e)',u'hame'),
Packit 1f3717
	                  (u'nn',u'(.*n)ne',u'enne'),
Packit 1f3717
		        (u'll',u'(.*l)le',u'helle'),
Packit 1f3717
		        (u'rr',u'(.*r)re',u'kierre'),
Packit 1f3717
		        (u'mm',u'(.*m)me',u'lumme'),
Packit 1f3717
		        (u'j>k',u'(.*C)je',u'lahje'),
Packit 1f3717
		        (u'p',u'(.*p)e',u'lape'),
Packit 1f3717
		        (u'd',u'(.*)de',u'sade'),
Packit 1f3717
		        (u'v',u'(.*)ve',u'taive'),
Packit 1f3717
		        (u'k',u'(.*k)e',u'tarvike'),
Packit 1f3717
		        (u'>k',u'(.*V)e',u'tarvike'),
Packit 1f3717
		        (u'>k',u'(.*h)e',u'tarvike'),
Packit 1f3717
		        (u't',u'(.*Vt)e',u'vaate'),
Packit 1f3717
		        (u't',u'(.*lt)e',u'vaate'),
Packit 1f3717
		        (u't',u'(.*rt)e',u'vaate')]),
Packit 1f3717
	(u'alkeet', u'-', [(None,u'(.*ke)et',u'alkeet')]),
Packit 1f3717
	(u'tie', u'-', [(None,u'(.*t)ie',u'tie')]),
Packit 1f3717
	(u'lapsi', u'-', [(None,u'(.*)psi',u'lapsi')]),
Packit 1f3717
	(u'hapsi', u'-', [(None,u'(.*)psi',u'hapsi')]),
Packit 1f3717
	(u'loppu', u'-', [(None,u'(.*)',u'loppu')]),
Packit 1f3717
	(u'veitsi', u'-', [(None,u'(.*)tsi',u'veitsi')]),
Packit 1f3717
	# Verbs
Packit 1f3717
	(u'punoa', u'sw', [(None,u'(.*)A',u'punoa'),
Packit 1f3717
	                   (u'mp',u'(.*m)pUA',u'ampua'),
Packit 1f3717
	                   (u'mp',u'(.*m)pOA',u'tempoa'),
Packit 1f3717
		         (u'tt',u'(.*t)tUA',u'asettua'),
Packit 1f3717
		         (u'tt',u'(.*t)tOA',u'viittoa'),
Packit 1f3717
		         (u'kk',u'(.*k)kOA',u'aikoa'),
Packit 1f3717
		         (u'kk',u'(.*k)kUA',u'kiekua'),
Packit 1f3717
		         (u'pp',u'(.*p)pOA',u'harppoa'),
Packit 1f3717
		         (u'pp',u'(.*p)pUA',u'kieppua'),
Packit 1f3717
		         (u'nt',u'(.*n)tUA',u'jakaantua'),
Packit 1f3717
		         (u'rt',u'(.*r)tOA',u'kertoa'),
Packit 1f3717
		         (u'rt',u'(.*r)tUA',u'kumartua'),
Packit 1f3717
		         (u'nk',u'(.*n)kUA',u'mankua'),
Packit 1f3717
		         (u'nk',u'(.*n)kOA',u'penkoa'),
Packit 1f3717
		         (u'lt',u'(.*l)tUA',u'paleltua'),
Packit 1f3717
		         (u't',u'(.*)tUA',u'kaatua'),
Packit 1f3717
		         (u't',u'(.*)tOA',u'tahtoa'),
Packit 1f3717
		         (u'p',u'(.*)pOA',u'leipoa'),
Packit 1f3717
		         (u'p',u'(.*)pUA',u'saapua'),
Packit 1f3717
		         (u'k>',u'(.*U)kUA',u'liukua'),
Packit 1f3717
		         (u'k>',u'(.*)kOA',u'aikoa'),
Packit 1f3717
		         (u'k>',u'(.*)kUA',u'kiekua')]),
Packit 1f3717
	(u'aavistaa', u'sw', [(None,u'(.*t)AA',u'aavistaa'),
Packit 1f3717
	                      (u'rt',u'(.*r)tAA',u'longertaa'),
Packit 1f3717
	                      (u'tt',u'(.*t)tAA',u'alittaa'),
Packit 1f3717
			  (u't',u'(.*h)tAA',u'astahtaa')]),
Packit 1f3717
	(u'hidastaa', u'-', [(None,u'(.*t)AA',u'hidastaa')]),
Packit 1f3717
	(u'heittää', u'sw', [(u'tt',u'(.*t)tAA',u'heittää')]),
Packit 1f3717
	(u'muistaa', u'-', [(None,u'(.*C)AA',u'muistaa')]),
Packit 1f3717
	(u'inttää', u'sw', [(u'tt',u'(.*t)tAA',u'inttää'),
Packit 1f3717
	                    (u't',u'(.*)tAA',u'itää')]),
Packit 1f3717
	(u'sulaa', u'sw', [(None,u'(.*C)AA',u'sulaa'),
Packit 1f3717
	                   (u'nt',u'(.*n)tAA',u'kyntää'),
Packit 1f3717
		         (u'tt',u'(.*t)tAA',u'autioittaa'),
Packit 1f3717
		         (u't',u'(.*h)tAA',u'kulahtaa'),
Packit 1f3717
		         (u'k>',u'(.*C)kAA',u'purkaa')]),
Packit 1f3717
	(u'hohtaa', u'sw', [(u'tt',u'(.*t)tAA',u'jättää'),
Packit 1f3717
	                    (u't',u'(.*)tAA',u'hohtaa')]),
Packit 1f3717
	(u'hujahtaa', u'sw', [(u't',u'(.*V)htAA',u'hujahtaa')]),
Packit 1f3717
	(u'kirjoittaa', u'sw', [(u'tt',u'(.*V)ittAA',u'kirjoittaa'),
Packit 1f3717
			    (u'tt',u'(.*V)ttAA',u'ammottaa')]),
Packit 1f3717
	(u'loistaa', u'-', [(None,u'(.*C)AA',u'loistaa')]),
Packit 1f3717
	(u'vuotaa', u'sw', [(u'lt',u'(.*Vl)tAA',u'puoltaa'),
Packit 1f3717
			(u'rt',u'(.*Vr)tAA',u'juurtaa'),
Packit 1f3717
			(u'nt',u'(.*Vn)tAA',u'saksantaa'),
Packit 1f3717
			(u't',u'(.*V)tAA',u'vuotaa')]),
Packit 1f3717
	(u'huutaa', u'sw', [(u'nt',u'(.*Vn)tAA',u'alentaa'),
Packit 1f3717
			(u't',u'(.*V)tAA',u'huutaa')]),
Packit 1f3717
	(u'sukeltaa', u'sw', [(u'lt',u'(.*Vl)tAA',u'sukeltaa'),
Packit 1f3717
			  (u'rt',u'(.*Vr)tAA',u'musertaa'),
Packit 1f3717
			  (u'nt',u'(.*Vn)tAA',u'jäykentää')]),
Packit 1f3717
	(u'paleltaa', u'sw', [(u'lt',u'(.*Vl)tAA',u'paleltaa'),
Packit 1f3717
			  (u'nt',u'(.*Vn)tAA',u'nuotintaa')]),
Packit 1f3717
	(u'murtaa', u'sw', [(u'rt',u'(.*Vr)tAA',u'murtaa')]),
Packit 1f3717
	(u'juontaa', u'sw', [(u'nt',u'(.*Vn)tAA',u'juontaa'),
Packit 1f3717
			 (u'rt',u'(.*Vr)tAA',u'pyörtää')]),
Packit 1f3717
	(u'pahentaa', u'sw', [(u'nt',u'(.*Vn)tAA',u'pahentaa')]),
Packit 1f3717
	(u'kaivaa', u'sw', [(None,u'(.*C)AA',u'kaivaa'),
Packit 1f3717
	                    (u'nt',u'(.*n)tAA',u'antaa'),
Packit 1f3717
			(u'pp',u'(.*p)pAA',u'lappaa'),
Packit 1f3717
			(u'tt',u'(.*t)tAA',u'saattaa'),
Packit 1f3717
			(u'kk',u'(.*k)kAA',u'jakaa'),
Packit 1f3717
			(u'k>',u'(.*)kAA',u'jakaa'),
Packit 1f3717
			(u't',u'(.*)tAA',u'raataa')]),
Packit 1f3717
	(u'kaikaa', u'-', [(None,u'(.*C)AA',u'kapsaa')]),
Packit 1f3717
	(u'soutaa', u'sw', [(u't',u'(.*)tAA',u'soutaa')]),
Packit 1f3717
	(u'saartaa', u'-', [(None,u'(.*r)tAA',u'saartaa')]),
Packit 1f3717
	(u'laskea', u'sw', [(None,u'(.*C)eA',u'laskea'),
Packit 1f3717
	                    (u'nk',u'(.*n)keA',u'tunkea'),
Packit 1f3717
			(u't',u'(.*)teA',u'kutea'),
Packit 1f3717
			(u'kk',u'(.*k)keA',u'hakea'),
Packit 1f3717
			(u'p',u'(.*)peA',u'rypeä'),
Packit 1f3717
			(u'k>j',u'(.*)keA',u'polkea'),
Packit 1f3717
			(u'k>',u'(.*)keA',u'hakea')]),
Packit 1f3717
	(u'tuntea', u'sw', [(u'nt',u'(.*tUn)teA',u'tuntea')]),
Packit 1f3717
	(u'lähteä', u'sw', [(u't',u'(.*lA)hteA',u'lähteä')]),
Packit 1f3717
	(u'sallia', u'sw', [(None,u'(.*C)iA',u'sallia'),
Packit 1f3717
			(u'nk',u'(.*n)kiA',u'onkia'),
Packit 1f3717
			(u'mp',u'(.*m)piA',u'empiä'),
Packit 1f3717
			(u'nt',u'(.*n)tiA',u'kontia'),
Packit 1f3717
			(u'pp',u'(.*p)piA',u'oppia'),
Packit 1f3717
			(u'kk',u'(.*k)kiA',u'loikkia'),
Packit 1f3717
			(u'tt',u'(.*t)tiA',u'sättiä'),
Packit 1f3717
			(u't',u'(.*)tiA',u'laatia'),
Packit 1f3717
			(u'p',u'(.*)piA',u'kaapia'),
Packit 1f3717
			(u'k>j',u'(.*)kiA',u'hylkiä'),
Packit 1f3717
			(u'k>',u'(.*i)kiA',u'poikia'),
Packit 1f3717
			(u'k>',u'(.*)kiA',u'loikkia')]),
Packit 1f3717
	(u'voida', u'ws', [(u't',u'(.*)idA',u'voida')]),
Packit 1f3717
	(u'käydä', None, [(None,u'(.*)UdA',u'käydä')]),
Packit 1f3717
	(u'kanavoida', u'ws', [(u't',u'(.*O)idA',u'kanavoida')]),
Packit 1f3717
	(u'saada', u'-', [(None,u'(.*CA)AdA',u'saada'),
Packit 1f3717
	                  (None,u'(.*CU)UdA',u'myydä')]),
Packit 1f3717
	(u'juoda', u'-', [(None,u'(.*C)UOdA',u'juoda'),
Packit 1f3717
		        (None,u'(.*C)iedA',u'viedä')]),
Packit 1f3717
	(u'nuolaista', u'ws', [(None,u'(CAis)tA',u'nousta'),
Packit 1f3717
			   (None,u'(.*CA)istA',u'nuolaista'),
Packit 1f3717
			   (None,u'(.*C)istA',u'kalista'),
Packit 1f3717
			   (None,u'(.*s)tA',u'nousta'),
Packit 1f3717
			   (u'v',u'(.*)vistA',u'vavista'),
Packit 1f3717
			   (u'ng',u'(.*n)gAistA',u'rangaista')]),
Packit 1f3717
	(u'mennä', u'-', [(None,u'(.*n)nA',u'mennä')]),
Packit 1f3717
	(u'purra', u'-', [(None,u'(.*r)rA',u'purra')]),
Packit 1f3717
	(u'katsella', u'ws', [(None,u'(.*Ael)lA',u'arvailla'),
Packit 1f3717
			(None,u'(.*el)lA',u'katsella'),
Packit 1f3717
			(None,u'(.*eil)lA',u'katsella'),
Packit 1f3717
			(None,u'(.*Vil)lA',u'arvailla'),
Packit 1f3717
			(None,u'(.*il)lA',u'katsella'),
Packit 1f3717
			(None,u'(.*Ol)lA',u'tulla'),
Packit 1f3717
			(None,u'(.*Ul)lA',u'tulla'),
Packit 1f3717
			(u'mm',u'(.*m)mellA',u'ommella'),
Packit 1f3717
			(u'rr',u'(.*r)rellA',u'askarrella'),
Packit 1f3717
			(u'nn',u'(.*n)nellA',u'pienennellä'),
Packit 1f3717
			(u'll',u'(.*l)lellA',u'takellella'),
Packit 1f3717
			(u'k',u'(.*k)ellA',u'nakella'),
Packit 1f3717
			(u't',u'(.*t)ellA',u'aatella'),
Packit 1f3717
			(u'p',u'(.*p)ellA',u'tapella'),
Packit 1f3717
			(u'd',u'(.*)dellA',u'kohdella'),
Packit 1f3717
			(u'>k',u'(.*)ellA',u'nakella')]),
Packit 1f3717
	(u'haravoida', u'ws', [(u't',u'(.*O)idA',u'haravoida')]),
Packit 1f3717
	(u'valita', u'-', [(None,u'(.*i)tA',u'valita')]),
Packit 1f3717
	(u'saneerata', u'-', [(None,u'(.*C)AtA',u'saneerata')]),
Packit 1f3717
	(u'aleta', u'ws',  [(None,u'(.*CV)tA',u'aleta'),
Packit 1f3717
	                    (u'mm',u'(.*m)metA',u'lämmetä'),
Packit 1f3717
			(u't',u'(.*t)OtA',u'loitota'),
Packit 1f3717
			(u'p',u'(.*p)AtA',u'hapata'),
Packit 1f3717
			(u'p',u'(.*p)etA',u'suipeta'),
Packit 1f3717
			(u'k',u'(.*k)etA',u'vaieta'),
Packit 1f3717
			(u'd',u'(.*)detA',u'edetä'),
Packit 1f3717
			(u'd',u'(.*)dOtA',u'leudota'),
Packit 1f3717
			(u'd',u'(.*)dAtA',u'mädätä'),
Packit 1f3717
			(u'v',u'(.*)vetA',u'kaveta'),
Packit 1f3717
			(u'j>k',u'(.*)jetA',u'tarjeta'),
Packit 1f3717
			(u'>k',u'(.*)OtA',u'ulota'),
Packit 1f3717
			(u'>k',u'(.*)AtA',u'erata'),
Packit 1f3717
			(u'>k',u'(.*)etA',u'vaieta')]),
Packit 1f3717
	(u'haluta', u'ws', [(None,u'(.*C)itA',u'selvitä'),
Packit 1f3717
			(None,u'(.*gO)tA',u'bingota'),
Packit 1f3717
			(None,u'(.*U)tA',u'haluta'),
Packit 1f3717
			(u'll',u'(.*l)litA',u'hellitä'),
Packit 1f3717
			(u'mm',u'(.*m)mitA',u'lämmitä'),
Packit 1f3717
			(u'p',u'(.*p)UtA',u'silputa'),
Packit 1f3717
			(u'v',u'(.*)vUtA',u'vivuta'),
Packit 1f3717
			(u'>k',u'(.*)itA',u'keritä')]),
Packit 1f3717
	(u'juoruta', u'ws', [(None,u'(.*U)tA',u'juoruta'),
Packit 1f3717
			(u'mm',u'(.*m)mUtA',u'kummuta'),
Packit 1f3717
			(u't',u'(.*t)UtA',u'luututa'),
Packit 1f3717
			(u'p',u'(.*p)UtA',u'ryöpytä'),
Packit 1f3717
			(u'k',u'(.*k)UtA',u'takuta'),
Packit 1f3717
			(u'v',u'(.*)vUtA',u'kavuta')]),
Packit 1f3717
	(u'salata', u'ws', [(None,u'(.*)AtA',u'salata'),
Packit 1f3717
	                    (u'ng',u'(.*n)gAtA',u'hangata'),
Packit 1f3717
			(u'mm',u'(.*m)mAtA',u'kammata'),
Packit 1f3717
			(u'rr',u'(.*r)rAtA',u'kerrata'),
Packit 1f3717
			(u'nn',u'(.*n)nAtA',u'suunnata'),
Packit 1f3717
			(u'll',u'(.*l)lAtA',u'vallata'),
Packit 1f3717
			(u'b',u'(.*b)AtA',u'lobata'),
Packit 1f3717
			(u'g',u'(.*g)AtA',u'digata'),
Packit 1f3717
			(u'v',u'(.*)vAtA',u'kelvata'),
Packit 1f3717
			(u't',u'(.*t)AtA',u'kuitata'),
Packit 1f3717
			(u'd',u'(.*)dAtA',u'ladata'),
Packit 1f3717
			(u'j>k',u'(.*)jAtA',u'peljätä'),
Packit 1f3717
			(u'k',u'(.*k)AtA',u'pakata'),
Packit 1f3717
			(u'p',u'(.*p)AtA',u'pompata'),
Packit 1f3717
			(u'>k',u'(.*)AtA',u'taata')]),
Packit 1f3717
	(u'katketa', u'ws', [(None,u'(.*[oe])tA',u'katketa'),
Packit 1f3717
	                     (u'mm',u'(.*m)metA',u'kammeta'),
Packit 1f3717
			 (u'ng',u'(.*n)getA',u'langeta'),
Packit 1f3717
			 (u't',u'(.*t)OtA',u'lotota'),
Packit 1f3717
			 (u'k',u'(.*k)etA',u'poiketa'),
Packit 1f3717
			 (u'v',u'(.*)vetA',u'ruveta'),
Packit 1f3717
			 (u'd',u'(.*)detA',u'todeta'),
Packit 1f3717
			 (u'j>k',u'(.*)jetA',u'lohjeta'),
Packit 1f3717
			 (u'>k',u'(.*)OtA',u'saota'),
Packit 1f3717
			 (u'>k',u'(.*)etA',u'poiketa')]),
Packit 1f3717
	(u'kohota', u'ws', [(None,u'(.*O)tA',u'kohota'),
Packit 1f3717
	                    (u'rr',u'(.*r)rOtA',u'irrota'),
Packit 1f3717
			(u'mm',u'(.*m)mOtA',u'kimmota'),
Packit 1f3717
			(u'ng',u'(.*n)gOtA',u'lingota'),
Packit 1f3717
			(u't',u'(.*t)OtA',u'netota'),
Packit 1f3717
			(u'p',u'(.*p)OtA',u'upota'),
Packit 1f3717
			(u'v',u'(.*r)vOtA',u'turvota'),
Packit 1f3717
			(u'k',u'(.*Vk)OtA',u'laota'),
Packit 1f3717
			(u'd',u'(.*)dOtA',u'kadota'),
Packit 1f3717
			(u'>k',u'(.*)OtA',u'laota')]),
Packit 1f3717
	(u'kihistä', u'-', [(None,u'(.*C)istA',u'kihistä')]),
Packit 1f3717
	(u'kitistä', u'-', [(None,u'(.*C)istA',u'kitistä')]),
Packit 1f3717
	(u'taitaa', u'-', [(None,u'(.*)tAA',u'taitaa')]),
Packit 1f3717
	(u'juosta', u'-', [(None,u'(.*V)stA',u'juosta')]),
Packit 1f3717
	(u'nähdä', u'-', [(None,u'(.*)hdA',u'nähdä')]),
Packit 1f3717
	(u'kevetä', u'-', [(None,u'(.*)vetA',u'kevetä')])
Packit 1f3717
	]
Packit 1f3717
Packit 1f3717
def compileClassmapREs(inputClassmap):
Packit 1f3717
	"""Converts a classmap to a form where regular expressions have been
Packit 1f3717
	compiled to regular expression objects"""
Packit 1f3717
	outputClassmap = []
Packit 1f3717
	for joClass in inputClassmap:
Packit 1f3717
		ruleList = []
Packit 1f3717
		for inputRule in joClass[2]:
Packit 1f3717
			pattern = inputRule[1]
Packit 1f3717
			pattern = pattern.replace(u'V', u'(?:a|á|e|i|o|u|y|ä|ö|é)')
Packit 1f3717
			pattern = pattern.replace(u'C', u'(?:b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|y|z|š|ž)')
Packit 1f3717
			pattern = pattern.replace(u'A', u'(?:a|ä)')
Packit 1f3717
			pattern = pattern.replace(u'O', u'(?:o|ö)')
Packit 1f3717
			pattern = pattern.replace(u'U', u'(?:u|y)')
Packit 1f3717
			regExp = re.compile(u'^' + pattern + u'$', re.IGNORECASE)
Packit 1f3717
			outputRule = (inputRule[0], regExp, inputRule[2])
Packit 1f3717
			if len(inputRule) == 4:
Packit 1f3717
				outputRule = (inputRule[0], regExp, inputRule[2], inputRule[3])
Packit 1f3717
			ruleList.append(outputRule)
Packit 1f3717
		outputClassmap.append((joClass[0], joClass[1], ruleList))
Packit 1f3717
	return outputClassmap
Packit 1f3717
Packit 1f3717
def match_re(string, regExp):
Packit 1f3717
	match = regExp.match(string)
Packit 1f3717
	if match == None: return None
Packit 1f3717
	else: return match.group(1)