====== HW04 - Práce s textem ======
^ Termín odevzdání | 18.11.2024 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']