import re import sys sonaandmed=[rida.rstrip() for rida in open("K1_referentskorpus_visl3.txt").readlines()] def laused_sonad(parserivaljund): puhver=[] lause=[] sona="" uussona=False for rida in parserivaljund: if len(rida)>0: if rida=='""': lause=[] elif rida=='""': if lause: puhver.append(lause[:]) elif rida[0]=='"': #print("s") sona=rida uussona=True elif uussona: sona+=" "+rida.strip() uussona=False lause.append(sona) return puhver def otsi(lausepuu, muster, vasakult): mustripikkus=len(muster) v=[] for lause in lausepuu: liigid="".join([re.findall(" [A-Z] ", sona)[0][1] for sona in lause]) lause2=[] liigid2="" for nr in range(len(liigid)): if liigid[nr]!="Z": lause2.append(lause[nr]) liigid2+=liigid[nr] koht=vasakult while koht<=(len(lause2)-mustripikkus): if liigid2[koht:koht+mustripikkus]==muster: v.append(lause2[koht-vasakult:koht+mustripikkus]) koht+=1 return v def ryhmita(vasted, ryhmitusfunktsioon): v={} for kirje in vasted: ryhmitustunnus=re.findall(" [A-Z] ",kirje[0])[0][1] if ryhmitustunnus in v: v[ryhmitustunnus].append(kirje) else: v[ryhmitustunnus]=[kirje] return v def tryki_ryhmade_sagedused(ryhmad, fnimi=""): if fnimi: f=open(fnimi, "w") else: f=sys.stdout for ryhmatunnus in sorted(ryhmad.keys()): print(ryhmatunnus, len(ryhmad[ryhmatunnus]), file=f) f.close() def tryki_ryhmad_1(ryhmad, fnimi=""): if fnimi: f=open(fnimi, "w") else: f=sys.stdout for ryhmatunnus in sorted(ryhmad.keys()): print(ryhmatunnus, "\n ".join([";".join(vaste) for vaste in ryhmad[ryhmatunnus]]), file=f) f.close() lausepuu=laused_sonad(sonaandmed) vasted=otsi(lausepuu, "VDD", 1) #ryhmad=ryhmita(vasted) ryhmad=ryhmita(vasted, lambda kirje: re.findall(" [A-Z] ", kirje[0])[0][1]) tryki_ryhmade_sagedused(ryhmad, "sagedused1.txt") tryki_ryhmade_sagedused(ryhmad) tryki_ryhmad_1(ryhmad, "ryhmad1.txt")