import json import stanza fnimi="C1" sisendtekstifail="/home/juku/oma/23/06/m2-corpus-main/test/margendusega/"+fnimi+".txt" sisendtekstifail="source_gold.txt" with open("/home/juku/oma/23/03/kolmikud/v2/osakaalud_koik_ees.txt") as f1: osakaalud_ees=json.load(f1) with open("/home/juku/oma/23/03/kolmikud/v2/osakaalud_koik_taga.txt") as f1: osakaalud_taga=json.load(f1) sisend=open(sisendtekstifail, encoding="utf-8").readlines() sisend=[rida.strip() for rida in sisend]+[""] while sisend[0]=="": sisend.pop(0) nlp=stanza.Pipeline(lang="et", processors="tokenize,pos") def yhenda(kolmikud, parandused): v=[] for kolmik in kolmikud: if kolmik[2]: k=kolmik[:]+[[]] for parandus in parandused: if parandus[0]>=kolmik[0] and parandus[1]<=kolmik[1]: k[-1].append(parandus[:]+["tervik"]) if parandus[0]kolmik[0] and parandus[1]<=kolmik[1]: k[-1].append(parandus[:]+["osaline ees"]) if parandus[0]>=kolmik[0] and parandus[0]<=kolmik[0] and parandus[1]>kolmik[1]: k[-1].append(parandus[:]+["osaline taga"]) v.append(k) return v def paranduseKolmikud(parandused, kolmikud): v=[] for parandus in parandused: # if parandus[-1]=="0": # if 1==1: p=parandus[:]+[[]] for kolmik in kolmikud: if kolmik[2]: if parandus[0]>=kolmik[0] and parandus[1]<=kolmik[1]: p[-1].append(kolmik[:]+[parandus]+["tervik"]) if parandus[0]kolmik[0] and parandus[1]<=kolmik[1]: p[-1].append(kolmik[:]+[parandus]+["osaline ees"]) if parandus[0]>=kolmik[0] and parandus[0]<=kolmik[0] and parandus[1]>kolmik[1]: p[-1].append(kolmik[:]+[parandus]+["osaline taga"]) if parandus[0]kolmik[1]: p[-1].append(kolmik[:]+[parandus]+["kolmik paranduses"]) v.append(p) # print(parandused, kolmikud, v) return v lauseidkahtlastekolmikutega=0 kahtlaseidkolmikuid=0 parandustegakolmikuid=0 for protsendipiir in [5]: parandusi=0 neistleitud=0 parandustehoidla={} nrloend={"0":0, "1":0, "2":0} for rida in sisend: if rida.startswith("S "): #print(rida) kolmikud=[] parandused=[] dok=nlp(rida[2:]) jada="".join([sona.xpos for sona in dok.sentences[0].words])+"$" koht=0 #print(jada) while koht=0 and jada[abi]=='Z': abi-=1 if abi>=0: ees=jada[abi] alguskoht=abi else: ees="^" alguskoht=0 kommentaar="-" eesprotsent=0 #if 1==1: if "D" in kolmik: #print(kolmik) if kolmik in osakaalud_ees: if ees in osakaalud_ees[kolmik]: eesprotsent=osakaalud_ees[kolmik][ees][1] else: kommentaar+=" puuduv eeskontekst" else: kommentaar+=" puuduv eeskonteksti kolmik" kolmikud.append([alguskoht, kolmikuots, eesprotsent"+kolmik, "ees", ees, eesprotsent, kommentaar]) kommentaar="-" tagaprotsent=0 if kolmik in osakaalud_taga: if taga in osakaalud_taga[kolmik]: tagaprotsent=osakaalud_taga[kolmik][taga][1] else: kommentaar+=" puuduv tagakontekst" else: kommentaar+=" puuduv taga kolmik" kolmikud.append([koht, otsakoht, tagaprotsent0:hoidla[p[3]]["leitud"]+=1 for voti in hoidla: hoidla[voti]["suhe"]=hoidla[voti]["leitud"]/len(hoidla[voti]["parandused"]) nr=min(hoidla.keys()) for voti in sorted(hoidla.keys()): if hoidla[voti]["suhe"]>hoidla[nr]["suhe"]: nr=voti # if "1" in hoidla: print(hoidla) #nr="0" # print(nr) nrloend[nr]+=1 parandusi+=len(hoidla[nr]["parandused"]) neistleitud+=hoidla[nr]["leitud"] # print(hoidla, nr, parandusi, neistleitud) #Kui 0-parandusvariandis 3 viga märgitud, millest 2 kattuvad harvikuga #ja 1-parandusvariandis 3 viga märgitud, millest 1 kattub harvikuga #siis arvestan ainult 0-varianti (3 viga, kaks kattumist) #(kuna 2/3 > 1>3) #Võrdsuse puhul eelistan väiksema numbriga parandusvarianti # for pk in pkd: # print(*pk[:4]) # for k in pk[-1]: # print(" ", *k) print(fnimi, parandusi, neistleitud, neistleitud/parandusi) print(nrloend) exit() if 1==1: pvotmed=list(parandustehoidla.keys()) for p in parandustehoidla: parandustehoidla[p]["kokku"]=parandustehoidla[p]["olemas"]+parandustehoidla[p]["puudub"] pvotmed.sort(key=lambda k: -parandustehoidla[k]["kokku"]) print(fnimi, protsendipiir) for veakood in pvotmed: print(veakood, parandustehoidla[veakood]["kokku"], parandustehoidla[veakood]["olemas"], parandustehoidla[veakood]["puudub"]) kvotmed=list(parandustehoidla[veakood].keys()) kvotmed.remove("kokku") kvotmed.remove("olemas") kvotmed.remove("puudub") kvotmed.sort(key=lambda k: -len(parandustehoidla[veakood][k])) for kvoti in kvotmed: print(" ",kvoti, len(parandustehoidla[veakood][kvoti])) for kolmik in parandustehoidla[veakood][kvoti]: print(" ", kolmik)