import json import stanza fnimi="A2" 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[1] and parandus[1]>kolmik[1]: k[-1].append(parandus[:]+["osaline taga"]) if parandus[0]kolmik[1]: k[-1].append(parandus[:]+["kolmik sees"]) 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[2][0:2]=="M:": if parandus[0]>=kolmik[0] and parandus[0]<=kolmik[1] and parandus[1]>kolmik[1]: p[-1].append(kolmik[:]+[parandus]+["osaline taga M"]) elif parandus[0]>=kolmik[0] and parandus[0]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={} 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 "D" in kolmik: #if 1==1: #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: parandustegakolmikuid+=1 # for pk in pkd: # print(*pk[:4]) # for k in pk[-1]: # print(" ", *k) for pk in pkd: parandusi+=1 if len(pk[-1])>0: neistleitud+=1 for pk in pkd: if pk[2] not in parandustehoidla: parandustehoidla[pk[2]]={"puudub":0,"olemas":0} if len(pk[-1])==0: parandustehoidla[pk[2]]["puudub"]+=1 else: parandustehoidla[pk[2]]["olemas"]+=1 for kolmik in pk[-1]: if kolmik[3] not in parandustehoidla[pk[2]]: parandustehoidla[pk[2]][kolmik[3]]=[] parandustehoidla[pk[2]][kolmik[3]].append(kolmik) print("lauseidkahtlastekolmikutega" , lauseidkahtlastekolmikutega) print("kahtlaseidkolmikuid", kahtlaseidkolmikuid) print("parandustegakolmikuid", parandustegakolmikuid) print("täpsus", parandustegakolmikuid/kahtlaseidkolmikuid) 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)