Χρήστης: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()