Search
Úloha “Spam filter” má definovány 2 kontrolní body.
Spam filtr musíte vypracovat v Pythonu 3.4.x, který bude nainstalován na strojích pro automatické hodnocení! Pokud této podmínce nevyhovíte, může se stát, že váš filtr nebude správně fungovat!
Vaším úkolem je vytvořit třídu MyFilter v modulu filter.py, která
MyFilter
filter.py
train(train_corpus_dir)
test(test_corpus_dir)
!prediction.txt
train()
V korpusech se mohou vyskytovat speciální soubory, jejichž název vždy začíná znakem ! (např. !truth.txt). Tyto soubory neobsahují maily - ignorujte je!
!
!truth.txt
Detailnější informace v následujících sekcích.
Třída bude definována v modulu s názvem filter.py. Typické použití třídy bude následující:
from filter import MyFilter filter = MyFilter() filter.train('/path/to/training/corpus') # Tento adresář bude obsahovat soubor !truth.txt filter.test('/path/to/testing/corpus') # V tomto adresáři metoda vytvoří soubor !prediction.txt
Protože by ale metoda test() měla být schopná pracovat i bez předchozího volání metody train(), je přípustné i toto použití:
test()
from filter import MyFilter filter = MyFilter() filter.test('/path/to/testing/corpus') # V tomto adresáři metoda vytvoří soubor !prediction.txt
Při hodnocení kvality predikcí filtru samozřejmě budeme vždy volat metodu train() před metodou test().
nazevsouboru OK
nazevsouboru SPAM
Odevzdávat budete ZIP archív s vaším modulem quality.py a případně se všemi moduly, které tento modul importuje. Tyto soubory musí být v kořeni archívu, archív nesmí obsahovat žádné adresáře! Pokud jste postupovali podle návodu, měl by váš archív obsahovat nejspíše soubory quality.py, confmat.py, utils.py, příp. další.
quality.py
confmat.py
utils.py
Předmětem testování v této fázi bude pouze funkce compute_quality_for_corpus(), tedy výstup z kroku 3, kde najdete i její specifikace. Chceme tím zajistit, abyste všichni měli po ruce funkci, která vám snadno a správně vypočte, jak dobře vaše filtry pracují (jak kvalitní predikce poskytují).
compute_quality_for_corpus()
Odevzdávat budete ZIP archív s vaším filtrem a všemi soubory, které váš filter potřebuje. Tyto soubory musí být v kořeni archívu, archív nesmí obsahovat žádné adresáře! Pokud jste postupovali podle návodu, měl by váš archív obsahovat následující soubory:
basefilter.py
BaseFilter
corpus.py
trainingcorpus.py
TrainingCorpus
Corpus
read_classsification_from_file
quality
confmat