SFST magyar többesszám II

A Programozás Wiki wikiből
%%%%%%%%%%%%%% vocharm11.fst %%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%% Plural for Hungarian morpho 2.2 részben+oe %%%%%%%%%%%
%%% consonant ending
% szár-szárak    ak
% haj- hajak     ak
% íj-íjak        ak
% név-nevek      é->e ek
% kötél kötelek  é->e ek
% könyv könyvek  ek
% rügy rügyek    ek
% szűz, fűz tűz- szüzek, füzek, tüzek
%%% vocal ending
% kő,  kövek, vek
% lé   levek
% tő:  tövek
% cső  csövek
% mű   művek
% tó   tavak   vak
% szó  szavak  
% hó   havak
% de: ló-lovak (not here!)
%%%%%%%%%%%%%%% symbols %%%%%%%%%%%%%%%%%%%%
#cons# = bcdfghjklmnprstvwxyz
#vowel# = aeiouáéíóúöüőű
#magas# = eéiöőüű
#magas1# = eéi
#mely# = aáíouóú
#mely1# = aáíouóú
#oe# = öüőű
#aa# = aá
#asym# = #cons##vowel#<Noun><Verb><Adj><sg><pl>
%%%%%%%%%%%%%%% vocal harmony - HU plural %%%%%%%%%%%%%%%%%%%%
ALPHABET = [#cons#] [#vowel#] <AA>:e <AA>:a <AA>:<>  <Noun> <pl>
$As$ =  ([#mely1#] [#cons#]+ <Noun>) <AA> <=>  a
$As2$ = ([#magas#] [#cons#]+ <Noun>) <AA> <=>  e
$As4$ = ([#vowel#]+ <Noun>) <AA> <=>  <>
$Del_pV$ = .*
$ma$ = ($As$ & $As2$  & $As4$ )||  $Del_pV$
% a to á and e to é if word ends with a or e
ALPHABET = [#cons#] [#vowel#] <Verb><Noun><Adj>
$a-to-aa$ = {a}:{á} ^-> (__ [<Noun>] k)
$e-to-ee$ = {e}:{é} ^-> (__ [<Noun>] k)
% delete pos tags
ALPHABET = [#cons#] [#vowel#] [<Verb><Noun><Adj><bee><bue>]:<>
$delete-POS$ =  .*
ALPHABET = [#cons#] [#vowel#]  <bee>:e <bee>:é <bue>:ű <bue>:ü <AA> <Noun> <pl>
%kötél, név
$bee$ =  <bee> <=> e ([#cons#] <Noun> <AA>k)
% tűz, fűz, szűz
$bue$ =  <bue> <=> ü ([#cons#] <Noun> <AA>k)
$bbb$ = ($bue$ & $bee$)
% let <bee>, <bue> disappear from surface
ALPHABET = [#asym#] é:<bee> ű:<bue>
$afilter$ = .*
ALPHABET = [#cons#] [#vowel#]  <AA> <Noun> <pl>
$Del_pV$ = .*
$oo_to_ov$ = {ő}:{öv} ^-> (__ [<Noun>] <AA>k)
$uu_to_uv$ = {ű}:{űv} ^-> (__ [<Noun>] <AA>k)
$oo_to_av$ = {ó}:{av} ^-> (__ [<Noun>] <AA>k)
$ee_to_ev$ = {é}:{ev} ^-> (__ [<Noun>] <AA>k)
$uuconv$ = ($oo_to_ov$ || $uu_to_uv$ || $oo_to_av$ || $ee_to_ev$) ||  $Del_pV$

% <Noun> is needed to see the word''s end
$noun-reg-infl$ = <Noun> (\
  {<sg>}:{} |\
  {<pl>}:{<AA>k})
$morph$ = $afilter$ || "noun-reg2.lex" $noun-reg-infl$ ||  $bbb$ ||  $uuconv$||  $ma$ || $a-to-aa$ ||  $e-to-ee$ || $delete-POS$
$morph$

%%%%%%%%%%%%%%%%%%%%%% result with fst generate%%%%%%%%%%%%%
% fst-generate vocharm11.a
% lé<Noun>:<><sg>:<>
% lé:e<>:v<Noun>:<><pl>:e<>:k
% szó:a<>:v<Noun>:<><pl>:a<>:k
% szűz<Noun>:<><sg>:<>
% szű:üz<Noun>:<><pl>:e<>:k
% szár<Noun>:<><pl>:a<>:k
% szár<Noun>:<><sg>:<>
% szó<Noun>:<><sg>:<>
% mű<>:v<Noun>:<><pl>:e<>:k
% mű<Noun>:<><sg>:<>
% kötél<Noun>:<><sg>:<>
% köté:el<Noun>:<><pl>:e<>:k
% könyv<Noun>:<><pl>:e<>:k
% könyv<Noun>:<><sg>:<>
% kapa:á<Noun>:<><pl>:<><>:k
% kapa<Noun>:<><sg>:<>
% kő:ö<>:v<Noun>:<><pl>:e<>:k
% kő<Noun>:<><sg>:<>
% íj<Noun>:<><pl>:a<>:k
% íj<Noun>:<><sg>:<>
% hó:a<>:v<Noun>:<><pl>:a<>:k
% haj<Noun>:<><pl>:a<>:k
% haj<Noun>:<><sg>:<>
% hó<Noun>:<><sg>:<>
% tűz<Noun>:<><sg>:<>
% tű:üz<Noun>:<><pl>:e<>:k
% tó:a<>:v<Noun>:<><pl>:a<>:k
% tő:ö<>:v<Noun>:<><pl>:e<>:k
% tó<Noun>:<><sg>:<>
% tő<Noun>:<><sg>:<>
% fűz<Noun>:<><sg>:<>
% fű:üz<Noun>:<><pl>:e<>:k
% rügy<Noun>:<><pl>:e<>:k
% rügy<Noun>:<><sg>:<>
% cső:ö<>:v<Noun>:<><pl>:e<>:k
% cső<Noun>:<><sg>:<>
% név<Noun>:<><sg>:<>
% né:ev<Noun>:<><pl>:e<>:k
%%%%%%%%%%%%%%%%%%%%%%%% noun-reg2.lex %%%%%%%%%%%%%%%%%%%
% szár
% íj
% haj
% n<bee>v
% köt<bee>l
% könyv
% rügy
% sz<bue>z
% f<bue>z
% t<bue>z
% kő
% lé
% tő
% cső
% mű
% tó
% szó
% hó
% kapa

Lásd még[szerkesztés]