Priprava in uporaba vzporednih korpusov

Tomaž Erjavec
Odsek za inteligentne sisteme
Institut "Jožef Stefan"
Jamova 39
1000 Ljubljana

Solomonov seminar št. 90

24. september 2002

http://nl.ijs.si/et/talks/solomon02/

Povzetek

Ker je vedno več besedil dostopnih v elektronski obliki, postaja razmeroma enostavno zagotoviti digitalna besedila skupaj z njihovimi prevodi v druge jezike. Predavanje predstavi korake v obelavi takšnih besedil, ki so potrebni, da se jih pretvori v vzporedne korpuse, ki so nato izredno koristen jezikovni vir. Vzporedni korpusi se lahko uporabljajo kot pripomoček za učence tujih jezikov, za prevajalce in slovaropisce, ali pa kot vir podatkov za različna orodja jezikovnih tehnologij. Predavanje obravnava naše delo na tem področju, ki ga karakterizira uporaba odprtih standardov za označevanje besedil, uporaba prosto dostopnih orodij in široka dostopnost izdelanih virov. Predstavimo verigo označevanja korpusov, ki je sestavljena iz normalizacije, identifikacije besed in stavkov, poravnave, oblikoslovnega označevanja in lematizacije. Na koncu opišemo dva primera uprabe tako izdelanega korpusa, in sicer mrežni konkordančnik in avtomatsko izdelavo dvojezičnega slovarja.


1. Uvod

1.1. Pregled predavanja

  • dvojezični korpusi
  • standardi za zapis besedil
  • predpriprava korpusa
  • besede, stavki in poravnava
  • oblikoslovno označevanje
  • uporaba: iskanje, slovarji in prevajanje

1.2. Besedilni korpusi

  • vedno več besedil je dostopnih v digitalni obliki
  • če takšna besedila izberemo po določenih kriterijih in jih konsistentno in pravilno označimo dobimo besedilni korpus
  • korpusi so koristni za preučevanje in poučevanje jezika in za razvoj jezikovnih tehnologij
  • besedila v korpusih dodatno (jezikovno) označujemo in s tem večamo njihovo uporabnost
  • še bolj kot enojezični so uporabni dvo- in večjezični korpusi

1.3. Naše izkušnje s korpusi

1.4. Leitmotivi

Odprtost:
  • uporaba odprtih standardov za zapis besedil (XML, TEI)
  • uporaba prosto dostopnih orodij za procesiranje besedil
  • široka dostopnost izdelanih jezikovnih virov
Ekstenzionalnost:
  • raje kot izdelava lastnih programov, izdelava jezikovnih virov
  • in nato uporaba jezikovno neodvisnih programov za strojno učenje

2. Standardi za zapis besedil

2.1. Smiselnost standardizacije

  • privatnim ali industrijski sistemom zapisa je težko preverjati pravilnost, niso dokumentirani in se lahko samovoljno spreminjajo
  • zato imamo probleme z izmenljivostjo in trajnostjo tako zapisanih besedil
  • javni standardi so prosto dostopni, natančni in - vsaj nekateri - dobro podprti
  • ESSLLI 2002: “Annotation of Language Resources”

2.2. Standardi za zapis besedil: XML

  • XML je definicija metod za shranjevanje in obdelavo besedil v elektronski obliki, ki je neodvisna od konkretnih računalniških naprav in sistemov
  • XML je “metajezik” -- jezik za opis drugih jezikov -- s katerim je mogoče določiti lasten prilagodljiv jezik za označevanje za različne tipe dokumentov
  • XML je projekt “World Wide Web Consortium” (W3C); razvoj specifikacije je pod kontrolo njihove “XML Working Group”; zato je specifikacija odprta in ni lastniška
  • XML je podmnožica SGML, (Standard Generalized Markup Language), ki je mednarodni standardni metajezik za označevanje besedil(ISO 8879)
  • XML je široko podprt, tako z orodji, kot s pridruženimi standardi: XSLT, XML Schema, XLink, XPointer, ...

2.3. Standardi za zapis besedil: TEI

  • Text Encoding Initiative je projekt, ki se je začel 1987 pod pokroviteljstvom ACL, ACL and ALLC
  • TEI je še danes edini sistematizirani poskus, da se razvije splošen model za označevanje besedil in množico predpisov za označevnje, ki temeljijo na tem modelu
  • prve verzije navodil TEI so temeljile na SGML, TEI P4 pa je skladen tudi z XML
  • TEI shema je sestavljena iz večjega števila modulov (množic oznak) oz fragmentov DTDjev; te potem sestavljamo in parametriziramo v skladu s potrebami, da dobimo poln XML DTD za opis določenega tipa dokumentov

3. Predobdelava korpusa

3.1. Zapis znakov

  • za slovenščino (še vedno) mrgoli različnih zapisov za čšž
  • pri 8-bitnih zapisih borba med ISO 8879-2 in Windows 1250
  • v SGML alternativa z opisnimi imeni (entitetami), npr. č
  • Unicode kot splošna rešitev

3.2. Zapis strukture dokumenta

  • pretvorba iz zapisa urejevalnika besedil v XML/TEI
  • več zapisa ko ohranimo, več dela imamo
  • popularen jezik za pretvorbo je Perl
  • primer:
    
     <text lang="sl">
      <body id="Osl">
        <div id="Osl.1" type="part" n="1">
          <head>Prvi del</head>
          <div id="Osl.1.2" type="chapter" n="1">
            <head>I</head>
              <p id="Osl.1.2.2">
          Bil je jasen, mrzel aprilski dan in ure so bile trinajst.
    Winston Smith je imel brado zakopano v prsi, da bi u&scaron;el
    strupenemu vetru, ko je stopil skozi steklena vrata bloka Zmaga,
    vendar ne dovolj hitro, da ne bi vrtinec pe&scaron;&ccaron;enega prahu
    vstopil skupaj z njim.
    </p>
    
    

3.3. Zapis meta-podatkov

  • korpus je tipično sestavljen iz velikega števila besedil
  • za analizo korpusa ali izbiro posameznih delov je nujno dokumentirati ta besedila v korpusu
  • dokumentirati pa moramo tudi celoten korpus
  • TEI vsebuje element za zapis takšnih meta-podatkov, <teiHeader>
  • glava TEI dokumentira sámo datoteko, vir besedila, njegov zapis in zgodovino sprememb
  • primer glave TEI (v HTML)

3.4. Besede in stavki

  • tokenizacija in segmentacija sta prvi jezikoslovni analizi
  • bolj zapleteno kot izgleda: dr. Vilfan, Ca(2+)-ATPase
  • obstajajo jezikovno prilagodljivi programi (npr. LT TTT)
  • primer:
    
    <seg id="ecmr.en.17">
      <w>Euromoney</w><w type="rsplit">'s</w> 
      <w>assessment</w> <w>of</w> <w>economic</w> 
      <w>changes</w> <w>in</w> <w>Slovenia</w> 
      <w>has</w> <w>been</w> <w>downgraded</w> 
      <c type="open">(</c><w>page</w> 
      <w type="dig">6</w><c type="close">)</c>
      <c>.</c>
    </seg>
    
    

3.5. Poravnava stavkov

  • original in prevod nista vedno 1-1:
    
    <s id="Osl.1.2.18.4">Moralo je biti pribli&zcaron;no tako, kajti bil je
    popolnoma prepri&ccaron;an, da mu je devetintrideset let, in zdelo se mu je,
    da je bil rojen leta 1944 ali 1945.</s>
    <s id="Osl.1.2.18.5">A dandanes ni bilo mogo&ccaron;e natan&ccaron;no dolo&ccaron;iti
    nobenega datuma v okviru enega ali dveh let.</s>
    
    <s id="Oen.1.1.17.4">It must be round about that date, since he was
    fairly sure that his age was thirty-nine, and he believed that he had
    been born in 1944 or 1945; but it was never possible nowadays to pin
    down any date within a year or two.</s>
    
    
  • poravnava se dostikar zapiše oddvojeno od besedil:
    
    <link xtargets="Osl.1.2.18.3 ; Oen.1.1.17.3">
    <link xtargets="Osl.1.2.18.4 Osl.1.2.18.5 ; Oen.1.1.17.4">
    
    
  • obstaja več programov za poravnavo, npr. “Vanilla aligner”

4. Oblikoslovno označevanje

4.1. Oblikoslovno označevanje

  • besedam v besedilu dodamo informacijo o besedni vrsti, spolu, sklonu, ...
  • potrebujemo slovar / oblikoslovni analizator, a upoštevati moramo tudi funkcijo v stavku, tj. kontekst (je = biti/jesti/on)
  • koristna predpriprava besedila za nadaljne obdelave
  • omogoča npr. lematizacijo (hotelhotel/hoteti), pravilno naglaševanje (hotelhôtel/hotél), iskanje prevodnih ustreznic (hotelhotel/want),...

4.2. Avtomatsko označevanje

  • statistični sistemi, ki se učijo na pravilno označenih korpusih
  • programi obstajajo, so tudi prosto dostopni
  • največji problem je zagotoviti dovolj velik ročno označen korpus
  • pri nas se s tem problemov ukvarjajo se na ZRC-SAZU (Primož Jakopin)
  • uporabili smo ročno označen korpus 100,000 besed, program TnT in razne hevristike

4.3. Učni korpus

  • projekt MULTEXT-East, Orwellov “1984”:
    AngleškoSlovensko
    Besed 104,286 90,792
    Oblik 9,181 16,401
    Lem 7,059 7,903
    Oznak 134 1,023
  • primer:
    
    <s id="Osl.1.2.2.1">
    <w lemma="biti" ana="Vcps-sma">Bil</w>
    <w lemma="biti" ana="Vcip3s--n">je</w>
    <w lemma="jasen" ana="Afpmsnn">jasen</w>
    <c>,</c>
    <w lemma="mrzel" ana="Afpmsnn">mrzel</w>
    <w lemma="aprilski" ana="Aopmsn">aprilski</w>
    <w lemma="dan" ana="Ncmsn">dan</w>
    <w lemma="in" ana="Ccs">in</w>
    <w lemma="ura" ana="Ncfpn">ure</w>
    <w lemma="biti" ana="Vcip3p--n">so</w>
    <w lemma="biti" ana="Vmps-pfa">bile</w>
    <w lemma="trinajst" ana="Mcnpnl">trinajst</w>
    <c>.</c>
    </s>
    
    

4.4. Označevanje

  • Amebis nam je leksikalno označil besede z oblikoslovnimi oznakami in lemami:
    
    <seg id="anx2.sl.2" corresp="anx2.en.2">
    <w msds="Ncmsn,Ncmsa--n" lemmas="seznam">Seznam</w> 
    <w msds="Ncfdg,Ncfpg" lemmas="obdelava">obdelav</w> 
    <w msds="Q,Css,Ccs" lemmas="ali">ali</w> 
    <w msds="Ncfdg,Ncfpg" lemmas="predelava">predelav</w>
    <c>,</c> 
    <w msds="Css" lemmas="ki">ki</w> 
    <w msds="Pp3mdg--y-n,Pp3mda--y-n,Pp3mpg--y-n,Pp3mpa--y-n,Pp3ndg--y-n,Pp3nda--y-n,Pp3npg--y-n,Pp3npa--y-n,Pp3fdg--y-n,Pp3fda--y-n,Pp3fpg--y-n,Pp3fpa--y-n" lemmas="on">jih</w> 
    <w msds="Vcip3s--n Vmip3s--n-----p Pp3fsg--y-n" lemmas="biti jesti on">je</w> 
    <w msds="Rgp" lemmas="treba">treba</w> 
    <w msds="Vmn-----------e" lemmas="opraviti">opraviti</w> 
    <w msds="Spsl,Spsa" lemmas="na">na</w> 
    <w msds="Ncmdl,Ncmpl" lemmas="material">materialih</w> 
    <w msds="Spsg Ncfdg,Ncfpg" lemmas="brez breza">brez</w> 
    <w msds="Vmps-dma------e,Vmps-sfa------e,Vmps-pna------e Ncnsg,Ncnpn,Ncnpa" lemmas="pore&ccaron;i poreklo">porekla</w>
    <c>,</c> 
    
    
  • TnT je hiter in robusten statistični označevalnik, ki označi tudi neznane besede; dostopen za raziskave v Linux binarni kodi
  • TnT je bil naučen na “1984” in podprt z leksikonom IJS-ELAN
  • uporabili še par hevristik za izboljšanje rezultatov

4.5. Rezultati označevanja

Ocena natančnosti 93% za polne oznake in 98% za besedne vrste:

<seg id="anx2.sl.105" corresp="anx2.en.105">
<c ctag=":">-</c> 
<w ana="Aspnsn" lemma="sojin">Sojino</w> 
<w ana="Ncnsn" lemma="olje">olje</w>
<c ctag=",">,</c> 
<w ana="Ncnsn" lemma="olje">olje</w> 
<w ana="Spsg" lemma="iz">iz</w> 
<w ana="Ncmsg" lemma="kikiriki">kikirikija</w>
<c ctag=",">,</c> 
<w ana="Aspfsa" lemma="palmov">palmovo</w>
<c ctag=",">,</c> 
<w ana="Ncfpn">kopre</w>
<c ctag=",">,</c> 
<w ana="Aspnsg" lemma="palmov">palmovega</w> 
<w ana="Ncnsg" lemma="jedro">jedra</w>
<c ctag=",">,</c> 
<w ana="Ncnsl">babassu</w>
<c ctag=",">,</c> 
<w ana="Ncnsn">tungovo</w> 
<w ana="Ccs" lemma="in">in</w> 
<w ana="Ncfsn">oiticica</w> 
<w ana="Ncnsa" lemma="olje">olje</w>
<c ctag=",">,</c> 
<w ana="Afpmsan-n">mirtin</w> 
<w ana="Ncmsa--n" lemma="vosek">vosek</w> 
<w ana="Ccs" lemma="in">in</w> 
<w ana="Aopmsay-n" lemma="japonski">japonski</w> 
<w ana="Ncmsa--n" lemma="vosek">vosek</w>
<c ctag=",">,</c> 
<w ana="Ncfpa" lemma="frakcija">frakcije</w> 
<w ana="Afpnpa">jojoba</w> 
<w ana="Ncnpa" lemma="olje">olja</w> 
<w ana="Ccs" lemma="in">in</w> 
<w ana="Ncnsg" lemma="olje">olja</w> 
<w ana="Spsa" lemma="za">za</w> 
<w ana="Afpfpa" lemma="tehni&ccaron;en">tehni&ccaron;ne</w> 
<w ana="Ccs" lemma="ali">ali</w> 
<w ana="Aopfpa" lemma="industrijski">industrijske</w> 
<w ana="Ncmpa" lemma="namen">namene</w>
<c ctag=",">,</c> 
<w ana="Rgp" lemma="razen">razen</w> 
<w ana="Spsa" lemma="za">za</w> 
<w ana="Ncfsa" lemma="proizvodnja">proizvodnjo</w> 
<w ana="Ncfsg" lemma="hrana">hrane</w> 
<w ana="Spsa" lemma="za">za</w> 
<w ana="Aopfsa" lemma="&ccaron;love&scaron;ki">&ccaron;love&scaron;ko</w> 
<w ana="Ncfsa" lemma="prehrana">prehrano</w>
</seg>

4.6. Označevanje angleškega dela korpusa

  • podobo kot slovenski del (TnT+“1984”)
  • z TnT+WSJ
  • z QTag (dodatna lematizacija)

<seg id="anx2.en.105" corresp="anx2.sl.105">
<c ctag=":">-</c> 
<w ana="Ncns" ctag="?UH NP" lemma="soya">Soya</w>
<c ctag=",">,</c> 
<w ana="Ncns" ctag="NN NN" lemma="ground">ground</w> 
<w ana="Ncns" ctag="NN NN" lemma="nut">nut</w>
<c ctag=",">,</c> 
<w ana="Ncns" ctag="NN NN" lemma="palm">palm</w>
<c ctag=",">,</c> 
<w ana="Ncns" ctag="NN NN" lemma="copra">copra</w>
<c ctag=",">,</c> 
<w ana="Ncns" ctag="NN NN" lemma="palm">palm</w> 
<w ana="Ncns" ctag="NN NN" lemma="kernel">kernel</w>
<c ctag=",">,</c> 
<w ana="Ncns" ctag="?FW ???" lemma="babassu">babassu</w>
<c ctag=",">,</c> 
<w ana="Vmpp" ctag="NN NN" lemma="tung">tung</w> 
<w ana="Cc-n" ctag="CC CC" lemma="and">and</w> 
<w ana="Npns" ctag="NN NN" lemma="oiticica">oiticica</w> 
<w ana="Ncns" ctag="NN NN" lemma="oil">oil</w>
<c ctag=",">,</c> 
<w ana="Afp" ctag="NN NN" lemma="myrtle">myrtle</w> 
<w ana="Ncns" ctag="NN NN" lemma="wax">wax</w> 
<w ana="Cc-n" ctag="CC CC" lemma="and">and</w> 
<w ana="Np" ctag="?NN NP" lemma="japan">Japan</w> 
<w ana="Ncns" ctag="NN NN" lemma="wax">wax</w>
<c ctag=",">,</c> 
<w ana="Ncnp" ctag="NNS NNS" lemma="fraction">fractions</w> 
<w ana="Sp" ctag="IN IN" lemma="of">of</w> 
<w ana="Ncns" ctag="?NN ???" lemma="jojoba">jojoba</w> 
<w ana="Ncns" ctag="NN NN" lemma="oil">oil</w> 
<w ana="Cc-n" ctag="CC CC" lemma="and">and</w> 
<w ana="Ncnp" ctag="NNS NNS" lemma="oil">oils</w> 
<w ana="Sp" ctag="IN IN" lemma="for">for</w> 
<w ana="Afp" ctag="JJ JJ" lemma="technical">technical</w> 
<w ana="Cc-n" ctag="CC CC" lemma="or">or</w> 
<w ana="Afp" ctag="JJ JJ" lemma="industrial">industrial</w> 
<w ana="Ncnp" ctag="NNS VBZ" lemma="use">uses</w> 
<w ana="Dg--p" ctag="JJ JJ" lemma="other">other</w> 
<w ana="Cs" ctag="IN IN" lemma="that">that</w> 
<w ana="Dd" ctag="DT DT" lemma="the">the</w> 
<w ana="Ncns" ctag="NN VB" lemma="manufacture">manufacture</w> 
<w ana="Sp" ctag="IN IN" lemma="of">of</w> 
<w ana="Ncnp" ctag="NNS NNS" lemma="foodstuff">foodstuffs</w> 
<w ana="Sp" ctag="IN IN" lemma="for">for</w> 
<w ana="Afp" ctag="JJ JJ" lemma="human">human</w> 
<w ana="Ncns" ctag="NN NN" lemma="consumption">consumption</w>
</seg>

5. Upraba korpusa

5.1. Kaj imamo?

  • dvojezičen vzporeden korpus
  • tokeniziran, segmentiran
  • stavčno poravnan
  • oblikoslovno označen in lematiziran
  • dostopen na http://nl.ijs.si/elan/
  • kaj pa sedaj?

5.2. Mrežne konkordance

  • iskanje besed, besednih zvez in oznak v korpusu
  • konkordance: izpis rezultatov skupaj s kontekstom
  • IMS CQP: Corpus Query Processor
  • +Perl CGI in par mrežnih strani
  • mrežni konkordančnik dostopen na http://nl2.ijs.si/corpus/
  • uporabniki: jaz, študentje prevajalske smeri na FF, LUGOS,...
  • od oktobra 1998 več kot 50,000 dostopov
  • uporaba tudi pri poskusih povezave slovarja s korpusom

5.3. Izdelava večjezičega slovarja

  • obstaja več programov, ki v poravnanih korpusih iščejo prevodne ustreznice
  • mi smo testirali “Plug Word Aligner”, PWA in Twente word alignment software
  • iz IJS-ELAN smo vzeli knjigo “Linux Installation and Getting Started” (2 x 5.773 poravnanih stavkov, en = 91.526, sl = 81.955 besed)
  • kot vhod smo vzeli lematiziran korpus
  • in tega reducirali na pridevnike, samostalnike in ločila
  • za obdelavo je PWA potreboval 15 minut (prenosnik IBM T23)

5.4. Izdelava večjezičega slovarja: rezultati

Izdelani seznam vsebuje the list of token correspondences 22.880 prevodnih ustreznic, leksikon z 2,850 vnosi, in seznam kolokacij 1.329 vnosi.
angleški stavek:
In addition, all of the source code for the Linux system, including the kernel, device drivers, libraries, user programs, and development tools, is freely distributable.
slovenski stavek:
Dodatno je dostopna in prosto razširljiva še vsa izvorna koda sistema Linux, vključno z jedrom, gonilniki naprav, knjižnicami, uporabniškimi programi in razvojnimi orodji.
angleški vhod:
addition , source code linux system , kernel , device driver , library , user program , development tool , distributable .
slovenski vhod:
dostopen razširljiva izvoren koda sistem Linux , jedro , gonilnik naprava , knjižnica , uporabniški program razvojen orodje .
izhod angleško → slovensko:
source code → izvoren; linux → linux; system → sistem; kernel → jedro; device driver → gonilnik; library → knjižnica; user → uporabniški; program → program; development → razvojen; tool → orodje

5.5. Strojno prevajanje

6. Zaključki

6.1. Zaključki

  • predstavili korake pri izdelavi jezikovno označenega vzporednega korpusa IJS-ELAN
  • našteli dosti prosto dostopnih orodij
  • in tri primere uporabe razvitega korpusa

6.2. Nadaljne delo

  • več in večji korpusi
  • bolj kvalitetno in bolj poglobljeno označeni
  • uporaba?