def et_sõnadearv(): import string sql = """with essa as (select count(token) AS et from (select unnest(regexp_matches(w.lause, E'\\\\S+','g')) as token from wilaused_et as w ) as tokens) select sum(et) as et from essa; """ for r in s.sqle(d.n, sql): return (r['et'])
def süntaks(tõlkenumber, lähtekeel, sihtkeel, viis): import rutiinid as r import time nimisõna = tõlgitulemus = "" sõnad = [] indeks = [] krammar = [] klass = [] for r in s.sqle(d.n, db.valikõiksõnad(tõlkenumber)): algus = time.time() # loetakse grammar sisse # tegelikult loetakse kogu staaf sisse, et hakata modelleerima sõna = r['lsõ'] pid = r['id'] grammar = r['lkl'] klaß = r['lgr'] sõnad.append(sõna) indeks.append(pid) krammar.append(grammar) klass.append(klaß) # grammaris peab olema kirjas VB. # kui VB, siis kas 1) olema; 2) omama; 3) muu # kui olema, siis vaadatakse aega ja arvu. # sihtsõna tõlkimisse peab "olema" korral arvu arvestatama # tuleb teha kolmemõõtlemine massiiv... if viis == 'wwwdebug' or viis == 'käsurida': print(sõnad) print(indeks) print(krammar) print(klass)
def otsi2(sona, x): import re h.kr("<h4>Tulemused:</h4>") h.k("Sõna oli: \"") h.k(sona) h.kr("\"") sona2 = re.escape(sona) sona = sona.replace("\'", "\\''") if (x == '1'): sone = """SELECT e.id AS eid, e.nr AS enr, e.lausenr AS elnr, e.lause AS el, v.lause AS vl FROM wilaused_et e, wilaused_vro v WHERE e.lause ilike '%%%s%%' AND e.nr=v.nr AND v.lausenr=e.lausenr ORDER BY enr,elnr;""" % sona elif (x == '2'): sone = """SELECT e.id AS eid, e.nr AS enr, e.lausenr AS elnr, e.lause AS el, v.lause AS vl FROM wilaused_et e, wilaused_vro v WHERE v.lause ilike '%%%s%%' AND e.nr=v.nr AND v.lausenr=e.lausenr ORDER BY enr,elnr;""" % sona else: h.kr("Keelevalik puudus?") h.tabel_a() h.tr_l() h.td("töö nr", 'd') h.td("lause nr", 'd') h.td("lause", 'd') h.td("lause", 'd') h.tr_l() for r in s.sqle(d.n, sone): h.tr_l() enr = str(r['enr']) viide = "wi.py?z=vati&nr=" + enr h.atd('aeg r', viide, enr) elnr = str(r['elnr']) viide2 = "wi.py?z=val&tnr=" + elnr + "&lnr=" + enr h.atd('aeg r', viide2, elnr) h.td(r['el'], 'd') h.td(r['vl'], 'd') h.tr_l() h.tabel_l()
def sihtkeelde(tõlkenumber,lähtekeel,sihtkeel,viis): import rutiinid as r import time nimisõna = tõlgitulemus = "" for r in s.sqle(d.n,db.valitõlkesõnad(tõlkenumber)): algus = time.time() sõna = r['lsõ']; pid = r['id'] genereerisõna(lähtekeel,sihtkeel,pid)
def vroet(): sql = """SELECT võro,eesti FROM võru_eesti_sõnaraamat ORDER BY võro,eesti;""" h.tabel_a() h.kr("<tr><td>Võro</td><td>Eesti</td></tr>") for r in s.sqle(d.n, sql): h.tr_a() h.td(r['võro'], 'd') h.td(r['eesti'], 'd') h.tr_l() h.tabel_l()
def etvro(): sql = """SELECT eesti,võro FROM eesti_võru_sõnaraamat ORDER BY eesti,võro;""" h.tabel_a() h.kr("<tr><td>Eesti</td><td>Võro</td></tr>") for r in s.sqle(d.n, sql): h.tr_a() h.td(r['eesti'], 'd') h.td(r['võro'], 'd') h.tr_l() h.tabel_l()
def vro_en_koik(): sql = """SELECT vro,en from vro_en order by vro,en ;""" #sql = """SELECT COUNT(nr) AS palju, nr,om,os FROM käändsõnad_vro GROUP BY nr,om,os ORDER BY nr,palju DESC ;;""" h.tabel_a() h.kr("<tr><td>vro</td><td>en</td></tr>") for r in s.sqle(d.n, sql): h.tr_a() h.td(r['vro'], 'd') h.td(r['en'], 'd') h.tr_l() h.tabel_l()
def vaataallikaid(): sql = "SELECT * FROM wiallikas;" h.tabel_a() for r in s.sqle(d.n, sql): h.tr_l() h.td(r['nimi_et'], 'd') h.td(r['kirjeldus_et'], 'd') h.td(r['nimi_vro'], 'd') h.td(r['kirjeldus_vro'], 'd') h.tr_l() h.tabel_l()
def sõnetatekst(tõlkenumber): """Võtab DB'st (tõlkelause) lause ja tokeniseerib/sõnetab.""" import string, re for index, r in enumerate(s.sqle(d.n, db.tükeldatekst(tõlkenumber))): lause = r['lähtejutt'] for index, sõna in enumerate(toki(lause)): sõnanr = str(index + 1) lipp = sõna[0] sõna = sõna[1] sõna = sõna.replace("'", r"\''") s.sqli(d.n, db.toge(tõlkenumber, sõnanr, sõna, lipp))
def tprojektid(): sql = """SELECT * FROM tõlkelause where (lke='et' and ske='vro') or (lke='vro' and ske='et') ORDER BY pro DESC;""" h.kr("<br>Projektid") h.tabel_a() h.kr("<tr><td>ID</td><td>Sõna</td><td>homograaf</td></tr>") for r in s.sqle(d.n, sql): h.tr_a() h.td(r['pro'], 'd') h.td(r['lähtelause'], 'd') h.td(r['sihtlause'], 'd') h.tr_l() h.tabel_l()
def tõlgisõna(tõlkenumber,lähtekeel,sihtkeel,viis): import rutiinid as r import time nimisõna = tõlgitulemus = "" for r in s.sqle(d.n,db.valitõlkesõnad(tõlkenumber)): algus = time.time() sõna = r['lsõ']; pid = r['id'] tõlgitulemus = sõnavõrdlus(tõlkenumber,lähtekeel,sihtkeel,sõna,pid,'snv0') if tõlgitulemus != 0: lõpp = time.time() - algus if viis == "wwwdebug": h.k("<tr><td>....") h.k(sõna) h.k("</td><td>") h.k(lõpp) h.k("</td></tr>") continue if len(sõna) < 4: # tundmatuid alla neljatähelisi sõnu pole mõtet tüvi+lõpp # rutiinidesse saata, peale tüve lõppu ära ei mahu continue # siia kontroll, kas sõna om üldse õnnõ suure tähega, vai om egäl puul väiko tähega sõna = sõna.lower() tõlgitulemus = sõnavõrdlus(tõlkenumber,lähtekeel,sihtkeel,sõna,pid,'snv1') if tõlgitulemus != 0: continue # analüüsib grammarit, aga tulemuse väljastab siis, kui saab võrukeelse lõppsõna, seega osa tööd mõtetult kaob tõlgitulemus = lihttõlge_erinditest(tõlkenumber,sõna,pid,lähtekeel,sihtkeel) if tõlgitulemus != 0: lõpp = time.time() - algus if viis == "wwwdebug": h.k("<tr><td>....") h.k(sõna) h.k("</td><td>") h.k(lõpp) h.k("</td></tr>\n\r<tr>") continue # see osa on aeglane, võiks optimeerida leialõpuliited(sõna,lähtekeel,pid,'lll') # siia vahele ülejäänud arendus, kus kontrollitakse mitmetüve # võimalust, kui lõpud on olemas, aga ühtegi tüve kätte ei saadud tüvekontroll(sihtkeel,pid) tõlgilõpuliited(lähtekeel,sihtkeel,pid) # veelkord :))) tüvekontroll(sihtkeel,pid) lõpp = time.time() - algus if viis == "wwwdebug": h.k("<tr><td>....") h.k(sõna) h.k("</td><td>") h.k(lõpp) h.k("</td></tr>\n\r<tr>")
def yhesugusedkaandelopud(): h.h3('Ühesugused käändelõpud') sql = """SELECT COUNT(nr) AS palju, nr,om,os FROM käändsõnad_vro GROUP BY nr,om,os ORDER BY nr,palju DESC ;;""" h.tabel_a() h.kr("<tr><td>palju</td><td>nr</td><td>om</td><td>os</td></tr>") for r in s.sqle(d.n, sql): h.tr_a() h.td(r['palju'], 'd') h.td(r['nr'], 'd') h.td(r['om'], 'd') h.td(r['os'], 'd') h.tr_l() h.tabel_l()
def kaanded(): h.h3('Käänded') sql = """SELECT nr,nim,om,os from käändsõnad_vro ORDER BY nim,om,os;""" h.tabel_a() h.kr("<tr><td>nr</td><td>nim</td><td>om</td><td>os</td></tr>") for r in s.sqle(d.n, sql): h.tr_a() h.td(r['nr'], 'd') h.td(r['nim'], 'd') h.td(r['om'], 'd') h.td(r['os'], 'd') h.tr_l() h.tabel_l()
def vaatateksti(nr): h.k("<h4>Tekst nr: ") h.a(nr) h.kr("</h4>") sql = "SELECT et.lausenr AS nr, et.lause AS etlause, vro.lause AS vrolause FROM wilaused_et et, wilaused_vro vro WHERE et.nr='%s' AND vro.nr='%s' AND et.lausenr=vro.lausenr ORDER BY et.lausenr;" % ( nr, nr) h.tabel_a() for r in s.sqle(d.n, sql): h.tr_l() h.td(r['nr'], 'd') h.td(r['etlause'], 'd') h.td(r['vrolause'], 'd') h.tr_l() h.tabel_l()
def puhasvro(): sql = """SELECT * FROM puhas_vro ORDER BY sõna,hg;""" h.kr( "<br>Iva ID on ivasõnaraamatu rea ID, mille abil saab sõnu tagasisiduda" ) h.tabel_a() h.kr("<tr><td>ID</td><td>Sõna</td><td>homograaf</td></tr>") for r in s.sqle(d.n, sql): h.tr_a() h.td(r['iid'], 'd') h.td(r['sõna'], 'd') h.td(r['hg'], 'd') h.tr_l() h.tabel_l()
def kaandeloppuderuhmad(): h.h3('Käändelõppude rühmad') sql = """with algus as (select count(nr) as mitu, nr as käändk,om as omastav,os as osastav from käändsõnad_vro group by nr,om,os order by nr,mitu desc) select mitu,käändk,omastav,osastav from algus where mitu > 1 order by omastav,osastav;""" h.tabel_a() h.kr( "<tr><td>sõnadearv</td><td>käändkonna nr</td><td>omastav</td><td>osastav</td></tr>" ) for r in s.sqle(d.n, sql): h.tr_a() h.td(r['mitu'], 'd') h.td(r['käändk'], 'd') h.td(r['omastav'], 'd') h.td(r['osastav'], 'd') h.tr_l() h.tabel_l()
def vaatalauset(lnr, tnr): h.k("Töö nr: ") h.a(tnr) h.k(" Lause nr: ") h.a(lnr) h.kr(".") vlnr = int(lnr) - 2 slnr = int(lnr) + 2 sql = "SELECT et.lausenr AS nr, et.lause AS etlause, vro.lause AS vrolause FROM wilaused_et et, wilaused_vro vro WHERE et.nr='%s' AND vro.nr='%s' AND et.lausenr=vro.lausenr AND et.lausenr >= '%s' and et.lausenr <= '%s' ORDER BY et.lausenr;" % ( tnr, tnr, vlnr, slnr) h.tabel_a() for r in s.sqle(d.n, sql): h.tr_l() h.td(r['nr'], 'd') h.td(r['etlause'], 'd') h.td(r['vrolause'], 'd') h.tr_l() h.tabel_l()
def lopylausõstaminy(tõlkenumber): """Loeb tõlketõlkenumberist kogu teksti ja jagab osalauseteks""" # XXX Paremini saab seda teha siis, kui teha süntaksianalüüsiga koos -> # XXX järelikult tuleks seda osa hilisemaks tõsta # XXX A edimält tulõ-õks punkti ni koma kotussõ päält är' lausõsta, selle et # XXX muido tulõ suurõ möla päält katssata sõnna lauseh. # XXX peräh tulõ nummõrtiisi lihtsahe ümbre nõsta osalausenr = lausenr = sõnanr = osasõnanr = 1 for index,r in enumerate(s.sqle(d.n,db.sõnadsõnanumbrikaupa(tõlkenumber))): s.sqli(d.n,db.nummerdasõnadlausetes(sõnanr,osasõnanr,lausenr,osalausenr,r['id'],r['tasn'])) if (r['lsõ'] == ',') or (r['lsõ'] == ':') or (r['lsõ'] == ';'): # XXX kui punkt, koma või koolon on sõna sees, nagu arv, MAC-aadress, jne. osalausenr += 1 osasõnanr = 0 elif (r['lsõ'] == '.') or (r['lsõ'] == '?') or (r['lsõ'] == '!'): lausenr += 1 sõnanr = 0 osasõnanr = 0 osalausenr = 1 sõnanr += 1 osasõnanr += 1
def vaatatekste(): sql = """SELECT t.nr AS tnr,t.allikas AS tallikas,t.nimi_et AS etnimi,t.kirjeldus_et AS etkirjeldus, t.kirjeldus_vro AS vrokirjeldus, t.nimi_vro AS vro_nimi, a.kirjeldus_et AS akirjeldus FROM witekst t, wiallikas a WHERE t.allikas=a.id ORDER BY t.nr;""" h.tabel_a() h.tr_l() h.td("allikas", 'd') h.td("nr", 'd') h.td("eesti", 'd') h.td("võru", 'd') h.tr_l() for r in s.sqle(d.n, sql): h.tr_l() h.td(r['akirjeldus'], 'd') nr = str(r['tnr']) viide = "wi.py?z=vati&nr=" + nr h.atd('aeg r', viide, nr) h.td(r['etkirjeldus'], 'd') h.td(r['vrokirjeldus'], 'd') h.tr_l() h.tabel_l()
def valitõlge(tõlkenumber,viis): tekst = tõlgitudtekst = "" s.sqli(d.n,db.vormikutestsõnadesse(tõlkenumber)) päring = db.valiparalleeltõlge(tõlkenumber) #s.sqli(d.n,db.ennetõlget(tõlkenumber)) if viis == "www" or viis == "wwwdebug": h.k(" <td>") for index,r in enumerate(s.sqle(d.n,päring)): if (r['tõlge'] == '.') or (r['tõlge'] == ',') or (r['tõlge'] == '!') or (r['tõlge'] == '?'): tõlgitudtekst = tõlgitudtekst + r['tõlge'] else: if r['tõlge'] == None: tõlge = '' elif r['tõlge'] == 'None': tõlge = '' else: tõlge = r['tõlge'] tõlgitudtekst = tõlgitudtekst + " " + tõlge print(tõlgitudtekst) if viis == "www" or viis == "wwwdebug": h.kr("</td>") s.sqli(d.n,db.tõlkelausessetõlgejuurde(tõlgitudtekst,tõlkenumber))
def otsi3(sona, x): import re h.kr("<h4>Tulemused:</h4>") h.k("Sõne oli: \"") h.k(sona) h.kr("\"") sona = sona.split(' ') if (x == '3'): sone = """SELECT e.id AS eid, e.nr AS enr, e.lausenr AS elnr, e.lause AS el, v.lause AS vl FROM wilaused_et e, wilaused_vro v WHERE e.lause ~ ANY(ARRAY %s ) AND e.nr=v.nr AND v.lausenr=e.lausenr ORDER BY enr,elnr;""" % sona elif (x == '4'): sone = """SELECT e.id AS eid, e.nr AS enr, e.lausenr AS elnr, e.lause AS el, v.lause AS vl FROM wilaused_et e, wilaused_vro v WHERE v.lause ~ ANY(ARRAY %s ) AND e.nr=v.nr AND v.lausenr=e.lausenr ORDER BY enr,elnr;""" % sona elif (x == '5'): sone = """ WITH essa AS (SELECT e.id AS eid, e.nr AS enr, e.lausenr AS elnr, e.lause AS el, v.lause AS vl, CHAR_LENGTH(e.lause) AS epikk FROM wilaused_et e, wilaused_vro v WHERE e.lause ~ ANY(ARRAY %s ) AND e.nr=v.nr AND v.lausenr=e.lausenr ORDER BY enr,elnr), tessa AS ( SELECT regexp_split_to_table(el, E'\\\\s+') AS esõna,epikk,eid,enr,elnr FROM ESSA), kossa AS ( SELECT esõna,epikk,eid,enr,elnr FROM tessa WHERE esõna ~ ANY(ARRAY %s )), nessa AS ( SELECT COUNT(esõna) AS korda, epikk,enr,elnr FROM kossa GROUP BY epikk,enr,elnr ORDER BY korda DESC,epikk) SELECT e.lause AS el, v.lause AS vl,epikk,korda,enr,elnr from nessa n,wilaused_et e, wilaused_vro v WHERE enr=e.nr AND elnr=e.lausenr AND e.nr=v.nr AND v.lausenr=e.lausenr AND enr=v.nr AND elnr=v.lausenr ORDER BY korda DESC,epikk ;""" % ( sona, sona) elif (x == '6'): sone = """ WITH essa AS (SELECT e.id AS eid, e.nr AS enr, e.lausenr AS elnr, e.lause AS el, v.lause AS vl, CHAR_LENGTH(e.lause) AS epikk FROM wilaused_et e, wilaused_vro v WHERE v.lause ~ ANY(ARRAY %s ) AND e.nr=v.nr AND v.lausenr=e.lausenr ORDER BY enr,elnr), tessa AS ( SELECT regexp_split_to_table(vl, E'\\\\s+') AS vsõna,epikk,eid,enr,elnr FROM ESSA), kossa AS ( SELECT vsõna,epikk,eid,enr,elnr FROM tessa WHERE vsõna ~ ANY(ARRAY %s )), nessa AS ( SELECT COUNT(vsõna) AS korda, epikk,enr,elnr FROM kossa GROUP BY epikk,enr,elnr ORDER BY korda DESC,epikk) SELECT e.lause AS el, v.lause AS vl,epikk,korda,enr,elnr FROM nessa n,wilaused_et e, wilaused_vro v WHERE enr=e.nr AND elnr=e.lausenr AND e.nr=v.nr AND v.lausenr=e.lausenr AND enr=v.nr AND elnr=v.lausenr ORDER BY korda DESC,epikk ;""" % ( sona, sona) else: h.kr("Keelevalik puudus?") h.tabel_a() h.tr_l() h.td("töö nr", 'd') h.td("lause nr", 'd') h.td("lause", 'd') h.td("lause", 'd') h.tr_l() for r in s.sqle(d.n, sone): h.tr_l() enr = str(r['enr']) viide = "wi.py?z=vati&nr=" + enr h.atd('aeg r', viide, enr) elnr = str(r['elnr']) viide2 = "wi.py?z=val&tnr=" + elnr + "&lnr=" + enr h.atd('aeg r', viide2, elnr) if (x == '3'): kogulause = r['el'] elif (x == '4'): kogulause = r['vl'] elif (x == '5'): kogulause = r['el'] elif (x == '6'): kogulause = r['vl'] for i in sona: kogulause = kogulause.replace( i, "<font color=\"blue\">" + i + "</font>") if (x == '3'): h.td(kogulause, 'd') h.td(r['vl'], 'd') elif (x == '4'): h.td(kogulause, 'd') h.td(r['el'], 'd') elif (x == '5'): h.td(kogulause, 'd') h.td(r['vl'], 'd') h.td(r['korda'], 'd') h.td(r['epikk'], 'd') elif (x == '6'): h.td(kogulause, 'd') h.td(r['el'], 'd') h.td(r['korda'], 'd') h.td(r['epikk'], 'd') h.tr_l() h.tabel_l()
def witekstidearv(): sql = "SELECT max(nr) AS summa FROM witekst;" for r in s.sqle(d.n, sql): return (r['summa'])
def vro_sõnadearv(): sql = """with essa as (select count(token) AS vro from (select unnest(regexp_matches(w.lause, E'\\\\S+','g')) as token from wilaused_vro as w ) as tokens) select sum(vro) as vro from essa ;""" for r in s.sqle(d.n, sql): return (r['vro'])
def sõnaka3_sõnnuarv(): sql = """select count(*) as sum from dikt4_vro_et;""" for r in s.sqle(d.n, sql): return (r['sum'])
def otsintl2(sona, x): import re h.kr("<h4>Tulemused:</h4>") h.k("Sõne oli: \"") h.k(sona) h.kr("\"") sona = sona.split(' ') if (x == '3'): sone = """SELECT i,id,et,vro,nr FROM sõ_eevro_laused WHERE et ~ ANY(ARRAY %s ) ORDER BY i,nr;""" % sona elif (x == '4'): sone = """SELECT i,id,et,vro,nr FROM sõ_eevro_laused WHERE vro ~ ANY(ARRAY %s ) ORDER BY i,nr;""" % sona elif (x == '5'): sone = """ with essa as (select i,id,et,vro,nr,CHAR_LENGTH(et) as ep FROM sõ_eevro_laused WHERE et ~ ANY(ARRAY %s ) ORDER BY i), tessa as (SELECT regexp_split_to_table(et, E'\\\\s+') AS etsõna,i,id,et,vro,nr,ep FROM essa), kossa as (SELECT etsõna,et,vro,i,id,nr,ep FROM tessa WHERE etsõna ~ ANY(ARRAY %s )), nessa as (SELECT COUNT(etsõna) as korda, et,vro,nr,i,id FROM kossa GROUP BY et,vro,nr,i,id,ep ORDER BY korda DESC,ep) select * from nessa;""" % (sona, sona) elif (x == '6'): sone = """ with essa as (select i,id,et,vro,nr,CHAR_LENGTH(et) as ep FROM sõ_eevro_laused WHERE vro ~ ANY(ARRAY %s ) ORDER BY i), tessa as (SELECT regexp_split_to_table(vro, E'\\\\s+') AS vrosõna,i,id,et,vro,nr,ep FROM essa), kossa as (SELECT vrosõna,et,vro,i,id,nr,ep FROM tessa WHERE vrosõna ~ ANY(ARRAY %s )), nessa as (SELECT COUNT(vrosõna) as korda, et,vro,nr,i,id FROM kossa GROUP BY et,vro,nr,i,id,ep ORDER BY korda DESC,ep) select * from nessa;""" % (sona, sona) else: h.kr("Keelevalik puudus?") h.tabel_a() h.tr_l() h.td("rea nr", 'd') h.td("otsikeel", 'd') h.td("paralleelkeel", 'd') h.td("lause nr", 'd') h.tr_l() for r in s.sqle(d.n, sone): h.tr_l() if (x == '3'): kogulause = r['et'] elif (x == '4'): kogulause = r['vro'] elif (x == '5'): kogulause = r['et'] elif (x == '6'): kogulause = r['vro'] for i in sona: kogulause = kogulause.replace( i, "<font color=\"blue\">" + i + "</font>") if (x == '3'): h.td(r['i'], 'd') h.td(kogulause, 'd') h.td(r['vro'], 'd') h.td(r['nr'], 'd') elif (x == '4'): h.td(r['i'], 'd') h.td(kogulause, 'd') h.td(r['et'], 'd') h.td(r['nr'], 'd') elif (x == '5'): h.td(kogulause, 'd') h.td(r['vro'], 'd') h.td(r['i'], 'd') h.td(r['id'], 'd') h.td(r['nr'], 'd') elif (x == '6'): h.td(kogulause, 'd') h.td(r['et'], 'd') h.td(r['i'], 'd') h.td(r['id'], 'd') h.td(r['nr'], 'd') h.tr_l() h.tabel_l()
def päälttöötlus(lähtekeel,sihtkeel,tõlkenumber): päring = db.päälttõlkmist(tõlkenumber) for index,r in enumerate(s.sqle(d.n,päring)): if (r['tõlge'] == '.') or (r['tõlge'] == ',') or (r['tõlge'] == '!') or (r['tõlge'] == '?'): tõlgitudtekst = tõlgitudtekst + r['tõlge']