Search
yield
read_classification_from_file()
encoding
open(filename, mode, encoding='utf-8')
Zadání na interních stránkách.
Druhá část úlohy Spam filtr je týmová. Bylo by dobře, kdybyste nejpozději příští týden věděli, s kým budete v týmu. Dejte nám vědět, zda tým už máte nebo si někoho najdete sami, zda byste chtěli, abychom vám někoho přidělili, nebo zda máte k týmové práci takový odpor, že opravdu chcete úlohu řešit sami.
Dotazník
Pokud se rozhodnete úlohu řešit sami, vězte, že to bude mnohem více práce: musíte vytvořit kód, report i prezentaci sami. V týmu se o práci můžete podělit.
Pokud stále narážíte na problémy se zakládáním projektů, spouštěním skriptů, či testů, zkuste si přečíst následující informace:
http://docs.python.org/py3k/library/unittest.html
Stáhněte si testy ke kroku 1 úlohy Spam filtr. Archiv rozbalte do adresáře, kde vyvíjíte spam filter.
Zopakujte (podle potřeby) výše uvedené i pro testy ke kroku 2.
Iterable, iterator, ''yield''
__next__
for
next
StopIteration
Vyzkoušejte a diskutujte se studenty: def myfunc(): print('Before first yield.') yield 'First yield.' print('After first, before second yield.') yield 'Second yield.' print('After second yield.') >>> gen = myfunc() >>> next(gen) Before first yield. 'First yield.' >>> next(gen) After first, before second yield. 'Second yield.' >>> next(gen) After second yield. builtins.StopIteration: >>> next(gen) Traceback (most recent call last): File "<string>", line 1, in <fragment> builtins.StopIteration: >>> Volání v cyklu: for neco in myfunc(): print('Got from the function:', neco) print('---') vyprodukuje Before first yield. Got from the function: First yield. --- After first, before second yield. Got from the function: Second yield. --- After second yield. >>> Výstupy z generátoru lze zamozřejmě posbírat do seznamu: >>> gen = myfunc() >>> gen <generator object myfunc at 0x01081378> >>> s = list(gen) Before first yield. After first, before second yield. After second yield. >>> s ['First yield.', 'Second yield.'] >>> Pomocí yield lze velmi elegantně vytvořit generátor Fibonacciho řady: def fibgen(): a, b = 0, 1 while 1: yield a a, b = b, a+b 2018/07/17 13:25
Vyzkoušejte a diskutujte se studenty:
def myfunc(): print('Before first yield.') yield 'First yield.' print('After first, before second yield.') yield 'Second yield.' print('After second yield.')
>>> gen = myfunc() >>> next(gen) Before first yield. 'First yield.' >>> next(gen) After first, before second yield. 'Second yield.' >>> next(gen) After second yield. builtins.StopIteration: >>> next(gen) Traceback (most recent call last): File "<string>", line 1, in <fragment> builtins.StopIteration: >>>
Volání v cyklu:
for neco in myfunc(): print('Got from the function:', neco) print('---')
vyprodukuje
Before first yield. Got from the function: First yield. --- After first, before second yield. Got from the function: Second yield. --- After second yield. >>>
Výstupy z generátoru lze zamozřejmě posbírat do seznamu:
>>> gen = myfunc() >>> gen <generator object myfunc at 0x01081378> >>> s = list(gen) Before first yield. After first, before second yield. After second yield. >>> s ['First yield.', 'Second yield.'] >>>
Pomocí yield lze velmi elegantně vytvořit generátor Fibonacciho řady:
def fibgen(): a, b = 0, 1 while 1: yield a a, b = b, a+b
Corpus
emails()
Vyplňte dotazník ohledně složení týmů pro Spam filtr, pokud jste to ještě neudělali.
Pokud se vám to nepodařilo už na cvičení, dokončete:
Příprava na krok 3 úlohy spam filtr:
Prostudujte si: V článku Binary Classification najděte a pochopte význam zkratek TP, FP, TN, FN. Na kus papíru napište: co podle vás tyto zkratky znamenají pro problém filtrování spamu co budeme potřebovat, abychom tyto statistiky mohli napočítat 2018/07/17 13:25
Prostudujte si:
Na kus papíru napište:
Příprava na krok 4 úlohy spam filtr:
Rozmyslete si a načrtněte na kus papíru: Jakým způsobem se spam filtr vlastně používá? Jaký je z hlediska implementace rozdíl mezi učicím se filtrem a filtrem, který se učit neumí? Existuje nějaká část, kterou budou mít všechny spam filtry společnou? Je lepší realizovat spam filtr jako funkci nebo jako objekt s vlastnostmi a metodami? Jaké jsou minimální požadavky na tuto realizaci? Co všechno by měla umět? Jaké musí mít vstupy a co musí být jejím výstupem? 2018/07/17 13:25
Rozmyslete si a načrtněte na kus papíru: