SFST magyar többesszám és esetek II

A Programozás Wiki wikiből
#################### Makefile
tobbrag.a: tobbrag.fst ninfl1.fst phon1.fst symbols1.fst noun-reg001.lex
%.a: %.fst
    fst-compiler-utf8 $< $@

clean:
    rm -f *.a *~
%%%%%%%%%%%%%%% symbols1.fst %%%%%%%%%%%%%%%%%%%%
#cons# = bcdfghjklmnprstvwxyz
#vowel# = aeiouáéíówúöüőű
#letter# = #cons##vowel#
#magas# = eéiíöőüű
#magas1# = eéií
#mely# = aáouóú
#mely1# = ouóú
#oe# = öüőű
#aa# = aá


%%%%%%%%%%%%%% ninfl1.fst%%%%%%%%%%%%%%5
%#include "symbols1.fst"

%$plu$ = <pl>:{<AA>k}
$plu$ = <pl>:{<tpl><oeoez1>k}

$nom$ =  <nom>:{}
$dat$ =  <dat>:{n<AA>k}
$acc$ =  <acc>:{<te><oeoez>t}
$ill$ =  <ill>:{b<AA>}
$ins$ =  <ins>:{<dup><VV><AA>l}
$fac$ =  <fac>:{<dup><VV><AAA>}
$ine$ =  <ine>:{b<AA>n}
$ela$ =  <ela>:{b<oooe>l}
$all$ =  <all>:{h<oeoe>z}
$ade$ =  <ade>:{n<AAA>l}
$abl$ =  <abl>:{t<oooe>l}
$sup$ =  <sup>:{<te><oeoez>n}
$del$ =  <del>:{r<oooe>l}
$ter$ =  <ter>:{ig}
$ess$ =  <ess>:{<uue>l}
$for$ =  <for>:{ként}
$tem$ =  <tem>:{kor}
$cau$ =  <cau>:{ért}
$soc$ =  <soc>:{<EOA>st<uue>l}
$dis$ =  <dis>:{<te><oeoez>nként}

$PLU$ = $plu$

%$case$ = $nom$ | $dat$ | $acc$ | $ill$ | $ine$ | $ela$ | $all$ | $ade$ |\
%         $abl$ | $sup$ | $del$ | $ter$ | $ess$ | $for$ | $tem$ |\
%         $cau$ | $soc$ | $fac$ | $dis$ | $ins$

%$case$ =  $fac$ | $ins$
$case$ = $acc$ | $sup$ | $fac$ | $ins$


$posss1$ =  {<posss1>}:{<OEOE1>m}
$posss2$ =  {<posss2>}:{<OEOE1>d}
$posss3$ =  {<posss3>}:{<J><AE>}
$possp1$ =  {<possp1>}:{<UUE>nk}
$possp2$ =  {<possp2>}:{<OEOE1>t<OEOE>k}
$possp3$ =  {<possp3>}:{<J><UUE1>k}
$posss1p$ =  {<posss1p>}:{<J><AE>im}
$posss2p$ =  {<posss2p>}:{<J><AE>id}
$posss3p$ =  {<posss3p>}:{<J><AE>i}
$possp1p$ =  {<possp1p>}:{<J><AE>ink}
$possp2p$ =  {<possp2p>}:{<J><AE>it<OEOE>k}
$possp3p$ =  {<possp3p>}:{<J><AE>ik}
           

%$poss$ =  $posss1$ | $posss2$ | $posss3$ | $possp1$ | $possp2$ | $possp3$ |\
%         $posss1p$ | $posss2p$ | $posss3p$ | $possp1p$ | $possp2p$ | $possp3p$

$poss$ =  $posss1$

$gen$ =  {<gen>}:{é}
$genpl$ =  {<genpl>}:{éi}

%$gen$ =  $gen$ | $genpl$
$gen$ =  $gen$


% (ház-aknak ház-amnak ház-ak-é(i)nak ház-am-é(i)nak ház-nak)
$CASEP$ = ($plu$?  | $poss$?) $gen$? $case$

%%%%%%%%%%%%%%%%%%%%%%% phon1.fst %%%%%%%%%%%%%%%%
%#include "symbols1.fst"
ALPHABET = [#cons#] [#vowel#] \
         <AA>:e <AA>:a  \  % nak, nek, ba, be, ban, ben,
         <AAA>:é <AAA>:á \ % vá, vé, nál, nél
         <oooe>:ó <oooe>:ő \ % tól, től. ból, ből, ról. ről
         <oeoe>:e <oeoe>:ö <oeoe>:o  \ % hoz, hez, höz,
         <oeoez1>:e <oeoez1>:ö <oeoez1>:o <oeoez1>:<> \ % ok, ek, ök
         <oeoez>:e <oeoez>:ö <oeoez>:o <oeoez>:<> \ % ot, et, öt, on, en, ön, onként, enként, önként
         <uue>:u <uue>:ü \ % ul, ül
         <VV>:v <VV>:<>  \ % val, vel, vá, vé
         <EOA>:e <EOA>:o <EOA>:a <EOA>:ö <EOA>:<> \ % estül, ostul., östül
         <OEOE>:o <OEOE>:e <OEOE>:ö \ % etek, otok, ötök (2-nd vowel)
         <OEOE1>:o <OEOE1>:e <OEOE1>:ö <OEOE1>:<> \ % om, od, otok, (1st vowel) jeitek (last vowel)
         <J>:j <J>:<> <AE>:a <AE>:e \ % ja, je, a, e
         <UUE>:u <UUE>:ü <UUE>:<> \ % unk, ünk
         <UUE1>:u <UUE2>:ü \   % juk, jük
         <Noun> <dup> <ins> <fac> <te> <tpl>

$As$ =  ([#mely#] [#cons#]* <Noun> .*) <AA> <=>  a
$Del_pV$ = .*
$ma1$ = $As$
$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$ 

$ma0$ = ($ma1$ & $ma2$ & $ma3$ & $ma4$ & $ma5$ & $ma6$ )

$oeoe1$ =  ([#mely#] [#cons#]* <Noun> .*) <OEOE> <=>  o
$oeoe2$ = ([#magas1#] [#cons#]* <Noun> .*) <OEOE> <=>  e
$rp1$ = $oeoe1$ &  $oeoe2$ 
$oeoe11$ =  ([#mely#] [#cons#]+ <Noun> .*) <OEOE1> <=>  o
$oeoe12$ = ([#magas1#] [#cons#]+ <Noun> .*) <OEOE1> <=>  e
$oeoe13$ = ([#oe#] [#cons#]+ <Noun> .*) <OEOE1> <=>  ö
$rp2$ = $oeoe11$ &  $oeoe12$  & $oeoe13$
$j1$ =  ([#cons#]+ <Noun> .*) <J> <=>  <>
$rp3$ = $j1$
$ae1$ =  ([#mely#] [#cons#]* <Noun> .*) <AE> <=>  a
$rp4$ = $ae1$
$uue1$ =  ([#mely#] [#cons#]+ <Noun> .*) <UUE> <=>  u
$uue2$ =  ([#magas#] [#cons#]+ <Noun> .*) <UUE> <=>  ü
$rp5$ = $uue1$ & $uue2$
$uue11$ =  ([#mely#] [#cons#]+ <Noun> .*) <UUE1> <=>  u
$rp6$ = $uue11$
$vv4$ = ((<Noun>.*[#vowel#].*[<dup>] .*) | ([#vowel#] <Noun>[^#vowel#]*[<dup>] .*))  <VV> <=>  v % tarévá, lévé
$rp7$ = $vv4$
% must be the last,because checks for vowel and cons in between <Noun> and <te>
% needs modification because after r for example there is no vowel necessary
$Dsz11$ =  (([#mely#] [#cons#]+ <Noun>[^#vowel#]* <tpl> .*)| \
           ([#mely#] [#cons#]* <Noun>.*[#cons#]+[^#vowel#]*<tpl> .*)) <oeoez1> <=>  o
$Dsz21$ =  (([#magas1#] [#cons#]+ <Noun>[^#vowel#]* <tpl> .*)| \
           ([#magas1#] [#cons#]* <Noun>.*[#cons#]+[^#vowel#]*<tpl> .*)) <oeoez1> <=>  e
$Dsz31$ =  (([#oe#] [#cons#]+ <Noun>[^#vowel#]* <tpl> .*)| \
           ([#oe#] [#cons#]* <Noun>.*[#cons#]+[^#vowel#]*<tpl> .*)) <oeoez1> <=>  ö
$rp8$ = $Dsz11$ & $Dsz21$ & $Dsz31$ 

$Dsz1$ =  (([#mely#] [#cons#]+ <Noun>[^#vowel#]* <te> .*)| \
           ([#mely#] [#cons#]* <Noun>.*[#cons#]+[^#vowel#]*<te> .*)) <oeoez> <=>  o
$Dsz2$ =  (([#magas1#] [#cons#]+ <Noun>[^#vowel#]* <te> .*)| \
           ([#magas1#] [#cons#]* <Noun>.*[#cons#]+[^#vowel#]*<te> .*)) <oeoez> <=>  e
$Dsz3$ =  (([#oe#] [#cons#]+ <Noun>[^#vowel#]* <te> .*)| \
           ([#oe#] [#cons#]* <Noun>.*[#cons#]+[^#vowel#]*<te> .*) ) <oeoez> <=>  ö
$rp9$ = $Dsz1$ & $Dsz2$ & $Dsz3$ 



$rp$ = ($rp1$ & $rp2$ & $rp3$ & $rp4$ & $rp5$ & $rp6$ & $rp7$ & $rp8$ & $rp9$ )
%$rp10$ = ($rp1$ & $rp2$ & $rp3$ & $rp4$ & $rp5$ & $rp6$ & $rp7$ & $rp8$ )
%$rp11$ = ( $rp9$ )

$ma$ = ($ma0$ & $rp$)  || $Del_pV$   
%$ma1$ = ($ma0$ & $rp10$) || $Del_pV$   
%$ma2$ = ($ma1$ & $rp11$) || $Del_pV$   

#=D# = #cons#
$T$ = {[#=D#]}:{[#=D#][#=D#]}
ALPHABET = [#cons#] [#vowel#] <Noun> <fac> <dup><ins><te><tpl>
% tar-> tarrá
$duplicate1$ = $T$ ^-> ( __ <Noun> [^#letter#]* <dup> .*)
% tarok -> tarokká
$duplicate2$ = $T$ ^-> ( <Noun>  .* __ [^#vowel#]* <dup> .*)

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


%$phon$ = $ma$ || $duplicate1$ || $duplicate2$ || $a-to-aa$ ||  $e-to-ee$ || $delete-POS$


$phon1$ = $ma$
%$phon2$ = $ma2$
$phon2$ = $duplicate1$
$phon3$ = $duplicate2$
$phon4$ = $a-to-aa$ ||  $e-to-ee$ || $delete-POS$
%%%%%%%%%%%%%% tobbrag.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, be
% ine ban, ben
% ins val, vel
% fac vá, vé
% ela ból, ből
% all hoz, hez, höz
% ade nál, nél
% abl tól, től
% sub ra, re
% sup n, on, en, ön
% del ról
% ter ig
% ess ul, ül
% for ként
% tem kor
% cau ért
% soc stul, stül
% dis nként
%%%%%%%%%%%%%%%%% simplified HU plural+cases %%%%%%%%%%%%%%%%%%%%%%%%%%5
#include "symbols1.fst"
#include "phon1.fst"
#include "ninfl1.fst"

%$morph$ = "noun-reg001.lex" <Noun>
%$morph$ >> "morph9.a"
%$morph$ = $morph$ $CASEP$
%$morph$ >> "morph10.a"
%$morph$ = $morph$ || $phon$
%$morph$

$morph$ = "noun-reg001.lex" <Noun>
$morph$ >> "morph8.a"
$morph$ = $morph$ $CASEP$
$morph$ >> "morph9.a"
$morph$ = $morph$|| $phon1$
$morph$ >> "morph10.a"
$morph$ = $morph$|| $phon2$
$morph$ >> "morph11.a"
$morph$ = $morph$|| $phon3$
$morph$ >> "morph12.a"
$morph$ = $morph$|| $phon4$
%$morph$ >> "morph13.a"
%$morph$ = $morph$|| $phon5$
$morph$


%%%%%%%%%%%%%%%%%%% noun-reg001.lex %%%%%%%%%%%%%%%%%%%
% tar
% né

==Eredmények==
A *-al jelöltek hibásak

%%%%%%%%%%%%%%%%%%% results%%%%%%%%%%%%%%%%%%%%%%%%
tar<Noun>:<><gen>:é<sup>:<><>:n
tar<Noun>:<><gen>:é<acc>:<><>:t
tar<Noun>:<><gen>:é<fac>:<><>:v<>:á
tar<Noun>:<><gen>:é<ins>:<><>:v<>:a<>:l
tar<Noun>:<><sup>:<><>:o<>:n
*tar<Noun>:<><acc>:<><>:o<>:t
tar<Noun>:<><posss1>:o<>:m<>:m<fac>:<><>:á
tar<Noun>:<><posss1>:o<>:m<>:m<ins>:<><>:a<>:l
tar<Noun>:<><posss1>:o<>:m<gen>:é<fac>:<><>:v<>:á
tar<Noun>:<><posss1>:o<>:m<gen>:é<ins>:<><>:v<>:a<>:l
tar<Noun>:<><posss1>:o<>:m<gen>:é<sup>:<><>:n
tar<Noun>:<><posss1>:o<>:m<gen>:é<acc>:<><>:t
tar<Noun>:<><posss1>:o<>:m<sup>:<><>:o<>:n
tar<Noun>:<><posss1>:o<>:m<acc>:<><>:o<>:t
tar<Noun>:<><pl>:<><>:o<>:k<>:k<fac>:<><>:á
tar<Noun>:<><pl>:<><>:o<>:k<>:k<ins>:<><>:a<>:l
tar<Noun>:<><pl>:<><>:o<>:k<gen>:é<fac>:<><>:v<>:á
tar<Noun>:<><pl>:<><>:o<>:k<gen>:é<ins>:<><>:v<>:a<>:l
tar<Noun>:<><pl>:<><>:o<>:k<gen>:é<sup>:<><>:n
tar<Noun>:<><pl>:<><>:o<>:k<gen>:é<acc>:<><>:t
tar<Noun>:<><pl>:<><>:o<>:k<sup>:<><>:o<>:n
*tar<Noun>:<><pl>:<><>:o<>:k<acc>:<><>:o<>:t
tar<>:r<Noun>:<><fac>:<><>:á
tar<>:r<Noun>:<><ins>:<><>:a<>:l
né<Noun>:<><gen>:é<fac>:<><>:v<>:é
né<Noun>:<><gen>:é<ins>:<><>:v<>:e<>:l
né<Noun>:<><gen>:é<sup>:<><>:n
né<Noun>:<><gen>:é<acc>:<><>:t
né<Noun>:<><posss1>:<><>:m<sup>:<><>:e<>:n
né<Noun>:<><posss1>:<><>:m<>:m<fac>:<><>:é
né<Noun>:<><posss1>:<><>:m<>:m<ins>:<><>:e<>:l
né<Noun>:<><posss1>:<><>:m<acc>:<><>:e<>:t
né<Noun>:<><posss1>:<><>:m<gen>:é<fac>:<><>:v<>:é
né<Noun>:<><posss1>:<><>:m<gen>:é<ins>:<><>:v<>:e<>:l
né<Noun>:<><posss1>:<><>:m<gen>:é<sup>:<><>:n
né<Noun>:<><posss1>:<><>:m<gen>:é<acc>:<><>:t
né<Noun>:<><pl>:<><>:k<sup>:<><>:e<>:n
né<Noun>:<><pl>:<><>:k<>:k<fac>:<><>:é
né<Noun>:<><pl>:<><>:k<>:k<ins>:<><>:e<>:l
né<Noun>:<><pl>:<><>:k<acc>:<><>:e<>:t
né<Noun>:<><pl>:<><>:k<gen>:é<fac>:<><>:v<>:é
né<Noun>:<><pl>:<><>:k<gen>:é<ins>:<><>:v<>:e<>:l
né<Noun>:<><pl>:<><>:k<gen>:é<sup>:<><>:n
né<Noun>:<><pl>:<><>:k<gen>:é<acc>:<><>:t
né<Noun>:<><fac>:<><>:v<>:é
né<Noun>:<><ins>:<><>:v<>:e<>:l
né<Noun>:<><sup>:<><>:n
né<Noun>:<><acc>:<><>:t

Lásd még[szerkesztés]