Commit 78e8cc501860a04eff409542a2d65e5f3f34bcea

Authored by Wojciech Jaworski
1 parent f7ed7092

Reorganizacja warstwy fonetycznej

morphology/data/alternations.dic
@@ -191,7 +191,7 @@ @@ -191,7 +191,7 @@
191 p py p 191 p py p
192 r ry r 192 r ry r
193 s sy s 193 s sy s
194 - š šy š 194 +# š šy š
195 t ty t 195 t ty t
196 v vy v 196 v vy v
197 z zy z 197 z zy z
morphology/data/fonetics.dic 0 → 100644
  1 +@symbols
  2 +ω a ą e ę o ó u
  3 +δ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y z ź ż - ε v x q
  4 +#γ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y ź ż - ε
  5 +#ξ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y - ε
  6 +#μ a ą b c ć d e ę f g k l ł m n ń o ó p r s ś t u w y ź ż - ε
  7 +λ b c ć d f g h k l ł m n ń p r s ś t w z ź ż - ε v x q
  8 +κ b c ć d f g h i j k l ł m n ń p r s ś t w z ź ż - ε v x q
  9 +#σ a ą b c ć d e ę f g j h k l ł m n ń o ó p r s ś t u w y z ź ż - ε
  10 +ρ aε achε amiε ąε eε ęε iε oε omε onε umε
  11 +α ε goε muε mε
  12 +ά ε goε muε
  13 +β ε chε miε mε
  14 +γ aε achε amiε ąε eε ęε iε oε omε onε umε ówε uε owiε omε emε yε owieε emuε egoε goε mε muε ε
  15 +
  16 +@rev_symbols
  17 +ω a ą e ę o ó u {eu}
  18 +δ a ą b c ć č d ʒ ǯ e ę f g h x i k l ł m n ń o ó p r ř s ś š t u v w y z ź ž - ε {
  19 +λ b c ć č d ʒ ǯ f g h x k l ł m n ń p r ř s ś š t v w z ź ž - ε { q
  20 +κ b c ć č d ʒ ǯ f g h x i j ʲ k l ł m n ń p r ř s ś š t v w z ź ž - ε {
  21 +ρ aε axε am′iε ąε eε ęε iε oε omε onε umε
  22 +
  23 +@rev_rules
  24 +core p′ pi ω
  25 +core p′ p i
  26 +core pj pi ρ
  27 +core b′ bi ω
  28 +core b′ b i
  29 +core bj bi ρ
  30 +core m′ mi ω
  31 +core m′ m i
  32 +core m′j mi ρ
  33 +core f′ fi ω
  34 +core f′ f i
  35 +core fj fi ρ
  36 +core v′ wi ω
  37 +core v′ w i
  38 +core v w δ
  39 +core vj wi ρ
  40 +#core v w j
  41 +core t′ ć λ
  42 +core t′ ci ω
  43 +core t′ c i
  44 +core d′ dź λ
  45 +core d′ dzi ω
  46 +core d′ dz i
  47 +core ʒ dz
  48 +core tʲ ti ω
  49 +core tʲ t i
  50 +core tj ti ρ
  51 +core dʲ di ω
  52 +core dʲ d i
  53 +core dj di ρ
  54 +core č cz δ
  55 +core čʲ czi ω
  56 +core čʲ cz i
  57 +core č cz j
  58 +core ǯ dż δ
  59 +core ǯʲ dżi ω
  60 +core ǯʲ dż i
  61 +core ǯj dżi ρ
  62 +core s′ ś λ
  63 +core s′ si ω
  64 +core s′ s i
  65 +core z′ ź λ
  66 +core z′ zi ω
  67 +core z′ z i
  68 +core š sz δ
  69 +core š sz j
  70 +core šʲ szi ω
  71 +core šʲ sz i
  72 +core ž ż δ
  73 +core žʲ żi ω
  74 +core žʲ ż i
  75 +core žj żi ρ
  76 +core lʲ li ω
  77 +core lj li ρ
  78 +core ř rz δ
  79 +core ř rz j
  80 +core rʲ ri ω
  81 +core rʲ r i
  82 +core rj ri ρ
  83 +core n′ ń λ
  84 +core n′ ni ω
  85 +core n′ n i
  86 +core n′j ni ρ
  87 +core k′ ki ω
  88 +core k′ k i
  89 +core k′j ki ρ
  90 +core g′ gi ω
  91 +core g′ g i
  92 +core g′j gi ρ
  93 +core x ch δ
  94 +core xʲ chi ω
  95 +core xʲ ch i
  96 +core xʲj chi ρ
  97 +core hʲ hi ω
  98 +core hʲ h i
  99 +core aʲ a i
  100 +core eʲ e i
  101 +core oʲ o i
  102 +core óʲ ó i
  103 +core uʲ u i
  104 +core iʲ i i
  105 +core yʲ y i
  106 +
  107 +aux {ch}š ch
  108 +aux {q}k q
  109 +aux {ng}n ng
  110 +aux {tch}č tch
  111 +aux {sh}š sh
  112 +aux {w}ł w
  113 +aux {leigh}l leigh
  114 +aux {au}ał au
  115 +aux {sch}š sch
  116 +aux {tsch}č tsch
  117 +aux {z}c z
  118 +core {lj}lj lj a
  119 +core {lj}lj lj e
  120 +core {pj}pj pj e
  121 +aux {zs}ž zs ε
  122 +aux {cs}č cs ε
  123 +
  124 +aux {ay}aj ay ε
  125 +aux {ey}ej ey ε
  126 +aux {oy}oj oy ε
  127 +aux {ay}aj ay ω
  128 +aux {ey}ej ey ω
  129 +aux {oy}oj oy ω
  130 +aux {ai}aj ai ε
  131 +aux {ai}aj ai ω
  132 +
  133 +aux {dh}dʲ dhi ω
  134 +aux {dh}dʲ dh iκ
  135 +aux {dh}d dh δ
  136 +aux {gh}g′ ghi ω
  137 +aux {gh}g′ gh iκ
  138 +aux {gh}g gh δ
  139 +aux {kh}k′ khi ω
  140 +aux {kh}k′ kh iκ
  141 +aux {kh}k kh δ
  142 +aux {nh}n′ nhi ω
  143 +aux {nh}n′ nh iκ
  144 +aux {nh}n nh δ
  145 +aux {th}tʲ thi ω
  146 +aux {th}tʲ th iκ
  147 +aux {th}t th δ
  148 +core {v}v′ vi ω
  149 +core {v}v′ v iκ
  150 +core {v}v v δ
  151 +core {v}vj vi ρ
  152 +core {x}ks′ xi ω
  153 +core {x}ks′ x iκ
  154 +core {x}ks x δ
  155 +
  156 +#lemma=e/y gender=m1
  157 +aux {dieu}dʲe dieu ε
  158 +aux {dieu}dʲi dieu ε
  159 +aux {quieu}k′e quieu ε
  160 +aux {quieu}k′i quieu ε
  161 +aux {lieu}lʲe lieu ε
  162 +aux {lieu}lʲi lieu ε
  163 +aux {rie}rʲe rie ε
  164 +aux {rie}rʲi rie ε
  165 +aux {gie}ǯʲe gie ε
  166 +aux {gie}ǯʲi gie ε
  167 +aux {kie}k′e kie ε
  168 +aux {kie}k′i kie ε
  169 +aux {tie}tʲe tie ε
  170 +aux {tie}tʲi tie ε
  171 +aux {pie}p′e pie ε
  172 +aux {pie}p′i pie ε
  173 +aux {die}dʲe die ε
  174 +aux {die}dʲi die ε
  175 +aux {bee}b′e bee ε
  176 +aux {bee}b′i bee ε
  177 +
  178 +#lemma=e gender=m1
  179 +aux {mée}me mée ε
  180 +aux {ge}g′e ge ε
  181 +aux {ke}k′e ke ε
  182 +
  183 +#lemma=y gender=m1
  184 +aux {by}b′i by ε
  185 +aux {dy}dʲi dy ε
  186 +aux {dí}dʲi dí ε
  187 +aux {phy}f′i phy ε
  188 +aux {guy}g′i guy ε
  189 +aux {ky}k′i ky ε
  190 +aux {my}m′i my ε
  191 +aux {li}li li ε
  192 +aux {ly}li ly ε
  193 +aux {ry}rʲi ry ε
  194 +core {ři}rʲi ři ε
  195 +aux {sy}sʲi sy ε
  196 +aux {cy}sʲi cy ε
  197 +aux {şi}sʲi şi ε
  198 +aux {thy}tʲi thy ε
  199 +
  200 +#lemma=e/ndm gender=m1
  201 +aux {chais}še chais ε
  202 +aux {lais}le lais ε
  203 +aux {nais}ne nais ε
  204 +aux {rès}re rès ε
  205 +aux {rés}re rés ε
  206 +aux {ré}re ré ε
  207 +
  208 +#lemma=ε
  209 +aux {de}d de ε
  210 +aux {fe}f fe ε
  211 +aux {phe}f phe ε
  212 +aux {ge}ǯ ge ε
  213 +aux {ges}ǯ ges ε
  214 +aux {gue}g gue ε
  215 +aux {gues}g gues ε
  216 +aux {ke}k ke ε
  217 +aux {que}k que ε
  218 +aux {ques}k ques ε
  219 +aux {le}l le ε
  220 +aux {les}l les ε
  221 +aux {me}m me ε
  222 +aux {ne}n ne ε
  223 +aux {gne}n′ gne ε
  224 +aux {re}r re ε
  225 +aux {rue}r rue ε
  226 +aux {se}s se ε
  227 +aux {ce}s ce ε
  228 +aux {che}š che ε
  229 +aux {te}t te ε
  230 +aux {the}t the ε
  231 +aux {ve}v ve ε
  232 +aux {we}ł we ε
  233 +aux {se}z se ε
  234 +aux {ge}ž ge ε
  235 +aux {oe}oł oe ε
  236 +
  237 +
  238 +aux g′el gel ε
  239 +
  240 +aux g′e ge ε
  241 +aux k′e ke ε
  242 +aux k′i ky ε
  243 +aux k′i kij ε
  244 +aux k′i koj ε
  245 +aux k′i kyj ε
  246 + s s k′i
  247 +aux sk′i szky ε
  248 + l l i
  249 +aux li ly ε
  250 +
  251 +aux ks x ε
  252 +aux ks kx ε
  253 +
  254 + r r a
  255 +aux r rh a
  256 + t t a
  257 +aux t th a
  258 + k k
  259 +aux k kh a
  260 +aux ks x a
  261 +aux k c a
  262 + n n a
  263 +aux n nh a
  264 + d d a
  265 +aux d dh a
  266 + g g a
  267 +aux g gh a
  268 +
  269 +aux k c o
  270 +aux kk cc o
  271 +
  272 +
  273 + b b ε
  274 +aux b bes ε
  275 + d d ε
  276 +aux d de ε
  277 +aux d dh ε
  278 + f f ε
  279 +aux f phe ε
  280 +aux f ph ε
  281 + g g ε
  282 +aux g gue ε
  283 +aux g gues ε
  284 + k k ε
  285 +aux k ke ε
  286 +aux k c ε
  287 +aux k que ε
  288 +aux k q ε
  289 +aux k cq ε
  290 +aux k ques ε
  291 +aux k cques ε
  292 +aux kt ct ε
  293 + m m ε
  294 +aux m me ε
  295 + n n ε
  296 +aux n ne ε
  297 +aux n nes ε
  298 +aux n ng ε
  299 +aux n nh ε
  300 + r r ε
  301 +aux r re ε
  302 +aux r res ε
  303 +aux r rs ε
  304 +aux r rh ε
  305 + s s ε
  306 +aux s se ε
  307 +aux s ce ε
  308 +aux s th ε
  309 + t t ε
  310 +aux t te ε
  311 +aux t tes ε
  312 +aux t thes ε
  313 +aux t th ε
  314 +aux t the ε
  315 +aux t tt ε
  316 +
  317 + e e j
  318 +aux ej ey ε
  319 +
  320 + a a ε
  321 +aux a ah ε
  322 + a a j
  323 +aux aja ayah ε
  324 +
  325 + o o j
  326 +aux oja oya ε
  327 +
  328 +acro {A}a A
  329 +acro {B}b B
  330 +acro {C}c C
  331 +acro {C}k C
  332 +acro {Ć}t′ Ć
  333 +acro {D}d D
  334 +acro {E}e E
  335 +acro {F}f F
  336 +acro {G}g G
  337 +acro {H}h H
  338 +acro {I}j I
  339 +acro {J}j J
  340 +acro {K}k K
  341 +acro {L}l L
  342 +acro {Ł}ł Ł
  343 +acro {M}m M
  344 +acro {N}n N
  345 +acro {O}o O
  346 +acro {P}p P
  347 +acro {R}r R
  348 +acro {S}s S
  349 +acro {Ś}s′ Ś
  350 +acro {T}t T
  351 +acro {U}u U
  352 +acro {V}v V
  353 +acro {W}v W
  354 +acro {X}ks X
  355 +acro {Y}y Y
  356 +acro {Z}z Z
  357 +acro {Ż}ž Ż
  358 +acro {J}jot J
  359 +acro {Z}zet Z
  360 +acro {Ż}žet Ż
  361 +acro {v}v V
  362 +acro {x}ks X
  363 +acro {j}jot J
  364 +acro {z}zet z
  365 +acro {ż}žet Ż
  366 +
  367 +acro a A ε
  368 +
  369 +@rules
  370 +core p′ pi ω
  371 +core p′ p iκ
  372 +#core p p δ
  373 +#core p p j
  374 +core pj pi ρ
  375 +core b′ bi ω
  376 +core b′ b iκ
  377 +#core b b δ
  378 +core bj bi ρ
  379 +#zbitka
  380 +#core b b j
  381 +core m′ mi ω
  382 +core m′ m iκ
  383 +#core m m δ
  384 +core m′j mi ρ
  385 +core f′ fi ω
  386 +core f′ f iκ
  387 +#core f f δ
  388 +core fj fi ρ
  389 +core v′ wi ω
  390 +core v′ w iκ
  391 +core v w δ
  392 +core vj wi ρ
  393 +#zbitka
  394 +#core v w j
  395 +core t′ ć λ
  396 +#zbitki
  397 +#core t′ ć u
  398 +#core t′ ć a
  399 +#core t′ ć i
  400 +core t′ ci ω
  401 +#core c c j
  402 +core t′ c iκ
  403 +#core c c μ
  404 +core d′ dź λ
  405 +core d′ dzi ω
  406 +core d′ dz iκ
  407 +core ʒ dz δ
  408 +#zbitka
  409 +#core ʒ dz j
  410 +#core t t δ
  411 +#core t t j
  412 +core tʲ ti ω
  413 +core tʲ t iκ
  414 +core tj ti ρ
  415 +#core d d ξ
  416 +core dʲ di ω
  417 +core dʲ d iκ
  418 +#core d d j
  419 +core dj di ρ
  420 +core č cz δ
  421 +core čʲ czi ω
  422 +core čʲ cz iκ
  423 +#core čʲ cz j
  424 +core ǯ dż δ
  425 +core ǯʲ dżi ω
  426 +core ǯʲ dż iκ
  427 +core ǯj dżi ρ
  428 +core s′ ś λ
  429 +core s′ si ω
  430 +#core s s j
  431 +core s′ s iκ
  432 +#core s s γ
  433 +core z′ ź λ
  434 +core z′ zi ω
  435 +#core z z j
  436 +core z′ z iκ
  437 +#core z z δ
  438 +core š sz δ
  439 +#core šʲ sz j
  440 +core šʲ szi ω
  441 +core šʲ sz iκ
  442 +core ž ż δ
  443 +core žʲ żi ω
  444 +core žʲ ż iκ
  445 +core žj żi ρ
  446 +#core l l δ
  447 +core lʲ li ω
  448 +core l l iκ
  449 +#core l l j
  450 +#core ł ł δ
  451 +#zbitka
  452 +#core ł ł i
  453 +#zbitka
  454 +#core ł ł j
  455 +core lj li ρ
  456 +core ř rz δ
  457 +#zbitka
  458 +#core ř rz j
  459 +core r r zi
  460 +#core r r γ
  461 +#core r r j
  462 +core rʲ ri ω
  463 +core rʲ r iκ
  464 +core rj ri ρ
  465 +core n′ ń λ
  466 +core n′ ni ω
  467 +core n′ n iκ
  468 +#core n n δ
  469 +#core n n j
  470 +core n′j ni ρ
  471 +core k′ ki ω
  472 +core k′ k iκ
  473 +#core k k δ
  474 +#core k k j
  475 +core k′j ki ρ
  476 +core g′ gi ω
  477 +core g′ g iκ
  478 +#core g g δ
  479 +core g′j gi ρ
  480 +core x ch δ
  481 +core xʲ chi ω
  482 +core xʲ ch iκ
  483 +core xʲj chi ρ
  484 +#core h h δ
  485 +core hʲ hi ω
  486 +core hʲ h iκ
  487 +core mar mar z
  488 +core m′er mier z
  489 +core n′e nie i
  490 +#core a a σ
  491 +core aʲ a i
  492 +#core a a i
  493 +#core e e σ
  494 +core eʲ e i
  495 +#core e e i
  496 +#core o o σ
  497 +core oʲ o i
  498 +#core o o i
  499 +#core ó ó σ
  500 +core óʲ ó i
  501 +#core ó ó i
  502 +#core u u σ
  503 +core uʲ u i
  504 +#core u u i
  505 +#core i i σ
  506 +core iʲ i i
  507 +#core i i i
  508 +#core y y σ
  509 +core yʲ y i
  510 +#core y y i
  511 +#core ą ą σ
  512 +#core ę ę σ
  513 +#core j j
  514 +#core A A
  515 +#core B B
  516 +#core C C
  517 +#core Ć Ć
  518 +#core D D
  519 +#core E E
  520 +#core F F
  521 +#core G G
  522 +#core H H
  523 +#core I I
  524 +#core J J
  525 +#core K K
  526 +#core L L
  527 +#core Ł Ł
  528 +#core M M
  529 +#core N N
  530 +#core O O
  531 +#core P P
  532 +#core R R
  533 +#core S S
  534 +#core Ś Ś
  535 +#core T T
  536 +#core U U
  537 +#core W W
  538 +#core Y Y
  539 +#core Z Z
  540 +#core Ż Ż
  541 +#core - -
  542 +
  543 +aux {ch}š ch γ
  544 +aux {q}k q γ
  545 +aux {ng}n ng γ
  546 +aux {tch}č tch γ
  547 +aux {sh}š sh γ
  548 +aux {w}ł w
  549 +aux {leigh}l leigh γ
  550 +aux {au}ał au γ
  551 +aux {sch}š sch γ
  552 +aux {tsch}č tsch γ
  553 +aux {z}c z γ
  554 +core {lj}lj lj γ
  555 +core {pj}pj pj γ
  556 +aux {zs}ž zs γ
  557 +aux {cs}č cs γ
  558 +
  559 +aux {ay}aj ay γ
  560 +aux {ey}ej ey γ
  561 +aux {oy}oj oy γ
  562 +aux {ai}aj ai γ
  563 +
  564 +aux {dh}dʲ dhi ω
  565 +aux {dh}dʲ dh iκ
  566 +aux {dh}d dh δ
  567 +aux {gh}g′ ghi ω
  568 +aux {gh}g′ gh iκ
  569 +aux {gh}g gh δ
  570 +aux {kh}k′ khi ω
  571 +aux {kh}k′ kh iκ
  572 +aux {kh}k kh δ
  573 +aux {nh}n′ nhi ω
  574 +aux {nh}n′ nh iκ
  575 +aux {nh}n nh δ
  576 +aux {th}tʲ thi ω
  577 +aux {th}tʲ th iκ
  578 +aux {th}t th δ
  579 +core {v}v′ vi ω
  580 +core {v}v′ v iκ
  581 +core {v}v v δ
  582 +core {v}vj vi ρ
  583 +core {x}ks′ xi ω
  584 +core {x}ks′ x iκ
  585 +core {x}ks x δ
  586 +
  587 +#lemma=e/y gender=m1
  588 +aux {dieu}dʲe dieu α
  589 +aux {dieu}dʲi dieu β
  590 +aux {quieu}k′e quieu α
  591 +aux {quieu}k′i quieu β
  592 +aux {lieu}lʲe lieu α
  593 +aux {lieu}lʲi lieu β
  594 +aux {rie}rʲe rie α
  595 +aux {rie}rʲi rie β
  596 +aux {gie}ǯʲe gie α
  597 +aux {gie}ǯʲi gie β
  598 +aux {kie}k′e kie α
  599 +aux {kie}k′i kie β
  600 +aux {tie}tʲe tie α
  601 +aux {tie}tʲi tie β
  602 +aux {pie}p′e pie α
  603 +aux {pie}p′i pie β
  604 +aux {die}dʲe die α
  605 +aux {die}dʲi die β
  606 +aux {bee}b′e bee α
  607 +aux {bee}b′i bee β
  608 +
  609 +#lemma=e gender=m1
  610 +aux {mée}me mée α
  611 +aux {ge}g′e ge α
  612 +aux {ke}k′e ke α
  613 +
  614 +#lemma=y gender=m1
  615 +aux {by}b′ by ’eά
  616 +aux {by}b′i by β
  617 +aux {dy}dʲ dy ’eά
  618 +aux {dy}dʲ dy eά
  619 +aux {dy}dʲ dy owieε
  620 +aux {dy}dʲi dy β
  621 +aux {dí}dʲ dí eά
  622 +aux {dí}dʲ dí owieε
  623 +aux {dí}dʲi dí β
  624 +aux {phy}f′ phy ’eά
  625 +aux {phy}f′i phy β
  626 +aux {guy}g′ guy ’eά
  627 +aux {guy}g′i guy β
  628 +aux {ky}k′ ky ’eά
  629 +aux {ky}k′ ky eά
  630 +aux {ky}k ky owieε
  631 +aux {ky}k′i ky β
  632 +aux {my}m′ my ’eά
  633 +aux {my}m′i my β
  634 +aux {li}l li eά
  635 +aux {li}l l iβ
  636 +aux {ly}l ly ’eά
  637 +aux {ly}li ly β
  638 +aux {ry}rʲ ry ’eά
  639 +aux {ry}rʲi ry β
  640 +core {ři}rʲ ři eά
  641 +core {ři}rʲ ři owieε
  642 +core {ři}rʲi ři β
  643 +aux {sy}sʲ sy ’eά
  644 +aux {sy}sʲ sy eά
  645 +aux {sy}sʲ sy owieε
  646 +aux {sy}sʲi sy β
  647 +aux {şi}sʲ şi eά
  648 +aux {şi}sʲ şi owieε
  649 +aux {şi}sʲi şi β
  650 +aux {cy}sʲ cy ’eά
  651 +aux {cy}sʲi cy β
  652 +aux {thy}tʲ thy ’eά
  653 +aux {thy}tʲ thy eά
  654 +aux {thy}tʲ thy owieε
  655 +aux {thy}tʲi thy β
  656 +
  657 +#lemma=e/ndm gender=m1
  658 +aux {chais}še chais ’
  659 +aux {lais}le lais ’
  660 +aux {nais}ne nais ’
  661 +aux {rès}re rès ’
  662 +aux {rés}re rés ’
  663 +aux {ré}re ré ά
  664 +
  665 +#lemma=ε
  666 +aux {de}d de ’
  667 +aux {de}d de ε
  668 +aux {fe}f fe ’
  669 +aux {fe}f fe ε
  670 +aux {phe}f phe ’
  671 +aux {phe}f phe ε
  672 +aux {ge}ǯ ge ’
  673 +aux {ge}ǯ ge ε
  674 +aux {ges}ǯ ges ’
  675 +aux {ges}ǯ ges ε
  676 +aux {gue}g gue ’
  677 +aux {gue}g gue ε
  678 +aux {gues}g gues ’
  679 +aux {gues}g gues ε
  680 +aux {ke}k ke ’
  681 +aux {ke}k ke ε
  682 +aux {que}k que ’
  683 +aux {que}k que ε
  684 +aux {ques}k ques ’
  685 +aux {ques}k ques ε
  686 +aux {le}l le ’
  687 +aux {le}l le ε
  688 +aux {les}l les ’
  689 +aux {les}l les ε
  690 +aux {me}m me ’
  691 +aux {me}m me ε
  692 +aux {ne}n ne ’
  693 +aux {ne}n ne ε
  694 +aux {gne}n′ gne ’
  695 +aux {gne}n′ gne ε
  696 +aux {re}r re ’
  697 +aux {re}r re ε
  698 +aux {rue}r rue ’
  699 +aux {rue}r rue ε
  700 +aux {se}s se ’
  701 +aux {se}s se ε
  702 +aux {ce}s ce ’
  703 +aux {ce}s ce ε
  704 +aux {che}š che ’
  705 +aux {che}š che ε
  706 +aux {te}t te ’
  707 +aux {te}t te ε
  708 +aux {the}t the ’
  709 +aux {the}t the ε
  710 +aux {ve}v ve ’
  711 +aux {ve}v ve ε
  712 +aux {we}ł we ’
  713 +aux {we}ł we ε
  714 +aux {se}z se ’
  715 +aux {se}z se ε
  716 +aux {ge}ž ge ’
  717 +aux {ge}ž ge ε
  718 +#z wyjątkiem sg:loc.voc
  719 +aux {oe}oł oe ’
  720 +aux {oe}oł oe ε
  721 +
  722 +aux ’ γ
  723 +# ’ ’ owi
  724 +
  725 + n n g
  726 + z z γ
  727 + b b e
  728 + b b y
  729 + d d y
  730 + m m y
  731 + s s y
  732 + c c y
  733 + r r y
  734 + k k y
  735 + l l y
  736 + l l a
  737 + n n a
  738 + r r è
  739 + d d e
  740 + f f e
  741 + p p h
  742 + g g e
  743 + g g u
  744 + k k e
  745 + q q u
  746 + l l e
  747 + m m e
  748 + n n e
  749 + g g n
  750 + r r e
  751 + s s e
  752 + c c e
  753 +# c c h
  754 + t t e
  755 + t t h
  756 + v v e
  757 + w w e
  758 + s s e
  759 + o o e
  760 + m m é
  761 + a a y
  762 + e e y
  763 + o o y
  764 +
  765 +acro a A ε
  766 +
  767 +acro {A}a A
  768 +acro {B}b B
  769 +acro {C}c C
  770 +acro {C}k C
  771 +acro {Ć}t′ Ć
  772 +acro {D}d D
  773 +acro {E}e E
  774 +acro {F}f F
  775 +acro {G}g G
  776 +acro {H}h H
  777 +acro {I}j I
  778 +acro {J}j J
  779 +acro {K}k K
  780 +acro {L}l L
  781 +acro {Ł}ł Ł
  782 +acro {M}m M
  783 +acro {N}n N
  784 +acro {O}o O
  785 +acro {P}p P
  786 +acro {R}r R
  787 +acro {S}s S
  788 +acro {Ś}s′ Ś
  789 +acro {T}t T
  790 +acro {U}u U
  791 +acro {V}v V
  792 +acro {W}v W
  793 +acro {X}ks X
  794 +acro {Y}y Y
  795 +acro {Z}z Z
  796 +acro {Ż}ž Ż
  797 +acro {J}jot J-ot δ
  798 +acro {Z}zet Z-et δ
  799 +acro {Ż}žet Ż-et δ
  800 +acro {z}zet z-et δ
  801 +
  802 +acro {B}b′e B-ie ε
  803 +acro {D}d′e D-zie ε
  804 +acro {F}f′e F-ie ε
  805 +acro {M}m′e M-ie ε
  806 +acro {N}n′e N-ie ε
  807 +acro {P}p′e P-ie ε
  808 +acro {R}ře R-ze ε
  809 +acro {S}s′e S-ie ε
  810 +acro {T}t′e -cie ε
  811 +acro {V}v′e V-ie ε
  812 +acro {W}v′e W-ie ε
  813 +acro {X}ks′e X-ie ε
  814 +acro {Z}z′e Z-ie ε
  815 +acro {J}jot′e J-ocie ε
  816 +acro {Z}zet′e Z-ecie ε
  817 +acro {Ż}žet′e Ż-ecie ε
  818 +
  819 +acro {B}b′e Bie ε
  820 +acro {D}d′e Dzie ε
  821 +acro {F}f′e Fie ε
  822 +acro {M}m′e Mie ε
  823 +acro {N}n′e Nie ε
  824 +acro {P}p′e Pie ε
  825 +acro {R}ře Rze ε
  826 +acro {S}s′e Sie ε
  827 +acro {T}t′e cie ε
  828 +acro {V}v′e Vie ε
  829 +acro {W}v′e Wie ε
  830 +acro {X}ks′e Xie ε
  831 +acro {Z}z′e Zie ε
  832 +acro {J}jot′e Jocie ε
  833 +acro {Z}zet′e Zecie ε
  834 +acro {Ż}žet′e Żecie ε
  835 +
  836 +acro b′e b-ie ε
  837 +acro d′e d-zie ε
  838 +acro f′e f-ie ε
  839 +acro m′e m-ie ε
  840 +acro n′e n-ie ε
  841 +acro p′e p-ie ε
  842 +acro ře r-ze ε
  843 +acro s′e s-ie ε
  844 +acro t′e -cie ε
  845 +core {v}v′e v-ie ε
  846 +acro v′e w-ie ε
  847 +core {x}ks′e x-ie ε
  848 +acro z′e z-ie ε
  849 +acro {j}jot′e j-ocie ε
  850 +acro {z}zet′e z-ecie ε
  851 +acro {ż}žet′e ż-ecie ε
  852 +
  853 +acro {T}t′e CIE ε
  854 + a a cieε
  855 + e e cieε
  856 + i i cieε
  857 + o o cieε
  858 + u u cieε
  859 +acro {A}a{T}t′e acie ε
  860 +acro {E}e{T}t′e ecie ε
  861 +acro {I}j{T}t′e icie ε
  862 +acro {O}o{T}t′e ocie ε
  863 +acro {U}u{T}t′e ucie ε
  864 +
  865 +acro {C}k′i C-i ε
  866 +acro {C}k′em C-iem ε
  867 +acro {E}eʲi E-i ε
  868 +acro {G}g′i G-i ε
  869 +acro {G}g′em G-iem ε
  870 +acro {J}ji J-i ε
  871 +acro {K}k′i K-i ε
  872 +acro {K}k′em K-iem ε
  873 +acro {L}li L-i ε
  874 +acro - γ
  875 +
  876 +
morphology/data/fonetics_acro.dic deleted
1 -@symbols  
2 -δ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y z ź ż - ε v x q  
3 -γ aε achε amiε ąε eε ęε iε oε omε onε umε ówε uε owiε omε emε yε owieε emuε egoε goε mε muε ε  
4 -  
5 -  
6 -@rev_symbols  
7 -  
8 -  
9 -@rev_rules  
10 -acro {A}a A  
11 -acro {B}b B  
12 -acro {C}c C  
13 -acro {C}k C  
14 -acro {Ć}t′ Ć  
15 -acro {D}d D  
16 -acro {E}e E  
17 -acro {F}f F  
18 -acro {G}g G  
19 -acro {H}h H  
20 -acro {I}j I  
21 -acro {J}j J  
22 -acro {K}k K  
23 -acro {L}l L  
24 -acro {Ł}ł Ł  
25 -acro {M}m M  
26 -acro {N}n N  
27 -acro {O}o O  
28 -acro {P}p P  
29 -acro {R}r R  
30 -acro {S}s S  
31 -acro {Ś}s′ Ś  
32 -acro {T}t T  
33 -acro {U}u U  
34 -acro {V}v V  
35 -acro {W}v W  
36 -acro {X}ks X  
37 -acro {Y}y Y  
38 -acro {Z}z Z  
39 -acro {Ż}ž Ż  
40 -acro {J}jot J  
41 -acro {Z}zet Z  
42 -acro {Ż}žet Ż  
43 -acro {v}v V  
44 -acro {x}ks X  
45 -acro {j}jot J  
46 -acro {z}zet z  
47 -acro {ż}žet Ż  
48 -  
49 -acro a A ε  
50 -  
51 -  
52 -@rules  
53 -acro {A}a A δ  
54 -acro {B}b B δ  
55 -acro {C}c C δ  
56 -acro {C}k C δ  
57 -acro {Ć}t′ Ć δ  
58 -acro {D}d D δ  
59 -acro {E}e E δ  
60 -acro {F}f F δ  
61 -acro {G}g G δ  
62 -acro {H}h H δ  
63 -acro {I}j I δ  
64 -acro {J}j J δ  
65 -acro {K}k K δ  
66 -acro {L}l L δ  
67 -acro {Ł}ł Ł δ  
68 -acro {M}m M δ  
69 -acro {N}n N δ  
70 -acro {O}o O δ  
71 -acro {P}p P δ  
72 -acro {R}r R δ  
73 -acro {S}s S δ  
74 -acro {Ś}s′ Ś δ  
75 -acro {T}t T δ  
76 -acro {U}u U δ  
77 -acro {V}v V δ  
78 -acro {W}v W δ  
79 -acro {X}ks X δ  
80 -acro {Y}y Y δ  
81 -acro {Z}z Z δ  
82 -acro {Ż}ž Ż δ  
83 -acro {J}jot J-ot δ  
84 -acro {Z}zet Z-et δ  
85 -acro {Ż}žet Ż-et δ  
86 -acro {z}zet z-et δ  
87 -  
88 -acro {B}b′e B-ie ε  
89 -acro {D}d′e D-zie ε  
90 -acro {F}f′e F-ie ε  
91 -acro {M}m′e M-ie ε  
92 -acro {N}n′e N-ie ε  
93 -acro {P}p′e P-ie ε  
94 -acro {R}ře R-ze ε  
95 -acro {S}s′e S-ie ε  
96 -acro {T}t′e -cie ε  
97 -acro {V}v′e V-ie ε  
98 -acro {W}v W-ie ε  
99 -acro {X}ks′e X-ie ε  
100 -acro {Z}z Z-ie ε  
101 -acro {J}jot′e J-ocie ε  
102 -acro {Z}zet′e Z-ecie ε  
103 -acro {Ż}žet′e Ż-ecie ε  
104 -  
105 -acro {B}b′e Bie ε  
106 -acro {D}d′e Dzie ε  
107 -acro {F}f′e Fie ε  
108 -acro {M}m′e Mie ε  
109 -acro {N}n′e Nie ε  
110 -acro {P}p′e Pie ε  
111 -acro {R}ře Rze ε  
112 -acro {S}s′e Sie ε  
113 -acro {T}t′e cie ε  
114 -acro {V}v′e Vie ε  
115 -acro {W}v Wie ε  
116 -acro {X}ks′e Xie ε  
117 -acro {Z}z Zie ε  
118 -acro {J}jot′e Jocie ε  
119 -acro {Z}zet′e Zecie ε  
120 -acro {Ż}žet′e Żecie ε  
121 -  
122 -acro b′e b-ie ε  
123 -acro d′e d-zie ε  
124 -acro f′e f-ie ε  
125 -acro m′e m-ie ε  
126 -acro n′e n-ie ε  
127 -acro p′e p-ie ε  
128 -acro ře r-ze ε  
129 -acro s′e s-ie ε  
130 -acro t′e -cie ε  
131 -acro {v}v′e v-ie ε  
132 -acro v w-ie ε  
133 -acro {x}ks′e x-ie ε  
134 -acro z z-ie ε  
135 -acro {j}jot′e j-ocie ε  
136 -acro {z}zet′e z-ecie ε  
137 -acro {ż}žet′e ż-ecie ε  
138 -  
139 -acro {T}t′e CIE ε  
140 -acro {A}a{T}t′e acie ε  
141 -acro {E}e{T}t′e ecie ε  
142 -acro {I}j{T}t′e icie ε  
143 -acro {O}o{T}t′e ocie ε  
144 -acro {U}u{T}t′e ucie ε  
145 -  
146 -acro {C}k′i C-i ε  
147 -acro {C}k′em C-iem ε  
148 -acro {G}g′i G-i ε  
149 -acro {G}g′em G-iem ε  
150 -acro {J}ji J-i ε  
151 -acro {K}k′i K-i ε  
152 -acro {K}k′em K-iem ε  
153 -acro {L}li L-i ε  
154 -acro - γ  
155 - a a ε  
156 - ax ach ε  
157 - am′i ami ε  
158 - ą ą ε  
159 - e e ε  
160 - ę ę ε  
161 - em em ε  
162 - o o ε  
163 - om om ε  
164 - ov′i owi ε  
165 - ov′e owie ε  
166 - u u ε  
167 - óv ów ε  
168 - y y ε  
169 -  
170 -  
morphology/data/fonetics_acro_old.dic deleted
1 -@symbols  
2 -  
3 -  
4 -@rev_symbols  
5 -  
6 -  
7 -@rev_rules  
8 -!a A  
9 -!b B  
10 -!c C  
11 -!t′ Ć  
12 -!d D  
13 -!e E  
14 -!f F  
15 -!g G  
16 -!h H  
17 -!i I  
18 -#!j J  
19 -!k K  
20 -!l L  
21 -!ł Ł  
22 -!m M  
23 -!n N  
24 -!o O  
25 -!p P  
26 -!r R  
27 -!s S  
28 -!s′ Ś  
29 -!t T  
30 -!u U  
31 -!v W  
32 -!y Y  
33 -!z Z  
34 -!ż Ż  
35 -#x ch ε  
36 -ax -ach ε  
37 -ę -ę ε  
38 -ʲi -i ε  
39 -a A ε  
40 -!jot′e J-ocie ε  
41 -!jotax J-otach ε  
42 -!jot J ε  
43 -t′e -cie ε  
44 -  
45 -  
46 -@rules  
47 -!a A  
48 -!b B  
49 -!c C  
50 -!t′ Ć  
51 -!d D  
52 -!e E  
53 -!f F  
54 -!g G  
55 -!h H  
56 -!i I  
57 -#!jot J  
58 -!k K  
59 -!l L  
60 -!ł Ł  
61 -!m M  
62 -!n N  
63 -!o O  
64 -!p P  
65 -!r R  
66 -!s S  
67 -!s′ Ś  
68 -!t T  
69 -!u U  
70 -!v W  
71 -!y Y  
72 -!z Z  
73 -!ž Ż  
74 -ax -ach ε  
75 -ę -ę ε  
76 -ʲi -i ε  
77 -!jot′e J-ocie ε  
78 -!jotax J-otach ε  
79 -t′e -cie ε  
80 -  
81 -  
morphology/data/fonetics_de.dic deleted
1 -@symbols  
2 -ω a ą e ę o ó u  
3 -δ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y z ź ż - ε  
4 -γ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y ź ż - ε  
5 -ξ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y - ε  
6 -μ a ą b c ć d e ę f g k l ł m n ń o ó p r s ś t u w y ź ż - ε  
7 -λ b c ć d f g h k l ł m n ń p r s ś t w z ź ż - ε  
8 -κ b c ć d f g h i j k l ł m n ń p r s ś t w z ź ż - ε  
9 -σ a ą b c ć d e ę f g j h k l ł m n ń o ó p r s ś t u w y z ź ż - ε  
10 -ρ aε achε amiε ąε eε ęε iε oε omε onε umε ówε uε owiε omε emε yε owieε emuε egoε goε mε muε ε  
11 -  
12 -@rev_symbols  
13 -ω a ą e ę o ó u  
14 -δ a ą b c ć č d ʒ ǯ e ę f g h x i k l ł m n ń o ó p r ř s ś š t u v w y z ź ž - ε  
15 -λ b c ć č d ʒ ǯ f g h x k l ł m n ń p r ř s ś š t v w z ź ž - ε  
16 -κ b c ć č d ʒ ǯ f g h x i j ʲ k l ł m n ń p r ř s ś š t v w z ź ž - ε  
17 -ρ aε axε am′iε ąε eε ęε iε oε omε onε umε óvε uε ov′iε omε emε ε  
18 -  
19 -@rev_rules  
20 -de r rh  
21 -de r r  
22 -de ta tha  
23 -de ks x  
24 -  
25 -de g′e ge ε  
26 -de k′e ke ε  
27 -  
28 -de k′i ky ε  
29 -  
30 -  
31 -@rules  
32 -de š sch  
33 -de r rh  
34 -de c z  
35 -de ał au  
36 -  
37 -de ře rze ε  
38 -de ks′e ksie ε  
39 -de t′e cie ε  
40 -de v′e vie ε  
41 -  
42 -de óv ów ε  
43 -de ov′i owi ε  
44 -de ov′e owie ε  
45 -de am′i ami ε  
46 -de ax ach ε  
47 -  
48 -de g′e ge ch  
49 -de g′e ge go  
50 -de g′e ge m  
51 -de g′e ge mi  
52 -de g′e ge mu  
53 -de k′e ke ch  
54 -de k′e ke go  
55 -de k′e ke m  
56 -de k′e ke mi  
57 -de k′e ke mu  
58 -de k′i ky ch  
59 -de k′i ky mi  
60 -de k′i ky m  
61 -de x ch ε  
62 -de m′i mi ε  
63 -  
64 -de kj ky ’  
65 -de ’ ρ  
66 -  
67 -de góv gów ε  
68 -de gov′i gowi ε  
69 -de gov′e gowie ε  
70 -de gam′i gami ε  
71 -de gax gach ε  
72 -de gom gom ε  
73 -de kóv ków ε  
74 -de kov′i kowi ε  
75 -de kov′e kowie ε  
76 -de kam′i kami ε  
77 -de kax kach ε  
78 -de kom kom ε  
79 -  
80 -de k′ix kich ε  
81 -de k′e kie ε  
82 -de k′im kim ε  
83 -de k′im′i kimi ε  
84 -de k′ego kiego ε  
85 -de k′emu kiemu ε  
86 -  
87 -  
88 -  
morphology/data/fonetics_en.dic deleted
1 -@symbols  
2 -ω a ą e ę o ó u  
3 -δ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y z ź ż - ε  
4 -γ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y ź ż - ε  
5 -ξ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y - ε  
6 -μ a ą b c ć d e ę f g k l ł m n ń o ó p r s ś t u w y ź ż - ε  
7 -λ b c ć d f g h k l ł m n ń p r s ś t w z ź ż - ε  
8 -κ b c ć d f g h i j k l ł m n ń p r s ś t w z ź ż - ε  
9 -σ a ą b c ć d e ę f g j h k l ł m n ń o ó p r s ś t u w y z ź ż - ε  
10 -ρ aε achε amiε ąε eε ęε iε oε omε onε umε ówε uε owiε omε emε yε owieε emuε egoε ε  
11 -  
12 -@rev_symbols  
13 -ω a ą e ę o ó u  
14 -δ a ą b c ć č d ʒ ǯ e ę f g h x i k l ł m n ń o ó p r ř s ś š t u v w y z ź ž - ε  
15 -λ b c ć č d ʒ ǯ f g h x k l ł m n ń p r ř s ś š t v w z ź ž - ε  
16 -κ b c ć č d ʒ ǯ f g h x i j ʲ k l ł m n ń p r ř s ś š t v w z ź ž - ε  
17 -ρ aε axε am′iε ąε eε ęε iε oε omε onε umε óvε uε ov′iε omε emε ε  
18 -  
19 -@rev_rules  
20 -en ks x  
21 -en č tch  
22 -en ł w  
23 -en aj ay ρ  
24 -en ej ey ρ  
25 -en oj oy ρ  
26 -  
27 -en d de ε  
28 -en d d ε  
29 -en f ph ε  
30 -en k ke ε  
31 -en k k ε  
32 -en k kes ε  
33 -en k c  
34 -en k ky ε  
35 -en t te ε  
36 -en t t ε  
37 -en t th  
38 -en t the ε  
39 -en r re ε  
40 -en r r ε  
41 -en r rh ε  
42 -en m me ε  
43 -en m m ε  
44 -en n ne ε  
45 -en n n ε  
46 -en s se ε  
47 -en s s ε  
48 -en s ce ε  
49 -en s th ε  
50 -en s the ε  
51 -  
52 -en a a ε  
53 -en a ah ε  
54 -en ka kha ε  
55 -en vja via ε  
56 -  
57 -en ʲi ie ε  
58 -en ʲi i ε  
59 -en ʲi y ε  
60 -  
61 -@rules  
62 -en ks x  
63 -en č tch  
64 -en ł w  
65 -en d dh  
66 -en g gh  
67 -en k kh  
68 -en l leigh  
69 -en aj ay ρ  
70 -en ej ey ρ  
71 -en oj oy ρ  
72 -en aʲi ai ε  
73 -en oʲi oi ε  
74 -en eʲi ei ε  
75 -en uʲi ui ε  
76 -  
77 -en vj vi ρ  
78 -en v′ij vij ε  
79 -  
80 -en ce ce ε  
81 -en f′e fie ε  
82 -en ře rze ε  
83 -en t′e cie ε  
84 -en kt′e kcie ε  
85 -en s′t′e ście ε  
86 -en m′e mie ε  
87 -en n′e nie ε  
88 -en d′e dzie ε  
89 -en p′e pie ε  
90 -en s′e sie ε  
91 -en ks′e ksie ε  
92 -en v′e vie ε  
93 -en z′e zie ε  
94 -  
95 -en k′i ki ε  
96 -en k′em kiem ε  
97 -en k k iem  
98 -en řy rzy ε  
99 -  
100 -  
101 -en ʲi ie ch  
102 -en ʲi ie mi  
103 -en ʲi ie m  
104 -en ʲi ee ch  
105 -en ʲi ee mi  
106 -en li ly ch  
107 -en li ly mi  
108 -en li ly m  
109 -en ʲego iego ε  
110 -en ʲemu iemu ε  
111 -en ʲem iem ε  
112 -en ʲim im ε  
113 -en ʲix ich ε  
114 -en ʲe ie ε  
115 -en ʲim′i imi ε  
116 -en ʲov′e iowie ε  
117 -en ′e ie m  
118 -en ′i i ε  
119 -en i i ε  
120 -en x ch ε  
121 -en m′i mi ε  
122 -en óv ów ε  
123 -en ov′i owi ε  
124 -en ov′e owie ε  
125 -en am′i ami ε  
126 -en ax ach ε  
127 -  
128 -en oł oe ’  
129 -en b by ’  
130 -en k′ ky ’  
131 -en r ry ’  
132 -en t thy ’  
133 -en d dy ’  
134 -en m my ’  
135 -en s cy ’  
136 -en l ly ’  
137 -en d dy ’  
138 -en s ce ’  
139 -en d de ’  
140 -en f fe ’  
141 -en ǯ ge ’  
142 -en k ke ’  
143 -en l le ’  
144 -en m me ’  
145 -en n ne ’  
146 -en r re ’  
147 -en s se ’  
148 -en t te ’  
149 -en t the ’  
150 -en v ve ’  
151 -en ł we ’  
152 -en ’ ρ  
153 -  
154 -en s ce ε  
155 -en d de ε  
156 -en f fe ε  
157 -en ǯ ge ε  
158 -en k ke ε  
159 -en l le ε  
160 -en le le ε  
161 -en m me ε  
162 -en me me ε  
163 -en n ne ε  
164 -en r re ε  
165 -en re re ε  
166 -en s se ε  
167 -en t te ε  
168 -en v ve ε  
169 -en ł we ε  
170 -  
171 -  
172 -#en os′t′ ość ε  
173 -#en os′t′ą ością ε  
174 -#en os′t′om ościom ε  
175 -#en os′t′am′i ościami ε  
176 -#en os′t′ax ościach ε  
177 -#en os′t′i ości ε  
178 -#en ovą ową ε  
179 -#en ovym′i owymi ε  
180 -#en ovym owym ε  
181 -#en ovyx owych ε  
182 -#en ovy owy ε  
183 -#en ovo owo ε  
184 -#en ov′i owi ε  
185 -#en ovemu owemu ε  
186 -#en ovej owej ε  
187 -#en ovego owego ε  
188 -#en ove owe ε  
189 -#en ova owa ε  
190 -#en oły owy ε  
191 -#en oła owa ε  
192 -#en k′ix kich ε  
193 -#en k′e kie ε  
194 -#en k′ej kiej ε  
195 -#en k′im kim ε  
196 -#en k′im′i kimi ε  
197 -#en ka ka ε  
198 -#en ką ką ε  
199 -#en ko ko ε  
200 -#en ku ku ε  
201 -#en če cze ε  
202 -#en n′ja nia ε  
203 -#en n′ją nią ε  
204 -#en n′je nie ε  
205 -#en n′ję nię ε  
206 -#en n′ji nii ε  
207 -#en n′ij nij ε  
208 -#en n′jom niom ε  
209 -#en n′jo nio ε  
210 -#en n′jax niach ε  
211 -#en n′jam′i niami ε  
212 -  
morphology/data/fonetics_fr.dic deleted
1 -@symbols  
2 -ω a ą e ę o ó u  
3 -δ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y z ź ż - ε  
4 -γ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y ź ż - ε  
5 -ξ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y - ε  
6 -μ a ą b c ć d e ę f g k l ł m n ń o ó p r s ś t u w y ź ż - ε  
7 -λ b c ć d f g h k l ł m n ń p r s ś t w z ź ż - ε  
8 -κ b c ć d f g h i j k l ł m n ń p r s ś t w z ź ż - ε  
9 -σ a ą b c ć d e ę f g j h k l ł m n ń o ó p r s ś t u w y z ź ż - ε  
10 -ρ aε achε amiε ąε eε ęε iε oε omε onε umε ówε uε owiε omε emε yε owieε emuε egoε goε mε muε ε  
11 -  
12 -@rev_symbols  
13 -ω a ą e ę o ó u  
14 -δ a ą b c ć č d ʒ ǯ e ę f g h x i k l ł m n ń o ó p r ř s ś š t u v w y z ź ž - ε  
15 -λ b c ć č d ʒ ǯ f g h x k l ł m n ń p r ř s ś š t v w z ź ž - ε  
16 -κ b c ć č d ʒ ǯ f g h x i j ʲ k l ł m n ń p r ř s ś š t v w z ź ž - ε  
17 -ρ aε axε am′iε ąε eε ęε iε oε omε onε umε óvε uε ov′iε omε emε ε  
18 -  
19 -@rev_rules  
20 -fr ks x  
21 -fr b bes ε  
22 -fr d d ε  
23 -fr d de ε  
24 -fr f phe ε  
25 -fr g gue ε  
26 -fr g gues ε  
27 -fr k c ε  
28 -fr k que ε  
29 -fr k q ε  
30 -fr k cq ε  
31 -fr k ques ε  
32 -fr k cques ε  
33 -fr m me ε  
34 -fr n n ε  
35 -fr n ne ε  
36 -fr n nes ε  
37 -fr n′ ng ε  
38 -fr r r ε  
39 -fr r re ε  
40 -fr r res ε  
41 -fr r rs ε  
42 -fr s s ε  
43 -fr s se ε  
44 -fr s ce ε  
45 -fr t t ε  
46 -fr t tes ε  
47 -fr t thes ε  
48 -fr z se ε  
49 -  
50 -@rules  
51 -fr k q  
52 -fr n ng  
53 -  
54 -fr b′e bie ε  
55 -fr d′e dzie ε  
56 -fr f′e fie ε  
57 -fr m′e mie ε  
58 -fr n′e nie ε  
59 -fr s′n′e śnie ε  
60 -fr ře rze ε  
61 -fr s′e sie ε  
62 -fr ks′e ksie ε  
63 -fr t′e cie ε  
64 -fr s′t′e ście ε  
65 -fr v′e vie ε  
66 -fr z′e zie ε  
67 -  
68 -fr řy rzy ε  
69 -fr t′i ci ε  
70 -fr v′i vi ε  
71 -  
72 -fr g′em giem ε  
73 -fr g′i gi ε  
74 -fr k′em kiem ε  
75 -fr k′i ki ε  
76 -  
77 -fr ʲi ieu ch  
78 -fr ʲe ieu go  
79 -fr ʲi ieu m  
80 -fr ʲi ieu mi  
81 -fr ʲe ieu mu  
82 -fr llj lli ego  
83 -fr llj lli emu  
84 -fr llj lli e  
85 -fr e ée go  
86 -fr e ée m  
87 -fr e ée mu  
88 -fr x ch ε  
89 -fr m′i mi ε  
90 -  
91 -fr óv ów ε  
92 -fr ov′i owi ε  
93 -fr ov′e owie ε  
94 -fr am′i ami ε  
95 -fr ax ach ε  
96 -  
97 -fr e ès ’  
98 -fr e ais ’  
99 -fr k que ’  
100 -fr f phe ’  
101 -fr sj sy ’  
102 -fr fj phy ’  
103 -fr rj ry ’  
104 -fr š che ’  
105 -fr d de ’  
106 -fr r re ’  
107 -fr z se ’  
108 -fr ž ge ’  
109 -fr # ine ’  
110 -fr t te ’  
111 -fr l le ’  
112 -fr m me ’  
113 -fr n′ gne ’  
114 -fr n ne ’  
115 -fr v ve ’  
116 -fr g gue ’  
117 -fr s ce ’  
118 -fr gj guy ’  
119 -fr ’ ρ  
120 -  
121 -  
morphology/data/fonetics_pl.dic deleted
1 -@symbols  
2 -ω a ą e ę o ó u  
3 -δ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y z ź ż - ε v x q  
4 -#γ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y ź ż - ε  
5 -#ξ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y - ε  
6 -#μ a ą b c ć d e ę f g k l ł m n ń o ó p r s ś t u w y ź ż - ε  
7 -λ b c ć d f g h k l ł m n ń p r s ś t w z ź ż - ε v x q  
8 -κ b c ć d f g h i j k l ł m n ń p r s ś t w z ź ż - ε v x q  
9 -#σ a ą b c ć d e ę f g j h k l ł m n ń o ó p r s ś t u w y z ź ż - ε  
10 -ρ aε achε amiε ąε eε ęε iε oε omε onε umε  
11 -α ε goε muε mε  
12 -ά ε goε muε  
13 -β ε chε miε mε  
14 -γ aε achε amiε ąε eε ęε iε oε omε onε umε ówε uε owiε omε emε yε owieε emuε egoε goε mε muε ε  
15 -  
16 -@rev_symbols  
17 -ω a ą e ę o ó u {eu}  
18 -δ a ą b c ć č d ʒ ǯ e ę f g h x i k l ł m n ń o ó p r ř s ś š t u v w y z ź ž - ε {  
19 -λ b c ć č d ʒ ǯ f g h x k l ł m n ń p r ř s ś š t v w z ź ž - ε { q  
20 -κ b c ć č d ʒ ǯ f g h x i j ʲ k l ł m n ń p r ř s ś š t v w z ź ž - ε {  
21 -ρ aε axε am′iε ąε eε ęε iε oε omε onε umε  
22 -  
23 -@rev_rules  
24 -pl p′ pi ω  
25 -pl p′ p i  
26 -pl pj pi ρ  
27 -pl b′ bi ω  
28 -pl b′ b i  
29 -pl bj bi ρ  
30 -pl m′ mi ω  
31 -pl m′ m i  
32 -pl m′j mi ρ  
33 -pl f′ fi ω  
34 -pl f′ f i  
35 -pl fj fi ρ  
36 -pl v′ wi ω  
37 -pl v′ w i  
38 -pl v w δ  
39 -pl vj wi ρ  
40 -#pl v w j  
41 -pl t′ ć λ  
42 -pl t′ ci ω  
43 -pl t′ c i  
44 -pl d′ dź λ  
45 -pl d′ dzi ω  
46 -pl d′ dz i  
47 -pl ʒ dz  
48 -pl tʲ ti ω  
49 -pl tʲ t i  
50 -pl tj ti ρ  
51 -pl dʲ di ω  
52 -pl dʲ d i  
53 -pl dj di ρ  
54 -pl č cz δ  
55 -pl čʲ czi ω  
56 -pl čʲ cz i  
57 -pl č cz j  
58 -pl ǯ dż δ  
59 -pl ǯʲ dżi ω  
60 -pl ǯʲ dż i  
61 -pl ǯj dżi ρ  
62 -pl s′ ś λ  
63 -pl s′ si ω  
64 -pl s′ s i  
65 -pl z′ ź λ  
66 -pl z′ zi ω  
67 -pl z′ z i  
68 -pl š sz δ  
69 -pl š sz j  
70 -pl šʲ szi ω  
71 -pl šʲ sz i  
72 -pl ž ż δ  
73 -pl žʲ żi ω  
74 -pl žʲ ż i  
75 -pl žj żi ρ  
76 -pl lʲ li ω  
77 -pl lj li ρ  
78 -pl ř rz δ  
79 -pl ř rz j  
80 -pl rʲ ri ω  
81 -pl rʲ r i  
82 -pl rj ri ρ  
83 -pl n′ ń λ  
84 -pl n′ ni ω  
85 -pl n′ n i  
86 -pl n′j ni ρ  
87 -pl k′ ki ω  
88 -pl k′ k i  
89 -pl k′j ki ρ  
90 -pl g′ gi ω  
91 -pl g′ g i  
92 -pl g′j gi ρ  
93 -pl x ch δ  
94 -pl xʲ chi ω  
95 -pl xʲ ch i  
96 -pl xʲj chi ρ  
97 -pl hʲ hi ω  
98 -pl hʲ h i  
99 -pl aʲ a i  
100 -pl eʲ e i  
101 -pl oʲ o i  
102 -pl óʲ ó i  
103 -pl uʲ u i  
104 -pl iʲ i i  
105 -pl yʲ y i  
106 -  
107 -fr {ch}š ch  
108 -fr {q}k q  
109 -fr {ng}n ng  
110 -en {tch}č tch  
111 -en {w}ł w  
112 -en {leigh}l leigh  
113 -de {au}ał au  
114 -de {sch}š sch  
115 -de {tsch}č tsch  
116 -de {z}c z  
117 -  
118 -en {ay}aj ay ε  
119 -en {ey}ej ey ε  
120 -en {oy}oj oy ε  
121 -en {ay}aj ay ω  
122 -en {ey}ej ey ω  
123 -en {oy}oj oy ω  
124 -  
125 -en {dh}dʲ dhi ω  
126 -en {dh}dʲ dh iκ  
127 -en {dh}d dh δ  
128 -en {gh}g′ ghi ω  
129 -en {gh}g′ gh iκ  
130 -en {gh}g gh δ  
131 -en {kh}k′ khi ω  
132 -en {kh}k′ kh iκ  
133 -en {kh}k kh δ  
134 -en {th}tʲ thi ω  
135 -en {th}tʲ th iκ  
136 -en {th}t th δ  
137 -en {v}v′ vi ω  
138 -en {v}v′ v iκ  
139 -en {v}v v δ  
140 -en {v}vj vi ρ  
141 -de-en-fr {x}ks′ xi ω  
142 -de-en-fr {x}ks′ x iκ  
143 -de-en-fr {x}ks x δ  
144 -  
145 -#lemma=e/y gender=m1  
146 -fr {dieu}dʲe dieu ε  
147 -fr {dieu}dʲi dieu ε  
148 -fr {quieu}k′e quieu ε  
149 -fr {quieu}k′i quieu ε  
150 -fr {lieu}lʲe lieu ε  
151 -fr {lieu}lʲi lieu ε  
152 -en {rie}rʲe rie ε  
153 -en {rie}rʲi rie ε  
154 -en {gie}ǯʲe gie ε  
155 -en {gie}ǯʲi gie ε  
156 -en {kie}k′e kie ε  
157 -en {kie}k′i kie ε  
158 -en {tie}tʲe tie ε  
159 -en {tie}tʲi tie ε  
160 -en {pie}p′e pie ε  
161 -en {pie}p′i pie ε  
162 -en {die}dʲe die ε  
163 -en {die}dʲi die ε  
164 -en {bee}b′e bee ε  
165 -en {bee}b′i bee ε  
166 -  
167 -#lemma=e gender=m1  
168 -fr {mée}me mée ε  
169 -de {ge}g′e ge ε  
170 -de {ke}k′e ke ε  
171 -  
172 -#lemma=y gender=m1  
173 -en {by}b′i by ε  
174 -en {dy}dʲi dy ε  
175 -es {dí}dʲi dí ε  
176 -fr {phy}f′i phy ε  
177 -fr {guy}g′i guy ε  
178 -de-en {ky}k′i ky ε  
179 -en {my}m′i my ε  
180 -fr {li}li li ε  
181 -en {ly}li ly ε  
182 -en-fr {ry}rʲi ry ε  
183 -fr {sy}sʲi sy ε  
184 -en {cy}sʲi cy ε  
185 -en {thy}tʲi thy ε  
186 -  
187 -#lemma=e/ndm gender=m1  
188 -fr {chais}še chais ε  
189 -fr {lais}le lais ε  
190 -fr {nais}ne nais ε  
191 -fr {rès}re rès ε  
192 -  
193 -#lemma=ε  
194 -en-fr {de}d de ε  
195 -en {fe}f fe ε  
196 -fr {phe}f phe ε  
197 -en {ge}ǯ ge ε  
198 -fr {gue}g gue ε  
199 -en {ke}k ke ε  
200 -fr {que}k que ε  
201 -en-fr {le}l le ε  
202 -en-fr {me}m me ε  
203 -en-fr {ne}n ne ε  
204 -fr {gne}n′ gne ε  
205 -en-fr {re}r re ε  
206 -en {se}s se ε  
207 -en-fr {ce}s ce ε  
208 -fr {che}š che ε  
209 -en-fr {te}t te ε  
210 -en {the}t the ε  
211 -en-fr {ve}v ve ε  
212 -en {we}ł we ε  
213 -fr {se}z se ε  
214 -fr {ge}ž ge ε  
215 -en {oe}oł oe ε  
216 -  
217 -  
218 -de g′el gel ε  
219 -  
220 -de g′e ge ε  
221 -de k′e ke ε  
222 -de k′i ky ε  
223 -de-en-fr ks x ε  
224 -  
225 - r r a  
226 -de r rh a  
227 - t t a  
228 -de t th a  
229 - k k  
230 -en k kh a  
231 -de-en-fr ks x a  
232 -en k c a  
233 -  
234 -en k c o  
235 -  
236 - b b ε  
237 -fr b bes ε  
238 - d d ε  
239 -en-fr d de ε  
240 - f f ε  
241 -fr f phe ε  
242 -en f ph ε  
243 - g g ε  
244 -fr g gue ε  
245 -fr g gues ε  
246 - k k ε  
247 -fr k c ε  
248 -fr k que ε  
249 -fr k q ε  
250 -fr k cq ε  
251 -fr k ques ε  
252 -fr k cques ε  
253 -en kt ct ε  
254 - m m ε  
255 -en-fr m me ε  
256 - n n ε  
257 -en-fr n ne ε  
258 -fr n nes ε  
259 -fr n ng ε  
260 - r r ε  
261 -en-fr r re ε  
262 -fr r res ε  
263 -fr r rs ε  
264 -en r rh ε  
265 - s s ε  
266 -en-fr s se ε  
267 -en-fr s ce ε  
268 -en s th ε  
269 - t t ε  
270 -fr t te ε  
271 -fr t tes ε  
272 -fr t thes ε  
273 -en t th ε  
274 -en t the ε  
275 -  
276 - e e j  
277 -en ej ey ε  
278 -  
279 - a a ε  
280 -en a ah ε  
281 -en aja ayah ε  
282 -  
283 -acro {A}a A  
284 -acro {B}b B  
285 -acro {C}c C  
286 -acro {C}k C  
287 -acro {Ć}t′ Ć  
288 -acro {D}d D  
289 -acro {E}e E  
290 -acro {F}f F  
291 -acro {G}g G  
292 -acro {H}h H  
293 -acro {I}j I  
294 -acro {J}j J  
295 -acro {K}k K  
296 -acro {L}l L  
297 -acro {Ł}ł Ł  
298 -acro {M}m M  
299 -acro {N}n N  
300 -acro {O}o O  
301 -acro {P}p P  
302 -acro {R}r R  
303 -acro {S}s S  
304 -acro {Ś}s′ Ś  
305 -acro {T}t T  
306 -acro {U}u U  
307 -acro {V}v V  
308 -acro {W}v W  
309 -acro {X}ks X  
310 -acro {Y}y Y  
311 -acro {Z}z Z  
312 -acro {Ż}ž Ż  
313 -acro {J}jot J  
314 -acro {Z}zet Z  
315 -acro {Ż}žet Ż  
316 -acro {v}v V  
317 -acro {x}ks X  
318 -acro {j}jot J  
319 -acro {z}zet z  
320 -acro {ż}žet Ż  
321 -  
322 -acro a A ε  
323 -  
324 -@rules  
325 -pl p′ pi ω  
326 -pl p′ p iκ  
327 -#pl p p δ  
328 -#pl p p j  
329 -pl pj pi ρ  
330 -pl b′ bi ω  
331 -pl b′ b iκ  
332 -#pl b b δ  
333 -pl bj bi ρ  
334 -#zbitka  
335 -#pl b b j  
336 -pl m′ mi ω  
337 -pl m′ m iκ  
338 -#pl m m δ  
339 -pl m′j mi ρ  
340 -pl f′ fi ω  
341 -pl f′ f iκ  
342 -#pl f f δ  
343 -pl fj fi ρ  
344 -pl v′ wi ω  
345 -pl v′ w iκ  
346 -pl v w δ  
347 -pl vj wi ρ  
348 -#zbitka  
349 -#pl v w j  
350 -pl t′ ć λ  
351 -#zbitki  
352 -#pl t′ ć u  
353 -#pl t′ ć a  
354 -#pl t′ ć i  
355 -pl t′ ci ω  
356 -#pl c c j  
357 -pl t′ c iκ  
358 -#pl c c μ  
359 -pl d′ dź λ  
360 -pl d′ dzi ω  
361 -pl d′ dz iκ  
362 -pl ʒ dz δ  
363 -#zbitka  
364 -#pl ʒ dz j  
365 -#pl t t δ  
366 -#pl t t j  
367 -pl tʲ ti ω  
368 -pl tʲ t iκ  
369 -pl tj ti ρ  
370 -#pl d d ξ  
371 -pl dʲ di ω  
372 -pl dʲ d iκ  
373 -#pl d d j  
374 -pl dj di ρ  
375 -pl č cz δ  
376 -pl čʲ czi ω  
377 -pl čʲ cz iκ  
378 -#pl čʲ cz j  
379 -pl ǯ dż δ  
380 -pl ǯʲ dżi ω  
381 -pl ǯʲ dż iκ  
382 -pl ǯj dżi ρ  
383 -pl s′ ś λ  
384 -pl s′ si ω  
385 -#pl s s j  
386 -pl s′ s iκ  
387 -#pl s s γ  
388 -pl z′ ź λ  
389 -pl z′ zi ω  
390 -#pl z z j  
391 -pl z′ z iκ  
392 -#pl z z δ  
393 -pl š sz δ  
394 -#pl šʲ sz j  
395 -pl šʲ szi ω  
396 -pl šʲ sz iκ  
397 -pl ž ż δ  
398 -pl žʲ żi ω  
399 -pl žʲ ż iκ  
400 -pl žj żi ρ  
401 -#pl l l δ  
402 -pl lʲ li ω  
403 -pl l l iκ  
404 -#pl l l j  
405 -#pl ł ł δ  
406 -#zbitka  
407 -#pl ł ł i  
408 -#zbitka  
409 -#pl ł ł j  
410 -pl lj li ρ  
411 -pl ř rz δ  
412 -#zbitka  
413 -#pl ř rz j  
414 -pl r r zi  
415 -#pl r r γ  
416 -#pl r r j  
417 -pl rʲ ri ω  
418 -pl rʲ r iκ  
419 -pl rj ri ρ  
420 -pl n′ ń λ  
421 -pl n′ ni ω  
422 -pl n′ n iκ  
423 -#pl n n δ  
424 -#pl n n j  
425 -pl n′j ni ρ  
426 -pl k′ ki ω  
427 -pl k′ k iκ  
428 -#pl k k δ  
429 -#pl k k j  
430 -pl k′j ki ρ  
431 -pl g′ gi ω  
432 -pl g′ g iκ  
433 -#pl g g δ  
434 -pl g′j gi ρ  
435 -pl x ch δ  
436 -pl xʲ chi ω  
437 -pl xʲ ch iκ  
438 -pl xʲj chi ρ  
439 -#pl h h δ  
440 -pl hʲ hi ω  
441 -pl hʲ h iκ  
442 -pl mar mar z  
443 -pl m′er mier z  
444 -pl n′e nie i  
445 -#pl a a σ  
446 -pl aʲ a i  
447 -#pl a a i  
448 -#pl e e σ  
449 -pl eʲ e i  
450 -#pl e e i  
451 -#pl o o σ  
452 -pl oʲ o i  
453 -#pl o o i  
454 -#pl ó ó σ  
455 -pl óʲ ó i  
456 -#pl ó ó i  
457 -#pl u u σ  
458 -pl uʲ u i  
459 -#pl u u i  
460 -#pl i i σ  
461 -pl iʲ i i  
462 -#pl i i i  
463 -#pl y y σ  
464 -pl yʲ y i  
465 -#pl y y i  
466 -#pl ą ą σ  
467 -#pl ę ę σ  
468 -#pl j j  
469 -#pl A A  
470 -#pl B B  
471 -#pl C C  
472 -#pl Ć Ć  
473 -#pl D D  
474 -#pl E E  
475 -#pl F F  
476 -#pl G G  
477 -#pl H H  
478 -#pl I I  
479 -#pl J J  
480 -#pl K K  
481 -#pl L L  
482 -#pl Ł Ł  
483 -#pl M M  
484 -#pl N N  
485 -#pl O O  
486 -#pl P P  
487 -#pl R R  
488 -#pl S S  
489 -#pl Ś Ś  
490 -#pl T T  
491 -#pl U U  
492 -#pl W W  
493 -#pl Y Y  
494 -#pl Z Z  
495 -#pl Ż Ż  
496 -#pl - -  
497 -#pl χ́ chi  
498 -#pl h́ hi  
499 -  
500 -fr {ch}š ch γ  
501 -fr {q}k q γ  
502 -fr {ng}n ng γ  
503 -en {tch}č tch γ  
504 -en {w}ł w  
505 -en {leigh}l leigh γ  
506 -de {au}ał au γ  
507 -de {sch}š sch γ  
508 -de {tsch}č tsch γ  
509 -de {z}c z γ  
510 -  
511 -en {ay}aj ay γ  
512 -en {ey}ej ey γ  
513 -en {oy}oj oy γ  
514 -  
515 -en {dh}dʲ dhi ω  
516 -en {dh}dʲ dh iκ  
517 -en {dh}d dh δ  
518 -en {gh}g′ ghi ω  
519 -en {gh}g′ gh iκ  
520 -en {gh}g gh δ  
521 -en {kh}k′ khi ω  
522 -en {kh}k′ kh iκ  
523 -en {kh}k kh δ  
524 -en {th}tʲ thi ω  
525 -en {th}tʲ th iκ  
526 -en {th}t th δ  
527 -en {v}v′ vi ω  
528 -en {v}v′ v iκ  
529 -en {v}v v δ  
530 -en {v}vj vi ρ  
531 -de-en-fr {x}ks′ xi ω  
532 -de-en-fr {x}ks′ x iκ  
533 -de-en-fr {x}ks x δ  
534 -  
535 -#lemma=e/y gender=m1  
536 -fr {dieu}dʲe dieu α  
537 -fr {dieu}dʲi dieu β  
538 -fr {quieu}k′e quieu α  
539 -fr {quieu}k′i quieu β  
540 -fr {lieu}lʲe lieu α  
541 -fr {lieu}lʲi lieu β  
542 -en {rie}rʲe rie α  
543 -en {rie}rʲi rie β  
544 -en {gie}ǯʲe gie α  
545 -en {gie}ǯʲi gie β  
546 -en {kie}k′e kie α  
547 -en {kie}k′i kie β  
548 -en {tie}tʲe tie α  
549 -en {tie}tʲi tie β  
550 -en {pie}p′e pie α  
551 -en {pie}p′i pie β  
552 -en {die}dʲe die α  
553 -en {die}dʲi die β  
554 -en {bee}b′e bee α  
555 -en {bee}b′i bee β  
556 -  
557 -#lemma=e gender=m1  
558 -fr {mée}me mée α  
559 -de {ge}g′e ge α  
560 -de {ke}k′e ke α  
561 -  
562 -#lemma=y gender=m1  
563 -en {by}b′ by ’eά  
564 -en {by}b′i by β  
565 -en {dy}dʲ dy ’eά  
566 -en {dy}dʲi dy β  
567 -es {dí}dʲ dí eά  
568 -es {dí}dʲi dí β  
569 -fr {phy}f′ phy ’eά  
570 -fr {phy}f′i phy β  
571 -fr {guy}g′ guy ’eά  
572 -fr {guy}g′i guy β  
573 -de-en {ky}k′ ky ’eά  
574 -de-en {ky}k′i ky β  
575 -en {my}m′ my ’eά  
576 -en {my}m′i my β  
577 -fr {li}l li eά  
578 -fr {li}l l iβ  
579 -en {ly}l ly ’eά  
580 -en {ly}li ly β  
581 -en-fr {ry}rʲ ry ’eά  
582 -en-fr {ry}rʲi ry β  
583 -fr {sy}sʲ sy ’eά  
584 -fr {sy}sʲi sy β  
585 -en {cy}sʲ cy ’eά  
586 -en {cy}sʲi cy β  
587 -en {thy}tʲ thy ’eά  
588 -en {thy}tʲi thy β  
589 -  
590 -#lemma=e/ndm gender=m1  
591 -fr {chais}še chais ’  
592 -fr {lais}le lais ’  
593 -fr {nais}ne nais ’  
594 -fr {rès}re rès ’  
595 -  
596 -#lemma=ε  
597 -en-fr {de}d de ’  
598 -en-fr {de}d de ε  
599 -en {fe}f fe ’  
600 -en {fe}f fe ε  
601 -fr {phe}f phe ’  
602 -fr {phe}f phe ε  
603 -en {ge}ǯ ge ’  
604 -en {ge}ǯ ge ε  
605 -fr {gue}g gue ’  
606 -fr {gue}g gue ε  
607 -en {ke}k ke ’  
608 -en {ke}k ke ε  
609 -fr {que}k que ’  
610 -fr {que}k que ε  
611 -en-fr {le}l le ’  
612 -en-fr {le}l le ε  
613 -en-fr {me}m me ’  
614 -en-fr {me}m me ε  
615 -en-fr {ne}n ne ’  
616 -en-fr {ne}n ne ε  
617 -fr {gne}n′ gne ’  
618 -fr {gne}n′ gne ε  
619 -en-fr {re}r re ’  
620 -en-fr {re}r re ε  
621 -en {se}s se ’  
622 -en {se}s se ε  
623 -en-fr {ce}s ce ’  
624 -en-fr {ce}s ce ε  
625 -fr {che}š che ’  
626 -fr {che}š che ε  
627 -en-fr {te}t te ’  
628 -en-fr {te}t te ε  
629 -en {the}t the ’  
630 -en {the}t the ε  
631 -en-fr {ve}v ve ’  
632 -en-fr {ve}v ve ε  
633 -en {we}ł we ’  
634 -en {we}ł we ε  
635 -fr {se}z se ’  
636 -fr {se}z se ε  
637 -fr {ge}ž ge ’  
638 -fr {ge}ž ge ε  
639 -#z wyjątkiem sg:loc.voc  
640 -en {oe}oł oe ’  
641 -en {oe}oł oe ε  
642 -  
643 -de-en-fr ’ γ  
644 -  
645 - n n g  
646 - z z γ  
647 - b b e  
648 - b b y  
649 - d d y  
650 - m m y  
651 - s s y  
652 - c c y  
653 - r r y  
654 - k k y  
655 - l l y  
656 - l l a  
657 - n n a  
658 - r r è  
659 - d d e  
660 - f f e  
661 - p p h  
662 - g g e  
663 - g g u  
664 - k k e  
665 - q q u  
666 - l l e  
667 - m m e  
668 - n n e  
669 - g g n  
670 - r r e  
671 - s s e  
672 - c c e  
673 - c c h  
674 - t t e  
675 - t t h  
676 - v v e  
677 - w w e  
678 - s s e  
679 - o o e  
680 - m m é  
681 - a a y  
682 - e e y  
683 - o o y  
684 -  
685 -acro a A ε  
686 -  
687 -acro {A}a A  
688 -acro {B}b B  
689 -acro {C}c C  
690 -acro {C}k C  
691 -acro {Ć}t′ Ć  
692 -acro {D}d D  
693 -acro {E}e E  
694 -acro {F}f F  
695 -acro {G}g G  
696 -acro {H}h H  
697 -acro {I}j I  
698 -acro {J}j J  
699 -acro {K}k K  
700 -acro {L}l L  
701 -acro {Ł}ł Ł  
702 -acro {M}m M  
703 -acro {N}n N  
704 -acro {O}o O  
705 -acro {P}p P  
706 -acro {R}r R  
707 -acro {S}s S  
708 -acro {Ś}s′ Ś  
709 -acro {T}t T  
710 -acro {U}u U  
711 -acro {V}v V  
712 -acro {W}v W  
713 -acro {X}ks X  
714 -acro {Y}y Y  
715 -acro {Z}z Z  
716 -acro {Ż}ž Ż  
717 -acro {J}jot J-ot δ  
718 -acro {Z}zet Z-et δ  
719 -acro {Ż}žet Ż-et δ  
720 -acro {z}zet z-et δ  
721 -  
722 -acro {B}b′e B-ie ε  
723 -acro {D}d′e D-zie ε  
724 -acro {F}f′e F-ie ε  
725 -acro {M}m′e M-ie ε  
726 -acro {N}n′e N-ie ε  
727 -acro {P}p′e P-ie ε  
728 -acro {R}ře R-ze ε  
729 -acro {S}s′e S-ie ε  
730 -acro {T}t′e -cie ε  
731 -acro {V}v′e V-ie ε  
732 -acro {W}v W-ie ε  
733 -acro {X}ks′e X-ie ε  
734 -acro {Z}z Z-ie ε  
735 -acro {J}jot′e J-ocie ε  
736 -acro {Z}zet′e Z-ecie ε  
737 -acro {Ż}žet′e Ż-ecie ε  
738 -  
739 -acro {B}b′e Bie ε  
740 -acro {D}d′e Dzie ε  
741 -acro {F}f′e Fie ε  
742 -acro {M}m′e Mie ε  
743 -acro {N}n′e Nie ε  
744 -acro {P}p′e Pie ε  
745 -acro {R}ře Rze ε  
746 -acro {S}s′e Sie ε  
747 -acro {T}t′e cie ε  
748 -acro {V}v′e Vie ε  
749 -acro {W}v Wie ε  
750 -acro {X}ks′e Xie ε  
751 -acro {Z}z Zie ε  
752 -acro {J}jot′e Jocie ε  
753 -acro {Z}zet′e Zecie ε  
754 -acro {Ż}žet′e Żecie ε  
755 -  
756 -acro b′e b-ie ε  
757 -acro d′e d-zie ε  
758 -acro f′e f-ie ε  
759 -acro m′e m-ie ε  
760 -acro n′e n-ie ε  
761 -acro p′e p-ie ε  
762 -acro ře r-ze ε  
763 -acro s′e s-ie ε  
764 -acro t′e -cie ε  
765 -acro {v}v′e v-ie ε  
766 -acro v w-ie ε  
767 -acro {x}ks′e x-ie ε  
768 -acro z z-ie ε  
769 -acro {j}jot′e j-ocie ε  
770 -acro {z}zet′e z-ecie ε  
771 -acro {ż}žet′e ż-ecie ε  
772 -  
773 -acro {T}t′e CIE ε  
774 -acro {A}a{T}t′e acie ε  
775 -acro {E}e{T}t′e ecie ε  
776 -acro {I}j{T}t′e icie ε  
777 -acro {O}o{T}t′e ocie ε  
778 -acro {U}u{T}t′e ucie ε  
779 -  
780 -acro {C}k′i C-i ε  
781 -acro {C}k′em C-iem ε  
782 -acro {G}g′i G-i ε  
783 -acro {G}g′em G-iem ε  
784 -acro {J}ji J-i ε  
785 -acro {K}k′i K-i ε  
786 -acro {K}k′em K-iem ε  
787 -acro {L}li L-i ε  
788 -acro - γ  
789 -  
790 -  
morphology/data/fonetics_pl_old.dic deleted
1 -@symbols  
2 -ω a ą e ę o ó u  
3 -δ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y z ź ż - ε  
4 -γ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y ź ż - ε  
5 -ξ a ą b c ć d e ę f g h k l ł m n ń o ó p r s ś t u w y - ε  
6 -μ a ą b c ć d e ę f g k l ł m n ń o ó p r s ś t u w y ź ż - ε  
7 -λ b c ć d f g h k l ł m n ń p r s ś t w z ź ż - ε  
8 -κ b c ć d f g h j k l ł m n ń p r s ś t w z ź ż - ε  
9 -σ a ą b c ć d e ę f g i h k l ł m n ń o ó p r s ś t u w y z ź ż - ε  
10 -  
11 -@rules  
12 -ṕ pi ω  
13 -ṕ p iκ  
14 -p p δ  
15 -b́ bi ω  
16 -b′ bj ω  
17 -b́ b iκ  
18 -b b δ  
19 -f́ fi ω  
20 -f́ f iκ  
21 -f f δ  
22 -v́ wi ω  
23 -v́ w iκ  
24 -v w δ  
25 -ć ć λ  
26 -ć ci ω  
27 -c′ cj ω  
28 -ć c iκ  
29 -c c μ  
30 -ʒ́ dź λ  
31 -ʒ́ dzi ω  
32 -ʒ́ dz iκ  
33 -ʒ dz δ  
34 -t t δ  
35 -t′ ti ω  
36 -t′ t iκ  
37 -d d ξ  
38 -d′ di ω  
39 -d′ d iκ  
40 -č cz δ  
41 -ǯ dż δ  
42 -ś ś λ  
43 -ś si ω  
44 -s′ sj ω  
45 -ś s iκ  
46 -s s γ  
47 -ź ź λ  
48 -ź zi ω  
49 -z′ zj ω  
50 -ź z iκ  
51 -z z δ  
52 -š sz δ  
53 -ž ż δ  
54 -l l δ  
55 -l′ li ω  
56 -l′ l iκ  
57 -ł ł δ  
58 -ř rz δ  
59 -r r γ  
60 -r′ ri ω  
61 -r′ r iκ  
62 -ḿ mi ω  
63 -ḿ m iκ  
64 -m m δ  
65 -ń ń λ  
66 -ń ni ω  
67 -ń n iκ  
68 -n n δ  
69 -ḱ ki ω  
70 -ḱ k iκ  
71 -k k δ  
72 -ǵ gi ω  
73 -ǵ g iκ  
74 -g g δ  
75 -χ ch δ  
76 -x′ chi ω  
77 -x′ ch iκ  
78 -h h δ  
79 -h′ hi ω  
80 -h′ h iκ  
81 -a a σ  
82 -a′ aj  
83 -e e σ  
84 -e′ ej  
85 -o o σ  
86 -o′ oj  
87 -ó ó σ  
88 -ó′ ój  
89 -u u σ  
90 -u′ uj  
91 -i i σ  
92 -i′ ij  
93 -y y σ  
94 -y′ yj  
95 -ą ą σ  
96 -ę ę σ  
97 -j j  
98 -A A  
99 -B B  
100 -C C  
101 -D D  
102 -E E  
103 -F F  
104 -G G  
105 -H H  
106 -I I  
107 -J J  
108 -K K  
109 -L L  
110 -Ł Ł  
111 -M M  
112 -N N  
113 -O O  
114 -P P  
115 -R R  
116 -S S  
117 -Ś Ś  
118 -T T  
119 -U U  
120 -W W  
121 -Y Y  
122 -Z Z  
123 -Ż Ż  
124 -- -  
125 -#χ́ chi  
126 -#h́ hi  
127 -  
morphology/data/interp_rules.dic
@@ -334,8 +334,10 @@ @@ -334,8 +334,10 @@
334 * cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:n:ncol # 836 Aachen Age Aires:s Angeles Argos:s1 Arkansas:s1 Arkansas:s3 Arnhem Auschwitz Austerlitz Baku Betlejem Birkenau Bizancjum Bonn Borneo Borodino Buffalo:s1 Burgas CB-radio 334 * cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:n:ncol # 836 Aachen Age Aires:s Angeles Argos:s1 Arkansas:s1 Arkansas:s3 Arnhem Auschwitz Austerlitz Baku Betlejem Birkenau Bizancjum Bonn Borneo Borodino Buffalo:s1 Burgas CB-radio
335 * cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m3 # 147 Aachen Arkansas:s1 Arkansas:s2 Bator Kansas:s2 Kara-Kum Kent Kyzył-Kum Michigan Missisipi:s1 Mississippi:s2 Missouri:s1 Montgomery:s3 Szoa Tet Ułan Westminster Windows Wisconsin Woodstock 335 * cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m3 # 147 Aachen Arkansas:s1 Arkansas:s2 Bator Kansas:s2 Kara-Kum Kent Kyzył-Kum Michigan Missisipi:s1 Mississippi:s2 Missouri:s1 Montgomery:s3 Szoa Tet Ułan Westminster Windows Wisconsin Woodstock
336 * cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m2 # 36 aguti aksis argali bankiwa boa:s1 czau-czau dingo dodo emu ferrari galago grizli kagu karibu kiwi:s2 koati koendu kuandu maki mehari 336 * cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m2 # 36 aguti aksis argali bankiwa boa:s1 czau-czau dingo dodo emu ferrari galago grizli kagu karibu kiwi:s2 koati koendu kuandu maki mehari
337 -#* cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m1 # 90 Allende Ante Bambo Bantu Bartoszcze Belmondo Brando Buffalo:s2 Capone Caruso Castro Crusoe Curie Defoe Diego Domingo Fo Gard Giuseppe Hugo:s2 337 +* cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m1 # 90 Allende Ante Bambo Bantu Bartoszcze Belmondo Brando Buffalo:s2 Capone Caruso Castro Crusoe Curie Defoe Diego Domingo Fo Gard Giuseppe Hugo:s2
  338 +* cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m1|depr:pl:nom.acc.voc:m2 #
338 * cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:f # 150 Abisag Abiszag Akropolis Ananke Arachne Arkansas:s2 Ata:s Babel Beatrycze Berenike Carmen Colorado:s2 Dafne Demeter Dolores Doris Dudziak:s2 Edith Ferdydurke Gabi 339 * cat=ndm subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:f # 150 Abisag Abiszag Akropolis Ananke Arachne Arkansas:s2 Ata:s Babel Beatrycze Berenike Carmen Colorado:s2 Dafne Demeter Dolores Doris Dudziak:s2 Edith Ferdydurke Gabi
  340 +* cat=ndm subst:pl:nom.gen.dat.acc.inst.loc.voc:n:pt #
339 341
340 * cat=noun flex=ego lemma=a subst:sg:gen.acc:m1 # 9 burgrabia gograbia grabia hrabia margrabia murgrabia sędzia:s1 wicehrabia współsędzia 342 * cat=noun flex=ego lemma=a subst:sg:gen.acc:m1 # 9 burgrabia gograbia grabia hrabia margrabia murgrabia sędzia:s1 wicehrabia współsędzia
341 * cat=noun flex=ego lemma=a subst:sg:gen:m1 # 9 burgrabia gograbia grabia hrabia margrabia murgrabia sędzia:s1 wicehrabia współsędzia 343 * cat=noun flex=ego lemma=a subst:sg:gen:m1 # 9 burgrabia gograbia grabia hrabia margrabia murgrabia sędzia:s1 wicehrabia współsędzia
@@ -424,8 +426,6 @@ @@ -424,8 +426,6 @@
424 * cat=adj flex=i lemma=ε adj:pl:nom:m1:pos # 4 kontent:a niekontent:a nierad:a rad:a 426 * cat=adj flex=i lemma=ε adj:pl:nom:m1:pos # 4 kontent:a niekontent:a nierad:a rad:a
425 * cat=adj flex=ych lemma=ε adj:pl:gen.loc:m1.m2.m3.f.n:pos|adj:pl:acc:m1:pos # 22 czyj jeden:a mój:a nasz niczyj niejeden:a1 niejeden:a2 niesamoswój nieswój niewart oboj obój:a pewien sam:a samojeden samoswój swój twój:a wart:a wasz 427 * cat=adj flex=ych lemma=ε adj:pl:gen.loc:m1.m2.m3.f.n:pos|adj:pl:acc:m1:pos # 22 czyj jeden:a mój:a nasz niczyj niejeden:a1 niejeden:a2 niesamoswój nieswój niewart oboj obój:a pewien sam:a samojeden samoswój swój twój:a wart:a wasz
426 * cat=adj flex=ymi lemma=ε adj:pl:inst:m1.m2.m3.f.n:pos # 23 czyj jeden:a mój:a nasz niczyj niejeden:a1 niejeden:a2 niesamoswój nieswój niewart oboj obój:a pewien sam:a samojeden samoswój swój twój:a wart:a wasz 428 * cat=adj flex=ymi lemma=ε adj:pl:inst:m1.m2.m3.f.n:pos # 23 czyj jeden:a mój:a nasz niczyj niejeden:a1 niejeden:a2 niesamoswój nieswój niewart oboj obój:a pewien sam:a samojeden samoswój swój twój:a wart:a wasz
427 -* cat=adj flex=ε lemma=ε adj:sg.pl:nom.gen.dat.acc.inst.loc.voc:m1.m2.m3.f.n:pos|adja # 1 pop:a  
428 -* cat=adj flex=ε lemma=ε adj:sg.pl:nom.gen.dat.acc.inst.loc.voc:m1.m2.m3.f.n:pos # 26 a-z a-ż beż:a blond:a ciemnoblond:a ck cool:a dum-dum fest:a frysz ful:a git:a instant jasnoblond lilaróż:a maksi nonajron:a okej:a open perfekt:a  
429 429
430 cat=adj:grad pref=ε flex=ą lemma=y adj:sg:acc.inst:f:com # 1076 absurdalny adekwatny agresywny aktualny aktywny akuratny ambitny apetyczny arystokratyczny atrakcyjny autentyczny baczny bajeczny banalny barwny bezbożny:a bezbronny bezczelny bezecny bezpieczny 430 cat=adj:grad pref=ε flex=ą lemma=y adj:sg:acc.inst:f:com # 1076 absurdalny adekwatny agresywny aktualny aktywny akuratny ambitny apetyczny arystokratyczny atrakcyjny autentyczny baczny bajeczny banalny barwny bezbożny:a bezbronny bezczelny bezecny bezpieczny
431 cat=adj:grad pref=ε flex=ymi lemma=y adj:pl:inst:m1.m2.m3.f.n:com # 1076 absurdalny adekwatny agresywny aktualny aktywny akuratny ambitny apetyczny arystokratyczny atrakcyjny autentyczny baczny bajeczny banalny barwny bezbożny:a bezbronny bezczelny bezecny bezpieczny 431 cat=adj:grad pref=ε flex=ymi lemma=y adj:pl:inst:m1.m2.m3.f.n:com # 1076 absurdalny adekwatny agresywny aktualny aktywny akuratny ambitny apetyczny arystokratyczny atrakcyjny autentyczny baczny bajeczny banalny barwny bezbożny:a bezbronny bezczelny bezecny bezpieczny
morphology/dict.ml
@@ -172,6 +172,7 @@ let split_language lang_filename in_path filename out_path = @@ -172,6 +172,7 @@ let split_language lang_filename in_path filename out_path =
172 let dict_map = Xlist.fold dict StringMap.empty (fun dict_map e -> 172 let dict_map = Xlist.fold dict StringMap.empty (fun dict_map e ->
173 try 173 try
174 let lang = StringMap.find map e.lemma in 174 let lang = StringMap.find map e.lemma in
  175 + (* let lang = "all" in *)
175 StringMap.add_inc dict_map lang [e] (fun l -> e :: l) 176 StringMap.add_inc dict_map lang [e] (fun l -> e :: l)
176 with Not_found -> dict_map) in 177 with Not_found -> dict_map) in
177 StringMap.iter dict_map (fun lang dict -> 178 StringMap.iter dict_map (fun lang dict ->
@@ -214,10 +215,43 @@ let rec get_aspect lemma = function @@ -214,10 +215,43 @@ let rec get_aspect lemma = function
214 | _ -> get_aspect lemma l) 215 | _ -> get_aspect lemma l)
215 | [] -> failwith ("get_aspect: " ^ lemma) 216 | [] -> failwith ("get_aspect: " ^ lemma)
216 217
  218 +let epsilon_lemmata = StringSet.of_list [
  219 + "Berkeley"; "Blake"; "Bourdelle"; "Boyle"; "Boy"; "Braille"; "Braque"; "Brooke"; "Halley";
  220 + "Constable"; "Corneille"; "Delavigne"; "Doyle"; "Drake"; "Dunaway"; "Faraday"; "Gable"; "Gay";
  221 + "George"; "Heaney"; "Google"; "Desargues"; "Disney"; "Doumergue"; "Gaulle"; "Hemingway"; "Hubble";
  222 + "Huxley"; "Jokai"; "Joule"; "Jókai"; "Lisle"; "Locke"; "Losey"; "Macaulay"; "May";
  223 + "McCartney"; "Remarque"; "Searle"; "Shelley"; "Sisley"; "Stanley"; "Thackeray"; "Updike"; "Winfrey";
  224 + "assemblage"; "boutique"; "branle"; "cartridge"; "chippendale"; "collage"; "collége"; "decoupage"; "dodge";
  225 + "entourage"; "freestyle"; "grisaille"; "grunge"; "joule"; "quiche"; "remake"; "rocaille"; "scrabble";
  226 + "siècle"; "playboy"; "oldboy"; "jockey"; "image"; "college"; "cockney"; "Montaigne"; "";
  227 + "allemande"; "anglaise"; "beguine"; "breakdance"; "courante"; "ensemble"; "high-life"; "iPhone"; "iphone";
  228 + "rolls-royce"; "Redgrave"; "cowboy"; "drive"; "Nightingale"; "Presley"; ""; ""; "";
  229 + ""; ""; ""; ""; ""; ""; ""; ""; "";
  230 + ""; ""; ""; ""; ""; ""; ""; ""; "";
  231 + ""; ""; ""; ""; ""; ""; ""; ""; "";
  232 + ]
  233 +
  234 +let e_lemmata = StringSet.of_list [
  235 + "Barrès"; "Beaumarchais"; "Marchais"; "Montesquieu"; "Rabelais"; "Resnais"; "Richelieu"; ""; "";
  236 + ""; ""; ""; ""; ""; ""; ""; ""; "";
  237 + ""; ""; ""; ""; ""; ""; ""; ""; "";
  238 + ]
  239 +
  240 +let y_lemmata = StringSet.of_list [
  241 + "Bogorodckij"; "Gaudí"; "Szeptyćkyj"; "Toynbee"; "Trubieckoj"; "Wołżskij"; ""; ""; "";
  242 + ""; ""; ""; ""; ""; ""; ""; ""; "";
  243 + ""; ""; ""; ""; ""; ""; ""; ""; "";
  244 + ""; ""; ""; ""; ""; ""; ""; ""; "";
  245 + ]
  246 +
217 let get_lemma_suf lemma = 247 let get_lemma_suf lemma =
  248 + let lemma = Stem.simplify_lemma lemma in
  249 + if StringSet.mem epsilon_lemmata lemma then "ε" else
  250 + if StringSet.mem e_lemmata lemma then "e" else
  251 + if StringSet.mem y_lemmata lemma then "y" else
218 let lemma_suf = 252 let lemma_suf =
219 if lemma = "" then "" else 253 if lemma = "" then "" else
220 - List.hd (List.rev (Xunicode.utf8_chars_of_utf8_string (Stem.simplify_lemma lemma))) in 254 + List.hd (List.rev (Xunicode.utf8_chars_of_utf8_string lemma)) in
221 match lemma_suf with 255 match lemma_suf with
222 "a" -> "a" 256 "a" -> "a"
223 | "e" -> "e" 257 | "e" -> "e"
@@ -366,7 +400,7 @@ let merge_interps lemma forms = @@ -366,7 +400,7 @@ let merge_interps lemma forms =
366 | _,["depr:pl:nom.acc.voc:m2";"subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m1"] -> {empty_form with orth=orth; interp="subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m1|depr:pl:nom.acc.voc:m2"} :: forms 400 | _,["depr:pl:nom.acc.voc:m2";"subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m1"] -> {empty_form with orth=orth; interp="subst:sg.pl:nom.gen.dat.acc.inst.loc.voc:m1|depr:pl:nom.acc.voc:m2"} :: forms
367 | _,[interp] -> {empty_form with orth=orth; interp=interp} :: forms 401 | _,[interp] -> {empty_form with orth=orth; interp=interp} :: forms
368 | _,interps -> 402 | _,interps ->
369 - (* print_endline ("merge_interps: " (*^ lemma_suf*) ^ " [\"" ^ String.concat "\";\"" interps ^ "\"]"); *) 403 + (* print_endline ("merge_interps: " ^ lemma_suf ^ " " ^ orth ^ " [\"" ^ String.concat "\";\"" interps ^ "\"]"); *)
370 Xlist.fold interps forms (fun forms interp -> 404 Xlist.fold interps forms (fun forms interp ->
371 {empty_form with orth=orth; interp=interp} :: forms)) 405 {empty_form with orth=orth; interp=interp} :: forms))
372 406
@@ -460,7 +494,7 @@ let find_kolwiek_suffixes dict = @@ -460,7 +494,7 @@ let find_kolwiek_suffixes dict =
460 494
461 let exceptional_lemmata = StringSet.of_list ([ 495 let exceptional_lemmata = StringSet.of_list ([
462 (* wiele stemów *) 496 (* wiele stemów *)
463 - "Apollo"; "Aujeszky"; "Białystok"; "Gózd"; "Krasnystaw"; "Różanystok"; "Wielkanoc"; "białagłowa"; 497 +(* "Apollo"; "Aujeszky"; "Białystok"; "Gózd"; "Krasnystaw"; "Różanystok"; "Wielkanoc"; "białagłowa";
464 "deszcz"; "imćpan"; "iściec"; "otrząs"; "rzeczpospolita"; "wilczełyko"; "woleoczko"; 498 "deszcz"; "imćpan"; "iściec"; "otrząs"; "rzeczpospolita"; "wilczełyko"; "woleoczko";
465 499
466 "prapraojciec"; "praojciec"; "ojciec"; "współbrat"; "spółbrat"; "półbrat"; "brat"; 500 "prapraojciec"; "praojciec"; "ojciec"; "współbrat"; "spółbrat"; "półbrat"; "brat";
@@ -569,9 +603,12 @@ let exceptional_lemmata = StringSet.of_list ([ @@ -569,9 +603,12 @@ let exceptional_lemmata = StringSet.of_list ([
569 "nieunixowość"; "niesurvivalowy"; "niesurvivalowość"; "niesoftware’owy"; "niesoftware’owość"; "nierock’n’rollowy"; "nierock’n’rollowość"; "nierock’n’rollowo"; "niequmrańskość"; 603 "nieunixowość"; "niesurvivalowy"; "niesurvivalowość"; "niesoftware’owy"; "niesoftware’owość"; "nierock’n’rollowy"; "nierock’n’rollowość"; "nierock’n’rollowo"; "niequmrańskość";
570 "niequmrański"; "niequizowy"; "niequizowość"; "niequeerowość"; "niequeerowo"; "niequadowy"; "nieoxfordzkość"; "nieoxfordzki"; "nienovellowskość"; "nienovellowski"; "nienewage'owy"; "nieliverpoolskość"; 604 "niequmrański"; "niequizowy"; "niequizowość"; "niequeerowość"; "niequeerowo"; "niequadowy"; "nieoxfordzkość"; "nieoxfordzki"; "nienovellowskość"; "nienovellowski"; "nienewage'owy"; "nieliverpoolskość";
571 "nieliverpoolski"; "niekickboxingowy"; "niekickboxingowość"; "nieheavymetalowy"; "nieheavymetalowość"; "nieheavymetalowo"; "nieharvardzkość"; "nieharvardzki"; "niedeveloperskość"; 605 "nieliverpoolski"; "niekickboxingowy"; "niekickboxingowość"; "nieheavymetalowy"; "nieheavymetalowość"; "nieheavymetalowo"; "nieharvardzkość"; "nieharvardzki"; "niedeveloperskość";
572 - "niedeveloperski"; "niedaviscupowy"; "niedaviscupowość"; "niebrexitowość"; "nieampexowy"; "nieampexowość"; "newage'owy"; "newage'owość"; "newage'owo"; "liverpoolskość"; "liverpoolski"; 606 + "niedeveloperski"; "niedaviscupowy"; "niedaviscupowość"; "niebrexitowość"; "nieampexowy"; "nieampexowość"; "newage'owy"; "newage'owość"; "newage'owo"; "liverpoolskość"; "liverpoolski";*)
  607 + "Akademgorodok"; "berceuse"; "colloquium"; "cornflakes"; "dacia"; "Dziubanii"; "epeisodion"; "facsimile"; "felicia"; "Garcia"; "Giedroyc"; "glediczia";
  608 + "głasnost"; "hippie"; "Kodaly"; "KRRiT"; "lancia"; "Murii"; "Nagy"; "PAGART"; "paparazzo"; "Praha"; "pudźa"; "Selye";
  609 + "welwiczia"; "yuppi"; "yuppie"; "Zápolya"; "Zrínyi"; ""; ""; ""; ""; ""; ""; "";
573 ] (*@ File.load_lines "../morphology/data/obce.tab" @ File.load_lines "../morphology/data/akronimy.tab" @*) 610 ] (*@ File.load_lines "../morphology/data/obce.tab" @ File.load_lines "../morphology/data/akronimy.tab" @*)
574 - @ File.fold_tab "../morphology/data/obce_langs.tab" [] (fun l x -> List.hd x :: l) @ 611 + (*@ File.fold_tab "../morphology/data/obce_langs.tab" [] (fun l x -> List.hd x :: l)*) @
575 (*File.load_lines "../morphology/data/nieregularne.tab" @ File.load_lines "results/interp_validated_verb.tab" @ *) 612 (*File.load_lines "../morphology/data/nieregularne.tab" @ File.load_lines "results/interp_validated_verb.tab" @ *)
576 (*File.load_lines "results/interp_validated_noun.tab" @ File.load_lines "results/interp_validated_adj.tab" @ 613 (*File.load_lines "results/interp_validated_noun.tab" @ File.load_lines "results/interp_validated_adj.tab" @
577 File.load_lines "../morphology/data/validated_adj.tab" @ File.load_lines "../morphology/data/validated_noun.tab" @ 614 File.load_lines "../morphology/data/validated_adj.tab" @ File.load_lines "../morphology/data/validated_noun.tab" @
@@ -619,21 +656,57 @@ let lowercase_lu dict = @@ -619,21 +656,57 @@ let lowercase_lu dict =
619 lemma2=Xunicode.lowercase_utf8_string entry.lemma2}) 656 lemma2=Xunicode.lowercase_utf8_string entry.lemma2})
620 657
621 658
622 -let fonetic_translation dict =  
623 - Xlist.fold dict [] (fun dict e ->  
624 - try 659 +let fonetic_translation_entry e =
625 (* let lemma = Stem.simplify_lemma e.lemma in *) 660 (* let lemma = Stem.simplify_lemma e.lemma in *)
626 (* let phon_lemma = Fonetics.translate_and_check true Fonetics.rules Fonetics.rev_rules lemma in *) 661 (* let phon_lemma = Fonetics.translate_and_check true Fonetics.rules Fonetics.rev_rules lemma in *)
627 - let phon_stem = Fonetics.translate(*_and_check*) true Fonetics.rules (*Fonetics.rev_rules*) e.stem in 662 + let rules = match e.cat with
  663 + "noun" -> Fonetics.rules
  664 + | "" -> failwith "fonetic_translation"
  665 + | _ -> Fonetics.core_rules in
  666 + let phon_stem = Fonetics.translate true rules e.stem in
628 {e with (*phon_lemma = phon_lemma;*) phon_stem=Xlist.map phon_stem (fun s -> s.phon); 667 {e with (*phon_lemma = phon_lemma;*) phon_stem=Xlist.map phon_stem (fun s -> s.phon);
629 forms = Xlist.map e.forms (fun f -> 668 forms = Xlist.map e.forms (fun f ->
630 - let phon_orth = Fonetics.translate(*_and_check*) true Fonetics.rules (*Fonetics.rev_rules*) f.orth in  
631 - {f with phon_orth = phon_orth})} :: dict 669 + let phon_orth = Fonetics.translate true rules f.orth in
  670 + {f with phon_orth = phon_orth})}
  671 +
  672 +(* let fonetic_translation dict =
  673 + Xlist.fold dict [] (fun dict e ->
  674 + try (fonetic_translation_entry e) :: dict
632 with 675 with
633 Fonetics.NotFound(x,s) -> printf "NF %s %s %s\n%!" e.lemma x s; dict 676 Fonetics.NotFound(x,s) -> printf "NF %s %s %s\n%!" e.lemma x s; dict
634 | Fonetics.NotEqual(x,s,t) -> printf "NE %s %s %s %s\n%!" e.lemma x s t; dict 677 | Fonetics.NotEqual(x,s,t) -> printf "NE %s %s %s %s\n%!" e.lemma x s t; dict
635 | Fonetics.MulipleSolutions(x,s,l) -> printf "MS %s %s %s: %s\n%!" e.lemma x s (String.concat " " l); dict 678 | Fonetics.MulipleSolutions(x,s,l) -> printf "MS %s %s %s: %s\n%!" e.lemma x s (String.concat " " l); dict
636 - | _ -> dict) 679 + | _ -> dict) *)
  680 +
  681 +let select_rev_rules e =
  682 + match e.cat with
  683 + "noun" -> Fonetics.rev_rules
  684 + | "" -> failwith "select_rev_rules"
  685 + | _ -> Fonetics.core_rev_rules
  686 +
  687 +let create_candidates interp_flag rules e =
  688 + let e = try fonetic_translation_entry e with _ -> print_endline ("fonetic_translation_entry: " ^ e.lemma); {e with forms=[]} in
  689 + let simple_lemma = Stem.simplify_lemma e.lemma in
  690 + let phon_rev_rules = select_rev_rules e in
  691 + let forms = Xlist.rev_map e.forms (fun f ->
  692 + (* if f.orth = "poljom" then printf "phon_orths: \n %s\n%!" (String.concat "\n " (Xlist.map f.phon_orth Fonetics.string_of_phon)); *)
  693 + let candidates = Xlist.fold f.phon_orth [] (fun candidates s ->
  694 + Xlist.fold (Rules.CharTrees.find rules s.phon) candidates (fun candidates (stem,rule) ->
  695 + let candidate_lemmas = Fonetics.translate_simple true phon_rev_rules (stem ^ rule.set) in
  696 + let b = Xlist.fold candidate_lemmas false (fun b candidate_lemma ->
  697 + (* if f.orth = "poljom" then (if candidate_lemma = simple_lemma then printf "E" else printf " ");
  698 + if f.orth = "poljom" then printf " %s %s %s %s\n%!" s.phon stem (string_of_rule rule) candidate_lemma; *)
  699 + candidate_lemma = simple_lemma || b) in
  700 + if b && ((not interp_flag) || f.interp = rule.interp) then (stem,rule,s) :: candidates else candidates)) in
  701 + {f with candidates=candidates}) in
  702 + {e with forms=forms}
  703 +
  704 +let phon_validate rules dict =
  705 + Xlist.rev_map dict (fun entry ->
  706 + let entry = create_candidates false rules entry in
  707 + let forms = Xlist.rev_map entry.forms (fun form ->
  708 + if form.candidates = [] then {form with validated=false} else {form with validated=true}) in
  709 + {entry with forms=forms})
637 710
638 (*let validate rules dict = 711 (*let validate rules dict =
639 Xlist.rev_map dict (fun entry -> 712 Xlist.rev_map dict (fun entry ->
@@ -645,18 +718,6 @@ let fonetic_translation dict = @@ -645,18 +718,6 @@ let fonetic_translation dict =
645 if candidates = [] then {form with validated=false} else {form with validated=true}) in 718 if candidates = [] then {form with validated=false} else {form with validated=true}) in
646 {entry with forms=forms})*) 719 {entry with forms=forms})*)
647 720
648 -let phon_validate rules dict =  
649 - Xlist.rev_map dict (fun entry ->  
650 - let simple_lemma = Stem.simplify_lemma entry.lemma in  
651 - let forms = Xlist.rev_map entry.forms (fun form ->  
652 - let candidates = Xlist.fold form.phon_orth [] (fun candidates s ->  
653 - Xlist.fold (Rules.CharTrees.find rules s.phon) candidates (fun candidates (stem,rule) ->  
654 - let candidate_lemmas = Fonetics.rev_translate2 true Fonetics.rev_rules (stem ^ rule.set) s.mapping in  
655 - let b = Xlist.fold candidate_lemmas false (fun b candidate_lemma -> candidate_lemma = simple_lemma || b) in  
656 - if b then (stem,rule) :: candidates else candidates)) in  
657 - if candidates = [] then {form with validated=false} else {form with validated=true}) in  
658 - {entry with forms=forms})  
659 -  
660 let validate_lu rules dict = 721 let validate_lu rules dict =
661 Xlist.rev_map dict (fun entry -> 722 Xlist.rev_map dict (fun entry ->
662 let candidates1 = Rules.CharTrees.find rules entry.lemma1 in 723 let candidates1 = Rules.CharTrees.find rules entry.lemma1 in
@@ -674,20 +735,19 @@ let validate_interp rules dict = @@ -674,20 +735,19 @@ let validate_interp rules dict =
674 Xlist.rev_map dict (fun entry -> 735 Xlist.rev_map dict (fun entry ->
675 let simple_lemma = Stem.simplify_lemma entry.lemma in 736 let simple_lemma = Stem.simplify_lemma entry.lemma in
676 let forms = Xlist.rev_map entry.forms (fun form -> 737 let forms = Xlist.rev_map entry.forms (fun form ->
677 - let candidates = Xlist.fold form.phon_orth [] (fun candidates s ->  
678 - Xlist.fold (Rules.CharTrees.find rules s.phon) candidates (fun candidates (stem,rule) ->  
679 - (* if rule.star = Ndm && not entry.ndm then candidates else  
680 - if rule.star <> Ndm && entry.ndm then candidates else *)  
681 - (* let candidate_lemma = Fonetics.rev_translate true Fonetics.rev_rules (stem ^ rule.set) s.mapping in  
682 - if candidate_lemma = simple_lemma && form.interp = rule.interp then  
683 - (stem,rule) :: candidates else candidates)) in *)  
684 - let candidate_lemmas = Fonetics.rev_translate2 true Fonetics.rev_rules (stem ^ rule.set) s.mapping in  
685 - let b = Xlist.fold candidate_lemmas false (fun b candidate_lemma -> candidate_lemma = simple_lemma || b) in  
686 - if b && form.interp = rule.interp then  
687 - (stem,rule) :: candidates else candidates)) in 738 + let candidates = Xlist.fold (Rules.CharTrees.find rules form.orth) [] (fun candidates (stem,rule) ->
  739 + if stem ^ rule.set = simple_lemma && form.interp = rule.interp then
  740 + (stem,rule) :: candidates else candidates) in
688 if candidates = [] then ((*printf "validate_interp: %s\t%s\t%s\n" form.orth entry.lemma form.interp;*) {form with validated=false}) else {form with validated=true}) in 741 if candidates = [] then ((*printf "validate_interp: %s\t%s\t%s\n" form.orth entry.lemma form.interp;*) {form with validated=false}) else {form with validated=true}) in
689 {entry with forms=forms}) 742 {entry with forms=forms})
690 743
  744 +let phon_validate_interp rules dict =
  745 + Xlist.rev_map dict (fun entry ->
  746 + let entry = create_candidates true rules entry in
  747 + let forms = Xlist.rev_map entry.forms (fun form ->
  748 + if form.candidates = [] then {form with validated=false} else {form with validated=true}) in
  749 + {entry with forms=forms})
  750 +
691 let remove_validated_forms dict = 751 let remove_validated_forms dict =
692 Xlist.fold dict [] (fun dict entry -> 752 Xlist.fold dict [] (fun dict entry ->
693 let forms = Xlist.fold entry.forms [] (fun forms form -> 753 let forms = Xlist.fold entry.forms [] (fun forms form ->
@@ -791,11 +851,11 @@ let generate_rules rules path filename rules_filename = @@ -791,11 +851,11 @@ let generate_rules rules path filename rules_filename =
791 let dict = remove_exceptional_lemmata dict in 851 let dict = remove_exceptional_lemmata dict in
792 let dict = find_kolwiek_suffixes dict in (* FIXME: lematy z kolwiek_suffixes nie są walidowane *) 852 let dict = find_kolwiek_suffixes dict in (* FIXME: lematy z kolwiek_suffixes nie są walidowane *)
793 let dict = generate_stem dict in 853 let dict = generate_stem dict in
794 - let dict = fonetic_translation dict in  
795 let dict = phon_validate rules dict in 854 let dict = phon_validate rules dict in
796 let dict = remove_validated_forms dict in 855 let dict = remove_validated_forms dict in
797 let dict = remove_sup_neg_forms dict in (* FIXME *) 856 let dict = remove_sup_neg_forms dict in (* FIXME *)
798 let rules = Xlist.fold dict StringMap.empty (fun rules entry -> 857 let rules = Xlist.fold dict StringMap.empty (fun rules entry ->
  858 + let entry = fonetic_translation_entry entry in
799 Xlist.fold (RuleGenerator.phon_generate_rules_entry entry) rules (fun rules (key,rule) -> 859 Xlist.fold (RuleGenerator.phon_generate_rules_entry entry) rules (fun rules (key,rule) ->
800 let rules2 = try StringMap.find rules key with Not_found -> StringMap.empty in 860 let rules2 = try StringMap.find rules key with Not_found -> StringMap.empty in
801 let rules2 = StringMap.add_inc rules2 rule (1,[entry.lemma]) (fun (q,l) -> q+1, if q < 20 then entry.lemma :: l else l) in 861 let rules2 = StringMap.add_inc rules2 rule (1,[entry.lemma]) (fun (q,l) -> q+1, if q < 20 then entry.lemma :: l else l) in
@@ -837,13 +897,13 @@ let generate_interp_rules rules interp_rules selected_tags path filename rules_f @@ -837,13 +897,13 @@ let generate_interp_rules rules interp_rules selected_tags path filename rules_f
837 let dict = remove_exceptional_lemmata dict in 897 let dict = remove_exceptional_lemmata dict in
838 (* let dict = find_kolwiek_suffixes dict in *) 898 (* let dict = find_kolwiek_suffixes dict in *)
839 (* let dict = generate_stem dict in *) 899 (* let dict = generate_stem dict in *)
840 - let dict = fonetic_translation dict in  
841 - let dict = validate_interp interp_rules dict in 900 + let dict = phon_validate_interp interp_rules dict in
842 let dict = remove_validated_forms dict in 901 let dict = remove_validated_forms dict in
843 let interp_rules = Xlist.fold dict StringMap.empty (fun interp_rules entry -> 902 let interp_rules = Xlist.fold dict StringMap.empty (fun interp_rules entry ->
844 - let simple_lemma = Stem.simplify_lemma entry.lemma in 903 + (* let simple_lemma = Stem.simplify_lemma entry.lemma in *)
  904 + let entry = create_candidates false rules entry in
845 Xlist.fold entry.forms interp_rules (fun interp_rules form -> 905 Xlist.fold entry.forms interp_rules (fun interp_rules form ->
846 - let candidates = RuleGenerator.phon_generate_interp_rules rules selected_tags simple_lemma form in 906 + let candidates = RuleGenerator.phon_generate_interp_rules (*rules*) selected_tags (*simple_lemma*) form in
847 Xlist.fold candidates interp_rules (fun interp_rules (v,cand) -> 907 Xlist.fold candidates interp_rules (fun interp_rules (v,cand) ->
848 (* StringMap.add_inc interp_rules cand (1,[entry.lemma]) (fun (q,l) -> q+1, if q < 20 then entry.lemma :: l else l)))) in *) 908 (* StringMap.add_inc interp_rules cand (1,[entry.lemma]) (fun (q,l) -> q+1, if q < 20 then entry.lemma :: l else l)))) in *)
849 StringMap.add_inc interp_rules cand (v,StringSet.singleton entry.lemma) (fun (v,set) -> v,StringSet.add set entry.lemma)))) in 909 StringMap.add_inc interp_rules cand (v,StringSet.singleton entry.lemma) (fun (v,set) -> v,StringSet.add set entry.lemma)))) in
@@ -862,6 +922,12 @@ let generate_interp_rules rules interp_rules selected_tags path filename rules_f @@ -862,6 +922,12 @@ let generate_interp_rules rules interp_rules selected_tags path filename rules_f
862 fst (Rules.RuleQMap.fold freq_rules (Rules.RuleQMap.empty,1) (fun (freq_rules,i) rule freq -> 922 fst (Rules.RuleQMap.fold freq_rules (Rules.RuleQMap.empty,1) (fun (freq_rules,i) rule freq ->
863 Rules.RuleQMap.add_val freq_rules {rule with id = "N" ^ string_of_int i} freq, i+1)) *) 923 Rules.RuleQMap.add_val freq_rules {rule with id = "N" ^ string_of_int i} freq, i+1)) *)
864 924
  925 +let manage_x_lemma stem suffix lemma =
  926 + match suffix with
  927 + "s" -> if Xstring.check_sufix "x" lemma && Xstring.check_sufix "k" stem then Xstring.cut_sufix "k" stem else stem
  928 + | "sa" -> if Xstring.check_sufix "xa" lemma && Xstring.check_sufix "k" stem then Xstring.cut_sufix "k" stem else stem
  929 + | _ -> stem
  930 +
865 let generate_rule_frequencies rules path filename rules_filename = 931 let generate_rule_frequencies rules path filename rules_filename =
866 let dict = load_tab (path ^ filename) in 932 let dict = load_tab (path ^ filename) in
867 let dict = merge_entries dict in 933 let dict = merge_entries dict in
@@ -871,16 +937,81 @@ let generate_rule_frequencies rules path filename rules_filename = @@ -871,16 +937,81 @@ let generate_rule_frequencies rules path filename rules_filename =
871 let freq_rules = generate_ndm_rules (remove_not_ndm dict) in 937 let freq_rules = generate_ndm_rules (remove_not_ndm dict) in
872 let dict = remove_ndm dict in *) 938 let dict = remove_ndm dict in *)
873 let dict = remove_exceptional_lemmata dict in 939 let dict = remove_exceptional_lemmata dict in
874 - let dict = generate_stem dict in  
875 - let dict = fonetic_translation dict in 940 + (* let dict = generate_stem dict in *)
876 let freq_rules = Xlist.fold dict Rules.RuleQMap.empty(*freq_rules*) (fun freq_rules entry -> 941 let freq_rules = Xlist.fold dict Rules.RuleQMap.empty(*freq_rules*) (fun freq_rules entry ->
  942 + let entry = create_candidates true rules entry in
877 let simple_lemma = Stem.simplify_lemma entry.lemma in 943 let simple_lemma = Stem.simplify_lemma entry.lemma in
  944 + (* print_endline simple_lemma; *)
878 Xlist.fold entry.forms freq_rules (fun freq_rules form -> 945 Xlist.fold entry.forms freq_rules (fun freq_rules form ->
879 - let candidates = Rules.CharTrees.find rules form.orth in 946 + let candidates = Xlist.fold form.candidates [] (fun candidates (stem,rule,s) ->
  947 + let x_stem = manage_x_lemma stem rule.set simple_lemma in
  948 + let rule,pref_stem,short_stem = match rule.pref with
  949 + "naj" ->
  950 + let pref_stem = Fonetics.get_short_stem "" ("naj" ^ x_stem) s.mapping in
  951 + rule, pref_stem, Xstring.cut_prefix "naj" pref_stem
  952 + | "n′e" ->
  953 + let pref_stem = Fonetics.get_short_stem "" ("nie" ^ x_stem) s.mapping in
  954 + {rule with pref="nie"}, pref_stem, Xstring.cut_prefix "nie" pref_stem
  955 + | "" ->
  956 + let pref_stem = Fonetics.get_short_stem "" x_stem s.mapping in
  957 + rule, pref_stem, pref_stem
  958 + | _ -> failwith "generate_rule_frequencies" in
  959 + (* printf "%s %s %s\n%!" simple_lemma stem pref_stem; *)
  960 + let rule = {rule with
  961 + find = Xstring.cut_prefix pref_stem form.orth;
  962 + set = Xstring.cut_prefix short_stem simple_lemma} in
  963 + (stem,rule) :: candidates) in
  964 + (* printf "%s %s %d\n%!" simple_lemma form.orth (Xlist.size candidates); *)
  965 + (* let candidates = Rules.CharTrees.find rules form.orth in
880 let candidates = Xlist.fold candidates [] (fun candidates (stem,rule) -> 966 let candidates = Xlist.fold candidates [] (fun candidates (stem,rule) ->
881 if stem ^ rule.set = simple_lemma && form.interp = rule.interp then 967 if stem ^ rule.set = simple_lemma && form.interp = rule.interp then
882 - (stem,rule) :: candidates else candidates) in  
883 - if candidates = [] then freq_rules else Rules.RuleQMap.add freq_rules (snd (List.hd candidates)))) in 968 + (stem,rule) :: candidates else candidates) in *)
  969 + let candidates2 =
  970 + Xlist.fold candidates [] (fun candidates2 (stem,rule) ->
  971 + if rule.star = Star then candidates2 else (stem,rule) :: candidates2) in
  972 + let candidates = if candidates2 = [] then candidates else candidates2 in
  973 + let _,candidates = Xlist.fold candidates (max_int,[]) (fun (min_n,min_l) (stem,rule) ->
  974 + let n = Xstring.size rule.find in
  975 + if n < min_n then n,[stem,rule] else
  976 + if n > min_n then min_n,min_l else
  977 + min_n, (stem,rule) :: min_l) in
  978 + let map = Xlist.fold candidates StringMap.empty (fun map (_,r) -> StringMap.add map (string_of_rule r) r) in
  979 + match StringMap.fold map [] (fun l s r -> (s,Rules.get_tag r.tags "con",Rules.get_tag r.tags "group",Rules.get_tag r.tags "lemma",r) :: l) with
  980 + (* match Rules.RuleSet.to_list (Xlist.fold candidates Rules.RuleSet.empty (fun set (_,r) -> Rules.RuleSet.add set r)) with *)
  981 + [] -> freq_rules
  982 + | [_,_,_,_,r] -> Rules.RuleQMap.add freq_rules r
  983 + | [_,"ʲ",_,_,_;_,"j",_,_,r] -> Rules.RuleQMap.add freq_rules r
  984 + | [_,"ʲ",_,_,_;_,"r",_,_,r] -> Rules.RuleQMap.add freq_rules r
  985 + | [_,"ʲ",_,_,_;_,"c",_,_,r] -> Rules.RuleQMap.add freq_rules r
  986 + | [_,"ʲ",_,_,_;_,"d",_,_,r] -> Rules.RuleQMap.add freq_rules r
  987 + | [_,"ʲ",_,_,_;_,"s",_,_,r] -> Rules.RuleQMap.add freq_rules r
  988 + | [_,"ʲ",_,_,_;_,"a",_,_,r] -> Rules.RuleQMap.add freq_rules r
  989 + | [_,"m′",_,_,_;_,"m",_,_,r] -> Rules.RuleQMap.add freq_rules r
  990 + | [_,"b′",_,_,_;_,"b",_,_,r] -> Rules.RuleQMap.add freq_rules r
  991 + | [_,"f′",_,_,_;_,"f",_,_,r] -> Rules.RuleQMap.add freq_rules r
  992 + | [_,"v′",_,_,_;_,"j",_,_,r] -> Rules.RuleQMap.add freq_rules r
  993 + | [_,"z",_,_,_;_,"s",_,_,r] -> Rules.RuleQMap.add freq_rules r
  994 + | [_,"c",_,_,_;_,"z",_,_,r] -> Rules.RuleQMap.add freq_rules r
  995 + | [_,"p′",_,_,_;_,"p",_,_,r] -> Rules.RuleQMap.add freq_rules r
  996 + | [_,"ǯ",_,_,_;_,"ž",_,_,r] -> Rules.RuleQMap.add freq_rules r
  997 + | [_,"v′",_,_,_;_,"v",_,_,r] -> Rules.RuleQMap.add freq_rules r
  998 + | [_,"g′",_,_,_;_,"g",_,_,r] -> Rules.RuleQMap.add freq_rules r
  999 + | [_,"š",_,_,_;_,"x",_,_,r] -> Rules.RuleQMap.add freq_rules r
  1000 + | [_,"j",_,_,r;_,"b′",_,_,_] -> Rules.RuleQMap.add freq_rules r
  1001 + | [_,"j",_,_,r;_,"g′",_,_,_] -> Rules.RuleQMap.add freq_rules r
  1002 + | [_,"j",_,_,r;_,"k",_,_,_] -> Rules.RuleQMap.add freq_rules r
  1003 + | [_,"n′",_,_,_;_,"j",_,_,r] -> Rules.RuleQMap.add freq_rules r
  1004 + | [_,"ł",_,_,_;_,"v",_,_,r] -> Rules.RuleQMap.add freq_rules r
  1005 + | [_,"k′",_,_,_;_,"k",_,_,r] -> Rules.RuleQMap.add freq_rules r
  1006 + | [_,"c",_,_,r;_,"k",_,_,_] -> Rules.RuleQMap.add freq_rules r
  1007 + | [_,_,_,"ε",_;_,_,_,"e",r] -> Rules.RuleQMap.add freq_rules r
  1008 + | [_,_,_,"y",_;_,_,_,"e",r] -> Rules.RuleQMap.add freq_rules r
  1009 + (* | [_;"\t\t\tcat=ndm",r] -> Rules.RuleQMap.add freq_rules r
  1010 + | [_;_;"\t\t\tcat=ndm",r] -> Rules.RuleQMap.add freq_rules r *)
  1011 + | l ->
  1012 + printf "%s %s\n %s\n" form.orth entry.lemma (String.concat "\n " (Xlist.map l (fun (s,_,_,_,_) -> s)));
  1013 + let _,_,_,_,r = List.hd l in
  1014 + Rules.RuleQMap.add freq_rules r)) in
884 File.file_out rules_filename (fun file -> 1015 File.file_out rules_filename (fun file ->
885 Rules.RuleQMap.iter freq_rules (fun rule freq -> 1016 Rules.RuleQMap.iter freq_rules (fun rule freq ->
886 fprintf file "%s\n" (Rules.string_of_freq_rule {rule with freq=freq}))) 1017 fprintf file "%s\n" (Rules.string_of_freq_rule {rule with freq=freq})))
@@ -892,9 +1023,9 @@ let generate_stem_dict rules_filename path filename out_filename = @@ -892,9 +1023,9 @@ let generate_stem_dict rules_filename path filename out_filename =
892 let dict = merge_entries dict in 1023 let dict = merge_entries dict in
893 let dict = process_interps dict in 1024 let dict = process_interps dict in
894 let dict = remove_cat "cond" dict in 1025 let dict = remove_cat "cond" dict in
895 - let dict = fonetic_translation dict in  
896 (* let dict = mark_ndm dict in *) 1026 (* let dict = mark_ndm dict in *)
897 let stems = Xlist.fold dict StringMap.empty (fun stems entry -> 1027 let stems = Xlist.fold dict StringMap.empty (fun stems entry ->
  1028 + let entry = fonetic_translation_entry entry in
898 let simple_lemma,lemma_suf = Stem.simplify_lemma_full entry.lemma in 1029 let simple_lemma,lemma_suf = Stem.simplify_lemma_full entry.lemma in
899 Xlist.fold entry.forms stems (fun stems form -> 1030 Xlist.fold entry.forms stems (fun stems form ->
900 let candidates = Rules.CharTrees.find rules form.orth in 1031 let candidates = Rules.CharTrees.find rules form.orth in
morphology/fonetics.ml
@@ -4,6 +4,9 @@ open Printf @@ -4,6 +4,9 @@ open Printf
4 type status = Idle | Symbols | Rules | RevSymbols | RevRules 4 type status = Idle | Symbols | Rules | RevSymbols | RevRules
5 type rule = {set: string; find: string; suf: string; lang: string} 5 type rule = {set: string; find: string; suf: string; lang: string}
6 6
  7 +let string_of_phon p =
  8 + Printf.sprintf "%s %s" p.Types.phon (String.concat " " (Xlist.map p.Types.mapping (fun (a,b) -> a ^ "->" ^ b)))
  9 +
7 module CharTree = struct 10 module CharTree = struct
8 11
9 type t = M of t CharMap.t * rule list 12 type t = M of t CharMap.t * rule list
@@ -64,14 +67,18 @@ let prepare_rules symbol_defs rules = @@ -64,14 +67,18 @@ let prepare_rules symbol_defs rules =
64 {r with suf=String.concat "" l}))) in 67 {r with suf=String.concat "" l}))) in
65 CharTree.create rules 68 CharTree.create rules
66 69
67 -let rules, rev_rules =  
68 - (* let symbol_defs,rev_symbol_defs,rules,rev_rules = load_rules "data/fonetics_acro.dic" in *)  
69 - let symbol_defs,rev_symbol_defs,rules,rev_rules = load_rules "data/fonetics_pl.dic" in  
70 - (* let symbol_defs,rev_symbol_defs,rules,rev_rules = load_rules "data/fonetics_en.dic" in *)  
71 - (* let symbol_defs,rev_symbol_defs,rules,rev_rules = load_rules "data/fonetics_fr.dic" in *)  
72 - (* let symbol_defs,rev_symbol_defs,rules,rev_rules = load_rules "data/fonetics_de.dic" in *) 70 +let select_rules lang rules =
  71 + Xlist.fold rules [] (fun rules r ->
  72 + if r.lang = lang then r :: rules else rules)
  73 +
  74 +let rules, rev_rules, core_rules, core_rev_rules =
  75 + let symbol_defs,rev_symbol_defs,rules,rev_rules = load_rules "data/fonetics.dic" in
  76 + let core_rules = select_rules "core" rules in
  77 + let core_rev_rules = select_rules "core" rev_rules in
73 prepare_rules symbol_defs rules, 78 prepare_rules symbol_defs rules,
74 - prepare_rules rev_symbol_defs rev_rules 79 + prepare_rules rev_symbol_defs rev_rules,
  80 + prepare_rules symbol_defs core_rules,
  81 + prepare_rules rev_symbol_defs core_rev_rules
75 82
76 let sufs = ["ω"; "iκ"; "ρ"; "δ"; "λ"; "i"(*; "zi"*)] 83 let sufs = ["ω"; "iκ"; "ρ"; "δ"; "λ"; "i"(*; "zi"*)]
77 84
@@ -132,22 +139,22 @@ let rec translate_rec closure found found_maping rules s = @@ -132,22 +139,22 @@ let rec translate_rec closure found found_maping rules s =
132 let l = if l = [] && closure then 139 let l = if l = [] && closure then
133 let c,s = Xunicode.first_utf8_char_of_utf8_string s in 140 let c,s = Xunicode.first_utf8_char_of_utf8_string s in
134 [s,{find=c; set=c; suf=""; lang=""}] else l in 141 [s,{find=c; set=c; suf=""; lang=""}] else l in
135 - (* let n = String.length s in  
136 - let c = String.sub s 0 1 in  
137 - [String.sub s 1 (n-1),{find=c; set=c; suf=""}] else l in *)  
138 List.flatten (Xlist.rev_map l (fun (t,r) -> 142 List.flatten (Xlist.rev_map l (fun (t,r) ->
139 translate_rec closure (r.set :: found) ((r.find,r.set) :: found_maping) rules (r.suf ^ t))) 143 translate_rec closure (r.set :: found) ((r.find,r.set) :: found_maping) rules (r.suf ^ t)))
140 144
141 let translate closure rules s = 145 let translate closure rules s =
142 (* printf "translate 1: %s\n%!" s; *) 146 (* printf "translate 1: %s\n%!" s; *)
143 let ll = translate_rec closure [] [] rules (s ^ "ε") in 147 let ll = translate_rec closure [] [] rules (s ^ "ε") in
144 - Xlist.rev_map ll (fun (phon,mapping) -> {Types.phon=String.concat "" phon; Types.mapping=[](*mapping*)})  
145 -(* let s = String.concat "" l in  
146 - (* printf "translate 2: %s\n%!" s; *)  
147 - s*) 148 + Xlist.rev_map ll (fun (phon,mapping) -> {Types.phon=String.concat "" phon; Types.mapping=mapping})
148 149
149 -let string_of_phon p =  
150 - Printf.sprintf "%s %s" p.Types.phon (String.concat " " (Xlist.map p.Types.mapping (fun (a,b) -> a ^ "->" ^ b))) 150 +exception NotFound of string * string
  151 +exception NotEqual of string * string * string
  152 +exception MulipleSolutions of string * string * string list
  153 +
  154 +let translate_simple closure rules s =
  155 + let ll = translate_rec closure [] [] rules (s ^ "ε") in
  156 + if ll = [] then raise (NotFound(s,"")) else
  157 + Xlist.rev_map ll (fun (phon,mapping) -> String.concat "" phon)
151 158
152 let print_phon p = print_endline (string_of_phon p) 159 let print_phon p = print_endline (string_of_phon p)
153 160
@@ -161,22 +168,18 @@ let _ = Xlist.iter (translate true rules &quot;łódź&quot;) print_phon @@ -161,22 +168,18 @@ let _ = Xlist.iter (translate true rules &quot;łódź&quot;) print_phon
161 let _ = Xlist.iter (translate true rules "Łódź") print_phon *) 168 let _ = Xlist.iter (translate true rules "Łódź") print_phon *)
162 (* let _ = translate true rules "izolował" *) 169 (* let _ = translate true rules "izolował" *)
163 170
164 -exception NotFound of string * string  
165 -exception NotEqual of string * string * string  
166 -exception MulipleSolutions of string * string * string list  
167 -  
168 -let translate_and_check closure rules rev_rules x =  
169 - let l = translate closure rules x in 171 +let translate_and_check closure rules rev_rules orth =
  172 + let l = translate closure rules orth in
170 Xlist.iter l (fun s -> 173 Xlist.iter l (fun s ->
171 let y = translate closure rev_rules s.Types.phon in 174 let y = translate closure rev_rules s.Types.phon in
172 let y = Xlist.map y (fun s -> s.Types.phon) in 175 let y = Xlist.map y (fun s -> s.Types.phon) in
173 match StringSet.to_list (StringSet.of_list y) with 176 match StringSet.to_list (StringSet.of_list y) with
174 - [] -> raise (NotFound(x,s.Types.phon))  
175 - | [t] -> if t <> x then raise (NotEqual(x,s.Types.phon,t))  
176 - | l -> raise (MulipleSolutions(x,s.Types.phon,l)));  
177 - l 177 + [] -> raise (NotFound(orth,s.Types.phon))
  178 + | [t] -> if t <> orth then raise (NotEqual(orth,s.Types.phon,t))
  179 + | l -> raise (MulipleSolutions(orth,s.Types.phon,l)))
  180 +
178 181
179 -let translate_single closure rules x = 182 +(*let translate_single closure rules x =
180 let y = translate closure rev_rules x in 183 let y = translate closure rev_rules x in
181 let y = Xlist.map y (fun s -> s.Types.phon) in 184 let y = Xlist.map y (fun s -> s.Types.phon) in
182 match StringSet.to_list (StringSet.of_list y) with 185 match StringSet.to_list (StringSet.of_list y) with
@@ -196,11 +199,17 @@ let rec rev_translate_rec x s = function @@ -196,11 +199,17 @@ let rec rev_translate_rec x s = function
196 let rev_translate closure rev_rules s m = 199 let rev_translate closure rev_rules s m =
197 let x,s,_ = rev_translate_rec "" s m in 200 let x,s,_ = rev_translate_rec "" s m in
198 if s = "" then x else 201 if s = "" then x else
199 - x ^ (translate_single closure rev_rules s) 202 + x ^ (translate_single closure rev_rules s)*)
200 203
201 -let rev_translate2 closure rev_rules s m = 204 +(*let rev_translate2 closure rev_rules s m =
202 let x,s,_ = rev_translate_rec "" s m in 205 let x,s,_ = rev_translate_rec "" s m in
203 if s = "" then [x] else 206 if s = "" then [x] else
204 let l = translate closure rev_rules s in 207 let l = translate closure rev_rules s in
205 if l = [] then raise (NotFound(s,"")) else 208 if l = [] then raise (NotFound(s,"")) else
206 - Xlist.rev_map l (fun y -> x ^ y.Types.phon) 209 + Xlist.rev_map l (fun y -> x ^ y.Types.phon)*)
  210 +
  211 +let rec get_short_stem x s = function
  212 + [] -> if s = "" then x else failwith "get_short_stem"
  213 + | (a,b) :: m ->
  214 + if Xstring.check_prefix b s then get_short_stem (x^a) (Xstring.cut_prefix b s) m
  215 + else x
morphology/generate.ml
@@ -156,6 +156,7 @@ let _ = @@ -156,6 +156,7 @@ let _ =
156 (* test_process_interps results_path adj_sgjp_filename; *) 156 (* test_process_interps results_path adj_sgjp_filename; *)
157 (* test_process_interps results_path verb_sgjp_filename; *) 157 (* test_process_interps results_path verb_sgjp_filename; *)
158 (* test_process_interps results_path noun_sgjp_filename; *) 158 (* test_process_interps results_path noun_sgjp_filename; *)
  159 + (* test_process_interps results_path "interp_not_validated_lang_all.tab"; *)
159 () 160 ()
160 161
161 162
@@ -180,9 +181,15 @@ let _ = @@ -180,9 +181,15 @@ let _ =
180 181
181 let test_fonetics path filename = 182 let test_fonetics path filename =
182 let dict = Dict.load_tab_full (path ^ filename) in 183 let dict = Dict.load_tab_full (path ^ filename) in
183 - let dict = Dict.remove_exceptional_lemmata_gen obce dict in  
184 - let _ = Dict.fonetic_translation dict in  
185 - () 184 + (* let dict = Dict.remove_exceptional_lemmata_gen obce dict in *)
  185 + Xlist.iter dict (fun e ->
  186 + Xlist.iter e.forms (fun f ->
  187 + try
  188 + Fonetics.translate_and_check true Fonetics.core_rules Fonetics.core_rev_rules f.orth
  189 + with
  190 + Fonetics.NotFound(orth,phon) -> printf "NF lemma=%s orth=%s phon=%s\n%!" e.lemma orth phon
  191 + | Fonetics.NotEqual(orth,phon,t) -> printf "NE lemma=%s orth=%s phon=%s: %s\n%!" e.lemma orth phon t
  192 + | Fonetics.MulipleSolutions(orth,phon,l) -> printf "MS lemma=%s orth=%s phon=%s: %s\n%!" e.lemma orth phon (String.concat " " l)))
186 193
187 (* Test translacji fonetycznej *) 194 (* Test translacji fonetycznej *)
188 let _ = 195 let _ =
@@ -215,7 +222,6 @@ let check_stem_generation path filename = @@ -215,7 +222,6 @@ let check_stem_generation path filename =
215 (* let dict = Dict.mark_ndm dict in *) 222 (* let dict = Dict.mark_ndm dict in *)
216 let dict = Dict.remove_exceptional_lemmata dict in 223 let dict = Dict.remove_exceptional_lemmata dict in
217 let dict = Dict.find_kolwiek_suffixes dict in 224 let dict = Dict.find_kolwiek_suffixes dict in
218 - (* let dict = Dict.fonetic_translation dict in *)  
219 let _ = Dict.generate_stem dict in 225 let _ = Dict.generate_stem dict in
220 () 226 ()
221 227
@@ -239,7 +245,7 @@ let interp_compound_rule_trees = Rules.make_interp_compound_rule_trees compound_ @@ -239,7 +245,7 @@ let interp_compound_rule_trees = Rules.make_interp_compound_rule_trees compound_
239 245
240 let find_not_validated_forms rules path filename out_filename = 246 let find_not_validated_forms rules path filename out_filename =
241 let dict = Dict.load_tab (path ^ filename) in 247 let dict = Dict.load_tab (path ^ filename) in
242 - let dict = Dict.fonetic_translation dict in 248 + let dict = Dict.assign_entry_cat dict in
243 let dict = Dict.phon_validate rules dict in 249 let dict = Dict.phon_validate rules dict in
244 let dict = Dict.remove_validated_forms dict in 250 let dict = Dict.remove_validated_forms dict in
245 Dict.print out_filename dict 251 Dict.print out_filename dict
@@ -250,8 +256,7 @@ let find_not_validated_entries rules path filename out_filename = @@ -250,8 +256,7 @@ let find_not_validated_entries rules path filename out_filename =
250 let dict = Dict.process_interps dict in 256 let dict = Dict.process_interps dict in
251 (* let dict = Dict.mark_ndm dict in 257 (* let dict = Dict.mark_ndm dict in
252 let dict = Dict.remove_ndm dict in *) 258 let dict = Dict.remove_ndm dict in *)
253 - let dict = Dict.remove_exceptional_lemmata dict in  
254 - let dict = Dict.fonetic_translation dict in 259 + (* let dict = Dict.remove_exceptional_lemmata dict in *)
255 let dict = Dict.phon_validate rules dict in 260 let dict = Dict.phon_validate rules dict in
256 let dict = Dict.remove_validated_entries dict in 261 let dict = Dict.remove_validated_entries dict in
257 Dict.print out_filename dict 262 Dict.print out_filename dict
@@ -281,6 +286,10 @@ let _ = @@ -281,6 +286,10 @@ let _ =
281 (* find_not_validated_forms compound_rule_trees results_path "lang_acro_sgjp-20170730.tab" "results/lang_acro.tab"; *) 286 (* find_not_validated_forms compound_rule_trees results_path "lang_acro_sgjp-20170730.tab" "results/lang_acro.tab"; *)
282 (* find_not_validated_forms compound_rule_trees results_path "lang_la_sgjp-20170730.tab" "results/lang_la.tab"; *) 287 (* find_not_validated_forms compound_rule_trees results_path "lang_la_sgjp-20170730.tab" "results/lang_la.tab"; *)
283 (* find_not_validated_forms compound_rule_trees results_path "lang_es_sgjp-20170730.tab" "results/lang_es.tab"; *) 288 (* find_not_validated_forms compound_rule_trees results_path "lang_es_sgjp-20170730.tab" "results/lang_es.tab"; *)
  289 + (* find_not_validated_forms compound_rule_trees results_path "lang_all_sgjp-20170730.tab" "results/lang_all.tab"; *)
  290 + (* find_not_validated_entries compound_rule_trees results_path "lang_all_sgjp-20170730.tab" "results/lang_all.tab"; *)
  291 + (* find_not_validated_entries compound_rule_trees results_path noun_polimorf_filename "results/not_validated_p_noun.tab"; *)
  292 + (* find_not_validated_forms compound_rule_trees results_path "not_validated_p_noun.tab" "results/not_validated_p_noun2.tab"; *)
284 () 293 ()
285 294
286 let find_not_validated_lemmata rules path filename out_filename = 295 let find_not_validated_lemmata rules path filename out_filename =
@@ -288,7 +297,6 @@ let find_not_validated_lemmata rules path filename out_filename = @@ -288,7 +297,6 @@ let find_not_validated_lemmata rules path filename out_filename =
288 let dict = Dict.merge_entries dict in 297 let dict = Dict.merge_entries dict in
289 let dict = Dict.process_interps dict in 298 let dict = Dict.process_interps dict in
290 let dict = Dict.remove_exceptional_lemmata dict in 299 let dict = Dict.remove_exceptional_lemmata dict in
291 - let dict = Dict.fonetic_translation dict in  
292 let dict = Dict.phon_validate rules dict in 300 let dict = Dict.phon_validate rules dict in
293 let dict = Dict.remove_validated_entries dict in 301 let dict = Dict.remove_validated_entries dict in
294 Dict.print_lemmata out_filename dict 302 Dict.print_lemmata out_filename dict
@@ -304,7 +312,6 @@ let find_validated_lemmata rules path filename out_filename = @@ -304,7 +312,6 @@ let find_validated_lemmata rules path filename out_filename =
304 let dict = Dict.load_tab (path ^ filename) in 312 let dict = Dict.load_tab (path ^ filename) in
305 let dict = Dict.merge_entries dict in 313 let dict = Dict.merge_entries dict in
306 let dict = Dict.process_interps dict in 314 let dict = Dict.process_interps dict in
307 - let dict = Dict.fonetic_translation dict in  
308 let dict = Dict.phon_validate rules dict in 315 let dict = Dict.phon_validate rules dict in
309 let dict = Dict.remove_not_validated_entries dict in 316 let dict = Dict.remove_not_validated_entries dict in
310 Dict.print_lemmata out_filename dict 317 Dict.print_lemmata out_filename dict
@@ -319,11 +326,11 @@ let _ = @@ -319,11 +326,11 @@ let _ =
319 let test_lemmatize lemma orth = 326 let test_lemmatize lemma orth =
320 printf "test_lemmatize: %s %s\n%!" lemma orth; 327 printf "test_lemmatize: %s %s\n%!" lemma orth;
321 let simple_lemma = Stem.simplify_lemma lemma in 328 let simple_lemma = Stem.simplify_lemma lemma in
322 - let phon_orths = Fonetics.translate(*_and_check*) true Fonetics.rules (*Fonetics.rev_rules*) orth in 329 + let phon_orths = Fonetics.translate true Fonetics.core_rules orth in
323 printf "phon_orths: \n %s\n%!" (String.concat "\n " (Xlist.map phon_orths Fonetics.string_of_phon)); 330 printf "phon_orths: \n %s\n%!" (String.concat "\n " (Xlist.map phon_orths Fonetics.string_of_phon));
324 Xlist.iter phon_orths (fun phon_orth -> 331 Xlist.iter phon_orths (fun phon_orth ->
325 Xlist.iter (Rules.CharTrees.find compound_rule_trees phon_orth.phon) (fun (stem,rule) -> 332 Xlist.iter (Rules.CharTrees.find compound_rule_trees phon_orth.phon) (fun (stem,rule) ->
326 - let candidate_lemmas = Fonetics.rev_translate2 true Fonetics.rev_rules (stem ^ rule.set) (phon_orth.mapping) in 333 + let candidate_lemmas = Fonetics.translate_simple true Fonetics.core_rev_rules (stem ^ rule.set) in
327 Xlist.iter candidate_lemmas (fun candidate_lemma -> 334 Xlist.iter candidate_lemmas (fun candidate_lemma ->
328 if candidate_lemma = simple_lemma then printf "E" else printf " "; 335 if candidate_lemma = simple_lemma then printf "E" else printf " ";
329 printf " %s %s %s %s\n%!" phon_orth.phon stem (string_of_rule rule) candidate_lemma))) 336 printf " %s %s %s %s\n%!" phon_orth.phon stem (string_of_rule rule) candidate_lemma)))
@@ -430,6 +437,20 @@ let _ = @@ -430,6 +437,20 @@ let _ =
430 (* test_lemmatize "Lefebvre" "Lefebvre’a"; *) 437 (* test_lemmatize "Lefebvre" "Lefebvre’a"; *)
431 (* test_lemmatize "Kayah" "Kayom"; *) 438 (* test_lemmatize "Kayah" "Kayom"; *)
432 (* test_lemmatize "Dixa" "Diksie"; *) 439 (* test_lemmatize "Dixa" "Diksie"; *)
  440 + (* test_lemmatize "White" "Whicie";
  441 + test_lemmatize "Voit" "Voicie";
  442 + test_lemmatize "Violeta" "Violecie";
  443 + test_lemmatize "veto" "vecie"; *)
  444 + (* test_lemmatize "Andrássy" "Andrássyowie"; *)
  445 + (* test_lemmatize "Cezanne" "Cezanne’ami";
  446 + test_lemmatize "Connery" "Connery’ego"; *)
  447 + (* test_lemmatize "Barrés" "Barrés’go"; *)
  448 + (* test_lemmatize "IKEA" "IKE-i"; *)
  449 + (* test_lemmatize "mix" "miksowi";
  450 + test_lemmatize "Laxa" "Laksie"; *)
  451 + (* test_lemmatize "münsterski" "münstersku"; *)
  452 + (* test_lemmatize "würzburski" "würzburskiemu"; *)
  453 + (* test_lemmatize "polje" "poljom"; *)
433 (* test_lemmatize "" ""; 454 (* test_lemmatize "" "";
434 test_lemmatize "" ""; 455 test_lemmatize "" "";
435 test_lemmatize "" ""; *) 456 test_lemmatize "" ""; *)
@@ -461,8 +482,7 @@ let find_interp_validated_lemmata interp_rules path filename out_filename = @@ -461,8 +482,7 @@ let find_interp_validated_lemmata interp_rules path filename out_filename =
461 (* let dict = Dict.remove_exceptional_lemmata dict in *) 482 (* let dict = Dict.remove_exceptional_lemmata dict in *)
462 (* let dict = find_kolwiek_suffixes dict in *) 483 (* let dict = find_kolwiek_suffixes dict in *)
463 (* let dict = generate_stem dict in *) 484 (* let dict = generate_stem dict in *)
464 - let dict = Dict.fonetic_translation dict in  
465 - let dict = Dict.validate_interp interp_rules dict in 485 + let dict = Dict.phon_validate_interp interp_rules dict in
466 let dict = Dict.remove_not_validated_entries dict in 486 let dict = Dict.remove_not_validated_entries dict in
467 Dict.print_lemmata out_filename dict 487 Dict.print_lemmata out_filename dict
468 488
@@ -474,8 +494,7 @@ let find_not_interp_validated_lemmata interp_rules path filename out_filename = @@ -474,8 +494,7 @@ let find_not_interp_validated_lemmata interp_rules path filename out_filename =
474 (* let dict = Dict.remove_exceptional_lemmata dict in *) 494 (* let dict = Dict.remove_exceptional_lemmata dict in *)
475 (* let dict = find_kolwiek_suffixes dict in *) 495 (* let dict = find_kolwiek_suffixes dict in *)
476 (* let dict = generate_stem dict in *) 496 (* let dict = generate_stem dict in *)
477 - let dict = Dict.fonetic_translation dict in  
478 - let dict = Dict.validate_interp interp_rules dict in 497 + let dict = Dict.phon_validate_interp interp_rules dict in
479 let dict = Dict.remove_validated_entries dict in 498 let dict = Dict.remove_validated_entries dict in
480 Dict.print_lemmata out_filename dict 499 Dict.print_lemmata out_filename dict
481 500
@@ -485,8 +504,7 @@ let find_not_interp_validated_entries interp_rules path filename out_filename = @@ -485,8 +504,7 @@ let find_not_interp_validated_entries interp_rules path filename out_filename =
485 let dict = Dict.process_interps dict in 504 let dict = Dict.process_interps dict in
486 (* let dict = Dict.mark_ndm dict in 505 (* let dict = Dict.mark_ndm dict in
487 let dict = Dict.remove_ndm dict in *) 506 let dict = Dict.remove_ndm dict in *)
488 - let dict = Dict.fonetic_translation dict in  
489 - let dict = Dict.validate_interp interp_rules dict in 507 + let dict = Dict.phon_validate_interp interp_rules dict in
490 let dict = Dict.remove_validated_entries dict in 508 let dict = Dict.remove_validated_entries dict in
491 Dict.print out_filename dict 509 Dict.print out_filename dict
492 510
@@ -494,8 +512,8 @@ let find_not_interp_validated_forms interp_rules path filename out_filename = @@ -494,8 +512,8 @@ let find_not_interp_validated_forms interp_rules path filename out_filename =
494 let dict = Dict.load_tab (path ^ filename) in 512 let dict = Dict.load_tab (path ^ filename) in
495 let dict = Dict.merge_entries dict in 513 let dict = Dict.merge_entries dict in
496 let dict = Dict.process_interps dict in 514 let dict = Dict.process_interps dict in
497 - let dict = Dict.fonetic_translation dict in  
498 - let dict = Dict.validate_interp interp_rules dict in 515 + let dict = Dict.remove_exceptional_lemmata dict in
  516 + let dict = Dict.phon_validate_interp interp_rules dict in
499 let dict = Dict.remove_validated_forms dict in 517 let dict = Dict.remove_validated_forms dict in
500 Dict.print out_filename dict 518 Dict.print out_filename dict
501 519
@@ -506,8 +524,8 @@ let _ = @@ -506,8 +524,8 @@ let _ =
506 find_interp_validated_lemmata interp_compound_rule_trees results_path adj_sgjp_filename "results/interp_validated_adj.tab"; 524 find_interp_validated_lemmata interp_compound_rule_trees results_path adj_sgjp_filename "results/interp_validated_adj.tab";
507 find_not_interp_validated_lemmata interp_compound_rule_trees results_path adj_sgjp_filename "results/interp_not_validated_adj.tab"; 525 find_not_interp_validated_lemmata interp_compound_rule_trees results_path adj_sgjp_filename "results/interp_not_validated_adj.tab";
508 find_interp_validated_lemmata interp_compound_rule_trees results_path adv_sgjp_filename "results/interp_validated_adv.tab"; 526 find_interp_validated_lemmata interp_compound_rule_trees results_path adv_sgjp_filename "results/interp_validated_adv.tab";
509 - find_not_interp_validated_lemmata interp_compound_rule_trees results_path adv_sgjp_filename "results/interp_not_validated_adv.tab"; *)  
510 - (* find_interp_validated_lemmata interp_compound_rule_trees results_path verb_sgjp_filename "results/interp_validated_verb.tab"; 527 + find_not_interp_validated_lemmata interp_compound_rule_trees results_path adv_sgjp_filename "results/interp_not_validated_adv.tab";
  528 + find_interp_validated_lemmata interp_compound_rule_trees results_path verb_sgjp_filename "results/interp_validated_verb.tab";
511 find_not_interp_validated_lemmata interp_compound_rule_trees results_path verb_sgjp_filename "results/interp_not_validated_verb.tab"; 529 find_not_interp_validated_lemmata interp_compound_rule_trees results_path verb_sgjp_filename "results/interp_not_validated_verb.tab";
512 find_interp_validated_lemmata interp_compound_rule_trees results_path "verb_sgjp_no_pref.tab" "results/interp_validated_no_pref_verb.tab"; 530 find_interp_validated_lemmata interp_compound_rule_trees results_path "verb_sgjp_no_pref.tab" "results/interp_validated_no_pref_verb.tab";
513 find_not_interp_validated_lemmata interp_compound_rule_trees results_path "verb_sgjp_no_pref.tab" "results/interp_not_validated_no_pref_verb.tab"; *) 531 find_not_interp_validated_lemmata interp_compound_rule_trees results_path "verb_sgjp_no_pref.tab" "results/interp_not_validated_no_pref_verb.tab"; *)
@@ -519,19 +537,18 @@ let _ = @@ -519,19 +537,18 @@ let _ =
519 (* find_not_interp_validated_forms interp_compound_rule_trees results_path "lang_fr_sgjp-20170730.tab" "results/lang_fr.tab"; *) 537 (* find_not_interp_validated_forms interp_compound_rule_trees results_path "lang_fr_sgjp-20170730.tab" "results/lang_fr.tab"; *)
520 (* find_not_interp_validated_forms interp_compound_rule_trees results_path "lang_de_sgjp-20170730.tab" "results/lang_de.tab"; *) 538 (* find_not_interp_validated_forms interp_compound_rule_trees results_path "lang_de_sgjp-20170730.tab" "results/lang_de.tab"; *)
521 (* find_not_interp_validated_forms interp_compound_rule_trees results_path "lang_acro_sgjp-20170730.tab" "results/lang_acro.tab"; *) 539 (* find_not_interp_validated_forms interp_compound_rule_trees results_path "lang_acro_sgjp-20170730.tab" "results/lang_acro.tab"; *)
  540 + (* find_not_interp_validated_forms interp_compound_rule_trees results_path "lang_all_sgjp-20170730.tab" "results/lang_all.tab"; *)
  541 + (* find_not_interp_validated_entries interp_compound_rule_trees results_path "lang_all_sgjp-20170730.tab" "results/interp_not_validated_lang_all.tab"; *)
522 () 542 ()
523 543
524 let test_interp_lemmatize lemma orth = 544 let test_interp_lemmatize lemma orth =
525 printf "test_interp_lemmatize: %s %s\n%!" lemma orth; 545 printf "test_interp_lemmatize: %s %s\n%!" lemma orth;
526 - let simple_lemma = Stem.simplify_lemma lemma in  
527 - let phon_orths = Fonetics.translate(*_and_check*) true Fonetics.rules (*Fonetics.rev_rules*) orth in  
528 - printf "phon_orths: \n %s\n%!" (String.concat "\n " (Xlist.map phon_orths Fonetics.string_of_phon));  
529 - Xlist.iter phon_orths (fun phon_orth ->  
530 - Xlist.iter (Rules.CharTrees.find interp_compound_rule_trees phon_orth.phon) (fun (stem,rule) ->  
531 - let candidate_lemmas = Fonetics.rev_translate2 true Fonetics.rev_rules (stem ^ rule.set) (phon_orth.mapping) in  
532 - Xlist.iter candidate_lemmas (fun candidate_lemma ->  
533 - if candidate_lemma = simple_lemma then (*printf "E" else printf " ";*)  
534 - printf " %s %s %s %s %s\n%!" phon_orth.phon stem (string_of_rule rule) candidate_lemma rule.interp))) 546 + let entry = {empty_entry with lemma=lemma; cat="noun"; forms=[{empty_form with orth=orth}]} in
  547 + let entry = Dict.create_candidates false interp_compound_rule_trees entry in
  548 + Xlist.iter entry.forms (fun f ->
  549 + printf "phon_orths: \n %s\n%!" (String.concat "\n " (Xlist.map f.phon_orth Fonetics.string_of_phon));
  550 + Xlist.iter f.candidates (fun (stem,rule,s) ->
  551 + printf "%s %s %s %s\n%!" s.phon stem (string_of_rule rule) rule.interp))
535 552
536 let _ = 553 let _ =
537 (* test_interp_lemmatize "Benveniste" "Benveniście"; *) 554 (* test_interp_lemmatize "Benveniste" "Benveniście"; *)
@@ -539,6 +556,19 @@ let _ = @@ -539,6 +556,19 @@ let _ =
539 (* test_interp_lemmatize "Depardieu" "Depardieuch"; *) 556 (* test_interp_lemmatize "Depardieu" "Depardieuch"; *)
540 (* test_interp_lemmatize "Braille" "Braille’u"; *) 557 (* test_interp_lemmatize "Braille" "Braille’u"; *)
541 (* test_interp_lemmatize "FAMA" "FAMA"; *) 558 (* test_interp_lemmatize "FAMA" "FAMA"; *)
  559 + (* test_interp_lemmatize "lichy" "lichego"; *)
  560 + (* test_interp_lemmatize "niekaraluszy" "niekaraluszych"; *)
  561 + (* test_interp_lemmatize "ninja" "ninjami"; *)
  562 + (* test_interp_lemmatize "ninja" "ninji"; *)
  563 + (* test_interp_lemmatize "mix" "miksowi"; *)
  564 + (* test_interp_lemmatize "münsterski" "münstersku"; *)
  565 + (* test_interp_lemmatize "Trubieckoj" "Trubieckich"; *)
  566 + (* test_interp_lemmatize "Balazs" "Balazsu"; *)
  567 + (* test_interp_lemmatize "Blake" "Blakiem";
  568 + test_interp_lemmatize "Bogorodckij" "Bogorodckiego";
  569 + test_interp_lemmatize "BUW" "BUW-ie";
  570 + test_interp_lemmatize "Bush" "Bushe"; *)
  571 + (* test_interp_lemmatize "ensemble" "ensemblowi"; *)
542 (*test_interp_lemmatize "" ""; 572 (*test_interp_lemmatize "" "";
543 test_interp_lemmatize "" ""; 573 test_interp_lemmatize "" "";
544 test_interp_lemmatize "" "";*) 574 test_interp_lemmatize "" "";*)
@@ -569,7 +599,11 @@ let _ = @@ -569,7 +599,11 @@ let _ =
569 (* Generowanie złożonych reguł zaopatrzonych we frekwencje *) 599 (* Generowanie złożonych reguł zaopatrzonych we frekwencje *)
570 let _ = 600 let _ =
571 (* Dict.generate_rule_frequencies interp_compound_rule_trees results_path adj_sgjp_filename "results/freq_rules-adj.tab"; *) 601 (* Dict.generate_rule_frequencies interp_compound_rule_trees results_path adj_sgjp_filename "results/freq_rules-adj.tab"; *)
  602 + (* Dict.generate_rule_frequencies interp_compound_rule_trees results_path "verb_sgjp_no_pref.tab" "results/freq_rules-verb.tab"; *)
  603 + (* Dict.generate_rule_frequencies interp_compound_rule_trees results_path verb_sgjp_filename "results/freq_rules-verb.tab"; *)
  604 + (* Dict.generate_rule_frequencies interp_compound_rule_trees results_path "lang_all_sgjp-20170730.tab" "results/freq_rules-lang.tab"; *)
572 (* Dict.generate_rule_frequencies interp_compound_rule_trees sgjp_path sgjp_filename "results/freq_rules.tab"; *) 605 (* Dict.generate_rule_frequencies interp_compound_rule_trees sgjp_path sgjp_filename "results/freq_rules.tab"; *)
  606 + (* ignore (Sys.command "totem ~/Dokumenty/Inne/gong/gong_05m_00s.ogg"); *)
573 () 607 ()
574 608
575 let generate_alt rules_filename path filename out_filename = 609 let generate_alt rules_filename path filename out_filename =
@@ -588,6 +622,7 @@ let generate_alt rules_filename path filename out_filename = @@ -588,6 +622,7 @@ let generate_alt rules_filename path filename out_filename =
588 let _ = 622 let _ =
589 (* generate_alt "results/freq_rules-adj.tab" results_path adj_sgjp_filename "results/alt-adj.tab"; *) 623 (* generate_alt "results/freq_rules-adj.tab" results_path adj_sgjp_filename "results/alt-adj.tab"; *)
590 (* generate_alt "results/freq_rules.tab" sgjp_path sgjp_filename "results/alt.tab"; *) 624 (* generate_alt "results/freq_rules.tab" sgjp_path sgjp_filename "results/alt.tab"; *)
  625 + (* generate_alt "results/freq_rules-lang.tab" results_path "lang_all_sgjp-20170730.tab" "results/alt-lang.tab"; *)
591 () 626 ()
592 627
593 (* Generowanie stemów z regułami *) 628 (* Generowanie stemów z regułami *)
morphology/ruleGenerator.ml
@@ -306,9 +306,9 @@ let calculate_person_value = function @@ -306,9 +306,9 @@ let calculate_person_value = function
306 306
307 let calculate_rule_value tags interp = 307 let calculate_rule_value tags interp =
308 if interp = "" then failwith "calculate_rule_value: empty interp" else 308 if interp = "" then failwith "calculate_rule_value: empty interp" else
309 - let cat = try Xlist.assoc tags "cat" with Not_found -> "" in  
310 - let lemma = try Xlist.assoc tags "lemma" with Not_found -> "" in  
311 - let group = try Xlist.assoc tags "group" with Not_found -> "" in 309 + let cat = Rules.get_tag tags "cat" in
  310 + let lemma = Rules.get_tag tags "lemma" in
  311 + let group = Rules.get_tag tags "group" in
312 if cat = "noun" || cat = "adj" then 312 if cat = "noun" || cat = "adj" then
313 let lemma_val = match lemma with 313 let lemma_val = match lemma with
314 "a" -> 20 314 "a" -> 20
@@ -405,7 +405,15 @@ let calculate_rule_value tags interp = @@ -405,7 +405,15 @@ let calculate_rule_value tags interp =
405 10000000 * lemma_val + 10000 * group_val + interp_val 405 10000000 * lemma_val + 10000 * group_val + interp_val
406 else 0 406 else 0
407 407
408 -let phon_generate_interp_rules rules selected_tags simple_lemma form = 408 +let phon_generate_interp_rules selected_tags form =
  409 + Xlist.rev_map form.candidates (fun (_,rule,_) ->
  410 + let tags = Xlist.fold rule.tags [] (fun tags (k,v) ->
  411 + if StringSet.mem selected_tags k then (k,v) :: tags else tags) in
  412 + let tags = Xlist.sort tags Rules.compare_tag in
  413 + calculate_rule_value rule.tags form.interp,
  414 + String.concat " " (Xlist.map tags (fun (k,v) -> k ^ "=" ^ v)) ^ "\t" ^ form.interp)
  415 +
  416 +(* let phon_generate_interp_rules rules selected_tags simple_lemma form =
409 Xlist.fold form.phon_orth [] (fun found orth -> 417 Xlist.fold form.phon_orth [] (fun found orth ->
410 let candidates = Rules.CharTrees.find rules orth.phon in 418 let candidates = Rules.CharTrees.find rules orth.phon in
411 (* printf "S %d\n" (Xlist.size forms); *) 419 (* printf "S %d\n" (Xlist.size forms); *)
@@ -418,4 +426,4 @@ let phon_generate_interp_rules rules selected_tags simple_lemma form = @@ -418,4 +426,4 @@ let phon_generate_interp_rules rules selected_tags simple_lemma form =
418 if StringSet.mem selected_tags k then (k,v) :: tags else tags) in 426 if StringSet.mem selected_tags k then (k,v) :: tags else tags) in
419 let tags = Xlist.sort tags Rules.compare_tag in 427 let tags = Xlist.sort tags Rules.compare_tag in
420 calculate_rule_value rule.tags form.interp, 428 calculate_rule_value rule.tags form.interp,
421 - String.concat " " (Xlist.map tags (fun (k,v) -> k ^ "=" ^ v)) ^ "\t" ^ form.interp) @ found) 429 + String.concat " " (Xlist.map tags (fun (k,v) -> k ^ "=" ^ v)) ^ "\t" ^ form.interp) @ found) *)
morphology/rules.ml
@@ -139,6 +139,9 @@ let rec extract_tag s rev = function @@ -139,6 +139,9 @@ let rec extract_tag s rev = function
139 [] -> "", List.rev rev 139 [] -> "", List.rev rev
140 | (k,v) :: l -> if s = k then v, List.rev rev @ l else extract_tag s ((k,v) :: rev) l 140 | (k,v) :: l -> if s = k then v, List.rev rev @ l else extract_tag s ((k,v) :: rev) l
141 141
  142 +let get_tag l tag =
  143 + try Xlist.assoc l tag with Not_found -> ""
  144 +
142 let create_compound_rules schemata rule_map = 145 let create_compound_rules schemata rule_map =
143 let found = Xlist.fold schemata [] (fun found schema -> 146 let found = Xlist.fold schemata [] (fun found schema ->
144 let compounds = Xlist.fold schema [{star=Productive;pref="";find="";set="";tags=[];interp=""; id=""; freq=0}] (fun compounds rule_set_name -> 147 let compounds = Xlist.fold schema [{star=Productive;pref="";find="";set="";tags=[];interp=""; id=""; freq=0}] (fun compounds rule_set_name ->
@@ -667,9 +670,9 @@ let latex_of_schemata () = @@ -667,9 +670,9 @@ let latex_of_schemata () =
667 print_endline "\\]\\end{scriptsize}\n") 670 print_endline "\\]\\end{scriptsize}\n")
668 671
669 let make_rule_key r = 672 let make_rule_key r =
670 - let cat = try Xlist.assoc r.tags "cat" with Not_found -> "" in  
671 - let lemma = try Xlist.assoc r.tags "lemma" with Not_found -> "" in  
672 - let group = try Xlist.assoc r.tags "group" with Not_found -> "" in 673 + let cat = get_tag r.tags "cat" in
  674 + let lemma = get_tag r.tags "lemma" in
  675 + let group = get_tag r.tags "group" in
673 let gender = 676 let gender =
674 match Xstring.split ":" (List.hd (Xstring.split "|" r.interp)) with 677 match Xstring.split ":" (List.hd (Xstring.split "|" r.interp)) with
675 "subst" :: n :: c :: g -> (String.concat ":" g) 678 "subst" :: n :: c :: g -> (String.concat ":" g)
@@ -708,8 +711,8 @@ let rec get_gender = function @@ -708,8 +711,8 @@ let rec get_gender = function
708 | [] -> failwith "get_gender" 711 | [] -> failwith "get_gender"
709 712
710 let latex_of_noun_interp_rules l = 713 let latex_of_noun_interp_rules l =
711 - let cat = Xlist.assoc (List.hd l).tags "cat" in  
712 - let lemma = Xlist.assoc (List.hd l).tags "lemma" in 714 + let cat = get_tag (List.hd l).tags "cat" in
  715 + let lemma = get_tag (List.hd l).tags "lemma" in
713 let gender = get_gender (Xlist.map l (fun r -> r.interp)) in 716 let gender = get_gender (Xlist.map l (fun r -> r.interp)) in
714 let l = Xlist.map l (fun r -> {r with tags = snd (extract_tag "cat" [] r.tags)}) in 717 let l = Xlist.map l (fun r -> {r with tags = snd (extract_tag "cat" [] r.tags)}) in
715 let l = Xlist.map l (fun r -> {r with tags = snd (extract_tag "lemma" [] r.tags)}) in 718 let l = Xlist.map l (fun r -> {r with tags = snd (extract_tag "lemma" [] r.tags)}) in
@@ -750,12 +753,12 @@ let latex_of_noun_interp_rules l = @@ -750,12 +753,12 @@ let latex_of_noun_interp_rules l =
750 let latex_of_interp_rules_table l tags = 753 let latex_of_interp_rules_table l tags =
751 print_endline ("\\begin{longtable}{p{7cm}|" ^ String.concat "|" (Xlist.map tags (fun _ -> "l")) ^ "}"); 754 print_endline ("\\begin{longtable}{p{7cm}|" ^ String.concat "|" (Xlist.map tags (fun _ -> "l")) ^ "}");
752 print_endline ("interpretation & " ^ String.concat " & " tags ^ "\\\\\n\\hline"); 755 print_endline ("interpretation & " ^ String.concat " & " tags ^ "\\\\\n\\hline");
753 - Xlist.iter (List.rev l) (fun r -> 756 + Xlist.iter (List.rev l) (fun (r: rule) ->
754 let interp = String.concat "" (Xstring.split ":imperf\\.perf" r.interp) in 757 let interp = String.concat "" (Xstring.split ":imperf\\.perf" r.interp) in
755 let interp = String.concat " " (Xstring.split "|" interp) in 758 let interp = String.concat " " (Xstring.split "|" interp) in
756 print_endline ((if r.star = Star then "$\\star$" else "") ^ interp ^ " & " ^ 759 print_endline ((if r.star = Star then "$\\star$" else "") ^ interp ^ " & " ^
757 String.concat " & " (Xlist.map tags (fun tag -> 760 String.concat " & " (Xlist.map tags (fun tag ->
758 - latex_escape_string (Xlist.assoc r.tags tag))) ^ "\\\\")); 761 + latex_escape_string (get_tag r.tags tag))) ^ "\\\\"));
759 print_endline "\\end{longtable}" 762 print_endline "\\end{longtable}"
760 763
761 764
morphology/types.ml
  1 +type star = Productive | Star | Ndm | Dial
  2 +
  3 +type rule = {star: star; pref: string; find: string; set: string; tags: (string * string) list;
  4 + interp: string; id: string; freq: int}
  5 +
1 type phon_orth = {phon: string; mapping: (string * string) list} 6 type phon_orth = {phon: string; mapping: (string * string) list}
2 -type form = {orth: string; phon_orth: phon_orth list; interp: string; freq: int; genre: string; validated: bool} 7 +type form = {orth: string; phon_orth: phon_orth list; interp: string; freq: int; genre: string; validated: bool; candidates: (string * rule * phon_orth) list}
3 type entry = {lemma: string; (*phon_lemma: string list;*) cat: string; forms: form list; 8 type entry = {lemma: string; (*phon_lemma: string list;*) cat: string; forms: form list;
4 proper_type: string; (*ndm: bool;*) stem: string; phon_stem: string list; aspect: string} 9 proper_type: string; (*ndm: bool;*) stem: string; phon_stem: string list; aspect: string}
5 10
6 -let empty_form = {orth=""; phon_orth=[]; interp=""; freq=1; genre=""; validated=false} 11 +let empty_form = {orth=""; phon_orth=[]; interp=""; freq=1; genre=""; validated=false; candidates=[]}
7 let empty_entry = {lemma=""; (*phon_lemma=[];*) cat=""; forms=[]; proper_type=""; (*ndm=false;*) 12 let empty_entry = {lemma=""; (*phon_lemma=[];*) cat=""; forms=[]; proper_type=""; (*ndm=false;*)
8 stem=""; phon_stem=[]; aspect=""} 13 stem=""; phon_stem=[]; aspect=""}
9 14
10 -type star = Productive | Star | Ndm | Dial  
11 -  
12 -type rule = {star: star; pref: string; find: string; set: string; tags: (string * string) list;  
13 - interp: string; id: string; freq: int}  
14 -  
15 let empty_rule = {star=Productive; pref=""; find=""; set=""; tags=[]; interp=""; id=""; freq=0} 15 let empty_rule = {star=Productive; pref=""; find=""; set=""; tags=[]; interp=""; id=""; freq=0}
16 16
17 let string_of_rule r = 17 let string_of_rule r =