(toiminnot)

hwechtla-tl: Puu

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


Esitämme puuta Pythonissa listalla, joka voi sisältää toisia listoja. Esimerkkinä puusta voisi olla jäsennyspuu, joka antaa rakenteisen esitysmuodon kielelliselle ilmaukselle.

Esimerkiksi tämä puu (virkkeestä "tämä huono liitu toimii huonosti"):

               S
          ____/ \____
         /           \
       NP             \
      /  \             VP
     /    NP          /  \
    /    /  \        /    \
 ATT  ATT    N      V      ADV
  |    |     |      |       |
tämä huono liitu toimii huonosti

... esitetään Pythonissa seuraavana listana (rivinvaihdot ja sisennykset lisätty, jotta rakenne näkyisi paremmin):

["S", ["NP", ["ATT", "tämä"],
             ["NP", ["ATT", "huono"],
                    ["N", "liitu"]]],
      ["VP", ["V", "toimii"],
             ["ADV", "huonosti"]]]

Huomaa, että ylimmän tason listassa on vain kolme elementtiä: tyyppimerkitsin "S", ensimmäistä alipuuta esittävä lista, ja toista alipuuta esittävä lista.

Yleisesti ottaen, jäsennyspuu on joko yksittäinen tägätty sana (kaksiosaisena listana), tai kahdesta pienemmästä jäsennyspuusta yhdistelty tägätty isompi jäsennyspuu. Tämä voidaan esittää muodollisesti seuraavalla tavalla:

jäsennyspuu ::= ["ATT", sana]
              | ["N", sana]
              | ["V", sana]
              | ["ADV", sana]
              | ["AP", puu, puu]
              | ["NP", puu, puu]
              | ["VP", puu, puu]
              | ["S", puu, puu]

Puita on toki muunkinlaisia kuin jäsennyspuita. Puille on yhteistä lähinnä se, että ne voivat sisältää haaroja (eli puita, joilla on toisia puita alipuina) ja lehtiä (eli "triviaaleja puita", jotka eivät enää haaraudu). Jäsennyspuiden tapauksessa lehdet ovat yksittäisiä sanoja ja haarat ovat ilmauksia, jotka koostuvat useammasta ilmauksesta, jotka ovat jossain suhteessa toisiinsa. (Esimerkiksi nominaali-ilmaus NP koostuu määreilmauksesta ja pääsanasta.)


Puut (ja muut induktiiviset tietotyypit) ovat luonnostaan hyvin käsiteltävissä rakenteellisella rekursiolla.


ohjelmoinnin käsitteet


kommentoi (viimeksi muutettu 27.11.2008 15:10)