Spam II

Výsledky učení

Po tomto cvičení student

  • má část úlohy Spam filter vyvinutou pomocí TDD;
  • rozumí způsobu, jakým se budou hodnotit Spam filtry;
  • ví, co a jak je třeba implementovat k dokončení kroku 3 u Spam filtru;
  • chápe, jaké 3 triviální Spam filtry si má vytvořit a porovnat.

Program

  • Dotazy a odpovědi
  • Testík
  • Diskuse DÚ: confusion matrix, funkce kvality
  • Interaktivní programování: BinaryConfusionMatrix metodou TDD
  • Diskuse: jak dokončit krok 3 spam filtru? Co se bude odevzdávat?
  • Hádanka
  • Diskuse DÚ: jednoduché filtry

Dotazy a odpovědi

  • Práce se soubory? Se slovníky?
  • Potíže při práci na krocích 1 a 2 u Spam filtru?
  • Potíže se spouštěním testů? S interpretací jejich výsledků?

Programovací testík

Zadání 5. testíku se dozvíte na cvičení.

Diskuse

  • Co jsou to TP, FP, TN, FN?
  • Jak hodnotit kvalitu filtru?
  • Definice funkce kvality

TDD: BinaryConfusionMatrix

Příprava:

  • Projděte si specifikace třídy BinaryConfusionMatrix.
  • Jaké testy (scénáře použití) dokážete pro danou třídu vymyslet?

Krok 0

0. Vytvoření kostry

Krok 1

1. Po vytvoření třídy jsou čítače vynulovány

Krok 2

2. Metoda update() správně upraví čítač TP

Krok 3

3. Ruční refactoring opakujícího se kódu

Krok 4

4. Metoda update() správně upraví čítač TN

Krok 5

5. Metoda update() správně upraví čítač FP

Krok 6

6. Metoda update() správně upraví čítače FN

Krok 7

7. Co má metoda update dělat při chybném vstupu?

Krok 8

8. Refactoring s pomocí IDE

Krok 9

9. Metoda compute_from_dicts() správně updatuje čítače

Krok 10

10. Diskuse: další testy?

Hádanka

Zadání hádanky se dozvíte na cvičení.

Programovací trik

Volání funkce s argumenty připravenými v seznamu nebo slovníku

Diskuse: jednoduché filtry

Pokud jste tak ještě neučinili, přečtěte si specifikace kroku 4 úlohy Spam filtr:

  • Jaké metody filtr musí mít?
  • Musejí být implementovány všechny?
  • Jak tedy bude implementace jednoduchých filtrů přibližně vypadat?

Kontrola DÚ z minulého cvičení

  • Zkontrolovat, zda funkce read_classification_from_file() a třída Corpus procházejí unit testem.
  • Pokud ne, probrat výstup z unit testu a nasměrovat na správnou cestu!

Programovací úloha

  • Dokončete krok 3 úlohy spam filtr, tedy funkci pro výpočet kvality filtru. Od neděle za týden budete modul quality společně s dalšími potřebnými moduly odevzdávat do upload systému!
  • Můžete začít pracovat na kroku 4 úlohy spam filtr, tj. implementujte 3 jednoduché filtry.

Domácí úkol

Programování

Blíží se termín odevzdání 1. části úlohy Spam filtr! Postupujte podle specifikací. Termín najdete v odevzdávacím systému.

  • Vyzkoušejte si/proveďte/dokončete programování třídy BinaryConfusionMatrix podle výše uvedeného návodu. Snažte se přitom pochopit nejen co děláte, ale i proč to děláte.
  • Pokud jste nestihli na cvičení, dokončete krok 3 úlohy spam filtr, tedy funkci pro výpočet kvality filtru.
  • Dokončete krok 4 úlohy spam filtr, implementujte 3 jednoduché filtry:
    • Zkuste je aplikovat na nějaký korpus.
    • Použijte funkci z kroku 3 na odhad kvality filtru.
    • Jaké hodnoty kvality jste dostali pro naše 3 jednoduché filtry???

Příprava

Přečtete si něco o dědičnosti:

Prostudujte si, jak v OOP funguje a jak se v Pythonu realizuje dědičnost. Informace najdete např.

 

Příprava na krok 5 úlohy spam filtr:

  • Rozmyslete si, co by měla třída vašeho trénovacího korpusu (TrainingCorpus) umět, aby vám usnadnila učení filtru. T.j. co musí umět navíc vzhledem k třídě Corpus.
 
courses/b4b33rph/cviceni/program_po_tydnech/tyden_09.txt · Last modified: 2024/11/28 21:39 by losenkla