Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

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