Етап №3. Аналіз роботи автоматичного морфологічного
аналізатора.
Скопіювала файли ukrainian.yaml ukrainian.lex в директорію з програмою kimmo.py
Переглянула та проаналізувала вміст файлів ukrainian.yaml ukrainian.lex
3. Запустила програму kimmo.py зазначеним нижче способом:в IDLE (Python GUI) виконала наступну послідовність дій:
>>> from kimmo import * >>> k=load("ukramian.yaml ")
>>> k.gui()
4. Розробила програму морфологічного аналізу всіх граматичних формнаступних слів: рука, ткаля, миша, село, коваль, горіх, піч, лоша, летіти,свистіти, писати, тесати, топтати, радіти, бити, смажити, дружити.Здійснила морфологічний аналіз всіх граматичних форм вказаних слів.Попередньо у файлі ukrainian.rec зберегла всі граматичні форми.
from kimmo import * k = KimmoRuleSet.load('ukrainian.yaml') recfile = open('ukrainian.rec') for line in recfile: line = line.strip() if not line: continue if line.startswith(';'): print line continue
print list(k.recognize(line)), '<=', line recfile.close()
UKRAINIAN.REC
ruka
gorihiv
pySemo
byty
ruky
goriham
pySete
b'U
ruci
gorihamy
pySutB
b'ES
ruku
gorihah
pysav
b'E
rukoU
piC
pysala
b'Emo
ruko
peCi
pysalo
b'Ete
ruk
piCCU
pysaly
b'UtB
rukam
peCej
pysatymu
byv
rukamy
peCam
pysatymeS
byla
rukah
peCamy
pysatyme
bylo
tkalA
peCah
tesaty
byly
tkali
loSa
teSu
bytymu
tkalU
loSaty
teSeS
bytymeS
tkaleU
loSati
teSe
bytyme
tkale
loSam
teSemo
smaZyty
tkalB
loSata
teSete
smaZu
tkalAm
loSat
teSutB
smaZyS
tkalAmy
loSatam
tesav
smaZutB
tkalAh
loSatamy
tesala
smaZymo
mySa
loSatah
tesalo
smaZyte
mySi
letity
tesaly
smaZatB
mySu
leCu
tesatymu
smaZyv
mySeU
letyS
tesatymeS
smaZyla
mySe
letytB
tesatyme
smaZylo
mySej
letymo
toptaty
smaZyly
mySam
letyte
topCu
smaZytymu
mySamy
letAtB
topCeS
smaZytymeS
mySah
letiv
topCe
smaZytyme
selo
letila
topCemo
druZyty
sela
letilo
topCete
druZu
selu
letily
topCutB
druZyS
selom
letitymu
toptav
druZytB
seli
letitymeS
toptala
druZymo
sil
letityme
toptalo
druZyte
selam
svystity
toptaly
druZatB
selamy
svyHu
toptatymu
druZyv
selah
svystyS
toptatymeS
druZyla
kovalB
svystytB
toptatyme
druZylo
kovalA
svystymo
radity
druZyly
kovalU
svystyte
radiU
druZytymu
kovalem
svystAtB
radiES
druZytymeS
kovali
svystiv
radiE
druZytyme
kovaliv
svystila
radiEmo
kovalAm
svystilo
radiEte
kovalAmy
svystily
radiUtB
kovalAh
svystitymu
radiv
gorih
svystitymeS
radila
goriha
svystityme
radilo
gorihu
pysaty
radily
gorihom
pySu
raditymu
gorisi
pySeS
raditymeS
gorihy
pySe
radityme
>>> from kimmo import *
>>> k = KimmoRuleSet.load('ukrainian.yaml')
>>> recfile = open('ukrainian.rec')
>>> for line in recfile:
line = line.strip()
if not line: continue
if line.startswith(';'):
print line
continue
print list(k.recognize(line)), '<=', line
[('ruk+a', 'Noun_1_Tv(ruk)+a_Nominative case,sg')] <= ruka [('ruk+y', 'Noun_1_Tv(ruk)+y_')] <= ruky
[] <= ruci
[('ruk+u', 'Noun_1_Tv(ruk)+u_accusative case,sg')] <= ruku
[('ruk+oU', 'Noun_1_Tv(ruk)+oU_possesive case,sg')] <= rukoU
[('ruk+o', 'Noun_1_Tv(ruk)+o_vocative case,sg')] <= ruko
[] <= ruk
[('ruk+am', 'Noun_1_Tv(ruk)+am_dative case,pl')] <= rukam
[('ruk+amy', 'Noun_1_Tv(ruk)+amy_possesive case,pl')] <= rukamy
[('ruk+ah', 'Noun_1_Tv(ruk)+ah_locative case,pl')] <= rukah
[('tkal+A', 'Noun_1_Mj(tkal)+A_Nominative case,sg')] <= tkalA
[('tkal+i', 'Noun_1_Mj(tkal)+i_')] <= tkali
[('tkal+U', 'Noun_1_Mj(tkal)+U_accusative case,sg')] <= tkalU
[('tkal+eU', 'Noun_1_Mj(tkal)+eU_possesive case,sg')] <= tkaleU
[('tkal+e', 'Noun_1_Mj(tkal)+e_vocative case,sg')] <= tkale
[('tkal+B', 'Noun_1_Mj(tkal)+B_genitive case,pl')] <= tkalB
[('tkal+Am', 'Noun_1_Mj(tkal)+Am_dative case,pl')] <= tkalAm
[('tkal+Amy', 'Noun_1_Mj(tkal)+Amy_possesive case,pl')] <= tkalAmy [('tkal+Ah', 'Noun_1_Mj(tkal)+Ah_locative case,pl')] <= tkalAh
[('myS+a', 'Noun_1_Mi(myS)+a_Nominative case,sg')] <= mySa
[('myS+i', 'Noun_1_Mi(myS)+i_')] <= mySi
[('myS+u', 'Noun_1_Mi(myS)+u_accusative case,sg')] <= mySu
[('myS+eU', 'Noun_1_Mi(myS)+eU_possesive case,sg')] <= mySeU
[('myS+e', 'Noun_1_Mi(myS)+e_vocative case,sg')] <= mySe
[('myS+ej', 'Noun_1_Mi(myS)+ej_pl')] <= mySej
[('myS+am', 'Noun_1_Mi(myS)+am_dative case,pl')] <= mySam
[('myS+amy', 'Noun_1_Mi(myS)+amy_possesive case,pl')] <= mySamy [('myS+ah', 'Noun_1_Mi(myS)+ah_locative case,pl')] <= mySah
[('sel+o', 'Noun_2_Tv(sel)+o_sg')] <= selo
[('sel+a', 'Noun_2_Tv(sel)+a_Genitive case,sg')] <= sela
[('sel+u', 'Noun_2_Tv(sel)+u_Genitive case,sg'), ('sel+u', 'Noun_2_Tv(sel)+u_Dative case,sg')] <= selu
[('sel+om', 'Noun_2_Tv(sel)+om_possesive case,sg')] <= selom
[('sel+i', 'Noun_2_Tv(sel)+i_locative case,sg')] <= seli
[] <= sil
[('sel+am', 'Noun_2_Tv(sel)+am_dative case,pl')] <= selam
[('sel+amy', 'Noun_2_Tv(sel)+amy_possesive case,pl')] <= selamy
[('sel+ah', 'Noun_2_Tv(sel)+ah_locative case,pl')] <= selah
[('koval+B','Noun_2_Mj(koval)+B')] <= kovalB [('koval+A','Noun_2_Mj(koval)+A')] <= kovalA [('koval+U', 'Noun_2_Mj(koval)+U_sg')] <= kovalU
[('koval+em', 'Noun_2_Mj(koval)+em_possesive case,sg')] <= kovalem
[('koval+i', 'Noun_2_Mj(koval)+i')] <= kovali
[('koval+iv', 'Noun_2_Mj(koval)+iv_pl')] <= kovaliv
[('koval+Am', 'Noun_2_Mj(koval)Am')] <= kovalAm
[('koval+Amy', 'Noun_2_Mj(koval)+Amy_possesive case,pl')] <= kovalAmy
[('koval+Ah', 'Noun_2_Mj(koval)+Ah_locative case,pl')] <= kovalAh
[] <= gorih
[] <= goriha
[] <= gorihu
[] <= gorihom
[] <= gorisi
[] <= gorihy
[] <= gorihiv
[] <= goriham
[] <= gorihamy
[] <= gorihah
[] <= piC
[] <= peCi
[('piC+U', 'Noun_3(piC)+U_Possesive case,sg')] <= piCCU
[] <= peCej
[] <= peCam
[] <= peCamy
[] <= peCah
[] <= loSa
[('loS+at+y', 'Noun_4(loS)+at_+y_Genitive case,sg')] <= loSaty [('loS+at+i', 'Noun_4(loS)+at_+i_sg.')] <= loSati
[] <= loSam
[('loS+at+a', 'Noun_4(loS)+at_+a_')] <= loSata
[] <= loSat
[('loS+at+am', 'Noun_4(loS)+at_+am_'), ('loS+at+am', 'Noun_4(loS)+at_+am_')] <= loSatam
[('loS+at+amy', 'Noun_4(loS)+at_+amy_possesive case.pl')] <= loSatamy [('loS+at+ah', 'Noun_4(loS)+at_+ah_locative case.pl')] <= loSatah
[] <= letity
[] <= leCu
[] <= letyS
[] <= letytB
[('let+y+mo', 'Verb(let)+y_+mo_ imperative. pl. 1 pers'), ('let+y+mo', 'Verb(let)+y_+mo_ imperative. pl. 1 pers')] <= letymo
[('let+y+te', 'Verb(let)+y_+te_imperative. pl. 2 pers'), ('let+y+te', 'Verb(let)+y_+te_imperative. pl. 2 pers')] <= letyte
[] <= letAtB
[('let+i+v', 'Verb(let)+i_+v_sg.past'), ('let+i+v', 'Verb(let)+i_+v_sg.m.past'), ('let+i+v',
'Verb(let)+i_+v_sg.m.past'), ('let+i+v', 'Verb(let)+i_+v_sg.past')] <= letiv
[('let+i+la', 'Verb(let)+i_+la_sg.fem.past'), ('let+i+la', 'Verb(let)+i_+la_sg.fem.past'), ('let+i+la',
'Verb(let)+i_+la_sg.fem.past'), ('let+i+la', 'Verb(let)+i_+la_sg.fem.past')] <= letila
[('let+i+lo', 'Verb(let)+i_+lo_sg'), ('let+i+lo', 'Verb(let)+i_+lo_sg.n.past'), ('let+i+lo',
'Verb(let)+i_+lo_sg.n.past'), ('let+i+lo', 'Verb(let)+i_+lo_sg')] <= letilo
[('let+i+ly', 'Verb(let)+i_ly_pl.past'), ('let+i+ly', 'Verb(let)+i_+ly_pl.past'), ('let+i+ly',
'Verb(let)+i_+ly_pl.past'), ('let+i+ly', 'Verb(let)+i_+ly_pl.past')] <= letily
[('let+ity+mu', 'Verb(let)+ity_mu_sg.1 pers. future'), ('let+ity+mu', 'Verb(let)+ity_+mu_sg.1 pers. future'), ('let+ity+mu', 'Verb(let)+ity_+mu_sg.1 pers. future'), ('let+ity+mu', 'Verb(let)+ity_+mu_sg.1 pers. future')] <= letitymu
[('let+ity+meS', 'Verb(let)+ity_+meS_sg.2 pers. future'), ('let+ity+meS', 'Verb(let)+ity_+meS_sg.2 pers. future'), ('let+ity+meS', 'Verb(let)+ity_+meS_sg.2 pers. future'), ('let+ity+meS', 'Verb(let)+ity_+meS_sg.2 pers. future')] <= letitymeS
[('let+ity+me', 'Verb(let)+ity_+me_sg.3 pers. future'), ('let+ity+me', 'Verb(let)+ity_+me_sg.3 pers.
future'), ('let+ity+me', 'Verb(let)+ity_+me_sg.3 pers. future'), ('let+ity+me',
'Verb(let)+ity_+me_sg.3 pers. future')] <= letityme
[] <= svystity
[] <= svyHu
[] <= svystyS
[] <= svystytB
[] <= svystymo
[] <= svystyte
[] <= svystAtB
[] <= svystiv
[] <= svystila
[] <= svystilo
[] <= svystily
[] <= svystitymu
[] <= svystitymeS
[] <= svystityme
[] <= pysaty
[] <= pySu
[] <= pySeS
[] <= pySe
[] <= pySemo
[] <= pySete
[] <= pySutB
[] <= pysav
[] <= pysala [] <= pysalo
[] <= pysaly
[] <= pysatymu
[] <= pysatymeS
[] <= pysatyme
[] <= tesaty
[] <= teSu
[] <= teSeS
[] <= teSe
[] <= teSemo
[] <= teSete
[] <= teSutB
[] <= tesav
[] <= tesala
[] <= tesalo
[] <= tesaly
[] <= tesatymu
[] <= tesatymeS
[] <= tesatyme
[] <= toptaty
[] <= topCu
[] <= topCeS
[] <= topCe
[] <= topCemo
[] <= topCete
[] <= topCutB
[('topt+a+v', 'Verb(topt)+a_+v_sg.past'), ('topt+a+v', 'Verb(topt)+a_+v_sg.m.past'), ('topt+a+v', 'Verb(topt)+a_+v_sg.m.past'), ('topt+a+v', 'Verb(topt)+a_+v_sg.past')] <= toptav
[('topt+a+la', 'Verb(topt)+a_+la_sg.fem.past'), ('topt+a+la', 'Verb(topt)+a_+la_sg.fem.past'), ('topt+a+la', 'Verb(topt)+a_+la_sg.fem.past'), ('topt+a+la', 'Verb(topt)+a_+la_sg.fem.past')] <= toptala
[('topt+a+lo', 'Verb(topt)+a_+lo_sg'), ('topt+a+lo', 'Verb(topt)+a_+lo_sg.n.past'), ('topt+a+lo',
'Verb(topt)+a_+lo_sg.n.past'), ('topt+a+lo', 'Verb(topt)+a_+lo_sg')] <= toptalo
[('topt+a+ly', 'Verb(topt)+a_ly_pl.past'), ('topt+a+ly', 'Verb(topt)+a_+ly_pl.past'), ('topt+a+ly',
'Verb(topt)+a_+ly_pl.past'), ('topt+a+ly', 'Verb(topt)+a_+ly_pl.past')] <= toptaly
[('topt+aty+mu', 'Verb(topt)+aty_mu_sg.1 pers. future'), ('topt+aty+mu', 'Verb(topt)+aty_+mu_sg.1
pers. future'), ('topt+aty+mu', 'Verb(topt)+aty_+mu_sg.1 pers. future'), ('topt+aty+mu',
'Verb(topt)+aty_+mu_sg.1 pers. future')] <= toptatymu
[('topt+aty+meS', 'Verb(topt)+aty_+meS_sg.2 pers. future'), ('topt+aty+meS',
'Verb(topt)+aty_+meS_sg.2 pers. future'), ('topt+aty+meS', 'Verb(topt)+aty_+meS_sg.2 pers.
future'), ('topt+aty+meS', 'Verb(topt)+aty_+meS_sg.2 pers. future')] <= toptatymeS
[('topt+aty+me', 'Verb(topt)+aty_+me_sg.3 pers. future'), ('topt+aty+me', 'Verb(topt)+aty_+me_sg.3
pers. future'), ('topt+aty+me', 'Verb(topt)+aty_+me_sg.3 pers. future'), ('topt+aty+me',
'Verb(topt)+aty_+me_sg.3 pers. future')] <= toptatyme
[] <= radity [] <= radiU
[] <= radiES
[] <= radiE
[] <= radiEmo
[] <= radiEte
[] <= radiUtB
[] <= radiv [] <= radila [] <= radilo [] <= radily
[('radi+ty+mu', 'Verb(radi)+ty_mu_sg.1 pers. future'), ('radi+ty+mu', 'Verb(radi)+ty_+mu_sg.1 pers. future'), ('radi+ty+mu', 'Verb(radi)+ty_+mu_sg.1 pers. future'), ('radi+ty+mu', 'Verb(radi)+ty_+mu_sg.1 pers. future'), ('radi+ty+mu', 'Verb(radi)+ty_mu_sg.1 pers. future'), ('radi+ty+mu', 'Verb(radi)+ty_+mu_sg.1 pers. future'), ('radi+ty+mu', 'Verb(radi)+ty_+mu_sg.1 pers. future'), ('radi+ty+mu', 'Verb(radi)+ty_+mu_sg.1 pers. future')] <= raditymu [('radi+ty+meS', 'Verb(radi)+ty_+meS_sg.2 pers. future'), ('radi+ty+meS',
'Verb(radi)+ty_+meS_sg.2 pers. future'), ('radi+ty+meS', 'Verb(radi)+ty_+meS_sg.2 pers. future'), ('radi+ty+meS', 'Verb(radi)+ty_+meS_sg.2 pers. future'), ('radi+ty+meS', 'Verb(radi)+ty_+meS_sg.2 pers. future'), ('radi+ty+meS', 'Verb(radi)+ty_+meS_sg.2 pers. future'), ('radi+ty+meS', 'Verb(radi)+ty_+meS_sg.2 pers. future'), ('radi+ty+meS', 'Verb(radi)+ty_+meS_sg.2 pers. future')] <= raditymeS
[('radi+ty+me', 'Verb(radi)+ty_+me_sg.3 pers. future'), ('radi+ty+me', 'Verb(radi)+ty_+me_sg.3 pers. future'), ('radi+ty+me', 'Verb(radi)+ty_+me_sg.3 pers. future'), ('radi+ty+me', 'Verb(radi)+ty_+me_sg.3 pers. future'), ('radi+ty+me', 'Verb(radi)+ty_+me_sg.3 pers. future'), ('radi+ty+me', 'Verb(radi)+ty_+me_sg.3 pers. future'), ('radi+ty+me', 'Verb(radi)+ty_+me_sg.3 pers. future'), ('radi+ty+me', 'Verb(radi)+ty_+me_sg.3 pers. future')] <= radityme
[] <= byty
[] <= b'U
[] <= b'ES
[] <= b'E
[] <= b'Emo
[] <= b'Ete
[] <= b'UtB
[('b+y+v', 'Verb(b)+y_+v_sg.past'), ('b+y+v', 'Verb(b)+y_+v_sg.m.past'), ('b+y+v', 'Verb(b)+y_+v_sg.m.past'), ('b+y+v', 'Verb(b)+y_+v_sg.past'), ('b+y+v', 'Verb(b)+y_+v_sg.past'), ('b+y+v', 'Verb(b)+y_+v_sg.m.past'), ('b+y+v', 'Verb(b)+y_+v_sg.m.past'), ('b+y+v', 'Verb(b)+y_+v_sg.past')] <= byv
[('b+y+la', 'Verb(b)+y_+la_sg.fem.past'), ('b+y+la', 'Verb(b)+y_+la_sg.fem.past'), ('b+y+la','Verb(b)+y_+la_sg.fem.past'), ('b+y+la', 'Verb(b)+y_+la_sg.fem.past'), ('b+y+la','Verb(b)+y_+la_sg.fem.past'), ('b+y+la', 'Verb(b)+y_+la_sg.fem.past'), ('b+y+la','Verb(b)+y_+la_sg.fem.past'), ('b+y+la', 'Verb(b)+y_+la_sg.fem.past')] <= byla
[('b+y+lo', 'Verb(b)+y_+lo_sg'), ('b+y+lo', 'Verb(b)+y_+lo_sg.n.past'), ('b+y+lo', 'Verb(b)+y_+lo_sg.n.past'), ('b+y+lo', 'Verb(b)+y_+lo_sg'), ('b+y+lo', 'Verb(b)+y_+lo_sg'), ('b+y+lo', 'Verb(b)+y_+lo_sg.n.past'), ('b+y+lo', 'Verb(b)+y_+lo_sg.n.past'), ('b+y+lo','Verb(b)+y_+lo_sg')] <= bylo
[('b+y+ly', 'Verb(b)+y_ly_pl.past'), ('b+y+ly', 'Verb(b)+y_+ly_pl.past'), ('b+y+ly','Verb(b)+y_+ly_pl.past'), ('b+y+ly', 'Verb(b)+y_+ly_pl.past'), ('b+y+ly', 'Verb(b)+y_ly_pl.past'),('b+y+ly', 'Verb(b)+y_+ly_pl.past'), ('b+y+ly', 'Verb(b)+y_+ly_pl.past'), ('b+y+ly','Verb(b)+y_+ly_pl.past')] <= byly
[('b+yty+mu', 'Verb(b)+yty_mu_sg.1 pers. future'), ('b+yty+mu', 'Verb(b)+yty_+mu_sg.1 pers. future'), ('b+yty+mu', 'Verb(b)+yty_+mu_sg.1 pers. future'), ('b+yty+mu', 'Verb(b)+yty_+mu_sg.1 pers. future'), ('b+yty+mu', 'Verb(b)+yty_mu_sg. 1 pers. future'), ('b+yty+mu','Verb(b)+yty_+mu_sg.1 pers. future'), ('b+yty+mu', 'Verb(b)+yty_+mu_sg.1 pers. future'), ('b+yty+mu', 'Verb(b)+yty_+mu_sg.1 pers. future')] <= bytymu
[('b+yty+meS', 'Verb(b)+yty_+meS_sg.2 pers. future'), ('b+yty+meS', 'Verb(b)+yty_+meS_sg.2
pers. future'), ('b+yty+meS', 'Verb(b)+yty_+meS_sg.2 pers. future'), ('b+yty+meS',
'Verb(b)+yty_+meS_sg.2 pers. future'), ('b+yty+meS', 'Verb(b)+yty_+meS_sg.2 pers. future'),
('b+yty+meS', 'Verb(b)+yty_+meS_sg.2 pers. future'), ('b+yty+meS', 'Verb(b)+yty_+meS_sg.2 pers.
future'), ('b+yty+meS', 'Verb(b)+yty_+meS_sg.2 pers. future')] <= bytymeS
[('b+yty+me', 'Verb(b)+yty_+me_sg.3 pers. future'), ('b+yty+me', 'Verb(b)+yty_+me_sg.3 pers.
future'), ('b+yty+me', 'Verb(b)+yty_+me_sg.3 pers. future'), ('b+yty+me', 'Verb(b)+yty_+me_sg.3
pers. future'), ('b+yty+me', 'Verb(b)+yty_+me_sg.3 pers. future'), ('b+yty+me','Verb(b)+yty_+me_sg.3 pers. future'), ('b+yty+me', 'Verb(b)+yty_+me_sg.3 pers. future'),('b+yty+me', 'Verb(b)+yty_+me_sg.3 pers. future')] <= bytyme
[] <= smaZyty
[] <= smaZu
[] <= smaZyS
[] <= smaZutB
[] <= smaZymo
[] <= smaZyte
[] <= smaZatB
[] <= smaZyv
[] <= smaZyla
[] <= smaZylo
[] <= smaZyly
[] <= smaZytymu
[] <= smaZytymeS
[] <= smaZytyme
[] <= druZyty
[] <= druZu
[] <= druZyS
[] <= druZytB
[] <= druZymo
[] <= druZyte
[] <= druZatB
[] <= druZyv
[] <= druZyla
[] <= druZylo
[] <= druZyly
[] <= druZytymu
[] <= druZytymeS
[] <= druZytyme
Оцінка результатів аналізу:
Для здійснення морфологічного аналізу всіх граматичних форм наступних слів: рука, ткаля, миша, село, коваль, горіх, піч, лоша, летіти, свистіти, писати, тесати, топтати, радіти, бити, смажити, дружити я зберегла всі граматичні форми даних слів у файлі ukrainian.rec, транслітеруючи їх, оскільки програма працює лише з літерами латинського алфавіту. В результаті морфологічного аналізу були знайдені нерозпізнані слова, неправильно розпізнані або частково нерозпізнані словоформи.
При аналізі всіх словоформ слова ruka, система розпізнала всі слова, крім
словоформ ruci та ruk. При аналізі словоформи ruci не спрацювало правило
зміни букви k на c (к на ц), хоча воно і записане в файлі ukrainian.yaml.
k to c: | FSA
k i @
c i @ 1: 2 1 1 2: 0 1 0
При аналізі словоформи ruk, жодні правила не використовувались. Але, дивлячись на правила сполучуваності видно, що в системі збій, оскільки в файлі ukrainian.lex вказано на нульове закінчення в іменника 1 відміни твердої групи в родовому відмінку множини, але система це не розпізнала: N_ROOT_1_TV:
ruk AfterNoun_1_Tv Noun_1_Tv(ruk) N_ENDING_1_TV:
+0 AfterNounEnding genitive case,pl
Частково розпізнала система словоформу ruky, ця форма може бути як родовим відмінком однини, так і називним відмінком множини. На жаль, оскільки цих даних не записано в файлі ukrainian.lex, тому система не змогла зробити аналіз цієї словоформи.
[('ruk+a', 'Noun_1_Tv(ruk)+a_Nominative case,sg')]
<= ruka [('ruk+y', 'Noun_1_Tv(ruk)+y_')] <= ruky
[] <= ruci
[('ruk+u', 'Noun_1_Tv(ruk)+u_accusative case,sg')] <= ruku
[('ruk+oU', 'Noun_1_Tv(ruk)+oU_possesive case,sg')] <= rukoU [('ruk+o', 'Noun_1_Tv(ruk)+o_vocative case,sg')] <= ruko
[] <= ruk
[('ruk+am', 'Noun_1_Tv(ruk)+am_dative case,pl')] <= rukam
[('ruk+amy', 'Noun_1_Tv(ruk)+amy_possesive case,pl')] <= rukamy [('ruk+ah', 'Noun_1_Tv(ruk)+ah_locative case,pl')] <= rukah
Аналізуючи всі граматичні форми слова tkalA, система розпізнала все, але частково розпізнала tkali, оскільки ця форма притаманна родовому відмінку однини та називному відмінку множини.
[('tkal+A', 'Noun_1_Mj(tkal)+A_Nominative case,sg')] <= tkalA
[('tkal+i', 'Noшl_1_Mj(tkal)+i_')] <= tkali
[('tkal+U', 'Noun_1_Mj(tkal)+U_accusative case,sg')] <= tkalU
[(tkal +еU', 'Noun_1_Mj(tkal)+eU_possesive case,sg')] <= tkaleU
[(tkal +е', 'Noun_1_Mj(tkal)+e_vocative case,sg')] <= tkale
[ (tkal+ В', 'Noun_1_Mj(tkal)+B_genitive case,pl')] <= tkalB
[(tkal +Аm', 'Noun_1_Mj(tkal)+Am_dative case,pl')] <= tkalAm
[(tkal +Аmу', 'Noun_1_Mj(tkal)+Amy_possesive case,pl')] <= tkalAmy
[ (tkal +Аh', 'Noun_1_Mj(tkal)+Ah_locative case,pl')] <= tkalAh
Те саме спостерігається з словоформою «mySi».
[('myS+i', 'Noun_1_Mi(myS)+i_')] <= mySi
В файлі ukrainian.lex вказані дані лише про основу іменника та про можливість додавання закінчення -і до основи іменника І відміни мішаної групи.
N_ROOT_1_MI:
myS AfterNoun_1_Mi Noun_1_Mi(myS) - основа
N_ENDING_1_MI:
+i AfterNounEnding +i_ - закінчення іменника І відміни мішаної групи.
А також частково розпізнана словоформа «mySej».
[('myS+ej', 'Noun_1_Mi(myS)+ej_pl')] <= mySej
Вказано лише закінчення та форму множини,тому що дані про це записані у файлі ukrainian.lex
N_ROOT_1_MI:
myS AfterNoun_1_Mi Noun_1_Mi(myS) - основа
+ej AfterNounEnding +ej_pl - вказано закінчення множини іменника І відміни
мішаної групи, але не вказано, що це форма родового відмінка.
При аналізі всіх словоформ слова selo, система розпізнала слово selo лише частково, оскільки в файлі ukrainian.lex не описано, що це слово іменник називного відмінку: N_ROOT_2_TV:
sel AfterNoun_2_Tv Noun_2_Tv(sel)
N_ENDING_2_TV:
+o AfterNounEnding +o_sg
В словоформі sela, не розпізнано що воно ще й іменник називного відмінка множини.
В словоформі selu, помилка, оскільки система розпізнала цю словоформу двома видами:
N_ROOT_2_TV:
sel AfterNoun_2_Tv Noun_2_Tv(sel)
N_ENDING_2_TV:
+u AfterNounEnding +u_Genitive case,sg
+u AfterNounEnding +u_Dative case,sg
Слово selu може бути лише іменником давального відмінку однини. Ця
помилка з'явилась, тому що є помилка в файлі ukrainian.lex.
При аналізі словоформи sil, не використалось правило зміни е на і,
e to i: | FSA e l # @
i l # @
1: 2 1 1 1 2: 0 3 0 0
3: 0 0 1 0
тому система не змогла проаналізувати слово.
[('sel+o', 'Noun_2_Tv(sel)+o_sg')] <= selo
[('sel+a', 'Noun_2_Tv(sel)+a_Genitive case,sg')] <= sela
[('sel+u', 'Noun_2_Tv(sel)+u_Genitive case,sg'), ('sel+u', 'Noun_2_Tv(sel)+u_Dative case,sg')] <= selu
[('sel+om', 'Noun_2_Tv(sel)+om_possesive case,sg')] <= selom [('sel+i', 'Noun_2_Tv(sel)+i_locative case,sg')] <= seli
[] <= sil
[('sel+am', 'Noun_2_Tv(sel)+am_dative case,pl')] <=selam
[('sel+amy','Noun_2_Tv(sel)+amy_possesive case,pl')]<=selamy [('sel+ah', 'Noun_2_Tv(sel)+ah_locative case,pl')] <= selah
При аналізі всіх словоформ слова kovalB, система розпізнала всіх граматичні форми, але через наявність помилок у файлі ukrainian.lex не всі граматичні форми були розпізнані повністю.
[('koval+B', 'Noun_2_Mj(koval)+B')] <= kovalB - Називний відм. одн.
[('koval+A', 'Noun_2_Mj(koval)+A')] <= kovalA -Родовий відм. одн.
[('koval+U', 'Noun_2_Mj(koval)+U_sg')] <= kovalU - Давальний відм. одн. [('koval+i', 'Noun_2_Mj(koval)+i')] <= kovali - Називний відм. множ.
[('koval+iv', 'Noun_2_Mj(koval)+iv_pl')] <= kovaliv -Родовий відм. множ. [('koval+Am', 'Noun_2_Mj(koval)Am')] <= kovalAm - Давальний відм. множ.
Ці словоформи розпізнані повністю:
[('koval+em', 'Noun_2_Mj(koval)+em_possesive case,sg')] <= kovalem [('koval+Amy', 'Noun_2_Mj(koval)+Amy_possesive case,pl')] <= kovalAmy [('koval+Ah', 'Noun_2_Mj(koval)+Ah_locative case,pl')] <= kovalAh
При аналізі всіх словоформ слова gorih, система не розпізнала жодного слова.
Бо в ukrainian.lex неправильно транслітеровано це слово:
N_ROOT_2_MI:
goryh AfterNoun_2_Mi Noun_2_Mi(horyH)
[] <= gorih
[] <= goriha
[] <= gorihu
[] <= gorihom
[] <= gorisi
[] <= gorihy
[] <= gorihiv
[] <= goriham
[] <= gorihamy
[] <= gorihah
При аналізі всіх словоформ слова piC, система розпізнала лише словоформу piCCU, де використалось правило подвоєння букви C (ч).
Словоформа piC не розпізналась, хоча в файлі ukrainian.lex записані правила
сполучуваності:
N_ROOT_3:
piC AfterNoun_3 Noun_3(piC)
N_ENDING_3:
+0 AfterNounEnding +0,sg
Словоформи peCi, peCej, peCam, peCamy, peCah також не були розпізнані.
Оскільки не використалось правило зміни і на р:
i to e: |
FSA
i C Ie @ e C Ie @
1: 2 1 1 1
2: 0 3 0 0 3: 0 0 1 0
Тому система не продовжувала аналіз словоформ.
[] <= peCi
[('piC+U', 'Noun_3(piC)+U_Possesive case,sg')] <= piCCU
[] <= peCej
[] <= peCam
[] <= peCamy
[] <= peCah
При аналізі всіх словоформ слова 1оSа:
Не розпізнались словоформи 1оSа, 1оSаm, 1оSаt, оскільки в файлі написані правила сполучуваності не дуже добрим чином. Обов'язково після кореня повинен йти суфікс, а потім закінчення. В деяких словах є лише корінь і суфікс, а в інших корінь і закінчення, тому не у всій словоформах це правило діє, ось чому сталась така помилка. При аналізі інших словоформ виникли проблеми такі, що в словоформі 1оSаti, не зазначено, що це іменник Д.В одн, в словоформі 1оSаta - іменник Н.В множини, а от в словоформі 1оSаtam, проаналізовано слово однаково 2 рази. Причина цих помилок - неправильне написання в файлі икгаіпіап.іех. Лише lоSаtу, 1оSаtаmу, 1оSаtah розпізнано правильно.
[('loS+at+i', 'Noun_4(loS)+at_+i_sg.')] <= loSati - Давальний відм. одн.
[('loS+at+a', 'Noun_4(loS)+at_+a_')] <= loSata - множина, називний відм.
[('loS+at+am', 'Noun_4(loS)+at_+am_'), ('loS+at+am', 'Noun_4(loS)+at_+am_')] <= loSatam
[('loS+at+y', 'Noun_4(loS)+at_+y_Genitive case,sg')] <= loSaty
[('loS+at+ah', 'Noun_4(loS)+at_+ah_locative case.pl')] <= loSatah
При аналізі всіх словоформ слова letity:
Cистема не розпізнала інфінітив, форми leCu, letyS, letytB та частково інші форми.
У файлі ukrainian.lex записано, що основою слова є «let», а суфіксом є «-ity», хоча суфіксом є «-і».
V_ROOT_PREF_1:
let AfterVerb Verb(let) - основа дієслова «летіти»
V_SUFFIX_1:
+ity AfterVerbSuffix +ity_ - суфікс до дієслова І відміни
Словоформу «leCu» система не розпізнала, хоча у ній відбулась заміна «т» на «ч» , а
правило записане у файлі ukrainian.yaml:
t to CO: | FSA
t u @
C u @ 1: 2 1 1 2: 0 1 0
Словоформи letyS, letytB, letAtB не розпізнані, хоча у файлі вказані закінчення вірні. V_ENDING_1:
AfterVerbEnding +yS_2 sg present +ytB AfterVerbEnding +ytB_3 sg present +AtB AfterVerbEnding +AtB_3 pl present
Це також пов'язано із даним суфіксом. Система додає закінчення лише, коли до основи додано суфікс, тобто до невірної форми. Це помилки у файлі ukrainian.lex. Таких форм в українській мові не існує.
let+ity+yS (Verb(let)+ity_+yS_2 sg present), let+ity+yS (Verb(let)+ity_+yS_2 sg present)
Словоформа «letily» не до кінця проаналізована, тому, що не вказана жодна особа. Хоча це 1-а, 2-а, 3-я особи множини.
[('let+i+ly', 'Verb(let)+i_ly_pl.past')
При аналізі всіх словоформ слів svystity, pysaty, tesaty, smaZyty, druZyty система не розпізнала ні одної словоформи. Причини різні, по-перше, правила сполучуваності записані, що після кореня повинен іти суфікс, а аж потім закінчення, а в деяких словах після кореня відразу йде закінчення, ось в чому причина помилки. По-друге, у деяких словах не виконались правила. По-третє, не правильно транслітеровані деякі слова. Можливо якийсь збій системи.
[] <= svystity
[] <= svyHu
[] <= svystyS
[] <= svystytB
[] <= svystymo
[] <= svystyte
[] <= svystAtB
[] <= svystiv
[] <= svystila
[] <= svystilo
[] <= svystily
[] <= svystitymu
[] <= svystitymeS
[] <= svystityme
[] <= pysaty
[] <= PySu
[] <= pySeS
[] <= PySe
[] <= PySemo
[] <= pySete
[] <= PySutB
[] <= pysav
[] <= pysala
[] <= pysalo
[] <= pysaly
[] <= pysatymu
[] <= pysatymeS
[] <= pysatyme
[] <= tesaty
[] <= teSu
[] <= teSeS
[] <= teSe
[] <= teSemo
[] <= teSete
[] <= teSutB
[] <= tesav
[] <= tesala
[] <= tesalo
[] <= tesaly
[] <= tesatymu
[] <= tesatymeS
[] <= tesatyme
[] <= smaZyty
[] <= smaZu
[] <= smaZyS
[] <= smaZutB
[] <= smaZymo
[] <= smaZyte
[] <= smaZatB
[] <= smaZyv
[] <= smaZyla
[] <= smaZylo
[] <= smaZyly
[] <= smaZytymu
[] <= smaZytymeS
[] <= smaZytyme
[] <= druZyty
[] <= druZu
[] <= druZyS
[] <= druZytB
[] <= druZymo
[] <= druZyte
[] <= druZatB
[] <= druZyv
[] <= druZyla
[] <= druZylo
[] <= druZyly
[] <= druZytymu
[] <= druZytymeS
[] <= druZytyme
При аналізі всіх словоформ слова toptaty:
Словоформа toptaty система не проаналізувала, оскільки в правилах сполучуваності повинен після кореня стояти суфікс, а потім ще закінчення, а в нашому випадку лише є корінь і суфікс.
Словоформи topCu, topCeS, topCe, topCemo, topCete, topCutB не
проаналізувались, оскільки не виконалось правила зміни t на C (т на ч). В інших словоформах, розпізнало правильно, але декілька раз написаний той самий аналіз.
[] <= toptaty
[] <= topCu
[] <= topCeS
[] <= topCe
[] <= topCemo
[] <= topCete
[] <= topCutB
[('topt+a+v', 'Verb(topt)+a_+v_sg.past'), ('topt+a+v', 'Verb(topt)+a_+v_sg.m.past'), ('topt+a+v', 'Verb(topt)+a_+v_sg.m.past'), ('topt+a+v', 'Verb(topt)+a_+v_sg.past')] <= toptav
[('topt+a+la', 'Verb(topt)+a_+la_sg.fem.past'), ('topt+a+la', 'Verb(topt)+a_+la_sg.fem.past'), ('topt+a+la', 'Verb(topt)+a_+la_sg.fem.past'), ('topt+a+la', 'Verb(topt)+a_+la_sg.fem.past')] <= toptala
[('topt+a+lo', 'Verb(topt)+a_+lo_sg'), ('topt+a+lo', 'Verb(topt)+a_+lo_sg.n.past'), ('topt+a+lo',
'Verb(topt)+a_+lo_sg.n.past'), ('topt+a+lo', 'Verb(topt)+a_+lo_sg')] <= toptalo
[('topt+a+ly', 'Verb(topt)+a_ly_pl.past'), ('topt+a+ly', 'Verb(topt)+a_+ly_pl.past'), ('topt+a+ly',
'Verb(topt)+a_+ly_pl.past'), ('topt+a+ly', 'Verb(topt)+a_+ly_pl.past')] <= toptaly
[('topt+aty+mu', 'Verb(topt)+aty_mu_sg.1 pers. future'), ('topt+aty+mu', 'Verb(topt)+aty_+mu_sg.1
pers. future'), ('topt+aty+mu', 'Verb(topt)+aty_+mu_sg.1 pers. future'), ('topt+aty+mu',
'Verb(topt)+aty_+mu_sg.1 pers. future')] <= toptatymu
[('topt+aty+meS', 'Verb(topt)+aty_+meS_sg.2 pers. future'), ('topt+aty+meS',
'Verb(topt)+aty_+meS_sg.2 pers. future'), ('topt+aty+meS', 'Verb(topt)+aty_+meS_sg.2 pers.
future'), ('topt+aty+meS', 'Verb(topt)+aty_+meS_sg.2 pers. future')] <= toptatymeS
[('topt+aty+me', 'Verb(topt)+aty_+me_sg.3 pers. future'), ('topt+aty+me', 'Verb(topt)+aty_+me_sg.3
pers. future'), ('topt+aty+me', 'Verb(topt)+aty_+me_sg.3 pers. future'), ('topt+aty+me',
'Verb(topt)+aty_+me_sg.3 pers. future')] <= toptatyme
При аналізі слова «radity» усі граматичні форми теперішнього і минулого часу є не розпізнані. У цьому слові суфікс додається лише в формах майбутнього часу. Це стало причиною того, що вони не розпізнані. Тому форма інфінітиву також під час аналізу розпізнана не була, тому що до основи радію додалось закінчення, а не суфікс.
V_ROOT_PREF_3:
radi AfterVerb Verb(radi)
V_SUFFIX_3:
+ty AfterVerbSuffix +ty_
При аналізі дієслова «byty» система не розпізнала інфінітив та форми теперішнього часу. Причиною є те, що система не розпізнала закінчення, а замість того в файлі ukrainian.lex записано до основи b_ додавання суфіксу -yty.
V_ROOT_PREF_3:
b AfterVerb Verb(b)
V_SUFFIX_3:
+yty AfterVerbSuffix +yty_
Крім того в файлі ukrainian.yaml немає правила на зміну «и» на голосні «ю», «є», «ю», хоча є правило про вживання апострофа:
0 to ': | FSA
0 Apost @ ' Apost @ 1: 2 1 1
2: 0 1 0
Словоформа «byly» не до кінця проаналізована, тому, що не вказана жодна особа. Хоча це
1-а, 2-а, 3-я особи множини.
[('b+y+ly', 'Verb(b)+y_ly_pl.past')] <= byly
При аналізі всіх граматичних форм слова «druZyty» система не розпізнала жодного слова, оскільки в файлі ukrainian.lex сама основа слова записана невірно – неправильна транслітерація слова.
V_ROOT_PREF_4:
druz AfterVerb Verb(druz)
Оцінка результатів синтезу:
Синтез всіх словоформ слова ruka:
Синтезуючи слова ruka, гиkу, rиkи, ruko, ruk, гиkаm, rukah система перевіряла їх на такі правила:
вставлення апострофа, заміна k на C (к на ч), заміна k на c (к на ц) та подвоєння букви C (ч), але жодне з цих правил не виконалось, хоча система розпізнала правила цих слів.
Синтезуючи слово rисі, система перевіряла слово на правила: вставлення апоствофа, заміна і на o (і на о), подвоєння букви C (ч), жодне з правил не виконалося.
Синтезуючи слово rикоU, система перевірила це слово на правила вставлення апострофа, заміна k на C (к на ч), заміна k на c (к на ц) та подвоєння букви C (ч), і розглянула слова, що підходять до правил вставлення апоствофа та подвоєння букви C (ч) - rико'U, гикоСU. Ця проблема виникла у зв'язку з тим, що при написанні правил не врахували, що правила можуть виконатись і в звичайних словах, які не підтримують жодних правил.
Синтез всіх словоформ слова tkalA:
При синтезі всіх граматичних форм слова tkalA система просинтезувала такі словоформи : tkalA, tkali, tkalU, tkaleU, tkale, tkalB, tkalAm, tkalAmy, tkalAh.
При синтезі словоформ система перевірила їх на правила заміна букви «к» на «ч», «к» на «ц», додавання апострофа та подвоєння букви «ч». З них застосувалось лише правило апострофа, в результаті чого система утворила форми tkal'A, tkal'U, tkale'U, tkal'Amy, tkal'Ah, а також правило додавання букви «ч» перед голосною «ю» в словоформах tkaleU, tkalU - з яких система утворила словоформи tkaleCU, tkalCU. Помилок у цьому випадку в роботі системи немає, але слів в українській мові таких також не існує. Це пов'язано з тим, що система лише використовує на словах дані їй правила. Також словоформи tkaleU, tkale перевірялись ще на правило заміни букви «е» на «і», яке теж не було застосовано.
Словоформи іменника mySa перевірялись на подвоєння букви «ч» та додавання апострофа.
При цьому це правило у словоформах mySa, mySu, mySam, mySamy, mySah не
застосувалось. Словоформ mySi перевірялась крім того на правило заміни «і» на «о», що також не виконалось.
Словоформи mySeU, mySe, mySej перевірялись на подвоєння букви «ч» та додавання апострофа, а також на заміну букви «е» на «і». Система використала правило використання букви «ч», створивши словоформи mySeCU та вставила апостроф перед голосною «ю» у словоформі mySe'U.
Помилок у цьому випадку в роботі системи немає, але слів в українській мові таких також не існує. Це пов'язано з тим, що система лише використовує на словах дані їй правила.
Синтез всіх словоформ слова selo:
Синтезуючи слова selo, sela, selu, selom, seli, sil, selam, selamy, selah
перевірялися правила заміна s на S (с на ш), вставлення апострофа та подвоєння букви C (ч), що не виконались а слова seli, sil перевірялись ще й також на правило заміна і на o (і на о). Чому не виконалось це правило в слові sil на жаль не відомо, можливо при створенні файлу ukrainian.yaml сталась помилка.
Синтез всіх словоформ слова kovalB:
Синтезуючи слова kovalB, kovalem, система перевіряла такі правила: вставлення апострофа, заміна k на C (к на ч), заміна k на c (к на ц), подвоєння букви C (ч), які знов таки не виконались.
Синтезуючи слова kovalA, kovalU, kovalAm, kovalAmy, kovalAh також слова перевірялись на ці правила, але оскільки вони підходять під правила вставлення апострофа і подвоєння букви C (ч), то система видала слова: koval'A, koval'Am, koval'Amy, koval'U, kovalCU.
Синтезуючи слова kovali, kovaliv не виконались правила вставлення апострофа, заміна k на C (к на ч), заміна k на c (к на ц), заміна і на o (і на о), подвоєння букви C (ч).
Синтез всіх словоформ слова gorih:
Синтезуючи слова gorih, goriha, gorihu, gorihom, gorisi, gorihy, gorihiv, goriham, gorihamy, gorihah перевірялись правила вставлення апострофа, заміна і на o (і на о), подвоєння букви C (ч). Крім того при синтезі слова gorisi, не використалось також правило заміна s на S (с на ш).
Синтез всіх словоформ слова piC:
При синтезі слів peCej, peCam, peCamy, peCah правила вставлення апострофа, заміна e на і (е на і), подвоєння букви C (ч) перевірялись, але не виконались. До речі слово peCi також перевірялось на ті самі правила та ще й на правило заміна і на o (і на о), але вони також не виконались.
При синтезі слів piC, piCCU не виконались правила вставлення апострофа, заміна і на o (і на о), подвоєння букви C (ч). Хоча можна сказати, що правило подвоєння букви C (ч) при синтезі слова piCCU виконались, оскільки в слові є подвоєння букви ч, і це підходить під наше правило, що ч подвоюється,коли потім стоїть буква Ю. Хоча система видала ще один результат piCC'U, але хоча такого слова не існує, правило також підходить.
Синтез всіх словоформ слова loSa:
При синтезі loSaty, loSati, loSam, loSata, loSat, loSatam, loSatamy, loSatah слів не виконалось ні одне правило з правил, на які ці слова перевірялися: вставлення апострофа, заміна e на і (е на і) та подвоєння букви C (ч).
Синтез всіх словоформ слова letity:
Синтезуючи слова letyS, letytB, letymo, letyte, letiv, letila, letilo, letily, letitymu, letitymeS,letityme система перевіряла слова на правила вставлення апострофа, заміна e на і (е на і) та подвоєння букви C (ч). Ці правила не виконались. Хоча слово leCu також перевірялось на ці правила, і також вони не виконались, але незрозуміло те, що, оскільки це слово перевірялось на ще 2 правила, то хоча б одне з правил заміни t на C (т на ч і потім буква у) або заміни t на C (т на ч і потім буква у, е або и) повинно було виконатись. Причина помилки в неправильному поданні правил в файлі ukrainian.yaml.
При синтезі слова letity не виконались жодні з перевіряючих правил, вони і не повинні були виконуватись.
При синтезі слова letAtB не виконались правила вставлення апострофа, заміна e на і (е на і) та подвоєння букви C (ч), але система, не звертається до словника, тому і видала, що правило вставлення апострофа могло виконатись. Система видала - let' AtB.
Синтез всіх словоформ слова svystity:
Жодне правило, на які перевіряли слова svystity, svyHu, svystyS, svystytB, svystymo, svystyte, svystAtB, svystiv, svystila, svystilo, svystily, svystitymu, svystitymeS, svystityme не виконалось і система зовсім не могла просинтезувати ці слова. А перевірялись слова на правила: заміна s на S (с на ш), вставлення апострофа, подвоєння букви C (ч).
Синтез всіх словоформ слова pysaty:
Синтезуючи слова pysaty, pysav, pysala, pysalo, pysaly, pysatymu, pysatymeS, pysatyme система перевіряла правила заміна s на S (с на ш), вставлення апострофа, подвоєння букви C (ч), які не виконалися.
Слова pySu, pySutB не перевірялись на правило заміни s на S (с на ш). А слова pySeS, pySe, pySemo, pySete перевірялись ще й на правило заміна e на і (е на і).
Синтез всіх словоформ слова tesaty:
Синтезуючи слова tesaty, teSu, teSeS, teSe, teSemo, teSete, teSutB, tesav, tesala, tesalo, tesaly, tesatymu, tesatymeS, tesatyme не виконались правила заміна s на S (с на ш), вставлення апострофа, заміна t на C (т на ч і потім буква у), заміна t на C (т на ч і потім буква у, е або и), заміна e на і (е на і), подвоєння букви C (ч), на які перевірялись ці слова. Не виконується правило заміни s на S (с на ш), тому що помилка в файлі ukrainian.yaml.
Синтез всіх словоформ слова toptatу:
При синтезі toptatу, toptav, toptala, toptalo, toptaly, toptatуmu, toptatу, toptatуmeS перевірялись такі 2 правила: вставлення апострофа, подвоєння букви С (ч). Жодне з них не виконалось, оскільки ці слова не потребують жодних правил.
Такі слова як topCu, topCeS, topCe, topCemo, topCete, перевірялись ще й на правило заміна е на і (е на і). Воно також не виконалось, але чому не виконались правила заміни і на С (т на ч і потім буква у) та заміни і на С (т на ч і потім буква у, е або и) для цих слів і для слова topCutB, тому що неправильно написані правила.
Синтез всіх словоформ слова гаditу:
Система перевіряла слова гаditу, гаdiU, гаdiES, гаdiE, гаdiEmo, гаdiEte, гаditу, гаdiUtB, гаdiv, гаdila, гаdilo, гаdilу, гаditуmu, гаditуmeS, radityme на такі правила: вставлення апострофа, заміна і на о (і на о), подвоєння букви С (ч), що не виконались.
Слова гаditуmeS, гаditуme перевірялись ше й на правило заміна е на і (е на і), яке також не виконалось.
Слова гаdiU, гаdiES, гаdiE, гаdiEmo, гаdiEte, гаdiUtB коли перевірялись на правила вставлення апострофа, а слова гаdiU, гаdiUtB ще й на правило подвоєння букви С (ч), система видала нові результати. при перевірці на правило вживання апострофа - radi'U, radi'ES, radi'E, radi'Emo, radi'Ete, radi'UtB. Це можна не вважати помилкою, адже правила дійсно можуть бути застосовані таким чином, хоча таких слів в українській мові не існує.
Синтез всіх словоформ слова bуtу:
Синтез словоформ byty, b’U, b'ES , b'E, b'Emo, b'Ete, b'UtB, byv, byla, bylo, byly, bytymu, bytymeS, bytyme перевіряв ці слова на правила: подвоєння букви «ч»; додавання апострофа; заміна букви «е» на «і» ( для словоформ bytymeS, bytyme).Правила не були виконані.
Слова bytymeS, bytyme перевірялись ше й на правило заміна e на і (е на і), яке також не виконалось.
Слова b'U, b'ES , b'E, b'Emo, b'Ete, b'UtB коли перевірялись на правила вставлення апострофа, а слова b'U, b'UtB ще й на правило подвоєння букви C (ч), система видала нові результати. Правило виконалось, але знов була невелика похибка. Ось ці слова - b''U, b'CU, b''ES , b''E, b''Emo, b''Ete, b''UtB, b'CUtB.
Синтез всіх словоформ слова smaZyty:
Жодне правило, на які перевіряли слова smaZyty, smaZu, smaZyS, smaZutB, smaZymo, smaZyte, smaZatB, smaZyv, smaZyla, smaZylo, smaZyly, smaZytymu, smaZytymeS, smaZytyme не виконалось і система зовсім не могла просинтезувати ці слова. А перевірялись слова на правила: заміна s на S (с на ш), вставлення апострофа, подвоєння букви C (ч).
Синтез всіх словоформ слова druZyty:
Всі слова були розпізнані синтезатором. Слова druZyty, druZu, druZyS, druZytB, druZymo, druZyte, druZatB, druZyv, druZyla, druZylo, druZyly, druZytymu, druZytymeS, druZytyme система перевіряла на правила: вставлення апострофа, подвоєння букви C (ч). Крім того слова такі як druZytymeS, druZytyme перевірялись також на правило заміни e на і (е на і).
Отже, після синтезу даних нам словоформ, можна зробити висновок, що помилки виникають через невірно написані, або взагалі не написані правила у файлі ukrainian.yaml, що і є основною причиною проблем.
Перелік правил необхідний для реалізації морфологічного аналізатора з врахуванням слів з індивідуального завдання.
Правила, записані згідно вимог програми КGEN та згенеровані стани скінченного перетворювача.