====== HW04 - Práce s textem ====== ^ Termín odevzdání | 20.11.2023 23:59 CET | ^ Bodový zisk | 6b | ===== Zadání ===== Cílem programu je provést statistickou analýzu textu a řazení slov podle různých kritérií. Hlavním statistickým nástrojem je [[https://cs.wikipedia.org/wiki/Histogram|histogram]] (nebo také hustota pravděpodobnosti). Vstupem je libovolně dlouhý text bez diakritiky. Text může obsahovat interpunkci (čárka, tečka, středník, pomlčka), kterou je třeba odstranit. ===== Odevzdání ===== Do systému BRUTE odevzdávejte soubor pojmenovaný ''text.py''. V tomto souboru budou funkce ''histogram'' a ''serad''. ===== Histogram ===== Funkce pro výpočet a vykreslení histogramu (pravděpodobnostní funkci). Pravděpodobnosti jednotlivých písmen jsou reprezentovány řadami znaků ''*''. Funkce má tři parametry: * ''text'' - vstupní text * ''scale'' - aby v případě častého opakování znaku v textu nebyla řada znaků reprezentující pravděpodobnost příliš dlouhá, lze nastavit maximální délku a jednotlivé rádky na tuto hodnotu přeškálovat. Defaulní hodnota ''0'' znamená vypnuté škálování. * ''case_sensitive'' - příznak, zda bude funkce rozlišovat velká a malá písmena, nebo ne. Defaultní hodnota je ''False''. Návratovou hodnotou funkce je seznam n-tic, kde první položkou n-tice je znak a druhou položkou je počet výskytů v textu. ==== Příklad 1 ==== ret = histogram('Ahoj svete, kde to kvete', 0) a: * d: * e: ***** h: * j: * k: ** o: ** s: * t: *** v: ** # ret obsahuje [('a', 1), ('d', 1), ('e', 5), ('h', 1), ('j', 1), ('k', 2), ('o', 2), ('s', 1), ('t', 3), ('v', 2)] ==== Příklad 2 ==== ret = histogram('Ahoj svete, kde to kvete', 10) a: ** d: ** e: ********** h: ** j: ** k: **** o: **** s: ** t: ****** v: **** # ret obsahuje [('a', 1), ('d', 1), ('e', 5), ('h', 1), ('j', 1), ('k', 2), ('o', 2), ('s', 1), ('t', 3), ('v', 2)] ==== Příklad 3 ==== ret = histogram('Aaaach, to je kraaasa', 4) a: **** c: e: h: j: o: s: t: ===== Řazení slov ===== Cílem funkce je seřadit slova vstupního textu podle zvoleného kritéria. Za slovo budeme pro účely tohoto domácího úkolu považovat shluk písmen o délce větší nebo rovnou třem. Funkce pro řazení slov má tři parametry: * ''text'' - vstupní text * ''metoda'' - příznak, jehož hodnota určuje, jak se bude seznam slov řadit. * ''case_sensitive'' - příznak, zda bude funkce rozlišovat velká a malá písmena, nebo ne. Defaultní hodnota je False. Metody řazení: * ''0'' - délka slova * ''1'' - počet souhlásek ve slově * ''2'' - četnost nejčastěji se opakujícího písmene Pokud není možné rozhodnout pořadí slov na základě kritéria, doplňkovým kritériem je řazení podle abecedy. Návratovou hodnotou funkce je seřazený seznam. ==== Příklad 1 ==== ret = serad('Aaaach, to je kraaasa', 0, True) print(ret) ['kraaasa', 'Aaaach'] ==== Příklad 2 ==== ret = serad('Aaaach, to je kraaasa', 2, True) print(ret) ['kraaasa', 'Aaaach'] ==== Příklad 3 ==== ret = serad('Aaaach, to je kraaasa', 2, False) print(ret) ['Aaaach', 'kraaasa']