Tuota kieliopillista suomea tietokoneella (NLG)

Share this postShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInEmail this to someonePin on PinterestDigg thisShare on RedditShare on StumbleUpon

Suomi on suhteellisen hankala kieli tuottaa automaattisesti tietokoneella (NLG). Siinnä missä enkun kohdalla sanoja voi vain mäiskiä peräkanaa lauseeseen perusmuodossa, suomi vaatii taivuttelua. Tietokoneen on hallittava kongruenssi- ja rektiosäännöt, mikä on jokseenkin haastavaa. 🤷🏼‍♂️

Onneksi sinun ei tarvitse moisella päätäsi vaivata! Olen tehnyt suomen tuottamista varten python-kirjaston, syntax makerin. Sitä saa käyttää aivan vapaasti. Oletko valmis vapauttamaan syntax maker -pedon? 😊😊

Lyö terminaaliin vain loitsu pip install syntaxmaker asentaaksesi sen koneelle. Kirjasto vaatii Omorfin. Lataa Omorfin binääriversiot täältä. Jos asennuksessa tulee ongelmia, kannattaa kurkata ohjeita HFST:n asentamiseen ja syntax makerin wikiä.

Miten sitä käytetään?

Kirjaston toimintalogiikka perustuu lausekkeisiin ja pääsanoihin. Otetaan esimerkiksi lauseen kissa syö ruokaa syntaktinen jäsennys  VP [ NP [ kissa ] syö NP [ ruokaa ] ]. Jokainen pääsana on omaa sanaluokkaansa vastaavan lausekkeen sisällä: syödä on verbilausekkeen (VP) pääsana, kissa nominilausekkeen jne. Lausekkeet on upotettu toisiinsa siten, että verbilauseke jää syntaktisen puun juureksi. Näin syntax makerkin toimii; kaikki lausekkeet pistetään verbilausekkeen alle.

Muodostaaksesi lauseen kissat syövät ruokaa, sinun tulee vain luoda syntaktinen rakenne kuten alla.

a syntactic tree for kissa syödä ruokaa

Tämä saadaan aikaan seuraavalla koodilla:


Kirjasto tukee myös monimutkaisempia lauseita kuten jopa relatiivilauseita. Muutama asia on kuitenkin selvitettävä ennen kuin kirjastoa osaa täysin käyttää. Ensiksi, kun luot uuden lausekkeen, voit halutessasi antaa parametrina sanakirjarakenteen, joka määrittää morfologiaa. Mahdollisia arvoja ovat:

 

  • NUM; ”PL” or ”SG”
  • CASE; ”PAR”, ”NOM”, ”GEN”, ”ESS”, ”TRA”, ”INE”, ”ELA”, ”ADE”, ”ABL”, ”ALL”, ”ABE”, or ”ILL”
  • PERS; ”SG1”, ”SG2″ ,”SG3”, ”PL1”, ”PL2”, ”PL3” or ”PE4” (passiivilauseille käytä turn_vp_into_passive(vp))
  • MOOD; ”INDV”, ”IMPV”, ”OPT”, ”COND” or ”POTN” (käytä mielummin set_vp_mood_and_tense(vpmoodtense))
  • TENSE; ”PRESENT” or ”PAST” (käytä mielummin set_vp_mood_and_tense(vpmoodtense))

Jokaisen Phrase-olion rakenteeseen kuuluvat seuraavat muuttujat: components (alisteiset lausekkeet), order (lausekkeiden järjestys tulostettaessa), head (pääsana) ja agreement (kongruenssi). Kaikki mahdolliset lauseketyypit ja niiden rakenteet on listattu grammar.json:issa. Jos haluat lisätä uuden alisteisen lausekkeen johonkin toiseen lausekkeeseen, lisää se vain uudella nimellä componentsiin ja lisää sama nimi order-listaan.

Jatketaan edellistä koodiesimerkkiä lisäämällä adpositiolauseke:


Order-listan sisällön voi jopa halutessaan sekottaa mielivaltaisesti:

Huom. Tämä sekoittaa vain lausekkeiden järjestyksen. Ei siis sanojen. Siksi ilman käsiä esiintyy aina oikeassa järjestyksessä.

Lisää neuvoja

Syntax maker wikissä on lisää tietoa kirjaston käytöstä tai siten voit olla minuun yhteydessä.

Lopuksi

Minulla on ollut jo pitkään tarkoitus kirjoittaa tutoriaali kirjaston käytöstä. Olen pistänyt jonkin verran omaa aikaani kirjaston kehittämiseen, joten olisi kiva, jos sitä myös käytettäisiin. 😊

Related Post

Share this postShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInEmail this to someonePin on PinterestDigg thisShare on RedditShare on StumbleUpon