"""EUFONIE eufonie: https://cs.wikipedia.org/wiki/Eufonie https://www.czechency.org/slovnik/EUFONIE Metody..""" import math import re from collections import Counter # potrebujeme zjistit relativni frekvnce jednotlivych hlasek # ale napred si musime upravit text # postup: 1. vycisteni textu, 2. substituce hlasek, 3. vypocet relativni frekvence # vycisteni textu # nacteni obsahu z existujiciho souboru with open('C:\\Users\\Cech\\00_prace\\vyuka\\Brno\\PLIN057_stroj_zprac_textu\\maj.txt', encoding='UTF-8') as f: obsah = f.read() print(obsah) maj_01 = obsah.lower() print(maj_01) # UKOL: vygenerujte seznam znaku seznam_znaku = list(maj_01) sorted(set(seznam_znaku)) # seznam povolenych znaku: pismena, mezery a konce radku povolene_znaky = ['\n', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'h', 'i', 'j', 'k', 'l', \ 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v', 'y', 'z', 'á', 'é', 'í', 'ó', 'ý', \ 'č', 'ď', 'ě', 'ň', 'ř', 'š', 'ť', 'ů', 'ž'] # UKOL: prepiste text tak, aby sestaval jen z povolenych znaku maj_02 = '' for znak in maj_01: if znak in povolene_znaky: maj_02 += znak print(maj_02) # uprava pismen na hlasky (neresime asimilace) # někdy je dulezite poradi - napr. nemuzeme zmenit napred vsechny y na i, protoze pak by byl zmatek v mekceni # srov. díky vs dýky # at navrhnou zmeny maj_03 = maj_02.replace('ni', 'ňi') maj_03 = maj_03.replace('di', 'ďi') maj_03 = maj_03.replace('ti', 'ťi') maj_03 = maj_03.replace('ní', 'ňí') maj_03 = maj_03.replace('dí', 'ďí') maj_03 = maj_03.replace('tí', 'ťí') maj_03 = maj_03.replace('ně', 'ňe') maj_03 = maj_03.replace('dě', 'ďe') maj_03 = maj_03.replace('tě', 'ťe') maj_03 = maj_03.replace('mě', 'mňe') maj_03 = maj_03.replace('ě', 'je') maj_03 = maj_03.replace('y', 'i') maj_03 = maj_03.replace('ý', 'í') maj_03 = maj_03.replace('ch', 'x') maj_03 = maj_03.replace('ů', 'ú') maj_03 = maj_03.replace('ou', 'O') maj_03 = maj_03.replace('au', 'A') # UKOL: vypocitejte relatvni frekvence zvlast vokalu a zvlast konsonantu # postup: udelejte frekvencni slovnik pismen # pak sectete vsechny vokaly/konsonanty a kazdy vokal/konsonant vydelte sumou vokalu/konsonantu # azt zkusi napsat funkci, kterou pak pouzijou poro vokaly i konsonanty vokaly = ['a','á','e','é','i','í','o','ó','u','ú','O','A'] konsonanty = ['b','c','č','d','ď','f','g','h','j','k','l','m','n','ň','p','q','r','ř','s','š','t','ť', 'v','w','x','z','ž'] frekvence_pismen = dict(Counter(maj_03)) print(frekvence_pismen) def rel_frekvence (hlasky): suma_hlasek = 0 for hlaska in hlasky: if hlaska in frekvence_pismen.keys(): suma_hlasek += frekvence_pismen[hlaska] #potrebuju si nejdriv napocitat sumu hlasek rel_frekv_hlasek = {} for hlaska in hlasky: if hlaska in frekvence_pismen.keys(): rel_frekv_hlasek[hlaska] = frekvence_pismen[hlaska]/suma_hlasek # pridani key + value do slovniku, value je vydeleno poctem vokalu return rel_frekv_hlasek rel_frekv_vokaly = rel_frekvence(vokaly) rel_frekv_konsonanty = rel_frekvence(konsonanty) sum(rel_frekv_vokaly.values()) sum(rel_frekv_konsonanty.values()) # VOKALY # vypocet eufonie pro kazdy vers math.factorial(x) # UKOL: prepiste vzorec podle s. 101 p=0.01829268 x=3 n=4 P = math.factorial(n)/(math.factorial(x)*(math.factorial(n-x)))*(p**x)*(1-p)**(n-x) print(P)