Χρήστης:Flubot/pagefromfile/ρηματικοί τύποι

Για την οριστική του αορίστου βλέπε Χρήστης:Flubot/pagefromfile/ρηματικοί τύποι/αόριστος

Υποτακτική και προστακτική αορίστου επεξεργασία

Πρώτο βήμα επεξεργασία

Ξεκινάμε με ένα αρχείο κειμένου που περιέχει τον ενεστώτα του ρήματος και το απαρέμφατο αορίστου. Κάτι σαν κι αυτό (το ονομάζω πχ list1):

ζεσταίνομαι;ζεσταθεί
ζεσταίνω;ζεστάνει
ζυμώνω;ζυμώσει
ζω;ζήσει

Δεύτερο βήμα επεξεργασία

Στη συνέχεια το δίνουμε στο παρακάτω πρόγραμμα με τίτλο makelist.py και με την εντολή ...

> cat list1 | ./makelist.py > list2

... και παίρνουμε ένα νέο αρχείο list2 με το εξής περιεχόμενο:

ζεσταίνομαι;ζεσταθώ;ζεσταθείς;-;ζεσταθεί;ζεσταθούμε;ζεσταθείτε;+;ζεσταθούν;-
ζεσταίνω;ζεστάνω;ζεστάνεις;-;ζεστάνει;ζεστάνουμε;ζεστάνετε;-;ζεστάνουν;ζεστάντε
ζυμώνω;ζυμώσω;ζυμώσεις;-;ζυμώσει;ζυμώσουμε;ζυμώσετε;-;ζυμώσουν;ζυμώστε
ζω;ζήσω;ζήσεις;-;ζήσει;ζήσουμε;ζήσετε;-;ζήσουν;ζήστε

Στην τρίτη γραμμή πρέπει να αλλάξω το ζυμώσεις;- σε ζυμώσεις;+ διότι το ζυμώσεις είναι και ουσιαστικό και άρα προς το παρόν ο τύπος πρέπει να παραλειφθεί. Το + μετά το β' πληθ. σημαίνει ότι εδώ έχουμε και τύπο προστακτικής ταυτόχρονα, ενώ το - ότι έχουμε μόνο υποτακτική.

Τρίτο βήμα επεξεργασία

Το τελευταίο βήμα είναι να παραχθεί το αρχείο για το pagefromfile με το πρόγραμμα rt-ypot.py:

> cat list2 | ./rt-ypot.py > wikitext.txt
> ../pywikipedia/pagefromfile.py -start:xxxx -end:yyyy -notitle -file:wikitext

makelist.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, l):
  
  l1 = l[:(len(l)-2)]
  l2 = l[(len(l)-2):]
  if l2 == u"ει":
  	s1 = l1 + u"ω"
  	s2 = l1 + u"εις"
  	p1 = l1 + u"ουμε"
  	p2 = l1 + u"ετε"
  	p3 = l1 + u"ουν"
  	pp2 = l1 + u"τε"
  	print u"%s;%s;%s;-;%s;%s;%s;-;%s;%s" % (ri,s1,s2,l,p1,p2,p3,pp2)
  else:
  	s1 = l1 + u"ώ"
  	s2 = l1 + u"είς"
  	p1 = l1 + u"ούμε"
  	p2 = l1 + u"είτε"
  	p3 = l1 + u"ούν"
  	print u"%s;%s;%s;-;%s;%s;%s;+;%s;-" % (ri,s1,s2,l,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""
	if line != "":
	    makeList(enestotas, apar)
fin.close()

rt-ypot.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,yes2,s3,p1,p2,yesp2,p3,pp2):
  arxi(s1)
  print "# (''να, ας, αν, ίσως κλπ'') {{ρημ τύπος|α' ενικό [[Παράρτημα:Ρηματικοί τύποι (ελληνικά)#Υποτακτική|υποτακτικής]] αορίστου|%s}}" % (ri)
  print "# '''θα {{subst:PAGENAME}}''': {{ρημ τύπος|α' ενικό οριστικής στιγμιαίου μέλλοντα|%s}}" % (ri)
  telos(s1)
  if yes2 == u"-":
    arxi(s2)
    print "# (''να, ας, αν, ίσως κλπ'') {{ρημ τύπος|β' ενικό [[Παράρτημα:Ρηματικοί τύποι (ελληνικά)#Υποτακτική|υποτακτικής]] αορίστου|%s}}" % (ri)
    print "# '''θα {{subst:PAGENAME}}''': {{ρημ τύπος|β' ενικό οριστικής στιγμιαίου μέλλοντα|%s}}" % (ri)
    telos(s2)
  arxi(s3)
  print "# {{ρημ τύπος|[[Παράρτημα:Ρηματικοί τύποι (ελληνικά)#Απαρέμφατο αορίστου|απαρέμφατο αορίστου]]|%s}}" % (ri)
  print "# (''να, ας, αν, ίσως κλπ'') {{ρημ τύπος|γ' ενικό [[Παράρτημα:Ρηματικοί τύποι (ελληνικά)#Υποτακτική|υποτακτικής]] αορίστου|%s}}" % (ri)
  print "# '''θα {{subst:PAGENAME}}''': {{ρημ τύπος|γ' ενικό οριστικής στιγμιαίου μέλλοντα|%s}}" % (ri)
  telos(s3)
  arxi(p1)
  print "# (''να, ας, αν, ίσως κλπ'') {{ρημ τύπος|α' πληθυντικό [[Παράρτημα:Ρηματικοί τύποι (ελληνικά)#Υποτακτική|υποτακτικής]] αορίστου|%s}}" % (ri)
  print "# '''θα {{subst:PAGENAME}}''': {{ρημ τύπος|α' πληθυντικό οριστικής στιγμιαίου μέλλοντα|%s}}" % (ri)
  telos(p1)
  arxi(p3)
  print "# (''να, ας, αν, ίσως κλπ'') {{ρημ τύπος|γ' πληθυντικό [[Παράρτημα:Ρηματικοί τύποι (ελληνικά)#Υποτακτική|υποτακτικής]] αορίστου|%s}}" % (ri)
  print "# '''θα {{subst:PAGENAME}}''': {{ρημ τύπος|γ' πληθυντικό οριστικής στιγμιαίου μέλλοντα|%s}}" % (ri)
  telos(p3)
  arxi(p2)
  print "# (''να, ας, αν, ίσως κλπ'') {{ρημ τύπος|β' πληθυντικό [[Παράρτημα:Ρηματικοί τύποι (ελληνικά)#Υποτακτική|υποτακτικής]] αορίστου|%s}}" % (ri)
  print "# '''θα {{subst:PAGENAME}}''': {{ρημ τύπος|β' πληθυντικό οριστικής στιγμιαίου μέλλοντα|%s}}" % (ri)  
  if yesp2 == u"+":
    print "# {{ρημ τύπος|β' πληθυντικό [[προστακτική]]ς αορίστου|%s}}" % (ri)
  telos(p2)
  if pp2 != u"-":
    arxi(pp2)
    print "# {{ρημ τύπος|β' πληθυντικό [[προστακτική]]ς αορίστου|%s}}" % (ri)
    telos(pp2)
    
  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""
	b2 = rima[3] + u""
	e3 = rima[4] + u""
	pl1 = rima[5] + u""
	pl2 = rima[6] + u""
	b3 = rima[7] + u""
	pl3 = rima[8] + u""
	pr2 = rima[9] + u""
	apar = rima[1] + u""
	if line != "":
	    makeEntries(enestotas,e1,e2,b2,e3,pl1,pl2,b3,pl3,pr2)
fin.close()