Χρήστης:Flubot/pagefromfile/ρηματικοί τύποι/αόριστος
Για την υποτακτική του αορίστου βλέπε Χρήστης:Flubot/pagefromfile/ρηματικοί τύποι
Οριστική αορίστου
επεξεργασίαΠρώτο βήμα
επεξεργασίαΞεκινάμε με το ίδιο αρχείο κειμένου που χρησιμοποιήσαμε για την υποτακτική και το οποίο περιέχει τον ενεστώτα του ρήματος και το απαρέμφατο αορίστου. Κάτι σαν κι αυτό (το ονομάζω πχ list1):
ζεσταίνομαι;ζεσταθεί ζεσταίνω;ζεστάνει ζυμώνω;ζυμώσει ζω;ζήσει
Δεύτερο βήμα
επεξεργασίαΣτη συνέχεια το δίνουμε στο παρακάτω πρόγραμμα με τίτλο make-aor.py και με την εντολή ...
> cat list1 | ./make-aor.py > list2
... και παίρνουμε ένα νέο αρχείο list2 με το εξής περιεχόμενο:
ζεσταίνομαι;ζεσταθεί;ζεστάθηκα ζεσταίνω;ζεστάνει;ζέστανα ζυμώνω;ζυμώσει;ζύμωσα ζω;ζήσει;έζησα
Προσοχή:: Πρέπει οπωσδήποτε να ελέγξουμε με προσοχή το list2 και να διορθώσουμε με το χέρι τα αναπόφευκτα λάθη. Πχ το πρόγραμμα θα μετατρέψει το απαρέμφατο βρει σε αόριστο βρ*****, το παραμείνει σε παράμεινα και το λογαριάσει σε λογαρίασα, που πρέπει να τα διορθώσουμε σε βρήκα, παρέμεινα και λογάριασα αντιστοίχως.
Τρίτο βήμα
επεξεργασίαΔίνουμε το list2 στο πρόγραμμα με τίτλο makelist-aor.py και με την εντολή ...
> cat list1 | ./makelist-aor.py > list3
... και παίρνουμε ένα νέο αρχείο list3 με το εξής περιεχόμενο:
ζεσταίνομαι;ζεστάθηκα;ζεστάθηκες;ζεστάθηκε;-;ζεσταθήκαμε;ζεσταθήκατε;ζεστάθηκαν;- ζεσταίνω;ζέστανα;ζέστανες;ζέστανε;+;ζεστάναμε;ζεστάνατε;ζέσταναν;- ζυμώνω;ζύμωσα;ζύμωσες;ζύμωσε;+;ζυμώσαμε;ζυμώσατε;ζύμωσαν;- ζω;έζησα;έζησες;έζησε;-;ζήσαμε;ζήσατε;έζησαν;ζήσε
Το σημείο "+" μετά το τρίτο ενικό δηλώνει ότι αυτό είναι ταυτόχρονα και β' ενικό προστακτικής, όπως στο ζύμωσε. Το "-" δηλώνει ότι είναι μόνο γ' ενικό οριστικής, όπως το έζησε ή το ζεστάθηκε. Σε αυτή την περίπτωση, η τελευταία λέξη της γραμμής είναι η προστακτική (πχ ζήσε) ή η παύλα.
Προσοχή:: Πρέπει οπωσδήποτε να ελέγξουμε με προσοχή το list3 και να διορθώσουμε με το χέρι τα πιθανά λάθη στα + και -.
Τέταρτο βήμα
επεξεργασίαΤο τελευταίο βήμα είναι να παραχθεί το αρχείο για το pagefromfile με το πρόγραμμα rt-aor.py:
> cat list3 | ./rt-aor.py > wikitext.txt > ../pywikipedia/pagefromfile.py -start:xxxx -end:yyyy -notitle -file:wikitext.txt
make-aor.py
επεξεργασία#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, re, codecs
reload(sys)
sys.setdefaultencoding('utf-8')
riza = re.compile(u'(.*)')
kl_atona = u"α ι ο ε η υ ω ϊ ϋ"
kl_tonismena= u"ά ί ό έ ή ύ ώ ΐ ΰ"
atona = kl_atona.split(u' ')
tonismena = kl_tonismena.split(u' ')
tonoumena = {}
for i in range(len(tonismena)):
tonoumena[tonismena[i]]=1
mitonoumena = {}
for i in range(len(atona)):
mitonoumena[atona[i]]=1
def seatono(sort):
for i in range(len(tonismena)):
sort = sort.replace(tonismena[i], atona[i])
return sort
def setonismeno(sort):
for i in range(len(atona)):
sort = sort.replace(atona[i], tonismena[i])
return sort
def Tonos(lexi):
lexi = lexi[::-1]
foundaccent = False
foundatono = False
i=0
while not foundaccent and (i < len(lexi)):
if lexi[i] in tonoumena:
foundaccent=True
if (lexi[i] == u"ί") or (lexi[i] == u"ύ"):
if (lexi[i+1] == u"ε") or (lexi[i+1] == u"α") or (lexi[i+1] == u"ο"):
lexi1 = lexi[:(i+2)]
lexi2 = lexi[(i+2):]
else :
lexi1= lexi[:(i+1)]
lexi2 = lexi[(i+1):]
else:
lexi1= lexi[:(i+1)]
lexi2 = lexi[(i+1):]
i = i+1
if not foundaccent:
lexi = lexi[::-1] + "****"
return lexi
lexi1 = seatono(lexi1)
i=0
foundatono = False
while not foundatono and (i < len(lexi2)):
if lexi2[i] in mitonoumena:
foundatono=True
lexi3 = lexi2[(i+1):]
lexi_m = setonismeno(lexi2[:(i+1)])
i = i+1
if not foundatono:
lexi = lexi1 + lexi2 + u"έ"
return lexi[::-1]
else:
lexi4= lexi1 + lexi_m +lexi3
return lexi4[::-1]
def makeList(ri, l):
l1 = l[:(len(l)-2)]
l2 = l[(len(l)-2):]
if l2 == u"ει":
l0 = Tonos(l1)
aoristos = l0 + u"α"
else:
l0 = Tonos(l)
aoristos = l0[:(len(l0)-2)] + u"ηκα"
print "%s;%s;%s" % (ri, l, aoristos)
return 1
eof = 0
fin = sys.stdin
while not eof:
grammi = fin.readline()
if grammi == "":
eof = 1
else:
line0 = riza.search(grammi)
line = line0.group(1)
rima = line.split(';')
enestotas = rima[0] + u""
apar = rima[1] + u""
if line != "":
makeList(enestotas, apar)
fin.close()
makelist-aor.py
επεξεργασία#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, re
reload(sys)
sys.setdefaultencoding('utf8')
riza = re.compile(u'(.*)')
eof=0
fin = sys.stdin
def makeList(ri, ap, aor):
m1 = ap[:(len(ap)-2)]
m2 = ap[(len(ap)-2):]
if m2 == u"ει":
l1 = aor[:(len(aor)-1)]
s2 = l1 + u"ες"
s3 = l1 + u"ε"
p1 = m1 + u"αμε"
p2 = m1 + u"ατε"
p3 = l1 + u"αν"
if aor[0] == u"έ":
b = "-"
ps2 = m1 + u"ε"
else:
b = "+"
ps2 = "-"
print u"%s;%s;%s;%s;%s;%s;%s;%s;%s" % (ri,aor,s2,s3,b,p1,p2,p3,ps2)
else:
l1 = aor[:(len(aor)-3)]
s2 = l1 + u"ηκες"
s3 = l1 + u"ηκε"
p1 = m1 + u"ήκαμε"
p2 = m1 + u"ήκατε"
p3 = l1 + u"ηκαν"
print u"%s;%s;%s;%s;-;%s;%s;%s;-" % (ri,aor,s2,s3,p1,p2,p3)
return 1
while not eof:
grammi = fin.readline()
if grammi == "":
eof = 1
else:
line0 = riza.search(grammi)
line = line0.group(1)
rima = line.split(';')
enestotas = rima[0] + u""
apar = rima[1] + u""
aoristos = rima[2] + u""
if line != "":
makeList(enestotas, apar, aoristos)
fin.close()
rt-aor.py
επεξεργασία#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, re
reload(sys)
sys.setdefaultencoding('utf8')
riza = re.compile(u'(.*)')
eof=0
fin = sys.stdin
kl_apo = u'ς ά ό ί ή έ ώ ύ ϊ ϋ ΐ ΰ'
kl_se = u'σ α ο ι η ε ω υ ι υ ι υ'
klapo = kl_apo.split(u' ')
klse = kl_se.split(u' ')
riza = re.compile(u'(.*)')
eof=0
def sortkey(sort):
for i in range(len(klapo)):
sort = sort.replace(klapo[i], klse[i])
return sort
def arxi(k):
print "xxxx"
print "'''%s'''" % (k)
print "=={{-el-}}==\n\n==={{μορφή ρήματος|el}}===\n'''{{PAGENAME}}'''"
return 1
def telos(k):
print "\n{{κλείδα ταξινόμησης|%s}}" % (sortkey(k))
print "yyyy"
return 1
def makeEntries(ri,s1,s2,s3,yes,p1,p2,p3,ps2):
if s1 != u"-":
arxi(s1)
print "# {{ρημ τύπος|γ' ενικό [[οριστική]]ς αορίστου|%s}}" % (ri)
telos(s1)
if s2 != u"-":
arxi(s2)
print "# {{ρημ τύπος|β' ενικό [[οριστική]]ς αορίστου|%s}}" % (ri)
telos(s2)
if s3 != u"-":
arxi(s3)
print "# {{ρημ τύπος|γ' ενικό [[οριστική]]ς αορίστου|%s}}" % (ri)
if yes == u"+":
print "# {{ρημ τύπος|β' ενικό [[προστακτική]]ς αορίστου|%s}}" % (ri)
telos(s3)
if p1 != u"-":
arxi(p1)
print "# {{ρημ τύπος|α' πληθυντικό [[οριστική]]ς αορίστου|%s}}" % (ri)
telos(p1)
if p2 != u"-":
arxi(p2)
print "# {{ρημ τύπος|β' πληθυντικό [[οριστική]]ς αορίστου|%s}}" % (ri)
telos(p2)
if p3 != u"-":
arxi(p3)
print "# {{ρημ τύπος|γ' πληθυντικό [[οριστική]]ς αορίστου|%s}}" % (ri)
telos(p3)
if ps2 != u"-":
arxi(ps2)
print "# {{ρημ τύπος|β' ενικό [[προστακτική]]ς αορίστου|%s}}" % (ri)
telos(ps2)
return 1
while not eof:
grammi = fin.readline()
if grammi == "":
eof = 1
else:
line0 = riza.search(grammi)
line = line0.group(1)
rima = line.split(';')
enestotas = rima[0] + u""
e1 = rima[1] + u""
e2 = rima[2] + u""
e3 = rima[3] + u""
b = rima[4] + u""
pl1 = rima[5] + u""
pl2 = rima[6] + u""
pl3 = rima[7] + u""
pr2 = rima[8] + u""
if line != "":
makeEntries(enestotas,e1,e2,e3,b,pl1,pl2,pl3,pr2)
fin.close()