SFST magyar főnévragozás

A Programozás Wiki wikiből
%%%%%%%%%%%%%% rag1.fst %%%%%%%%%%%%%%%%%%%
% http://wiki.prog.hu/wiki/SFST_magyar_főnévragozás
%%%%%%%%%%%%%% cases, ragozás for Hungarian (simplified first version) %%%%%%%%%%%
% dat nak, nek
% acc t, ot, et, öt
% ill ba
% ine ban
% ela ból
% all hoz, hez, höz
% ade nál
% abl tól
% sub ra
% sup n, on, en, ön
% del ról
% ter ig
% ess ul
% for ként
% tem kor
% cau ért
% soc stul, stül
% fac á, vá
% dis nként
%%% consonant ending
% vér
% szar
% szőr
% fa
% csere
%%%%%%%%%%%%%%% symbols %%%%%%%%%%%%%%%%%%%%
#cons# = bcdfghjklmnprstvwxyz
#vowel# = aeiouáéíówúöüőű
#magas# = eéiíöőüű
#magas1# = eéií
#mely# = aáouóú
#mely1# = ouóú
#oe# = öüőű
#aa# = aá
%%%%%%%%%%%%%%% vocal harmony - HU plural %%%%%%%%%%%%%%%%%%%%
ALPHABET = [#cons#] [#vowel#] <AA>:e <AA>:a  \
         <AAA>:é <AAA>:á <oooe>:ó <oooe>:ő \
         <oeoe>:e <oeoe>:ö <oeoe>:o  \
         <uue>:u <uue>:ü <VV>:v <VV>:<>  \
         <EOA>:e <EOA>:o <EOA>:a <EOA>:ö <EOA>:<> \
         <Noun>
$As$ =  ([#mely#] [#cons#]+ <Noun> .*) <AA> <=>  a
$As2$ = ([#magas#] [#cons#]+ <Noun> .*) <AA> <=>  e
$Del_pV$ = .*
$ma1$ = $As$ &  $As2$ 
$Bs1$ =  ([#mely#] [#cons#]* <Noun> .*) <oooe> <=>  ó
$ma2$ = $Bs1$ 
$Cs1$ =  ([#mely#] [#cons#]* <Noun> .*) <AAA> <=>  á
$ma3$ = $Cs1$ 
$Ds1$ =  ([#mely#] [#cons#]* <Noun> .*) <oeoe> <=>  o
$Ds2$ =  ([#magas1#] [#cons#]* <Noun> .*) <oeoe> <=>  e
$Ds3$ =  ([#oe#] [#cons#]* <Noun> .*) <oeoe> <=>  ö
$ma4$ = $Ds1$ & $Ds2$ & $Ds3$ 
$Es1$ =  ([#mely#] [#cons#]* <Noun> .*) <uue> <=>  u
$ma5$ = $Es1$ 
$Fs1$ =  ([#mely1#] [#cons#]* <Noun> .*) <EOA> <=>  o
$Fs2$ =  ([#aa#] [#cons#]* <Noun> .*) <EOA> <=>  a
$Fs3$ =  ([#magas1#] [#cons#]* <Noun> .*) <EOA> <=>  e
$Fs4$ =  ([#oe#] [#cons#]* <Noun> .*) <EOA> <=>  ö
$ma6$ = $Fs1$ & $Fs2$ & $Fs3$ & $Fs4$ 

$ma$ = ($ma1$ & $ma2$ & $ma3$ & $ma4$ & $ma5$ & $ma6$) || $Del_pV$

% a to á and e to é if word ends with a or e
ALPHABET = [#cons#] [#vowel#] <Verb><Noun><Adj> <pl>
$a-to-aa$ = {a}:{á} ^-> (__ [<Noun>] [^k].*)
$e-to-ee$ = {e}:{é} ^-> (__ [<Noun>] [^k].*)
% delete pos tags
ALPHABET = [#cons#] [#vowel#] [<Verb><Noun><Adj>]:<>
$delete-POS$ =  .*

% <Noun> is needed to see the word''s end
$noun-reg-infl$ = <Noun> (\
  {<nom>}:{} |\
  {<dat>}:{n<AA>k} |\
  {<acc>}:{<oeoe>t} |\
  {<ill>}:{b<AA>} |\
  {<ine>}:{b<AA>n} |\
  {<ela>}:{b<oooe>l} |\
  {<all>}:{h<oeoe>z} |\
  {<ade>}:{n<AAA>l} |\
  {<abl>}:{t<oooe>l} |\
  {<sup>}:{<oeoe>n} |\
  {<del>}:{r<oooe>l} |\
  {<ter>}:{ig} |\
  {<ess>}:{<uue>l} |\
  {<for>}:{ként} |\
  {<tem>}:{kor} |\
  {<cau>}:{ért} |\
  {<soc>}:{<EOA>st<uue>l} |\
  {<fac>}:{<VV><AAA>} |\
  {<dis>}:{<oeoe>nként} )

$morph$ = "noun-reg01.lex" $noun-reg-infl$
$morph$ >> "morph8.a"
$morph$ = $morph$ || $ma$
$morph$ >> "morph9.a"
$morph$ = $morph$|| $a-to-aa$ ||  $e-to-ee$ || $delete-POS$
$morph$

%%%%%%%%%%% noun-reg01.lex %%%%%%%%%%%
% vér
% szar
% szőr
% fa
% csere
%%%%%%%%%%%%%%%%% fst-generate rag1.a
% fst-generate rag1.a
vér<Noun>:<><abl>:t<>:ő<>:l
vér<Noun>:<><del>:r<>:ő<>:l
vér<Noun>:<><nom>:<>
vér<Noun>:<><dis>:e<>:n<>:k<>:é<>:n<>:t
vér<Noun>:<><ade>:n<>:é<>:l
vér<Noun>:<><soc>:e<>:s<>:t<>:ü<>:l
vér<Noun>:<><dat>:n<>:e<>:k
vér<Noun>:<><sup>:e<>:n
vér<Noun>:<><fac>:v<>:é
vér<Noun>:<><acc>:e<>:t
vér<Noun>:<><ela>:b<>:ő<>:l
vér<Noun>:<><ine>:b<>:e<>:n
vér<Noun>:<><ill>:b<>:e
vér<Noun>:<><cau>:é<>:r<>:t
vér<Noun>:<><tem>:k<>:o<>:r
vér<Noun>:<><for>:k<>:é<>:n<>:t
vér<Noun>:<><ter>:i<>:g
vér<Noun>:<><fac>:<><>:é
vér<Noun>:<><all>:h<>:e<>:z
vér<Noun>:<><ess>:ü<>:l
szar<Noun>:<><abl>:t<>:ó<>:l
szar<Noun>:<><del>:r<>:ó<>:l
szar<Noun>:<><ade>:n<>:á<>:l
szar<Noun>:<><dat>:n<>:a<>:k
szar<Noun>:<><fac>:v<>:á
szar<Noun>:<><ela>:b<>:ó<>:l
szar<Noun>:<><ine>:b<>:a<>:n
szar<Noun>:<><ill>:b<>:a
szar<Noun>:<><soc>:a<>:s<>:t<>:u<>:l
szar<Noun>:<><fac>:<><>:á
szar<Noun>:<><all>:h<>:o<>:z
szar<Noun>:<><dis>:o<>:n<>:k<>:é<>:n<>:t
szar<Noun>:<><cau>:é<>:r<>:t
szar<Noun>:<><tem>:k<>:o<>:r
szar<Noun>:<><ter>:i<>:g
szar<Noun>:<><sup>:o<>:n
szar<Noun>:<><for>:k<>:é<>:n<>:t
szar<Noun>:<><acc>:o<>:t
szar<Noun>:<><ess>:u<>:l
szar<Noun>:<><nom>:<>
szőr<Noun>:<><all>:h<>:ö<>:z
szőr<Noun>:<><ade>:n<>:é<>:l
szőr<Noun>:<><dat>:n<>:e<>:k
szőr<Noun>:<><soc>:ö<>:s<>:t<>:ü<>:l
szőr<Noun>:<><ine>:b<>:e<>:n
szőr<Noun>:<><ill>:b<>:e
szőr<Noun>:<><fac>:v<>:é
szőr<Noun>:<><dis>:ö<>:n<>:k<>:é<>:n<>:t
szőr<Noun>:<><cau>:é<>:r<>:t
szőr<Noun>:<><tem>:k<>:o<>:r
szőr<Noun>:<><ter>:i<>:g
szőr<Noun>:<><fac>:<><>:é
szőr<Noun>:<><abl>:t<>:ő<>:l
szőr<Noun>:<><del>:r<>:ő<>:l
szőr<Noun>:<><ela>:b<>:ő<>:l
szőr<Noun>:<><sup>:ö<>:n
szőr<Noun>:<><for>:k<>:é<>:n<>:t
szőr<Noun>:<><acc>:ö<>:t
szőr<Noun>:<><ess>:ü<>:l
szőr<Noun>:<><nom>:<>
fa<Noun>:<><tem>:k<>:o<>:r
fa<Noun>:<><for>:k<>:é<>:n<>:t
fa<Noun>:<><nom>:<>
fa:á<Noun>:<><ade>:n<>:á<>:l
fa:á<Noun>:<><soc>:a<>:s<>:t<>:u<>:l
fa:á<Noun>:<><all>:h<>:o<>:z
fa:á<Noun>:<><fac>:v<>:á
fa:á<Noun>:<><fac>:<><>:á
fa:á<Noun>:<><abl>:t<>:ó<>:l
fa:á<Noun>:<><del>:r<>:ó<>:l
fa:á<Noun>:<><dis>:o<>:n<>:k<>:é<>:n<>:t
fa:á<Noun>:<><ela>:b<>:ó<>:l
fa:á<Noun>:<><cau>:é<>:r<>:t
fa:á<Noun>:<><ter>:i<>:g
fa:á<Noun>:<><sup>:o<>:n
fa:á<Noun>:<><acc>:o<>:t
fa:á<Noun>:<><ess>:u<>:l
csere:é<Noun>:<><all>:h<>:e<>:z
csere:é<Noun>:<><ade>:n<>:é<>:l
csere:é<Noun>:<><soc>:e<>:s<>:t<>:ü<>:l
csere:é<Noun>:<><dis>:e<>:n<>:k<>:é<>:n<>:t
csere:é<Noun>:<><fac>:v<>:é
csere:é<Noun>:<><cau>:é<>:r<>:t
csere:é<Noun>:<><ter>:i<>:g
csere:é<Noun>:<><fac>:<><>:é
csere:é<Noun>:<><abl>:t<>:ő<>:l
csere:é<Noun>:<><del>:r<>:ő<>:l
csere:é<Noun>:<><ela>:b<>:ő<>:l
csere:é<Noun>:<><sup>:e<>:n
csere:é<Noun>:<><acc>:e<>:t
csere:é<Noun>:<><ess>:ü<>:l
csere<Noun>:<><tem>:k<>:o<>:r
csere<Noun>:<><for>:k<>:é<>:n<>:t
csere<Noun>:<><nom>:<>

Lásd még[szerkesztés]