#TEMA: LEXIKALNI DIVERZITA # nacteni obsahu z existujiciho souboru with open('C:\\Users\\Cech\\00_prace\\vyuka\\Brno\\PLIN057_stroj_zprac_textu\\text_01.txt', encoding='UTF-8') as f: obsah = f.read() print(obsah) # SVEJK nacteni obsahu z existujiciho souboru # with open('C:\\Users\\Cech\\00_prace\\vyuka\\Brno\\PLIN057_stroj_zprac_textu\\svejk_1dil_kumulativni\\svejk_01-15.txt', encoding='UTF-8') as f: # obsah = f.read() # print(obsah) text_bez_interpunkce = obsah.translate(str.maketrans({',':'', '.':'', '!':'', '?':''})) print(text_bez_interpunkce) # prevedeni textu na mala pismena text_bez_interpunkce_lc = text_bez_interpunkce.lower() print(text_bez_interpunkce_lc) #prevedeni na seznam tokenu a typu tokens = text_bez_interpunkce_lc.split() print(tokens) types = set(text_bez_interpunkce_lc.split()) print(types) #TTR: type token ratio - pocet typu vydeleny poctem tokenu N = len(tokens) V = len(types) print(N) TTR = V/N print(TTR) print(round(TTR, 3)) # Svejk kumulativne, at se presvedci, zda, je zvavislost TTR na N #TTR ze segmentu prvnich 100 slov # vytvori mnozinu jedinecnych vyrazu z prvni stovky tokenu types_v_100 = set(tokens[:100]) print(types_v_100) #tisknu jen pro kontrolu V_100 = len(types_v_100) print(V_100) # # puvodni slozitejsi verze # types_v_100 = [] # for token in tokens[0:100]: # if token not in types_v_100: # types_v_100.append(token) # print(types_v_100) #tisknu jen pro kontrolu # V_100 = len(types_v_100) # print(V_100) TTR_100 = V_100/100 print(round(TTR_100, 3)) #MATTR - ukazka zpusobu vypoctu textcv = ['den', 'den', 'noc', 'poledne', 'den', 'týden', 'týden', 'týden', 'týden'] N = len(textcv) okno = 3 # rucne spocitat # delime 7, protoze nemuzeme celym N, ale odecteme okno - 1 # UKOL: napiste skript pro vypocer MATTR o velikosti okna 3, # vytiskkněte jednotlvie hodnoty v prubehu vypoctu okno = 3 TTRs = [] for index in range(N - okno + 1): typy_v_okne = set(textcv[index:index + okno]) print(typy_v_okne) # pro kontrolu V = len(typy_v_okne) TTR = V / okno print(TTR) #tisknu je na ukazku TTR v jednotlivych oknech TTRs.append(TTR) print(TTRs) #tisknu je na ukazku MATTR = sum(TTRs) / (N - okno + 1) print(round(MATTR, 3)) # podle vzorce, (vice zde: https://korpus.cz/quitaup/ ) Vs = [] for index in range(N - okno + 1): typy_v_okne = set(textcv[index:index + okno]) print(typy_v_okne) # pro kontrolu V = len(typy_v_okne) print(V) #tisknu je na ukazku V v jednotlivych oknech Vs.append(V) print(Vs) #tisknu je na ukazku MATTR = sum(Vs) / (okno * (N - okno + 1)) print(round(MATTR, 3)) #MATTR na danem textu N = len(tokens) okno = 100 TTRs = [] for index in range(N - okno + 1): typy_v_okne = set(tokens[index:index + okno]) V = len(typy_v_okne) TTR = V / okno TTRs.append(TTR) print(TTRs) #tisknu je na ukazku MATTR = sum(TTRs) / (N - okno + 1) print(round(MATTR, 3)) # UKOL vyzkouset u Svejka #prpoporce HAPAX LEGOMEN (t. slov o frekvenci = 1) from collections import Counter frekv_slovnik = Counter(tokens) print(frekv_slovnik) frekvence = list(frekv_slovnik.values()) print(frekvence) pocet_HL = frekvence.count(1) proporce_HL = pocet_HL / len(tokens) print(round(proporce_HL, 3)) # UKOL vyzkouset u Svejka