Budeme vytvářet funkci, která bude umět načíst údaje ze souborů !truth.txt
nebo !prediction.txt
do datové struktury typu dictionary
.
dictionary
(viz [Pilgrim2009], kapitola 2.7, nebo [Wentworth2012], kapitola 20)
items()
:eng_to_cz = {'cat': 'kocka', 'dog': 'pes', 'house': 'dum' } for eng, cz in eng_to_cz.items(): print(eng, ',', cz)
with
split()
řetězcových proměnných (viz dokumentace k str.split())
Úkol:
utils.py
vytvořte funkci read_classification_from_file
pro načtení klasifikace mailů z textového souboru
K čemu nám to bude:
read_classification_from_file
budeme potřebovat při učení filtru (pokud jej budeme učit) a při hodnocení úspěšnosti filtrů.
Funkce read_classification_from_file
(v modulu utils.py
):
Vstupy: | cesta k textovému souboru (v našem případě to budou typicky soubory !truth.txt a !prediction.txt ) |
---|---|
Výstupy: | dictionary obsahující pro každý název souboru identifikátor SPAM nebo OK |
Funkce načte textový soubor, v němž jsou na řádku vždy 2 řetězce oddělené mezerou,
email01.txt OK email02.msg OK email03.txt SPAM email1234.txt OK ...a vytvoří z něj datovou strukturu
dictionary
(na pořadí jednotlivých “řádků” v následujícím výpisu nezáleží):
{'email1234.txt': 'OK', 'email03.txt': 'SPAM', 'email02.msg': 'OK', 'email01.txt': 'OK'}
Bude-li soubor prázdný, funkce vrátí prázdný slovník.
Tip: pravděpodobně se vám bude hodit i inverzní funkce, tedy funkce pro zápis klasifikace uložené ve slovníku do souboru na disku. Toto v tuto chvíli ponecháváme jako dobrovolný DÚ.