User:Jimregan/Misc

From Apertium
< User:Jimregan
Revision as of 11:33, 30 October 2007 by Jimregan (talk | contribs) (→‎Russian monodix: More pardefs)
Jump to navigation Jump to search

stem-splitter.pl

#!/usr/bin/perl

use warnings;
use strict;

use String::Diff qw/diff_fully/;

while(<>)
{
	s/,\W+$//;
	my $endings = $_;
	my @a = split/, /;
	my $stem = find_stem(@a);
	$endings =~ s/$stem//g;
	print $stem; 
	if ($endings =~ /owie/) {print ":n.m1:";}
	else {print ":n.??:";}
	print join(',', sort split/, /, $endings), "\n";
}

sub find_stem()
{
	my @in = @_;
	my ($r, $l, $cur, $last);
	my $i=0;

	while ($i<($#in))
	{
		($r, $l) = diff_fully($in[$i], $in[$i+1]);
	
		$cur = $r->[0]->[1];
		$last = $cur if (!$last);
		if ($cur ne $last) {
			($r, $l) = diff_fully($last, $cur);
			$last = $r->[0]->[1];
		} 
	$i++;
	}
	return $last;
}

This is a list of patterns that should be generated by the Polish monodix.

hotel, hoteli, hotelowi, hotelem, hotelu, hotelach, hotelami, hotelom, hotelów, hotele, 
pies, psa, psie, psem, psu, psy, psach, psami, psom, psów, 
stół, stole, stołowi, stołem, stołu, stoły, stołach, stołami, stołom, stołów, 
gołąb, gołębie, gołębiach, gołębi, gołębiami, gołębiom, gołębia, gołębiem, gołębiowi, gołębiu, 
kot, kota, kocie, kotowi, kotem, kotach, kotami, kotom, kotów, koty, 
dzień, dnia, dniowi, dniem, dniu, dniach, dniami, dni, dniom, dnie, 
tydzień, tygodni, tygodnia, tygodniach, tygodniami, tygodnie, tygodniem, tygodniom, tygodniowi, tygodniu, 
miesiąc, miesiąca, miesiącowi, miesiącem, miesiącu, miesiącach, miesiącami, miesiącom, miesięcy, miesiące, 
student, studenta, studencie, studentowi, studentem, studenci, studentach, studentami, studentom, studenty, studentów, 
brat, braci, braty, bracia, braciach, bracie, braciom, braćmi, brata, bratem, bratu, 
przyjaciel, przyjaciela, przyjacielowi, przyjacielem, przyjacielu, przyjaciele, przyjaciołach, przyjaciołom, przyjaciół, przyjaciółmi, 
syn, synach, synami, synom, synów, synowie, syny, syna, synem, synowi, synu, 
lekarz, lekarza, lekarzowi, lekarzem, lekarzu, lekarze, lekarzy, lekarzach, lekarzami, lekarzom, 
mąż, męża, mężowi, mężem, mężu, mężach, mężami, mężom, mężów, mężowie, męże, 
ojciec, ojca, ojcem, ojcu, ojcach, ojcami, ojcom, ojców, ojcowie, ojce, ojcze, 
kobieta, kobiecie, kobieto, kobiety, kobietą, kobietę, kobietach, kobietami, kobietom, kobiet, 
ulica, ulice, ulico, ulicy, ulicą, ulicę, ulicach, ulicami, ulicom, ulic, 
noga, nodze, nogi, nogo, nogą, nogę, nogach, nogami, nogom, nóg, 
ręka, ręku, rękoma, rąk, ręce, ręki, ręko, ręką, rękę, rękach, rękami, rękom, 
rzeka, rzece, rzeki, rzeko, rzeką, rzekę, rzek, rzekach, rzekami, rzekom, 
noc, noce, nocy, nocą, nocach, nocami, nocom, 
gospodyni, gospodynie, gospodynią, gospodynię, gospodyń, gospodyniach, gospodyniami, gospodyniom, 
gwiazda, gwieździe, gwiazdo, gwiazdy, gwiazdą, gwiazdę, gwiazdach, gwiazdami, gwiazdom, gwiazd, 
teściowa, teściowe, teściowych, teściowymi, teściowej, teściowym, teściową, teściowo, 
miasto, miasta, mieście, miastem, miastu, miastach, miastami, miastom, miast, 
zdanie, zdania, zdaniem, zdaniu, zdaniach, zdaniami, zdaniom, zdań, 
oko, oka, okiem, oku, oczach, oczami, oczom, oczów, oczu, oczy, oczyma, ócz, 
ucho, ucha, uchem, uchu, uszach, uszami, uszom, uszów, uszu, uszy, uszyma, 
dziecko, dziecka, dzieckiem, dziecku, dziecku, dzieci, dzieciach, dzieciom, dziećmi, 
zwierzę, zwierzęcia, zwierzęciem, zwierzęciu, zwierzęta, zwierzętach, zwierzętami, zwierzętom, zwierząt, 
imię, imienia, imieniem, imieniu, imiona, imionach, imionami, imionom, imion, 
jabłko, jabłka, jabłkiem, jabłku, jabłku, jabłkach, jabłkami, jabłek, jabłkom, 
okno, okna, oknie, oknem, oknu, oknach, oknami, oknom, okien, 
dach, dachowi, dachem, dachu, dachy, dachach, dachami, dachom, dachów, 
królowa, królowe, królowych, królowymi, królowej, królowym, królową, królowo, 
źródło, źródła, źródle, źródłem, źródłu, źródłach, źródłami, źródłom, źródeł, 
sklep, sklepie, sklepowi, sklepem, sklepu, sklepy, sklepach, sklepami, sklepom, sklepów, 
muzeum, muzea, muzeach, muzeami, muzeom, muzeów, 
światło, światła, świetle, światłem, światłu, światłach, światłami, światłom, świateł, 
matka, matek, matce, matki, matko, matką, matkę, matkach, matkami, matkom, 
kość, kości, kością, kościach, kościom, kośćmi, kościami, 
miłość, miłości, miłością, miłościach, miłościami, miłościom, 
mama, mamie, mamo, mamy, mamą, mamę, mamach, mamami, mamom, mam, 
broń, bronie, broni, bronią, broniach, broniami, broniom, 
profanacja, profanacje, profanacyj, profanacji, profanacjo, profanacją, profanację, profanacjach, profanacjami, profanacjom, 
Francja, Francji, Francjo, Francją, Francję, 
Werona, Weronie, Werono, Werony, Weroną, Weronę, 
Czechy, Czechach, Czechami, Czechom, Czech, 
Urugwaj, Urugwajowi, Urugwajem, Urugwaju, 
Włochy, Włoch, Włochami, Włochom, Włoszech, 
Węgry, Węgier, Węgrach, Węgrami, Węgrzech, 
Niemcy, Niemczech, Niemcami, Niemcom, Niemiec, 
Watykan, Watykanie, Watykanowi, Watykanem, Watykanu, 
Wiedeń, Wiednia, Wiedniem, Wiedniu, Wiedniowi, 
Wersal, Wersalowi, Wersalem, Wersalu, 


Russian monodix

Start of a monodix for Russian:

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
  <alphabet>АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя</alphabet>
  <!-- include sdefs from elsewhere -->
  <pardefs>
    <pardef n="собак/а__n">
      <e>
        <p>
          <l>а</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="nom"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>у</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="acc"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ы</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="gen"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>е</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="dat"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>е</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="prep"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ой</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="inst"/></r>
        </p>
      </e>
      <e r="LR">
        <p>
          <l>ою</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="inst"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>и</l>
          <r>а<s n="n"/><s n="nom"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l></l>
          <r>а<s n="n"/><s n="acc"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l></l>
          <r>а<s n="n"/><s n="gen"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ам</l>
          <r>а<s n="n"/><s n="dat"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ах</l>
          <r>а<s n="n"/><s n="prep"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ами</l>
          <r>а<s n="n"/><s n="inst"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
    </pardef>
    <pardef n="мат/ь__n">
      <e>
        <p>
          <l>ь</l>
          <r>ь<s n="n"/><s n="f"/><s n="sg"/><s n="nom"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ь</l>
          <r>ь<s n="n"/><s n="f"/><s n="sg"/><s n="acc"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ери</l>
          <r>ь<s n="n"/><s n="f"/><s n="sg"/><s n="gen"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ери</l>
          <r>ь<s n="n"/><s n="f"/><s n="sg"/><s n="dat"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ери</l>
          <r>ь<s n="n"/><s n="f"/><s n="sg"/><s n="prep"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ерью</l>
          <r>ь<s n="n"/><s n="f"/><s n="sg"/><s n="inst"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ери</l>
          <r>ь<s n="n"/><s n="f"/><s n="pl"/><s n="nom"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ерей</l>
          <r>ь<s n="n"/><s n="f"/><s n="pl"/><s n="acc"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ерей</l>
          <r>ь<s n="n"/><s n="f"/><s n="pl"/><s n="gen"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ерям</l>
          <r>ь<s n="n"/><s n="f"/><s n="pl"/><s n="dat"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ерях</l>
          <r>ь<s n="n"/><s n="f"/><s n="pl"/><s n="prep"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ерями</l>
          <r>ь<s n="n"/><s n="f"/><s n="pl"/><s n="inst"/></r>
        </p>
      </e>
    </pardef>
    <pardef n="бо/г__n">
      <e>
        <p>
          <l>г</l>
          <r>г<s n="n"/><s n="m1"/><s n="nom"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>га</l>
          <r>г<s n="n"/><s n="m1"/><s n="gen"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>гу</l>
          <r>г<s n="n"/><s n="m1"/><s n="dat"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>га</l>
          <r>г<s n="n"/><s n="m1"/><s n="acc"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>гом</l>
          <r>г<s n="n"/><s n="m1"/><s n="inst"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ге</l>
          <r>г<s n="n"/><s n="m1"/><s n="loc"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>же</l>
          <r>г<s n="n"/><s n="m1"/><s n="voc"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ги</l>
          <r>г<s n="n"/><s n="m1"/><s n="nom"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>гов</l>
          <r>г<s n="n"/><s n="m1"/><s n="gen"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>гом</l>
          <r>г<s n="n"/><s n="m1"/><s n="dat"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>гов</l>
          <r>г<s n="n"/><s n="m1"/><s n="acc"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>гами</l>
          <r>г<s n="n"/><s n="m1"/><s n="inst"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>гах</l>
          <r>г<s n="n"/><s n="m1"/><s n="loc"/><s n="pl"/></r>
        </p>
      </e>
    </pardef>

    <!-- стул 1: chair -->
    <pardef n="стул/__n">
      <e>
        <p>
          <l></l>
          <r><s n="n"/><s n="m3"/><s n="nom"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>а</l>
          <r><s n="n"/><s n="m3"/><s n="gen"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>у</l>
          <r><s n="n"/><s n="m3"/><s n="dat"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l></l>
          <r><s n="n"/><s n="m3"/><s n="acc"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ом</l>
          <r><s n="n"/><s n="m3"/><s n="inst"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>е</l>
          <r><s n="n"/><s n="m3"/><s n="loc"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ья</l>
          <r><s n="n"/><s n="m3"/><s n="nom"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ей</l>
          <r><s n="n"/><s n="m3"/><s n="gen"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ям</l>
          <r><s n="n"/><s n="m3"/><s n="dat"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ьев</l>
          <r><s n="n"/><s n="m3"/><s n="acc"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ьями</l>
          <r><s n="n"/><s n="m3"/><s n="inst"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ах</l>
          <r><s n="n"/><s n="m3"/><s n="loc"/><s n="pl"/></r>
        </p>
      </e>
    </pardef>
    <!-- стул 2: stool (shit) -->
    <pardef n="стул/__n">
      <e>
        <p>
          <l></l>
          <r><s n="n"/><s n="m3"/><s n="nom"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>а</l>
          <r><s n="n"/><s n="m3"/><s n="gen"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>у</l>
          <r><s n="n"/><s n="m3"/><s n="dat"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l></l>
          <r><s n="n"/><s n="m3"/><s n="acc"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ом</l>
          <r><s n="n"/><s n="m3"/><s n="inst"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>е</l>
          <r><s n="n"/><s n="m3"/><s n="loc"/><s n="sg"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ы</l>
          <r><s n="n"/><s n="m3"/><s n="nom"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ов</l>
          <r><s n="n"/><s n="m3"/><s n="gen"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ам</l>
          <r><s n="n"/><s n="m3"/><s n="dat"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ы</l>
          <r><s n="n"/><s n="m3"/><s n="acc"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ами</l>
          <r><s n="n"/><s n="m3"/><s n="inst"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ах</l>
          <r><s n="n"/><s n="m3"/><s n="loc"/><s n="pl"/></r>
        </p>
      </e>
    </pardef>
    <pardef n="столиц/а__n">
      <e>
        <p>
          <l>а</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="nom"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ы</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="gen"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>е</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="dat"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>у</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="acc"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ой</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="inst"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>е</l>
          <r>а<s n="n"/><s n="f"/><s n="sg"/><s n="prep"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ы</l>
          <r>а<s n="n"/><s n="nom"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l></l>
          <r>а<s n="n"/><s n="gen"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ам</l>
          <r>а<s n="n"/><s n="dat"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ы</l>
          <r>а<s n="n"/><s n="acc"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ами</l>
          <r>а<s n="n"/><s n="inst"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
      <e>
        <p>
          <l>ах</l>
          <r>а<s n="n"/><s n="prep"/><s n="f"/><s n="pl"/></r>
        </p>
      </e>
    </pardef>
  </pardefs>
  
  <section id="main" type="standard">
    <e lm="собака"><i>собак</i><par n="собак/а__n"/></e>
    <e lm="мать"><i>мат</i><par n="мат/ь__n"/></e>
    <e lm="бог"><i>бо</i><par n="бо/г__n"/></e>
    <e lm="столица"><i>столиц</i><par n="столиц/а__n"/></e>
  </section>
</dictionary>