Difference between revisions of "Uputstvo za novi jezički par za Apertium"

From Apertium
Jump to navigation Jump to search
m (Reverted edits by 222.240.208.14 (Talk); changed back to last version by Cabrilo)
Line 1: Line 1:
  +
[http://nnnslogan.freehostia.com/showdown.htm showdown] [http://naughtygirl92.ifrance.com/data/gem-and.html gem and boy] [http://rasa18.ifrance.com/ddr-dimm6/ ddr dimm memoria ram] [http://orel-na-vole.freehostia.com/blog/jolley-elizabeth/ jolley elizabeth] [http://orel-na-vole.freehostia.com/blog/marilleva/ marilleva] [http://naughtygirl92.ifrance.com/data/da-wisel.html da wisel] [http://nnnslogan.freehostia.com/lcd-163.htm lcd 4 ms] [http://nnnslogan.freehostia.com/unghie-laccate.htm unghie laccate] [http://orel-na-vole.freehostia.com/blog/zen-video/ zen video] [http://rasa18.ifrance.com/vidcaps-la/ vidcaps la fattoria] [http://orel-na-vole.freehostia.com/blog/sandali-pelle/ sandali pelle donna] [http://naughtygirl92.ifrance.com/data/fiat-panda71.html fiat panda km 0 emotion] [http://rasa18.ifrance.com/batterie-sony10/ batterie sony serie m] [http://rasa18.ifrance.com/cica-cica/ cica cica] [http://naughtygirl92.ifrance.com/data/brigitte-bui6.html brigitte bui video] [http://orel-na-vole.freehostia.com/blog/to-nem12/ to nem aiu] [http://naughtygirl92.ifrance.com/data/gula-gula.html gula gula] [http://naughtygirl92.ifrance.com/data/juliana-bbb5.html juliana bbb4] [http://orel-na-vole.freehostia.com/blog/srce-juzno/ srce juzno] [http://nnnslogan.freehostia.com/fotocamere-digitali66.htm fotocamere digitali nikon] [http://naughtygirl92.ifrance.com/data/maggiorana.html maggiorana] [http://nnnslogan.freehostia.com/que-te4.htm que te pasa loco] [http://nnnslogan.freehostia.com/nokia125.htm nokia 7610] [http://nnnslogan.freehostia.com/microsof-internet.htm microsof internet explorer] [http://naughtygirl92.ifrance.com/data/piacere-rai.html piacere rai 1] [http://orel-na-vole.freehostia.com/blog/scuola-estetista1/ scuola estetista pisa] [http://nnnslogan.freehostia.com/veo-veo7.htm veo veo teresa rabal] [http://nnnslogan.freehostia.com/alfa-romeo114.htm alfa romeo vicenza] [http://rasa18.ifrance.com/km-volkswagen20/ km0 volkswagen golf v diesel auto km 0] [http://orel-na-vole.freehostia.com/blog/cd-stadio/ cd stadio] [http://rasa18.ifrance.com/tv-sony18/ tv sony 28] [http://nnnslogan.freehostia.com/una-preghiera.htm una preghiera per morire] [http://naughtygirl92.ifrance.com/data/nuda-per2.html nuda per protesta] [http://orel-na-vole.freehostia.com/blog/grand-hotel30/ grand hotel del mare bordighiera] [http://rasa18.ifrance.com/nona/ nona] [http://orel-na-vole.freehostia.com/blog/voglio-cazzo/ voglio cazzo] [http://naughtygirl92.ifrance.com/data/virgiio.html virgiio] [http://nnnslogan.freehostia.com/r10.htm r817] [http://naughtygirl92.ifrance.com/data/ricoh-aficio17.html ricoh aficio 220] [http://orel-na-vole.freehostia.com/blog/ho-ipaq/ ho ipaq rx3715] [http://naughtygirl92.ifrance.com/data/fukang.html fukang] [http://naughtygirl92.ifrance.com/data/the-temptations.html the temptations] [http://naughtygirl92.ifrance.com/data/sito-del5.html sito del vaticano] [http://rasa18.ifrance.com/lamaledizionedellaprimaluna/ lamaledizionedellaprimaluna] [http://orel-na-vole.freehostia.com/blog/ziano-piacentino/ ziano piacentino] [http://nnnslogan.freehostia.com/macchina-cialde.htm macchina cialde] [http://nnnslogan.freehostia.com/mountain-board.htm mountain board] [http://rasa18.ifrance.com/pirelli-uomo2/ pirelli uomo 42] [http://rasa18.ifrance.com/frigorifero-congelatore3/ frigorifero congelatore] [http://nnnslogan.freehostia.com/samsung-120.htm samsung 5 cd] [http://nnnslogan.freehostia.com/www-sexo14.htm www sexo it] [http://rasa18.ifrance.com/rex-12/ rex 290 litri] [http://nnnslogan.freehostia.com/giochi-di207.htm giochi di vampiri] [http://naughtygirl92.ifrance.com/data/jijo.html jijo] [http://rasa18.ifrance.com/michelle-veith1/ michelle veith] [http://rasa18.ifrance.com/cercasi-susan/ cercasi susan disperatamente] [http://rasa18.ifrance.com/adsl-speed/ adsl speed test] [http://rasa18.ifrance.com/www-unponteper/ www unponteper it] [http://nnnslogan.freehostia.com/calendario-arca.htm calendario arca francesco] [http://naughtygirl92.ifrance.com/data/intel-pentium56.html intel pentium 4 478] [http://rasa18.ifrance.com/samsung-lettore6/ samsung lettore mp3 5] [http://naughtygirl92.ifrance.com/data/bennassi-bro.html bennassi bro] [http://naughtygirl92.ifrance.com/data/sony-105.html sony 32 pollici] [http://naughtygirl92.ifrance.com/data/www-latinchat5.html www latinchat cpm] [http://rasa18.ifrance.com/fuga/ fuga] [http://rasa18.ifrance.com/lg-s2/ lg 1730s] [http://naughtygirl92.ifrance.com/data/samsung-yh9.html samsung yh 999 yepp] [http://orel-na-vole.freehostia.com/blog/nokia-e3/ nokia e60] [http://naughtygirl92.ifrance.com/data/puntorosso.html puntorosso] [http://naughtygirl92.ifrance.com/data/samsung51.html samsung 679] [http://rasa18.ifrance.com/www-cndc/ www cndc it] [http://rasa18.ifrance.com/quattro-ragazze1/ quattro ragazze coraggiose] [http://orel-na-vole.freehostia.com/blog/tony-hawks9/ tony hawks american sk8land] [http://orel-na-vole.freehostia.com/blog/copertina-cd95/ copertina cd tiromancino] [http://naughtygirl92.ifrance.com/data/box-esterni13.html box esterni hdd] [http://nnnslogan.freehostia.com/bmw-touring14.htm bmw touring 318i] [http://orel-na-vole.freehostia.com/blog/me-dijeron/ me dijeron alejandro lerner] [http://naughtygirl92.ifrance.com/data/sigourey-weaver.html sigourey weaver] [http://nnnslogan.freehostia.com/west-ham2.htm west ham united f c] [http://naughtygirl92.ifrance.com/data/try-nelly5.html try nelly furtado lyrics] [http://rasa18.ifrance.com/iaudio-x4/ iaudio x5 60gb] [http://rasa18.ifrance.com/www-santafe/ www santafe gob ar] [http://rasa18.ifrance.com/custodia-sub2/ custodia sub nikon] [http://naughtygirl92.ifrance.com/data/il-ragazzo17.html il ragazzo e il poliziotto] [http://nnnslogan.freehostia.com/guangdong.htm guangdong] [http://orel-na-vole.freehostia.com/blog/pps-secy/ pps secy] [http://nnnslogan.freehostia.com/caduti-delle.htm caduti delle foibe] [http://nnnslogan.freehostia.com/nba-patch.htm nba patch] [http://orel-na-vole.freehostia.com/blog/train-simulator2/ train simulator microsoft] [http://rasa18.ifrance.com/accessori-per64/ accessori per sony dsc] [http://rasa18.ifrance.com/froufrou-holding/ froufrou holding on for a hero] [http://rasa18.ifrance.com/elena-sampa/ elena sampa] [http://rasa18.ifrance.com/lg-condizionatori3/ lg condizionatori inverter] [http://rasa18.ifrance.com/geforce-pci2/ geforce pci] [http://orel-na-vole.freehostia.com/blog/hotel-souvenir/ hotel souvenir misano adriatico] [http://orel-na-vole.freehostia.com/blog/stampanti-epson43/ stampanti epson r300] [http://rasa18.ifrance.com/lignano-pineta/ lignano pineta] [http://nnnslogan.freehostia.com/corso-francese1.htm corso francese] [http://rasa18.ifrance.com/olympus-d1/ olympus d170] [http://naughtygirl92.ifrance.com/data/volo-fiumicino.html volo fiumicino]
 
{{TOCD}}
 
{{TOCD}}
Uputstvo za novi jezički par za Apertium
+
Uputstvo za novi jezički par za Apertium
   
Ovo uputstvo će objasniti kako započeti novi jezički par za Apertium mašinski prevod. Ne podrazumevamo poznavanje lingvistike ili mašinskog prevođenja - dovoljno je da znate da razlikujete različite vrste reči (imenice, glagole, prideve itd.)
+
Ovo uputstvo će objasniti kako započeti novi jezički par za Apertium mašinski prevod. Ne podrazumevamo poznavanje lingvistike ili mašinskog prevođenja - dovoljno je da znate da razlikujete različite vrste reči (imenice, glagole, prideve itd.)
   
==Reč-dve o srpskohrvatskom prevodu==
+
==Reč-dve o srpskohrvatskom prevodu==
   
Ovaj prevod koristi Unicode prikaz slova Lj, Nj i Dž umesto Lj, Nj i . Ukoliko ne vidite ta slova, instalirajte set slobodnih fontova koji podržavaju Unicode, kao što su DejaVu fontovi i postarajte se da gledate ovu stranicu u UTF8 kodnom rasporedu.
+
Ovaj prevod koristi Unicode prikaz slova Lj, Nj i Dž umesto Lj, Nj i Dž. Ukoliko ne vidite ta slova, instalirajte set slobodnih fontova koji podržavaju Unicode, kao što su DejaVu fontovi i postarajte se da gledate ovu stranicu u UTF8 kodnom rasporedu.
   
U prevodu takođe koristimo neke neologizme koji su se ustalili u upotrebi na srpskohrvatskom govornom području. Npr. file „prevodimo“ kao fajl umesto uobičajenog datoteka.
+
U prevodu takođe koristimo neke neologizme koji su se ustalili u upotrebi na srpskohrvatskom govornom području. Npr. file „prevodimo“ kao fajl umesto uobičajenog datoteka.
   
 
==Uvod==
 
==Uvod==
   
Kao što ste možda primetili iz uvoda, Apertium je sistema mašinskog prevođenja. Preciznije, u pitanju je platforma za prevod koja obuhvata pokretački motor i alatke koje dozvoljavaju pravljenje ličnog sistema mašinskog prevođenja. Vi samo treba da unesete podatke. U osnovi, podaci se sastoje iz tri rečnika i nekoliko pravila koji se staraju za tačan red reči u rečenici i druge gramatičke zavrzlame.
+
Kao što ste možda primetili iz uvoda, Apertium je sistema mašinskog prevođenja. Preciznije, u pitanju je platforma za prevod koja obuhvata pokretački motor i alatke koje dozvoljavaju pravljenje ličnog sistema mašinskog prevođenja. Vi samo treba da unesete podatke. U osnovi, podaci se sastoje iz tri rečnika i nekoliko pravila koji se staraju za tačan red reči u rečenici i druge gramatičke zavrzlame.
   
Za detaljnije uputstvo o tome kako ovo sve radi, pročitajte dokumentaciju na sajtu projekta na apertium.sourceforge.net.
+
Za detaljnije uputstvo o tome kako ovo sve radi, pročitajte dokumentaciju na sajtu projekta na apertium.sourceforge.net.
   
==Trebaće Vam==
+
==Trebaće Vam==
   
 
* [[lttoolbox]] (>= 3.0.0)
 
* [[lttoolbox]] (>= 3.0.0)
 
* libxml utils (xmllint itd.)
 
* libxml utils (xmllint itd.)
 
* apertium (>= 3.0.0)
 
* apertium (>= 3.0.0)
* editor teksta (ili specijalizovani uređivač za XML, ako Vam tako više odgovara)
+
* editor teksta (ili specijalizovani uređivač za XML, ako Vam tako više odgovara)
   
 
Za instrukcije kako da instalirate ove programe pogledajte dokumentaciju na sajtu Apertiuma.
 
Za instrukcije kako da instalirate ove programe pogledajte dokumentaciju na sajtu Apertiuma.
   
==Od čega se sastoji jezički par?==
+
==Od čega se sastoji jezički par?==
   
Apertium koristi „plitki“ mašinski prevod, što znači da se koristi rečnicima i plitkim pravilima prenosa.
+
Apertium koristi „plitki“ mašinski prevod, što znači da se koristi rečnicima i plitkim pravilima prenosa.
   
„Plitki prevod“ se razlikuje od „dubokog prevoda“ utoliko što se ne bavi punom sintatičkom obradom. Pravila se obično primenjuju na grupe leksičkih jedinica, umesto na razgranatu obradu. U osnovi postoje tri glavna rečnika.
+
„Plitki prevod“ se razlikuje od „dubokog prevoda“ utoliko što se ne bavi punom sintatičkom obradom. Pravila se obično primenjuju na grupe leksičkih jedinica, umesto na razgranatu obradu. U osnovi postoje tri glavna rečnika.
   
# Morfološki rečnik za jezik xx: on sadrži pravila o tome kako se menjaju reči u jeziku xx. U našem primeru ovo ćemo zvati: apertium-sh-en.sh.dix.
+
# Morfološki rečnik za jezik xx: on sadrži pravila o tome kako se menjaju reči u jeziku xx. U našem primeru ovo ćemo zvati: apertium-sh-en.sh.dix.
# Morfološki rečnik za jezik yy: on sadrži pravila o tome kako se menjaju reči u jeziku yy. U našem primeru ovo ćemo zvati: apertium-sh-en.en.dix.
+
# Morfološki rečnik za jezik yy: on sadrži pravila o tome kako se menjaju reči u jeziku yy. U našem primeru ovo ćemo zvati: apertium-sh-en.en.dix.
# Dvojezički rečnik: on sadrži odnos između reči i simbola dva jezika. U našem primeru ovo ćemo zvati: apertium-sh-en.sh-en.dix.
+
# Dvojezički rečnik: on sadrži odnos između reči i simbola dva jezika. U našem primeru ovo ćemo zvati: apertium-sh-en.sh-en.dix.
 
 
 
U paru za prevod, oba jezika mogu biti i izvor i cilj prevoda, te su ovi izrazi relativni.
 
U paru za prevod, oba jezika mogu biti i izvor i cilj prevoda, te su ovi izrazi relativni.
   
Postoje i dva fajla za pravila prevoda i to su pravila o redu reči u rečenici, npr. chat noir cat black black cat. Takođe se staraju i o slaganju roda i broja i sl. Pravila se mogu koristiti i za ubacivanje i prisanje leksičkih stavki, a o tome ćemo kasnije. Fajlovi u pitanju su:
+
Postoje i dva fajla za pravila prevoda i to su pravila o redu reči u rečenici, npr. chat noir → cat black → black cat. Takođe se staraju i o slaganju roda i broja i sl. Pravila se mogu koristiti i za ubacivanje i prisanje leksičkih stavki, a o tome ćemo kasnije. Fajlovi u pitanju su:
   
* pravila prevoda jezika xx u jezik yy: ovaj fajl sadrži pravila po kojim će se jezik xx menjati u jezik yy. U našem primeru ovo ćemo zvati: apertium-sh-en.trules-sh-en.xml
+
* pravila prevoda jezika xx u jezik yy: ovaj fajl sadrži pravila po kojim će se jezik xx menjati u jezik yy. U našem primeru ovo ćemo zvati: apertium-sh-en.trules-sh-en.xml
* pravila prevoda jezika yy u jezik xx: ovaj fajl sadrži pravila po kojim će se jezik yy menjati u jezik xx. U našem primeru ovo ćemo zvati: apertium-sh-en.trules-sh-en.xml
+
* pravila prevoda jezika yy u jezik xx: ovaj fajl sadrži pravila po kojim će se jezik yy menjati u jezik xx. U našem primeru ovo ćemo zvati: apertium-sh-en.trules-sh-en.xml
   
Iako u postojećim jezičkim parovima postoje i neki drugi fajlovi, ovi koje smo naveli su neophodni i dovoljni za funkcionalni sistem.
+
Iako u postojećim jezičkim parovima postoje i neki drugi fajlovi, ovi koje smo naveli su neophodni i dovoljni za funkcionalni sistem.
   
==Jezički par==
+
==Jezički par==
   
Možda ste već skapirali iz imena fajlova, ali ovo uputstvo će se koristiti prevod srpskohrvatskog u engleski radi objašnjenja kako da napravite osnovni sistem. Primer nije idealan, jer sistem bolje funkcioniše na srodnijim jezicima.
+
Možda ste već skapirali iz imena fajlova, ali ovo uputstvo će se koristiti prevod srpskohrvatskog u engleski radi objašnjenja kako da napravite osnovni sistem. Primer nije idealan, jer sistem bolje funkcioniše na srodnijim jezicima.
   
 
==O terminologiji==
 
==O terminologiji==
   
Pre nego što nastavimo, bitno je da pojasnimo neke izraze:
+
Pre nego Å¡to nastavimo, bitno je da pojasnimo neke izraze:
   
Prvi izraz je '''lema'''. U pitanju je izvorni oblik reči, kakav se nalazi u rečniku. Recimo, nominativ jednine za imenice, te infinitiv za glagole. Glagol „raditi“ je lema, dok je „radim“ ili „radiš“ njegova inflikcija. Reč „mačke“ je inflikcija leme „mačka“
+
Prvi izraz je '''lema'''. U pitanju je izvorni oblik reči, kakav se nalazi u rečniku. Recimo, nominativ jednine za imenice, te infinitiv za glagole. Glagol „raditi“ je lema, dok je „radim“ ili „radiš“ njegova inflikcija. Reč „mačke“ je inflikcija leme „mačka“
   
Drugi izraz je '''simbol'''. U našem kontekstvu, simbol je gramatička oznaka. Reč „mačke“ je množina imenice, te će imati simbole imenice i množine. Ova informacija se obično stavlja u kose zagrade, recimo:
+
Drugi izraz je '''simbol'''. U našem kontekstvu, simbol je gramatička oznaka. Reč „mačke“ je množina imenice, te će imati simbole imenice i množine. Ova informacija se obično stavlja u kose zagrade, recimo:
   
* <n>; za imenicu (od španskog ''nom'')
+
* <n>; za imenicu (od Å¡panskog ''nom'')
* <pl>; za množinu (od španskog ''plural'').
+
* <pl>; za množinu (od španskog ''plural'').
   
Neki drugi simboli su <sg> jednina, <p1> prvo lice itd. Valja napomenuti da su u većini jezičkih parova korišćeni katalonski izrazi za simbole. Npr. vbhaver - od vb (verb) i haver (imati). Simboli su definisani u <sdef> tagovima i korišćeni u <nowiki><s></nowiki> tagovima.
+
Neki drugi simboli su <sg> jednina, <p1> prvo lice itd. Valja napomenuti da su u većini jezičkih parova korišćeni katalonski izrazi za simbole. Npr. vbhaver - od vb (verb) i haver (imati). Simboli su definisani u <sdef> tagovima i korišćeni u <nowiki><s></nowiki> tagovima.
   
Treća reč je paradigma. U našem kontekstu, paradigma označava primer kako se neka grupa reči menja. U morfološkim rečnicima leme su povezane s paradigmama koje nam dozvoljavaju da opišemo kako se data reč menja bez pisanja svakog pojedinačnog nastavka.
+
Treća reč je paradigma. U našem kontekstu, paradigma označava primer kako se neka grupa reči menja. U morfološkim rečnicima leme su povezane s paradigmama koje nam dozvoljavaju da opišemo kako se data reč menja bez pisanja svakog pojedinačnog nastavka.
   
Recimo da želimo da opišemo komparaciju prideva „srećan“ i „dosadan“:
+
Recimo da želimo da opišemo komparaciju prideva „srećan“ i „dosadan“:
   
* srećan, sreć (an, niji, naj - niji)
+
* srećan, sreć (an, niji, naj - niji)
 
* dosadan, dosad (an, niji, naj - niji)
 
* dosadan, dosad (an, niji, naj - niji)
   
Dovoljno je da napišemo jedno pravilo za pridev koje se primenjuje na mnogo drugih prideva. Paradigme se definišu u tagu <pardef>, a koriste u <par>.
+
Dovoljno je da napišemo jedno pravilo za pridev koje se primenjuje na mnogo drugih prideva. Paradigme se definišu u tagu <pardef>, a koriste u <par>.
   
==Sâm početak==
+
==Sâm početak==
===Jednojezički rečnici===
+
===Jednojezički rečnici===
   
Prvo ćemo napraviti rečnik za izvorni jezik, koji se nalazi u XML fajlu. Pokrenite tekst editor i ukucajte sledeće:
+
Prvo ćemo napraviti rečnik za izvorni jezik, koji se nalazi u XML fajlu. Pokrenite tekst editor i ukucajte sledeće:
 
and type the following:
 
and type the following:
   
Line 82: Line 83:
 
</dictionary>
 
</dictionary>
 
</pre>
 
</pre>
Dakle, fajl do sada definiše našu želju da sačinimo novi rečnik. Da bi taj rečnik bio iole koristan, neophodno je da prvo dodamo abecedu - spisak slova koje ćemo koristiti u rečniku. Za srpskohrvatski:
+
Dakle, fajl do sada definiše našu želju da sačinimo novi rečnik. Da bi taj rečnik bio iole koristan, neophodno je da prvo dodamo abecedu - spisak slova koje ćemo koristiti u rečniku. Za srpskohrvatski:
   
 
<pre>
 
<pre>
  +
<alphabet>ABCČĆDDžĐEFGHIJKLLjMNNjOPRSŠTUVZŽabcčćddžđefghijklljmnnjoprsštuvzž</alphabet>
<alphabet>ABCČĆDDžĐEFGHIJKLLjMNNjOPRSŠTUVZŽabcčćddžđefghijklljmnnjoprsštuvzž</alphabet>
 
 
</pre>
 
</pre>
   
 
Dodajte abecedu ispod <dictionary> taga.
 
Dodajte abecedu ispod <dictionary> taga.
   
Sada treba da definišemo neke simbole. Počnimo s jednostavnim - imenica (n) u jednini (sg) ili množini (pl).
+
Sada treba da definišemo neke simbole. Počnimo s jednostavnim - imenica (n) u jednini (sg) ili množini (pl).
 
<pre>
 
<pre>
 
<sdefs>
 
<sdefs>
Line 98: Line 99:
 
</sdefs>
 
</sdefs>
 
</pre>
 
</pre>
Simboli ne moraju biti kratki, možete koristiti i ce izraz ukoliko želite. Ipak, pošto ćete to često pisati, ima smisla koristiti skraćenice.
+
Simboli ne moraju biti kratki, možete koristiti i ce izraz ukoliko želite. Ipak, pošto ćete to često pisati, ima smisla koristiti skraćenice.
   
Očigledno, nije sve tako jednostavno jer se reči deklinuju i konjuguju itd. ali ćemo za potrebe ovog primera pretpostaviti da je imenica muškog roda u jednini.
+
Očigledno, nije sve tako jednostavno jer se reči deklinuju i konjuguju itd. ali ćemo za potrebe ovog primera pretpostaviti da je imenica muškog roda u jednini.
   
Sledeći zadatak je da definišemo paradigme:
+
Sledeći zadatak je da definišemo paradigme:
 
<pre>
 
<pre>
 
<pardefs>
 
<pardefs>
Line 108: Line 109:
 
</pardefs>
 
</pardefs>
 
</pre>
 
</pre>
i sekciju za rečnik:
+
i sekciju za rečnik:
 
<pre>
 
<pre>
 
<section id="main" type="standard">
 
<section id="main" type="standard">
Line 114: Line 115:
 
</section>
 
</section>
 
</pre>
 
</pre>
Postoje dve vrste sekcija - prva je standardna, koja sadrži reči, enklitike itd. Drugi tip sadrži stvari kao što interpunkcija i ostale nezavisne simbole. Ovde tu sekciju nemamo, ali ćemo je kasnije demonstrirati.
+
Postoje dve vrste sekcija - prva je standardna, koja sadrži reči, enklitike itd. Drugi tip sadrži stvari kao što interpunkcija i ostale nezavisne simbole. Ovde tu sekciju nemamo, ali ćemo je kasnije demonstrirati.
   
Konačno, naš fajl će izgledati ovako:
+
Konačno, naš fajl će izgledati ovako:
 
<pre>
 
<pre>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
Line 133: Line 134:
 
</dictionary>
 
</dictionary>
 
</pre>
 
</pre>
Pošto smo postavili temelj rečniku, možemo dodati imenicu. Igrom slučaja, izabrali smo da za demonstraciju koristimo imenicu „gramofon“.
+
Pošto smo postavili temelj rečniku, možemo dodati imenicu. Igrom slučaja, izabrali smo da za demonstraciju koristimo imenicu „gramofon“.
   
Za početak treba da definišemo paradigmu.
+
Za početak treba da definišemo paradigmu.
   
Podrazumevamo imenicu muškog roda u nominativu. Jednina je „gramofon“, a množina „gramofoni“. Elem:
+
Podrazumevamo imenicu muškog roda u nominativu. Jednina je „gramofon“, a množina „gramofoni“. Elem:
 
<pre>
 
<pre>
 
<pardef n="gramofon__n">
 
<pardef n="gramofon__n">
Line 154: Line 155:
 
</pardef>
 
</pardef>
 
</pre>
 
</pre>
Pažnja: tag <l/> (ekvivalent <l></l>) označava da ništa ne treba dodati korenu reči.
+
Pažnja: tag „<l/>“ (ekvivalent <l></l>) označava da ništa ne treba dodati korenu reči.
   
Tagovi kao što su <e>, <p>, <l> and <r> označavaju sledeće:
+
Tagovi kao što su <e>, <p>, <l> and <r> označavaju sledeće:
   
 
* e, je za unos (entry).
 
* e, je za unos (entry).
Line 163: Line 164:
 
* r, je za desno (right).
 
* r, je za desno (right).
   
Levo i desno imaju svoju svrhu. Naime, morfološki rečnici se kasnije kompajliraju u konačnu mašinu. Kompilacija s leva na desno proizvodi analizu iz reči, a s desna na levo proizvodi reč iz analize. Na primer:
+
Levo i desno imaju svoju svrhu. Naime, morfološki rečnici se kasnije kompajliraju u konačnu mašinu. Kompilacija s leva na desno proizvodi analizu iz reči, a s desna na levo proizvodi reč iz analize. Na primer:
   
 
<pre>
 
<pre>
* gramofoni gramofon<n><pl> (analiza)
+
* gramofoni → gramofon<n><pl> (analiza)
* gramofon<n><pl> gramofoni (generisanje)
+
* gramofon<n><pl> ← gramofoni (generisanje)
 
</pre>
 
</pre>
   
Kada smo definisali paradigmu, treba je povezati sa lemom - gramofon. Stavićemo to u sekciju koju smo definisali.
+
Kada smo definisali paradigmu, treba je povezati sa lemom - gramofon. Stavićemo to u sekciju koju smo definisali.
   
Unos će biti ovakav:
+
Unos će biti ovakav:
 
<pre>
 
<pre>
 
<e lm="gramofon"><i>gramofon</i><par n="gramofon__n"/></e>
 
<e lm="gramofon"><i>gramofon</i><par n="gramofon__n"/></e>
 
</pre>
 
</pre>
  +
Objašnjenje prečica:
Objašnjenje prečica:
 
   
 
* lm, je za lema
 
* lm, je za lema
Line 182: Line 183:
 
* par, je za paradigmu.
 
* par, je za paradigmu.
   
Ovaj unos navodi lemu reči (gramofon), koren reči (gramogon) i paradigmu kojom se menja (gramofon__n). Razlika između leme i korena je u tome što je lema oblik reči kako se navodi u rečniku, a koren je deo leme na koji se dodaju dodaci. Ovo će biti jasnije s primerom gde se lema i koren razlikuju.
+
Ovaj unos navodi lemu reči (gramofon), koren reči (gramogon) i paradigmu kojom se menja (gramofon__n). Razlika između leme i korena je u tome što je lema oblik reči kako se navodi u rečniku, a koren je deo leme na koji se dodaju dodaci. Ovo će biti jasnije s primerom gde se lema i koren razlikuju.
   
Sada možemo da testiramo rečnik. Sačuvajte ga, te se vratite u shell. Prvo treba da ga kompajliramo (sa lt-comp), a onda da ga testiramo (sa lt-proc).
+
Sada možemo da testiramo rečnik. Sačuvajte ga, te se vratite u shell. Prvo treba da ga kompajliramo (sa lt-comp), a onda da ga testiramo (sa lt-proc).
 
<pre>
 
<pre>
 
$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin
 
$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin
 
</pre>
 
</pre>
Treba da ispiše:
+
Treba da ispiše:
 
<pre>
 
<pre>
 
main@standard 12 12
 
main@standard 12 12
Line 196: Line 197:
 
$ lt-comp rl apertium-sh-en.sh.dix sh-en.autogen.bin
 
$ lt-comp rl apertium-sh-en.sh.dix sh-en.autogen.bin
 
</pre>
 
</pre>
Sada bi naredba treablo da isti izlaz.
+
Sada bi naredba treablo da dâ isti izlaz.
   
 
Da testiramo. Pokrenit lt-proc na analizatoru.
 
Da testiramo. Pokrenit lt-proc na analizatoru.
Line 202: Line 203:
 
$ lt-proc sh-en.automorf.bin
 
$ lt-proc sh-en.automorf.bin
 
</pre>
 
</pre>
Testirajte ga. Upišite gramofoni, pa pogledajte ispis:
+
Testirajte ga. Upišite gramofoni, pa pogledajte ispis:
 
<pre>
 
<pre>
 
^gramofoni/gramofon<n><pl>$
 
^gramofoni/gramofon<n><pl>$
 
</pre>
 
</pre>
Uradimo isto i za engleski rečnik, ali zamenimo Englesku reč gramophone sa gramofon i promenimo menjanje u množini. Kasnije ćemo objasniti šta bi radili da želimo da koristimo formalniji izraz „record plazer“.
+
Uradimo isto i za engleski rečnik, ali zamenimo Englesku reč gramophone sa gramofon i promenimo menjanje u množini. Kasnije ćemo objasniti šta bi radili da želimo da koristimo formalniji izraz „record plazer“.
   
 
Sada bi trebalo da imate dva fajla u direktorijumu:
 
Sada bi trebalo da imate dva fajla u direktorijumu:
   
* apertium-sh-en.sh.dix koji sadrži (veoma jednostavi) srpskohrvatski morfološki rečnik i
+
* apertium-sh-en.sh.dix koji sadrži (veoma jednostavi) srpskohrvatski morfološki rečnik i
* apertium-sh-en.en.dix koji sadrži (veoma jednostavi) engleski morfološki rečnik.
+
* apertium-sh-en.en.dix koji sadrži (veoma jednostavi) engleski morfološki rečnik.
   
===Dvojezički rečnik===
+
===Dvojezički rečnik===
   
Pošto imamo dva morfološka rečnika, možemo napraviti dvojezički rečnik, koji opisuje odnos između reči. Svi rečnici koriste isti format (detaljian u DTD, dix.dtd).
+
Pošto imamo dva morfološka rečnika, možemo napraviti dvojezički rečnik, koji opisuje odnos između reči. Svi rečnici koriste isti format (detaljian u DTD, dix.dtd).
   
 
Napravite novi fajl, apertium-sh-en.sh-en.dix i dodajte kostur:
 
Napravite novi fajl, apertium-sh-en.sh-en.dix i dodajte kostur:
Line 234: Line 235:
 
</dictionary>
 
</dictionary>
 
</pre>
 
</pre>
Sada nam treba unos za prevod između dve reči. Nešto kao:
+
Sada nam treba unos za prevod između dve reči. Nešto kao:
 
<pre>
 
<pre>
 
<e><p><l>gramofon<s n="n"/></l><r>gramophone<s n="n"/></r></p></e>
 
<e><p><l>gramofon<s n="n"/></l><r>gramophone<s n="n"/></r></p></e>
 
</pre>
 
</pre>
Pišemo jedan unos po redu iz prostog razloga što će ih biti puno, pa da ne bi uništili čitljivost. I opet koristimo „l“ i „r“… Kompajliramo ga levo na desno da bi dobili srpskohrvatsko - engleski rečnik, a desno na levo za englesko - srpskohrvatski rečnik.
+
Pišemo jedan unos po redu iz prostog razloga što će ih biti puno, pa da ne bi uništili čitljivost. I opet koristimo „l“ i „r“… Kompajliramo ga levo na desno da bi dobili srpskohrvatsko - engleski rečnik, a desno na levo za englesko - srpskohrvatski rečnik.
   
Nakon što ste to završili, pokrenite sledeće naredbe:
+
Nakon što ste to završili, pokrenite sledeće naredbe:
 
<pre>
 
<pre>
 
$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin
 
$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin
Line 251: Line 252:
 
$ lt-comp rl apertium-sh-en.sh-en.dix en-sh.autobil.bin
 
$ lt-comp rl apertium-sh-en.sh-en.dix en-sh.autobil.bin
 
</pre>
 
</pre>
da generišete morfološki analizator (automorf), morfološki generator (autogen) i traženje reči (autobil). Bil je skraćeno za „bilingual“ (dvojezičko).
+
… da generišete morfološki analizator (automorf), morfološki generator (autogen) i traženje reči (autobil). Bil je skraćeno za „bilingual“ (dvojezičko).
   
 
===Pravila prevoda===
 
===Pravila prevoda===
   
Pošto imamo dva morfološka rečnika i dvojezički rečnik, potrebna su nam pravila prevoda za imenice. Pravila prevoda imaju svoj DTD (transfer.dtd), koji se može naći u paketu Apertiuma. Ako treba da implementirate pravila, poželjno je da prvo konsultujete pravila drugih parova jezika, jer se mnoga pravila daju reciklirati. Npr. pravila opisana dole važe za sve jezike gde se subjekat izostavlja:
+
Pošto imamo dva morfološka rečnika i dvojezički rečnik, potrebna su nam pravila prevoda za imenice. Pravila prevoda imaju svoj DTD (transfer.dtd), koji se može naći u paketu Apertiuma. Ako treba da implementirate pravila, poželjno je da prvo konsultujete pravila drugih parova jezika, jer se mnoga pravila daju reciklirati. Npr. pravila opisana dole važe za sve jezike gde se subjekat izostavlja:
   
Započnite skeletonom:
+
Započnite skeletonom:
 
<pre>
 
<pre>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
Line 264: Line 265:
 
</transfer>
 
</transfer>
 
</pre>
 
</pre>
Trenutno, pošto ignorišemo padeže, treba nam samo pravilo koje prima unos gramatičkih simbola, te ih ponovo ispisuje.
+
Trenutno, pošto ignorišemo padeže, treba nam samo pravilo koje prima unos gramatičkih simbola, te ih ponovo ispisuje.
   
Kao prvo, treba da definišemo kategorije i atribute, koji nam dozvoljavaju grupisanje gramatičkih simbola. Kategorijama možemo grupisati simbole radi pretrage (npr. „n.* su sve imenice). Atributima grupišemo simbole među kojima se može birati (npr. „sg“ i „pl“ mogu grupisati atribut „number“).
+
Kao prvo, treba da definišemo kategorije i atribute, koji nam dozvoljavaju grupisanje gramatičkih simbola. Kategorijama možemo grupisati simbole radi pretrage (npr. „n.*“ su sve imenice). Atributima grupišemo simbole među kojima se može birati (npr. „sg“ i „pl“ mogu grupisati atribut „number“).
   
 
Dodajmo neophodne delove:
 
Dodajmo neophodne delove:
Line 277: Line 278:
 
</section-def-attrs>
 
</section-def-attrs>
 
</pre>
 
</pre>
Pošto vršimo samo inflikciju imenica u jednini i množini, neophodna nam je kategorija za imenice sa atributom broja. Nešto kao:
+
Pošto vršimo samo inflikciju imenica u jednini i množini, neophodna nam je kategorija za imenice sa atributom broja. Nešto kao:
   
 
U section-def-cats dodajte:
 
U section-def-cats dodajte:
Line 285: Line 286:
 
</def-cat>
 
</def-cat>
 
</pre>
 
</pre>
Ovo će „uhvatiti“ sve imenice (leme iza kojih je <n>, pa bilo šta), a „obraćaće“ im se sa „nom“, što ćemo detaljnije proučiti kasnije.
+
Ovo će „uhvatiti“ sve imenice (leme iza kojih je <n>, pa bilo šta), a „obraćaće“ im se sa „nom“, što ćemo detaljnije proučiti kasnije.
   
 
U section section-def-attrs, dodajte:
 
U section section-def-attrs, dodajte:
Line 300: Line 301:
 
</def-attr>
 
</def-attr>
 
</pre>
 
</pre>
Prvo smo definisali atribute nbr (''number'' - broj), koji može biti u jednini (sg) ili množini (pl).
+
Prvo smo definisali atribute nbr (''number'' - broj), koji može biti u jednini (sg) ili množini (pl).
   
 
Onda smo definisali atribut a_nom (atribut imenica).
 
Onda smo definisali atribut a_nom (atribut imenica).
   
Zatim nam treba sekcija za globalne promenljive.
+
Zatim nam treba sekcija za globalne promenljive.
   
 
<pre>
 
<pre>
Line 311: Line 312:
 
</section-def-vars>
 
</section-def-vars>
 
</pre>
 
</pre>
Ove promenljive drže ili služe za transfer atributa među pravilima. Za sada nam treba samo jedan.
+
Ove promenljive drže ili služe za transfer atributa među pravilima. Za sada nam treba samo jedan.
 
<pre>
 
<pre>
 
<def-var n="number"/>
 
<def-var n="number"/>
 
</pre>
 
</pre>
Konačno, treba da dodamo pravilo kojim ćemo unešenu imenicu ispisati u tačnom obliku. Trebaće nam sekcija za pravila…
+
Konačno, treba da dodamo pravilo kojim ćemo unešenu imenicu ispisati u tačnom obliku. Trebaće nam sekcija za pravila…
 
<pre>
 
<pre>
 
<section-rules>
 
<section-rules>
Line 321: Line 322:
 
</section-rules>
 
</section-rules>
 
</pre>
 
</pre>
A sada, prvo pogledajmo sâm primer, koji ćemo kasnije objasniti.
+
A sada, prvo pogledajmo sâm primer, koji ćemo kasnije objasniti.
 
<pre>
 
<pre>
 
<rule>
 
<rule>
Line 338: Line 339:
 
</rule>
 
</rule>
 
</pre>
 
</pre>
Prvi je tag očigledan - definiše pravilo. Drugi tag govori: „primeni ovo pravilo ako je zadati niz za pretraga pronađen“. U ovom primeru zadati se niz sastoji od jedne imenice. Obratite pažnju da se nizovi za pretragu pronalaze „široko“, tj. prvo se nalazi najduži niz. Ako imate tri pravila, prvo pravilo će pronaći <prn><vblex><n>, drugo pravilo će pronaći <prn><vblex>, a treće će pronaći <n>, pa će samo prvo pravilo biti uzeto u obzir.
+
Prvi je tag očigledan - definiše pravilo. Drugi tag govori: „primeni ovo pravilo ako je zadati niz za pretraga pronađen“. U ovom primeru zadati se niz sastoji od jedne imenice. Obratite pažnju da se nizovi za pretragu pronalaze „široko“, tj. prvo se nalazi najduži niz. Ako imate tri pravila, prvo pravilo će pronaći „<prn><vblex><n>“, drugo pravilo će pronaći „<prn><vblex>“, a treće će pronaći „<n>“, pa će samo prvo pravilo biti uzeto u obzir.
   
Za svaki niz pretrage postoji i odgovarajuća akcija koja proizvodi odgovarajući ispis. Ispis je leksička jedinica (lu).
+
Za svaki niz pretrage postoji i odgovarajuća akcija koja proizvodi odgovarajući ispis. Ispis je leksička jedinica (lu).
   
Atributi i izvornog jezika (side="sl") i ciljnog jezika (side="sl") se mogu manipulisati „clip“ tagovima.
+
Atributi i izvornog jezika (side="sl") i ciljnog jezika (side="sl") se mogu manipulisati „clip“ tagovima.
   
Sada možemo kompajlirati i testirati program. Pravila prenosa se kompajliraju komandom:
+
Sada možemo kompajlirati i testirati program. Pravila prenosa se kompajliraju komandom:
 
<pre>
 
<pre>
 
$ apertium-preprocess-transfer apertium-sh-en.trules-sh-en.xml trules-sh-en.bin
 
$ apertium-preprocess-transfer apertium-sh-en.trules-sh-en.xml trules-sh-en.bin
 
</pre>
 
</pre>
koja će generisati fajl trules-sh-en.bin.
+
koja će generisati fajl trules-sh-en.bin.
   
 
Now we're ready to test our machine translation system. There is one crucial part missing, the part-of-speech (PoS) tagger, but that will be explained shortly. In the meantime we can test it as is:
 
Now we're ready to test our machine translation system. There is one crucial part missing, the part-of-speech (PoS) tagger, but that will be explained shortly. In the meantime we can test it as is:

Revision as of 22:23, 12 October 2007

showdown gem and boy ddr dimm memoria ram jolley elizabeth marilleva da wisel lcd 4 ms unghie laccate zen video vidcaps la fattoria sandali pelle donna fiat panda km 0 emotion batterie sony serie m cica cica brigitte bui video to nem aiu gula gula juliana bbb4 srce juzno fotocamere digitali nikon maggiorana que te pasa loco nokia 7610 microsof internet explorer piacere rai 1 scuola estetista pisa veo veo teresa rabal alfa romeo vicenza km0 volkswagen golf v diesel auto km 0 cd stadio tv sony 28 una preghiera per morire nuda per protesta grand hotel del mare bordighiera nona voglio cazzo virgiio r817 ricoh aficio 220 ho ipaq rx3715 fukang the temptations sito del vaticano lamaledizionedellaprimaluna ziano piacentino macchina cialde mountain board pirelli uomo 42 frigorifero congelatore samsung 5 cd www sexo it rex 290 litri giochi di vampiri jijo michelle veith cercasi susan disperatamente adsl speed test www unponteper it calendario arca francesco intel pentium 4 478 samsung lettore mp3 5 bennassi bro sony 32 pollici www latinchat cpm fuga lg 1730s samsung yh 999 yepp nokia e60 puntorosso samsung 679 www cndc it quattro ragazze coraggiose tony hawks american sk8land copertina cd tiromancino box esterni hdd bmw touring 318i me dijeron alejandro lerner sigourey weaver west ham united f c try nelly furtado lyrics iaudio x5 60gb www santafe gob ar custodia sub nikon il ragazzo e il poliziotto guangdong pps secy caduti delle foibe nba patch train simulator microsoft accessori per sony dsc froufrou holding on for a hero elena sampa lg condizionatori inverter geforce pci hotel souvenir misano adriatico stampanti epson r300 lignano pineta corso francese olympus d170 volo fiumicino

Uputstvo za novi jezički par za Apertium

Ovo uputstvo će objasniti kako započeti novi jezički par za Apertium mašinski prevod. Ne podrazumevamo poznavanje lingvistike ili mašinskog prevođenja - dovoljno je da znate da razlikujete različite vrste reči (imenice, glagole, prideve itd.)

Reč-dve o srpskohrvatskom prevodu

Ovaj prevod koristi Unicode prikaz slova Lj, Nj i Dž umesto Lj, Nj i Dž. Ukoliko ne vidite ta slova, instalirajte set slobodnih fontova koji podržavaju Unicode, kao što su DejaVu fontovi i postarajte se da gledate ovu stranicu u UTF8 kodnom rasporedu.

U prevodu takođe koristimo neke neologizme koji su se ustalili u upotrebi na srpskohrvatskom govornom području. Npr. file „prevodimo“ kao fajl umesto uobičajenog datoteka.

Uvod

Kao što ste možda primetili iz uvoda, Apertium je sistema mašinskog prevođenja. Preciznije, u pitanju je platforma za prevod koja obuhvata pokretački motor i alatke koje dozvoljavaju pravljenje ličnog sistema mašinskog prevođenja. Vi samo treba da unesete podatke. U osnovi, podaci se sastoje iz tri rečnika i nekoliko pravila koji se staraju za tačan red reči u rečenici i druge gramatičke zavrzlame.

Za detaljnije uputstvo o tome kako ovo sve radi, pročitajte dokumentaciju na sajtu projekta na apertium.sourceforge.net.

Trebaće Vam

  • lttoolbox (>= 3.0.0)
  • libxml utils (xmllint itd.)
  • apertium (>= 3.0.0)
  • editor teksta (ili specijalizovani uređivač za XML, ako Vam tako viÅ¡e odgovara)

Za instrukcije kako da instalirate ove programe pogledajte dokumentaciju na sajtu Apertiuma.

Od čega se sastoji jezički par?

Apertium koristi „plitki“ mašinski prevod, što znači da se koristi rečnicima i plitkim pravilima prenosa.

„Plitki prevod“ se razlikuje od „dubokog prevoda“ utoliko što se ne bavi punom sintatičkom obradom. Pravila se obično primenjuju na grupe leksičkih jedinica, umesto na razgranatu obradu. U osnovi postoje tri glavna rečnika.

  1. Morfološki rečnik za jezik xx: on sadrži pravila o tome kako se menjaju reči u jeziku xx. U našem primeru ovo ćemo zvati: apertium-sh-en.sh.dix.
  2. Morfološki rečnik za jezik yy: on sadrži pravila o tome kako se menjaju reči u jeziku yy. U našem primeru ovo ćemo zvati: apertium-sh-en.en.dix.
  3. Dvojezički rečnik: on sadrži odnos između reči i simbola dva jezika. U našem primeru ovo ćemo zvati: apertium-sh-en.sh-en.dix.

U paru za prevod, oba jezika mogu biti i izvor i cilj prevoda, te su ovi izrazi relativni.

Postoje i dva fajla za pravila prevoda i to su pravila o redu reči u rečenici, npr. chat noir → cat black → black cat. Takođe se staraju i o slaganju roda i broja i sl. Pravila se mogu koristiti i za ubacivanje i prisanje leksičkih stavki, a o tome ćemo kasnije. Fajlovi u pitanju su:

  • pravila prevoda jezika xx u jezik yy: ovaj fajl sadrži pravila po kojim će se jezik xx menjati u jezik yy. U naÅ¡em primeru ovo ćemo zvati: apertium-sh-en.trules-sh-en.xml
  • pravila prevoda jezika yy u jezik xx: ovaj fajl sadrži pravila po kojim će se jezik yy menjati u jezik xx. U naÅ¡em primeru ovo ćemo zvati: apertium-sh-en.trules-sh-en.xml

Iako u postojećim jezičkim parovima postoje i neki drugi fajlovi, ovi koje smo naveli su neophodni i dovoljni za funkcionalni sistem.

Jezički par

Možda ste već skapirali iz imena fajlova, ali ovo uputstvo će se koristiti prevod srpskohrvatskog u engleski radi objašnjenja kako da napravite osnovni sistem. Primer nije idealan, jer sistem bolje funkcioniše na srodnijim jezicima.

O terminologiji

Pre nego Å¡to nastavimo, bitno je da pojasnimo neke izraze:

Prvi izraz je lema. U pitanju je izvorni oblik reči, kakav se nalazi u rečniku. Recimo, nominativ jednine za imenice, te infinitiv za glagole. Glagol „raditi“ je lema, dok je „radim“ ili „radiš“ njegova inflikcija. Reč „mačke“ je inflikcija leme „mačka“

Drugi izraz je simbol. U našem kontekstvu, simbol je gramatička oznaka. Reč „mačke“ je množina imenice, te će imati simbole imenice i množine. Ova informacija se obično stavlja u kose zagrade, recimo:

  • <n>; za imenicu (od Å¡panskog nom)
  • <pl>; za množinu (od Å¡panskog plural).

Neki drugi simboli su <sg> jednina, <p1> prvo lice itd. Valja napomenuti da su u većini jezičkih parova korišćeni katalonski izrazi za simbole. Npr. vbhaver - od vb (verb) i haver (imati). Simboli su definisani u <sdef> tagovima i korišćeni u <s> tagovima.

Treća reč je paradigma. U našem kontekstu, paradigma označava primer kako se neka grupa reči menja. U morfološkim rečnicima leme su povezane s paradigmama koje nam dozvoljavaju da opišemo kako se data reč menja bez pisanja svakog pojedinačnog nastavka.

Recimo da želimo da opišemo komparaciju prideva „srećan“ i „dosadan“:

  • srećan, sreć (an, niji, naj - niji)
  • dosadan, dosad (an, niji, naj - niji)

Dovoljno je da napišemo jedno pravilo za pridev koje se primenjuje na mnogo drugih prideva. Paradigme se definišu u tagu <pardef>, a koriste u <par>.

Sâm početak

Jednojezički rečnici

Prvo ćemo napraviti rečnik za izvorni jezik, koji se nalazi u XML fajlu. Pokrenite tekst editor i ukucajte sledeće: and type the following:

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>

</dictionary>

Dakle, fajl do sada definiše našu želju da sačinimo novi rečnik. Da bi taj rečnik bio iole koristan, neophodno je da prvo dodamo abecedu - spisak slova koje ćemo koristiti u rečniku. Za srpskohrvatski:

<alphabet>ABCČĆDDžĐEFGHIJKLLjMNNjOPRSŠTUVZŽabcčćddžđefghijklljmnnjoprsštuvzž</alphabet>

Dodajte abecedu ispod <dictionary> taga.

Sada treba da definišemo neke simbole. Počnimo s jednostavnim - imenica (n) u jednini (sg) ili množini (pl).

<sdefs>
   <sdef n="n"/>
   <sdef n="sg"/>
   <sdef n="pl"/>
</sdefs>

Simboli ne moraju biti kratki, možete koristiti i ce izraz ukoliko želite. Ipak, pošto ćete to često pisati, ima smisla koristiti skraćenice.

Očigledno, nije sve tako jednostavno jer se reči deklinuju i konjuguju itd. ali ćemo za potrebe ovog primera pretpostaviti da je imenica muškog roda u jednini.

Sledeći zadatak je da definišemo paradigme:

<pardefs>

</pardefs>

i sekciju za rečnik:

<section id="main" type="standard">

</section>

Postoje dve vrste sekcija - prva je standardna, koja sadrži reči, enklitike itd. Drugi tip sadrži stvari kao što interpunkcija i ostale nezavisne simbole. Ovde tu sekciju nemamo, ali ćemo je kasnije demonstrirati.

Konačno, naš fajl će izgledati ovako:

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
   <sdefs>
     <sdef n="n"/>
     <sdef n="sg"/>
     <sdef n="pl"/>
   </sdefs>
   <pardefs>

   </pardefs>
   <section id="main" type="standard">

   </section>
</dictionary>

Pošto smo postavili temelj rečniku, možemo dodati imenicu. Igrom slučaja, izabrali smo da za demonstraciju koristimo imenicu „gramofon“.

Za početak treba da definišemo paradigmu.

Podrazumevamo imenicu muškog roda u nominativu. Jednina je „gramofon“, a množina „gramofoni“. Elem:

<pardef n="gramofon__n">
   <e>
     <p>
       <l/>
       <r><s n="n"/><s n="sg"/></r>
     </p>
   </e>
   <e>
     <p>
       <l>i</l>
       <r><s n="n"/><s n="pl"/></r>
     </p>
   </e>
</pardef>

Pažnja: tag „<l/>“ (ekvivalent <l></l>) označava da ništa ne treba dodati korenu reči.

Tagovi kao Å¡to su <e>,

, <l> and <r> označavaju sledeće:

  • e, je za unos (entry).
  • p, je za par (pair).
  • l, je za levo (left).
  • r, je za desno (right).

Levo i desno imaju svoju svrhu. Naime, morfološki rečnici se kasnije kompajliraju u konačnu mašinu. Kompilacija s leva na desno proizvodi analizu iz reči, a s desna na levo proizvodi reč iz analize. Na primer:

* gramofoni → gramofon<n><pl> (analiza)
* gramofon<n><pl> ← gramofoni (generisanje)

Kada smo definisali paradigmu, treba je povezati sa lemom - gramofon. Stavićemo to u sekciju koju smo definisali.

Unos će biti ovakav:

<e lm="gramofon"><i>gramofon</i><par n="gramofon__n"/></e>

Objašnjenje prečica:

  • lm, je za lema
  • i, je za identitet (svejedno da li je levo ili desno).
  • par, je za paradigmu.

Ovaj unos navodi lemu reči (gramofon), koren reči (gramogon) i paradigmu kojom se menja (gramofon__n). Razlika između leme i korena je u tome što je lema oblik reči kako se navodi u rečniku, a koren je deo leme na koji se dodaju dodaci. Ovo će biti jasnije s primerom gde se lema i koren razlikuju.

Sada možemo da testiramo rečnik. Sačuvajte ga, te se vratite u shell. Prvo treba da ga kompajliramo (sa lt-comp), a onda da ga testiramo (sa lt-proc).

$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin

Treba da ispiše:

main@standard 12 12

Kako kompajliramo s leva na desno, pravimo analizator. Napravimo i generator:

$ lt-comp rl apertium-sh-en.sh.dix sh-en.autogen.bin

Sada bi naredba treablo da dâ isti izlaz.

Da testiramo. Pokrenit lt-proc na analizatoru.

$ lt-proc sh-en.automorf.bin

Testirajte ga. Upišite gramofoni, pa pogledajte ispis:

^gramofoni/gramofon<n><pl>$

Uradimo isto i za engleski rečnik, ali zamenimo Englesku reč gramophone sa gramofon i promenimo menjanje u množini. Kasnije ćemo objasniti šta bi radili da želimo da koristimo formalniji izraz „record plazer“.

Sada bi trebalo da imate dva fajla u direktorijumu:

  • apertium-sh-en.sh.dix koji sadrži (veoma jednostavi) srpskohrvatski morfoloÅ¡ki rečnik i
  • apertium-sh-en.en.dix koji sadrži (veoma jednostavi) engleski morfoloÅ¡ki rečnik.

Dvojezički rečnik

Pošto imamo dva morfološka rečnika, možemo napraviti dvojezički rečnik, koji opisuje odnos između reči. Svi rečnici koriste isti format (detaljian u DTD, dix.dtd).

Napravite novi fajl, apertium-sh-en.sh-en.dix i dodajte kostur:

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
   <alphabet/>
   <sdefs>
     <sdef n="n"/>
     <sdef n="sg"/>
     <sdef n="pl"/>
   </sdefs>

   <section id="main" type="standard">

   </section>
</dictionary>

Sada nam treba unos za prevod između dve reči. Nešto kao:

<e><p><l>gramofon<s n="n"/></l><r>gramophone<s n="n"/></r></p></e>

Pišemo jedan unos po redu iz prostog razloga što će ih biti puno, pa da ne bi uništili čitljivost. I opet koristimo „l“ i „r“… Kompajliramo ga levo na desno da bi dobili srpskohrvatsko - engleski rečnik, a desno na levo za englesko - srpskohrvatski rečnik.

Nakon što ste to završili, pokrenite sledeće naredbe:

$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin
$ lt-comp rl apertium-sh-en.sh.dix sh-en.autogen.bin

$ lt-comp lr apertium-sh-en.en.dix en-sh.automorf.bin
$ lt-comp rl apertium-sh-en.en.dix en-sh.autogen.bin

$ lt-comp lr apertium-sh-en.sh-en.dix sh-en.autobil.bin
$ lt-comp rl apertium-sh-en.sh-en.dix en-sh.autobil.bin

… da generišete morfološki analizator (automorf), morfološki generator (autogen) i traženje reči (autobil). Bil je skraćeno za „bilingual“ (dvojezičko).

Pravila prevoda

Pošto imamo dva morfološka rečnika i dvojezički rečnik, potrebna su nam pravila prevoda za imenice. Pravila prevoda imaju svoj DTD (transfer.dtd), koji se može naći u paketu Apertiuma. Ako treba da implementirate pravila, poželjno je da prvo konsultujete pravila drugih parova jezika, jer se mnoga pravila daju reciklirati. Npr. pravila opisana dole važe za sve jezike gde se subjekat izostavlja:

Započnite skeletonom:

<?xml version="1.0" encoding="UTF-8"?>
<transfer>

</transfer>

Trenutno, pošto ignorišemo padeže, treba nam samo pravilo koje prima unos gramatičkih simbola, te ih ponovo ispisuje.

Kao prvo, treba da definišemo kategorije i atribute, koji nam dozvoljavaju grupisanje gramatičkih simbola. Kategorijama možemo grupisati simbole radi pretrage (npr. „n.*“ su sve imenice). Atributima grupišemo simbole među kojima se može birati (npr. „sg“ i „pl“ mogu grupisati atribut „number“).

Dodajmo neophodne delove:

<section-def-cats>

</section-def-cats>
<section-def-attrs>

</section-def-attrs>

Pošto vršimo samo inflikciju imenica u jednini i množini, neophodna nam je kategorija za imenice sa atributom broja. Nešto kao:

U section-def-cats dodajte:

<def-cat n="nom">
   <cat-item tags="n.*"/>
</def-cat>

Ovo će „uhvatiti“ sve imenice (leme iza kojih je <n>, pa bilo šta), a „obraćaće“ im se sa „nom“, što ćemo detaljnije proučiti kasnije.

U section section-def-attrs, dodajte:

<def-attr n="nbr">
   <attr-item tags="sg"/>
   <attr-item tags="pl"/>
</def-attr>

te onda:

<def-attr n="a_nom">
   <attr-item tags="n"/>
</def-attr>

Prvo smo definisali atribute nbr (number - broj), koji može biti u jednini (sg) ili množini (pl).

Onda smo definisali atribut a_nom (atribut imenica).

Zatim nam treba sekcija za globalne promenljive.

<section-def-vars>

</section-def-vars>

Ove promenljive drže ili služe za transfer atributa među pravilima. Za sada nam treba samo jedan.

<def-var n="number"/>

Konačno, treba da dodamo pravilo kojim ćemo unešenu imenicu ispisati u tačnom obliku. Trebaće nam sekcija za pravila…

<section-rules>

</section-rules>

A sada, prvo pogledajmo sâm primer, koji ćemo kasnije objasniti.

<rule>
   <pattern>
     <pattern-item n="nom"/>
   </pattern>
   <action>
     <out>
       <lu>
         <clip pos="1" side="tl" part="lem"/>
         <clip pos="1" side="tl" part="a_nom"/>
         <clip pos="1" side="tl" part="nbr"/>
       </lu>
     </out>
   </action>
</rule>

Prvi je tag očigledan - definiše pravilo. Drugi tag govori: „primeni ovo pravilo ako je zadati niz za pretraga pronađen“. U ovom primeru zadati se niz sastoji od jedne imenice. Obratite pažnju da se nizovi za pretragu pronalaze „široko“, tj. prvo se nalazi najduži niz. Ako imate tri pravila, prvo pravilo će pronaći „<prn><vblex><n>“, drugo pravilo će pronaći „<prn><vblex>“, a treće će pronaći „<n>“, pa će samo prvo pravilo biti uzeto u obzir.

Za svaki niz pretrage postoji i odgovarajuća akcija koja proizvodi odgovarajući ispis. Ispis je leksička jedinica (lu).

Atributi i izvornog jezika (side="sl") i ciljnog jezika (side="sl") se mogu manipulisati „clip“ tagovima.

Sada možemo kompajlirati i testirati program. Pravila prenosa se kompajliraju komandom:

$ apertium-preprocess-transfer apertium-sh-en.trules-sh-en.xml trules-sh-en.bin

koja će generisati fajl trules-sh-en.bin.

Now we're ready to test our machine translation system. There is one crucial part missing, the part-of-speech (PoS) tagger, but that will be explained shortly. In the meantime we can test it as is:

First, lets analyse a word, gramofoni:

$ echo "gramofoni" | lt-proc sh-en.automorf.bin 
^gramofon/gramofon<n><pl>$

Now, normally here the POS tagger would choose the right version based on the part of speech, but we don't have a POS tagger yet, so we can use this little gawk script (thanks to Sergio) that will just output the first item retrieved.

$ echo "gramofoni" | lt-proc sh-en.automorf.bin | \
  gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \
^gramofon<n><pl>$

Now let's process that with the transfer rule:

$ echo "gramofoni" | lt-proc sh-en.automorf.bin | \
  gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \
  apertium-transfer apertium-sh-en.trules-sh-en.xml trules-sh-en.bin sh-en.autobil.bin

It will output:

^gramophone<n><pl>$^@
  • 'gramophone' is the target language (side="tl") lemma (lem) at position 1 (pos="1").
  • '<n>' is the target language a_nom at position 1.
  • '<pl>' is the target language attribute of number (nbr) at position 1.

Try commenting out one of these clip statements, recompiling and seeing what happens.

So, now we have the output from the transfer, the only thing that remains is to generate the target-language inflected forms. For this, we use lt-proc, but in generation (-g), not analysis mode.

$ echo "gramofoni" | lt-proc sh-en.automorf.bin | \
  gawk 'BEGIN{RS="$"; FS="/";}{nf=split($1,COMPONENTS,"^"); for(i = 1; i<nf; i++) printf COMPONENTS[i]; if($2 != "") printf("^%s$",$2);}' | \
  apertium-transfer apertium-sh-en.trules-sh-en.xml trules-sh-en.bin sh-en.autobil.bin | \
  lt-proc -g sh-en.autogen.bin

gramophones\@

And c'est ca. You now have a machine translation system that translates a Serbo-Croatian noun into an English noun. Obviously this isn't very useful, but we'll get onto the more complex stuff soon. Oh, and don't worry about the '@' symbol, I'll explain that soon too.

Think of a few other words that inflect the same as gramofon. How about adding those. We don't need to add any paradigms, just the entries in the main section of the monolingual and bilingual dictionaries.