Commit 31d563fa authored by Linda Freienthal's avatar Linda Freienthal
Browse files

Snowball version 1.3

parent 2f969ce6
No preview for this file type
See http://snowballstem.org/ for more details.
Here's Snowball for Estonian version 1.2.
Here's Snowball for Estonian version 1.3.
In order to test it:
......@@ -13,3 +13,7 @@ the result appears in file 'TEMP-txt'
This contains the source code for the snowball compiler and has been edited by Linda.
The code original git version is here: https://github.com/snowballstem/snowball/tree/e103b5c257383ee94a96e7fc58cab3c567bf079b
In file Estonian Snowball 1.3.odt you'll find the algorithm written out as algorithms in http://snowballstem.org/.
In file SB1.3_tulemused.odt you can browse some good and bad examples of the results of this algorithm.
energiaettevõte
energiaettevõ
luge
luge
luge
......@@ -22,17 +25,11 @@ kinki
seda
värki
masinavärk
läksidki
läk
hüpa
asdari
kirjuta
hüpa
rita
kokkuvõ
kokkuvõte
kokkuvõte
......@@ -51,7 +48,7 @@ raama
raama
raama
raama
raamatutestki
raama
hele
hele
heleda
......@@ -110,7 +107,6 @@ joo
sirgjoo
joo
joo
jootekser
joo
söö
löö
......@@ -138,7 +134,7 @@ tapa
tapa
tapa
tapa
tapma
tap
tap
tape
tap
......@@ -175,7 +171,7 @@ klohmi
klohmi
klohmi
klohmi
klohminutestki
klohmi
nõiasaa
nõiasaa
nõiasaa
......@@ -235,7 +231,6 @@ karjääri
karjääre
karjääri
PROBLEEMSED
trike
hobu
kana
......@@ -251,7 +246,6 @@ lapsiku
sambla
hülge
kõrbe
asasadada
kast
kasti
......@@ -265,10 +259,10 @@ kasti
tort
tordi
torti
tordistki
tordi
tordi
tort
tortidestki
torti
kõrb
kõrbe
kõrbe
......@@ -278,10 +272,10 @@ kõrbe
kõrbe
kõrbe
kõrbe
samma
sambla
samma
sam
sambla
sam
samblase
sammalde
sambla
sammalde
......@@ -445,7 +439,7 @@ soovi
Luba
sööma
joo
laulma
laul
kirjuta
rõõmusta
......@@ -474,7 +468,7 @@ nimeta
nimeta
nimeta
tõusma
tõus
tõus
tõusta
tõuse
......@@ -594,16 +588,16 @@ terenda
terenda
terenda
kuigi
roheline
rohelise
roheli
rohelise
roheli
rohelise
rohelis
rohelisi
rohelise
rohelis
rohelise
rohelise
rohelise
rohelise
rohelise
rohelise
esimee
esimehe
esimee
......@@ -622,7 +616,7 @@ kõrgharidus
kõrgharidusi
kõrghariduse
kõrgharidus
rohelis
rohelise
programm
programmi
programmi
......@@ -664,14 +658,14 @@ kehtesta
kehtesta
kehtesta
kehtes
omamine
omamise
omami
omamise
omamise
omamis
omamisi
omamis
omamise
omamise
omamise
omamise
omamise
nõue
nõude
nõuet
......@@ -710,7 +704,7 @@ erakonda
erakondi
erakonda
selle
siiski
siis
programmi
sees
sisse
......@@ -723,7 +717,7 @@ hääleta
hääleta
hääleta
hääleta
lootma
loot
looda
loot
loot
......
This diff is collapsed.
/* Estonian stemmer version 1.2
/* Estonian stemmer version 1.3
Made by Linda Freienthal in January 2019.
......@@ -7,6 +7,7 @@ Made by Linda Freienthal in January 2019.
routines (
mark_regions
LONGV
special_noun_endings
case_ending
emphasis
plural_three_first_cases
......@@ -51,16 +52,16 @@ backwardmode (
test hop 4 //kingi -> kingi
among(
'gi' ((GI and not LONGV) delete) //jooksemegi -> jookseme, bioloogi -> bioloogi
'ki' (('är' <-'k') or (KI delete)) //kookki -> kook, masinavärki -> masinavärk
'ki' (KI delete) //kookki -> kook
)
)
define verb as (
setlimit tomark p1 for ([substring])
among( //nuksime, nuksin
'nuksin' 'nuksime' 'nuksid' 'nuksite' (delete)
'ksin' 'ksid' 'ksime' 'ksite' (delete) //conditional 'ksid'
among(
'nuksin' 'nuksime' 'nuksid' 'nuksite' (delete) //seleta-nuksite
'ksin' 'ksid' 'ksime' 'ksite' (delete) //personal conditional: rõõmusta-ksin
'mata' (delete)
'takse' 'dakse' (delete) //impersonal: laul-dakse, luba-takse
'taks' 'daks' (delete) //impersonal conditional: laul-daks, saade-taks
......@@ -87,26 +88,37 @@ backwardmode (
delete
)
define special_noun_endings as (
setlimit tomark p1 for ([substring])
among(
'lasse' (<- 'lase') //teadlasse -> teadlase
'last' (<- 'lase') //teadlast -> teadlase
'lane' (<- 'lase') //teadlane -> teadlase
'lasi'(<- 'lase') //teadlasi -> teadlase
'misse' (<- 'mise') //tegemisse -> tegemise
'mist' (<- 'mise') //kasutamist -> kasutamise
'mine' (<- 'mise') //tegemine -> tegemise
'misi' (<- 'mise') //kasutamisi -> kasutamise
'lisse' (<- 'lise') //rohelisse -> rohelise
'list' (<- 'lise') //tavalist -> tavalise
'line' (<- 'lise') //roheline -> rohelise
'lisi' (<- 'lise') //tavalisi -> tavalise
)
)
define case_ending as (
setlimit tomark p1 for ([substring])
among(
'sse' (RV) //illative: saapa-sse
'st' (RV) //elative: saapa-st
'le' (RV) //allative: raamatu-le
'lt' (RV) //ablative: raamatu-lt
'ga' (RV) //komitatiive: õpetaja-ga
'ks' (RV) //translative: õpetaja-ks
'ta' (RV) //abessive and da-infinitive: õpetaja-ta and hüpa-ta
'sse' (RV or LONGV) //illative: saapa-sse, tegemisse -> tegemisse
'st' (RV or LONGV) //elative: saapa-st, rohelist -> rohelist
'le' (RV or LONGV) //allative: raamatu-le
'lt' (RV or LONGV) //ablative: raamatu-lt
'ga' (RV or LONGV) //komitatiive: õpetaja-ga
'ks' (RV or LONGV) //translative: õpetaja-ks
'ta' (RV or LONGV) //abessive and da-infinitive: õpetaja-ta and hüpa-ta
't' //partitiiv, raamatu-t and kapsas-t
's' (RV)//inessive and sg3pst: raamatu-s and sõiti-s
'l' (RV) //adessive: raamatu-l and kapsa-l.
/*
Terminative ending 'ni' is left out as it would worsen the results: there's more 'ni' ending words
in sg g than in ter. Same with essive 'na'.
*/
's' (RV or LONGV)//inessive and sg3pst: raamatu-s and sõiti-s
'l' (RV or LONGV) //adessive: raamatu-l and kapsa-l.
)
delete
)
......@@ -119,9 +131,9 @@ in sg g than in ter. Same with essive 'na'.
'ikke' (<-'iku') //plural partitive: rahulikke -> rahuliku
'ike' (<-'iku') //plural genitive: ohtlike -> ohtliku
'sid' (not LONGV delete) //plural partitive and sg2pst and pl3pst: auto-sid and laul-sid (exludes plural nominative with words like gaasid, roosid)
'te' ((test hop 4 (not 't' delete)) or (not 't' <-'t')) //plural genitive and pl2: ministri-te, olulis-te, õun-te and saada-te, laula-te; also torte -> tort (if not in compound word) and kokkuvõtte -> kokkuvõte
'de' (RV delete) //plural genitive: lauda-de
'd' (RV delete) //plural nominative: voodid -> voodi, rattaid -> rattai, lapsikuid -> lapsiku
'te' ((test hop 4 (('mis' <- 'e') or ('las' <- 'e') or ('lis' <- 'e') or (not 't' delete))) or (not 't' <-'t')) //plural genitive and pl2: ministri-te, olulis-te and saada-te, laula-te; also torte -> tort (if not in compound word) and kokkuvõtte -> kokkuvõte and roheliste -> rohelise, tegemiste -> tegemise, teadlaste -> teadlase
'de' ((RV or LONGV) delete) //plural genitive: lauda-de
'd' ((RV or LONGV) delete) //plural nominative: voodid -> voodi, rattaid -> rattai, lapsikuid -> lapsiku
)
)
......@@ -152,14 +164,14 @@ in sg g than in ter. Same with essive 'na'.
define degrees as (
setlimit tomark p1 for ([substring])
among(
'mai' (RV) //heleda-mai(-le)
'ma' //tugeva-ma(-le) and ma-infinitive: sõit-ma
'm' (RV) //kauge-i-m, rõõmsa-m
'mai' (RV delete) //heleda-mai(-le)
'ma' (delete) //tugeva-ma(-le) and ma-infinitive: sõit-ma
'm' (RV delete) //kauge-i-m, rõõmsa-m
)
delete
)
define substantive as (
do special_noun_endings
do case_ending
do plural_three_first_cases
do degrees
......@@ -171,65 +183,61 @@ in sg g than in ter. Same with essive 'na'.
define verb_exceptions as (
[substring] atlimit
among(//nuksin taks, nud, vat, tud, va
among(
'joon' 'jood' 'joob' 'joote' 'joome' 'joovad' (<-'joo')
//'jooksin' 'jooksid' 'jooks' 'jooksite' 'jooksime' (<-'joo') kattub jooksmise minevikuga phmst
'j{o'}in' 'j{o'}id' 'j{o'}i' 'j{o'}ime' 'j{o'}ite' (<-'joo')
'juuakse' 'joodakse' 'juua' 'jooma' 'joomata' (<- 'joo')
'joomata' 'juuakse' 'joodakse' 'juua' 'jooma' (<- 'joo')
'saan' 'saad' 'saab' 'saate' 'saame' 'saavad' (<-'saa')
'saaksin' 'saaksid' 'saaks' 'saaksite' 'saaksime' (<-'saa')
'sain' 'said' 'sai' 'saite' 'saime' (<-'saa')
'saadakse' 'saadi' 'saama' 'saada' 'saamata' (<-'saa')
'saamata' 'saadakse' 'saadi' 'saama' 'saada' (<-'saa')
'viin' 'viid' 'viib' 'viite' 'viime' 'viivad' (<-'viima')
'viiksin' 'viiksid' 'viiks' 'viiksite' 'viiksime' (<-'viima')
'viisin' 'viisite' 'viisime' (<-'viima')
'viiakse' 'viidi' 'viima' 'viia' 'viimata'(<-'viima')
'viimata' 'viiakse' 'viidi' 'viima' 'viia' (<-'viima')
'keen' 'keeb' 'keed' 'kees' 'keeme' 'keete' 'keevad' (<-'keesi')
'keeksin' 'keeks' 'keeksid' 'keeksime' 'keeksite' (<-'keesi')
'keema' 'keeta' 'keedakse' 'keemata' (<-'keesi')
'keemata' 'keema' 'keeta' 'keedakse' (<-'keesi')
'l{o"}{o"}n' 'l{o"}{o"}d' 'l{o"}{o"}b' 'l{o"}{o"}me' 'l{o"}{o"}te' 'l{o"}{o"}vad' (<-'l{o"}{o"}')
'l{o"}{o"}ksin' 'l{o"}{o"}ksid' 'l{o"}{o"}ks' 'l{o"}{o"}ksime' 'l{o"}{o"}ksite' (<-'l{o"}{o"}')
'l{u"}{u"}akse' 'l{o"}{o"}dakse' 'l{o"}{o"}di' 'l{o"}{o"}ma' 'l{u"}{u"}a' 'l{o"}{o"}mata' (<-'l{o"}{o"}')
'l{o"}{o"}mata' 'l{u"}{u"}akse' 'l{o"}{o"}dakse' 'l{o"}{o"}di' 'l{o"}{o"}ma' 'l{u"}{u"}a' (<-'l{o"}{o"}')
'l{o'}in' 'l{o'}id' 'l{o'}i' 'l{o'}ime' 'l{o'}ite' (<-'l{o"}i') //looma-lõi, lööma-lõi
'loon' 'lood' 'loob' 'loome' 'loote' 'loovad' (<-'loo')
'looksin' 'looksid' 'looks' 'looksime' 'looksite' (<-'loo')
'luuakse' 'loodi' 'luua' 'looma' 'loomata'(<-'loo')
'loomata' 'luuakse' 'loodi' 'luua' 'looma' (<-'loo')
'k{a"}in' 'k{a"}ib' 'k{a"}id' 'k{a"}is' 'k{a"}ime' 'k{a"}ite' 'k{a"}ivad' (<-'k{a"}isi')
'k{a"}iksin' 'k{a"}iks' 'k{a"}iksid' 'k{a"}iksime' 'k{a"}iksite' (<-'k{a"}isi')
'k{a"}iakse' 'k{a"}idi' 'k{a"}ia' 'k{a"}ima' 'k{a"}imata' (<-'k{a"}isi')
'k{a"}imata' 'k{a"}iakse' 'k{a"}idi' 'k{a"}ia' 'k{a"}ima' (<-'k{a"}isi')
's{o"}{o"}n' 's{o"}{o"}b' 's{o"}{o"}d' 's{o"}{o"}me' 's{o"}{o"}te' 's{o"}{o"}vad' (<-'s{o"}{o"}')
's{o"}{o"}ksin' 's{o"}{o"}ks' 's{o"}{o"}ksid' 's{o"}{o"}ksime' 's{o"}{o"}ksite' (<-'s{o"}{o"}')
's{o'}in' 's{o'}i' 's{o'}id' 's{o'}ime' 's{o'}ite' (<-'s{o"}{o"}')
's{u"}{u"}akse' 's{o"}{o"}dakse' 's{o"}{o"}di' 's{o"}{o"}ma' 's{o"}{o"}mata' 's{u"}{u"}a' (<-'s{o"}{o"}')
's{o"}{o"}mata' 's{u"}{u"}akse' 's{o"}{o"}dakse' 's{o"}{o"}di' 's{o"}{o"}ma' 's{u"}{u"}a' (<-'s{o"}{o"}')
'toon' 'tood' 'toob' 'toote' 'toome' 'toovad' (<-'too')
'tooksin' 'tooksid' 'tooks' 'tooksite' 'tooksime' (<-'too')
't{o'}in' 't{o'}id' 't{o'}i' 't{o'}ime' 't{o'}ite' (<-'too')
'tuuakse' 'toodi' 'tooma' 'tuua' 'toomata' (<-'too')
'toomata' 'tuuakse' 'toodi' 'tooma' 'tuua' (<-'too')
'v{o'}in' 'v{o'}id' 'v{o'}ib' 'v{o'}ime' 'v{o'}is' 'v{o'}ite' 'v{o'}ivad' (<-'v{o'}isi')
'v{o'}iksin' 'v{o'}iksid' 'v{o'}iks' 'v{o'}iksime' 'v{o'}iksite' (<-'v{o'}isi')
'v{o'}idakse' 'v{o'}idi' 'v{o'}ida' 'v{o'}ima' 'v{o'}imata'(<-'v{o'}isi')
'v{o'}imata' 'v{o'}idakse' 'v{o'}idi' 'v{o'}ida' 'v{o'}ima' (<-'v{o'}isi')
'j{a"}{a"}n' 'j{a"}{a"}d' 'j{a"}{a"}b' 'j{a"}{a"}me' 'j{a"}{a"}te' 'j{a"}{a"}vad' (<-'j{a"}{a"}ma')
'j{a"}{a"}ksin' 'j{a"}{a"}ksid' 'j{a"}{a"}ks' 'j{a"}{a"}ksime' 'j{a"}{a"}ksite' (<-'j{a"}{a"}ma')
'j{a"}ime' 'j{a"}ite' 'j{a"}in' 'j{a"}id' 'j{a"}i' (<-'j{a"}{a"}ma')
'j{a"}{a"}dakse' 'j{a"}{a"}da' 'j{a"}{a"}ma' 'j{a"}{a"}mata' 'j{a"}{a"}di' (<-'j{a"}{a"}ma')
'j{a"}{a"}mata' 'j{a"}{a"}dakse' 'j{a"}{a"}da' 'j{a"}{a"}ma' 'j{a"}{a"}di' (<-'j{a"}{a"}ma')
'm{u"}{u"}n' 'm{u"}{u"}d' 'm{u"}{u"}b' 'm{u"}{u"}s' 'm{u"}{u"}me' 'm{u"}{u"}te' 'm{u"}{u"}vad' (<-'m{u"}{u"}si')
'm{u"}{u"}ksin' 'm{u"}{u"}ksid' 'm{u"}{u"}ks' 'm{u"}{u"}ksime' 'm{u"}{u"}ksite' (<-'m{u"}{u"}si')
'm{u"}{u"}akse' 'm{u"}{u"}di' 'm{u"}{u"}a' 'm{u"}{u"}ma' 'm{u"}{u"}mata' (<-'m{u"}{u"}si')
'm{u"}{u"}mata' 'm{u"}{u"}akse' 'm{u"}{u"}di' 'm{u"}{u"}a' 'm{u"}{u"}ma' (<-'m{u"}{u"}si')
'loeb' 'loen' 'loed' 'loeme' 'loete' 'loevad' (<- 'luge')
'loeks' 'loeksin' 'loeksid' 'loeksime' 'loeksite' (<- 'luge')
'p{o'}en' 'p{o'}eb' 'p{o'}ed' 'p{o'}eme' 'p{o'}ete' 'p{o'}evad' (<- 'p{o'}de')
'p{o'}eksin' 'p{o'}eks' 'p{o'}eksid' 'p{o'}eksime' 'p{o'}eksite' (<- 'p{o'}de')
'laon' 'laob' 'laod' 'laome' 'laote' 'laovad' (<- 'ladu')
'laoksin' 'laoks' 'laoksid' 'laoksime' 'laoksite' (<- 'ladu')
'teeksin' 'teeks' 'teeksid' 'teeksime' 'teeksite' (<- 'tegema') //(<- 'tegi')
'teen' 'teeb' 'teed' 'teeme' 'teete' 'teevad' (<- 'tegema')
'tegin' 'tegi' 'tegid' 'tegime' 'tegite' (<-'tegema')
'tehakse' 'tehti' 'tegema' 'tegemata' 'teha' (<-'tegema')
'teeksin' 'teeks' 'teeksid' 'teeksime' 'teeksite' (<- 'tegi')
'teen' 'teeb' 'teed' 'teeme' 'teete' 'teevad' (<- 'tegi')
'tegemata' 'tehakse' 'tehti' 'tegema' 'teha' (<-'tegi')
'n{a"}en' 'n{a"}eb' 'n{a"}ed' 'n{a"}eme' 'n{a"}ete' 'n{a"}evad' (<-'n{a"}gi')
'n{a"}eksin' 'n{a"}eks' 'n{a"}eksid' 'n{a"}eksime' 'n{a"}eksite' (<-'n{a"}gi')
//'n{a"}gin' 'n{a"}gid' 'n{a"}gi' 'n{a"}gime' 'n{a"}gite'
'n{a"}hakse' 'n{a"}hti' 'n{a"}ha' 'n{a"}gema' 'n{a"}gemata' (<-'n{a"}gi')
//lugema-tüüpi (ÕS 57. tüüp) kuulub ligi 20 /2 I V/-sõna, mille esimese ja teise silbi piiril on lühike klusiil, nagu püga/ma, sada/ma, põde/ma, ladu/ma, kudu/ma. Nee
'n{a"}gemata' 'n{a"}hakse' 'n{a"}hti' 'n{a"}ha' 'n{a"}gema' (<-'n{a"}gi')
)
)
......
mõtetesse
mõtetes
mõtetest
mõtetele
mõtetel
mõtetelt
mõteteks
mõteteni
mõtetena
mõteteta
mõtetega
soolastesse
soolastes
soolastest
soolastele
soolastel
soolastelt
soolasteks
soolasteni
soolastena
soolasteta
soolastega
vendadesse
vendades
vendadest
vendadele
vendadel
vendadelt
vendadeks
vendadeni
vendadena
vendadeta
vendadega
kõnedesse
kõnedes
kõnedest
kõnedele
kõnedel
kõnedelt
kõnedeks
kõnedeni
kõnedena
kõnedeta
kõnedega
laudadegagi
laudadestki
naabritelegi
naabritega
tubadele
olulistesse
õnnelikesse
õnnelikkudesse
kõnõletega
konedeni
kõnedeni
künedeni
könedeni
känedeni
õnnelikesse
õnnelikes
õnnelikest
õnnelikele
õnnelikel
õnnelikelt
õnnelikelt
õnnelikeks
õnnelikeni
õnnelikena
õnneliketa
laualegi
lauastki
majadessegi
õnnelikegi
papaeiuosse
kass
kirgiisid
autosid
gaasid
kanaleid
voodeid
õnnelikke
söönud
pöönud
pöörud
poonud
poorud
janud
teinutele
autodele
nutnutega
teinud
laulud
toolijalad
trikk
triki
trikki
trikist
trikid
trikkide
trikke
trikkidest
lapsikutele
õnnelik
õnneliku
õnnelikku
õnnelikusse
õnnelikud
õnnelike
õnnelikke
õnnelikkusid
õnnelikesse
õnnelikkudesse
hobune
hobuse
hobust
hobusesse
hobused
hobuste
hobuseid
hobustesse
kanal
kanali
kanalit
kanalisse
kanalid
kanalite
kanaleid
kanalitesse
kanaleisse
ratas
ratta
ratast
rattale
rattad
rataste
rattaid
ratastele
kott
koti
kotti
kotile
kotid
kottide
kotte
kottidele
energiaettevõtte
energiaettevõte
lugesin
lugesid
loen
......@@ -24,15 +27,9 @@ värki
masinavärki
läksidki
hüppasimegi
asdarimegi
kirjutata
hüpata
ritta
kokkuvõte
kokkuvõtte
kokkuvõtete
......@@ -110,7 +107,6 @@ joon
sirgjoon
joob
joote
jootekser
jõite
sõite
lööme
......@@ -235,7 +231,6 @@ karjääride
karjääre
karjääridesse
PROBLEEMSED
trikke
hobust
kanal
......@@ -251,7 +246,6 @@ lapsikuid
samblaisse
hülgeilt
kõrbeist
asasadadate
kast
kasti
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment