Warning
This page is located in archive.

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 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']

courses/bab37zpr/hw/hw04.txt · Last modified: 2023/10/23 10:29 by viteks