Difference between revisions of "Hvordan lage et nytt språkpar i Apertium"
Line 221: | Line 221: | ||
<pre> |
<pre> |
||
<? |
<?xml version="1.0" encoding="UTF-8"?> |
||
<dictionary> |
<dictionary> |
||
<alphabet/> |
<alphabet/> |
||
Line 228: | Line 228: | ||
<sdef n="sg"/> |
<sdef n="sg"/> |
||
<sdef n="pl"/> |
<sdef n="pl"/> |
||
</ |
</sdefs> |
||
< |
<section id="main" type="standard"> |
||
</ |
</section> |
||
</ |
</dictionary> |
||
</pre> |
</pre> |
||
Line 239: | Line 239: | ||
<pre> |
<pre> |
||
< |
<e><p><l>gramofon<s n="n"/></l><r>gramophone<s n="n"/></r></p></e> |
||
</pre> |
</pre> |
||
Line 247: | Line 247: | ||
<pre> |
<pre> |
||
$ |
$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin |
||
$ |
$ lt-comp rl apertium-sh-en.en.dix sh-en.autogen.bin |
||
$ |
$ lt-comp lr apertium-sh-en.en.dix en-sh.automorf.bin |
||
$ |
$ lt-comp rl apertium-sh-en.sh.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 |
||
</pre> |
</pre> |
||
Revision as of 14:21, 3 December 2010
Hvordan lage et nytt språkpar i Apertium. Dette dokumentet beskriver hvordan man starter et nytt språkpar for Apertium maskinoversettelse system.
Du bør ikke kunne lingvistikk eller maskin eversettelse for å skjønne følgende. Det holder å vite forskjellen mellom verb og substantiv.
Innledning
Aperitum er en maskinoversettelsesystem. Det er nok ikke helt sann. Den er en maskinoversettelseplatform. Den gir deg muligheten å lage sine egne maskinoversettelsesystemer. Det eneste du må gjøre er å skrive materiale. Materialen består av tre ordbøker og litt regler.
Om du vil lese en mer inngående innledning så er det mange flotte dokumenter her: Publications.
Det du trenger
- lttoolbox (>= 3.0.0)
- libxml utils (xmllint etc.)
- apertium (>= 3.0.0)
- en tekstredigerer
Dette dokumentet beskriver ikke hvordan man installerer disse pakker. For mer informasjon se dokumenterings-seksjonen av Aperitum sin nettside .
Hva består et språkpar av?
Aperitum er en "shallow-transfer" type maskinoversettelse system. Den virker på ordbøker og "shallow-transfer" regler. Forskjellen på virkningen av "shallow-transfer" og "deep-transfer" er at "shallow-transfer" fullfører ikke en full syntaktisk analyse. Reglene er vanligvis, operasjoner på grupper av leksikalske komponenter, ikke operasjoner på "parse trees". Det finnes tre hovedordbøker:
- Den morfologiske ordboka for språket xx: denne ordboka inneholder reglene på bøying av ordene i språket xx. I dette eksemplet så skal vi kalle den: apertium-sh-en.sh.dix
- Den morfologiske ordboka for språket yy: denne ordboka inneholder reglene på bøying av ordene i språket yy. I dette eksemplet så skal vi kalle den: apertium-sh-en.en.dix
- Den tospråklige ordboka: inneholder samsvar mellom ord og symboler i to forskjellige språk. I dette eksemplet så skal vi kalle den: apertium-sh-en.sh-en.dix
I et språkpar så er det begge språk som kan være en kilde eller et mål for en oversettelse.
Det er også to filer til overførings-reglene. Disse her er reglene som bestemmer hvordan er ordene ordnet i en setning. For eksempel, chat noir -> katt svart -> svart katt. Reglene kan også brukes for å sette inn eller slette leksikalske komponenter. Dette beskrives senere. Disse filene er:
- språket xx til språket yy overførings-reglene: denne filen inneholder reglene for hvordan språket xx skal endres til språket yy.I dette eksemplet så skal den være: apertium-sh-en.sh-en.t1x
- språket yy til språket xx overførings-reglene: denne filen inneholder reglene for hvordan språket yy skal endres til språket xx.I dette eksemplet så skal den være: apertium-sh-en.en-sh.t1x
Mange av tilgjengelige språkparene har andre filer men vi skal ikke snakke om dem her. Du trenger bare disse filene for å skape et funksjonell system.
Språkpar
Dette dekumentet bruker eksemplet på oversettelsen fra serbokroatisk til engelsk, for å forklare hvordan man skaper en grunnlegende system. Dette er ikke den ideale språkparet fordi systemet funkegere bedre på mer beslektede språk. Dette skaper sikkert ikke problemer for de enkle eksmplene vi skal bruke.
Kort om terminologi
Det er et par termer som må forstås før vi begynner.
Den første er et lemma. Lemmaet er en sitatform av et ord. Det er et ord som mangler alt grammatisk informasjon. For eksempel, lemmaet av katter er katt. I engelske substantiver så er det vangligvis et entall av ordet. Lemmaet av et verb er infitiv av ordet. Det vil si at lemmaet av "var", er "er".
Den andre er et symbol. Et symbol viser informasjon om et ord. Hvis ordet er katter ,som er et substantiv i flertall, da skal den ha et substantiv symbol og et flertall symbol. Symbolene er vanligvis plassert mellom hakeparentes:
- <n>; for substantiv.
- <pl>; for flertall.
Andre eksempler på symboler er <sg>; entall, <pl> første person, <pri> infitiv, etc. Hvis symbolene er skrevet i hakeparentes, så kan de også kalles for tags. Du bør huske at i mange av de tilgjengelige språkparene så står symbolene for acronymene og forkortelser av ordene i Catalan. For eksempel, vbhaver - fra vb (verb) og haver ("å ha" i Catalan). Symbolene er definert i <sdef>-taggene og brukes i taggen <s>.
Den tredje ordet er paradigme. Paradigmaet er et eksempel på hvordan en gruppe ord er bøyet. I den morfologiske ordboka, så er lemmaene, knyttet til paradigmene som gir oss muligheten å beskrive hvordan et lemma bøyes uten å måtte skrive alle suffikser.
Om vi ville, for eksempel, lagre to adjectiver dum og lat, i steden for å lagre begge sånn:
- dum, (ere, est)
- lat, (ere, est)
Så kan vi bare lagre en, å si at "lat, bøyes på samme måte som dum". I dette eksemplet, dum ville være et paradigme, en kilde på hvordan de andre skal bøyes. Paradigmer er definert i <pardef>-taggen og brukes i taggen <par>.
Hvordan å komme i gang
Ettspråklige ordlister
La oss starte med å lage vår første språkordliste. Ordboka er en XML-fil. Slå på en teksteditor og skriv følgende:
<?xml version="1.0" encoding="UTF-8"?> <dictionary> </dictionary>
Filen definerer at vi ønsker å lage en ordbok. Nå må vi legge til alfabetet. Dette definerer et sett av bokstaver som skal brukes i ordboken. For Serbisk-Kroatisk så skal det se omtrent slik ut:
<alphabet>ABCČĆDDžĐEFGHIJKLLjMNNjOPRSŠTUVZŽabcčćddžđefghijklljmnnjoprsštuvzž</alphabet>
Plasser alfabetet under <dictionary> taggen.
Nå må vi definere et par symboler. La oss begynne med det enkle, substantiv (n) i entall (sg) og i flertall (pl).
<sdefs> <sdef n="n"/> <sdef n="sg"/> <sdef n="pl"/> </sdefs>
Symbolene må ikke å være så kort, de kan være så lang som du vil, men vi skal bruke dem mye, derfor er det fornuftig å forkorte.
Dessverre er det ikke så enkelt som det ser ut, substantiver i serbokroatisk bøyes ikke bare i entall og flertall, de bøyes også for kjønn og bokstavstørrelse. La oss anta at i forbindelse med dette eksemplet er substantiver i hankjønn og i nominativ bokstavstørrelse (et full eksempel finnes på slutten av dette dokumentet).
Det neste er å definere en seksjon for paradigmer,
<pardefs> </pardefs>
og en ordbok seksjon:
<section id="main" type="standard"> </section>
Det finnes to typer seksjoner, den første er en standard seksjon, som inneholder ord, enclitics, osv. Den andre typen er en ubetinget seksjon som vanligvis inneholder tegnsetting, og så videre. Vi buker ikke den ubetiget seksjonen her.
Nå skal filen vår se omtrent slik ut:
<?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>
Nå har vi skjelettet på plass, da kan vi begynne med å legge til et substantiv. Den substantiv vi skal bruke er 'gramofon "(som betyr' grammofonen 'eller' platespiller ').
Det første vi må gjøre, er å definere et paradigme.
Husk, vi antar at substativet er i hankjønn og i nominative bokstavstørrelsen. Entall av substantivet er 'gramofon', og flertall er "gramofoni '.
<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>
Legg merke til: '<l/>' (tilsvarer <l> </ l>) angir at det er ikke ekstra materiale som skal legges til stammen for entallet. Dette kan virke som en ganske utførlig måte å beskrive det, men du lærer det fort. Du lurer sikkert på hva <E>, <l> Og <R> står for. Vel,
- E, er for oppføringen.
- P, er for par.
- L, er for venstre.
- R, er for høyre.
Hvorfor venstre og høyre? De morfologiske ordbøkene skal bli kompilert inn i tilstandsautomater. Kompilering dem fra venstre til høyre produserer analyser fra ord, og fra høyre til venstre produserer ord fra analyser. For eksempel:
* gramofoni (left to right) gramofon<n><pl> (analysis) * gramofon<n><pl> (right to left) gramofoni (generation)
Nå har vi definert et paradigme, da må vi knytte den til lemma, gramofon. Vi setter dette i den delen vi har definert.
Oppføringen vi skal sette i </dictionary>
Nå må vi legge til en oppføring som skal oversette mellom de to ordene.
<e><p><l>gramofon<s n="n"/></l><r>gramophone<s n="n"/></r></p></e>
På grunnen av at det er mange av disse oppføringene, er de vanligvis skrevet på samme for å gjøre lesing av filen enklere. Igjen med 'l' og 'r', ikke sant? Vi kompilerer den fra venstre til høyre for å produsere den serbisk-kroatisk → engelsk ordliste, og høyre til venstre for å produsere den engelsk → serbisk-kroatisk ordliste.
Da kjører du følgende kommandoer:
$ lt-comp lr apertium-sh-en.sh.dix sh-en.automorf.bin $ lt-comp rl apertium-sh-en.en.dix sh-en.autogen.bin $ lt-comp lr apertium-sh-en.en.dix en-sh.automorf.bin $ lt-comp rl apertium-sh-en.sh.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
For å generere morfologiske analysatorene (automorf), morfologiske generatorer (autogen) og oppslag av ord (autobil), er "bil" for "tospråklige".
Overføringsregler
Nå har vi to morfologiske ordlister og en tospråklig ordliste. Alt vi trenger nå er et overføringsregel for substantiver. overføringsregel-filer har sin egen DTD (transfer.dtd) som er i Apertium pakken. Hvis du vil implimenter en regel er det ofte en god idé å se i regel-filene til andre språkpar først. Mange regler kan brukes om igjen i andre språk. For eksempel den som er beskrevet nedenfor kan være nyttig for alle "null-subject" språk.
Begynn med et grunnleggende skjelett:
<? Xml version = "1.0" encoding = "UTF-8"?> <transfer> </ Overføring>
For øyeblikket, fordi vi overser bokstavstørrelsen, trenger vi bare å lage en regel som tar de grammatiske symbolene-input og outputs dem igjen.
Vi må først definere kategorier og attributter. Både kategorier og attributter lar oss sette grammatiske symboler i en gruppe.