Na této stránce jsou popsány požadavky, jimž musíte vyhovět! Jejich nedodržení by mohlo vést k tomu, že vaše řešení úlohy nebude oznáno jako platné!
Účelem prvního kontrolního bodu je zajistit, že všichni máte k dispozici funkci, který správně ohodnotí kvalitu filtru. Předmětem testování v této fázi bude pouze funkce compute_quality_for_corpus()
(a kód, který tato funkce využívá), jejíž detailnější specifikaci najdete v kroku 3.
“Kvalita filtru”, podle níž budou přidělovány body, se bude počítat podle následujícího vzorce:
<latex>
q = \frac{TP + TN}{TP + TN + 10 \cdot FP + FN}.
</latex>
Pozitivní případy (P) zde odpovídají mailům, které filtr označil jako spam, negativní (N) pak těm, které filtr označil jako korektní emaily. FP tedy označuje počet korektních emailů označených jako spam, FN označuje počet spamů označených jako korektní email. Zdůrazňujeme, že hodnoty TP, FP, TN, FN ve výše uvedeném vzorci představují počty případů, nikoli procenta.
quality.py
a případně se všemi moduly, které tento modul importuje.
quality.py
, confmat.py
, utils.py
, příp. další.
Cílem druhého kontrolního bodu je otestovat a ohodnotit vámi vytvořený filtr. Předmětem testování bude třída MyFilter
, jejíž detailnější specifikace najdete v kroku 6.
__init__()
) by měla být rychlá operace trvající maximálně sekundy, spíše mnohem méně.
train()
) na několika stovkách emailů by nemělo trvat déle než desítky sekund, maximálně jednotky minut. Ve většině případů to lze zvládnout mnohem rychleji. V BRUTE bude nastaven limit na učení 5 minut.
test()
) by už měla být také rychlá operace trvající maximálně jednotky sekund. V BRUTE bude nastaven limit na predikci 2 minuty.
filter.py
a všemi soubory, které váš filter potřebuje.
filter.py
. Implementace vašeho filtru.
basefilter.py
. Pokud jste našli nějakou funkcionalitu, která je společná všem filtrům a extrahovali jste ji např. do třídy BaseFilter
v modulu basefilter.py
, od které třída vašeho filtru dědí, musíte do archívu zařadit i soubor basefilter.py
.
corpus.py
a trainingcorpus.py
. Pravděpodobně jste si uvědomili, že v metodě train()
vašeho filtru s výhodou využijete třídu TrainingCorpus
, zatímco v metodě test()
využijete zase třídu Corpus
. Pokud je využíváte, musíte je odevzdat v archivu spolu s vaším filtrem.
utils.py
. Vaše třída TrainingCorpus
pravděpodobně využívá funkci read_classsification_from_file
z modulu utils.py
, musíte tedy do archívu zahrnout i tento soubor.
quality
nebo confmat
.