Formát dat

V této úloze se pracuje s jistou množinou (množinami) emailových zpráv, které mohou být nějakým způsobem opatřeny meta-informací. Takové množině se často říká korpus. V našem případě budou moci být emaily navíc doplněny meta-informacemi o tom, zda jeden každý email skutečně je nebo není spamem, a o tom, zda si spam filtr myslí, že jeden každý email je spamem.

Máte k dispozici 2 sady dat pocházející ze stejného zdroje.

Domluvme se tedy následovně: emailový korpus pro nás bude představovat

Samozřejmě platí, že tyto dva soubory v adresáři být mohou, ale také nemusí:

  1. Spam filtr sám při určování, zda je email spamem nebo ne, žádný z těchto souborů nepotřebuje. Bude ale muset umět vytvořit soubor !prediction.txt, který bude obsahovat jeho odhady.
  2. Budete-li spam filtr vytvářet ručně (příp. bude-li jej vytvářet nějaký algoritmus učení) budete potřebovat tzv. trénovací korpus, tj. adresář, v němž je soubor !truth.txt. Jinak byste nevěděli, které emaily jsou spam.
  3. Budeme-li chtít vyhodnotit kvalitu spam filtru, budeme potřebovat oba soubory - !truth.txt i !prediction.txt. Porovnáním údajů v těchto dvou souborech zjistíme, jak moc se předpovědi filtru shodují se skutečností. (Vlastní emaily zde vlastně ani nebudeme potřebovat).

Obsah souborů s emaily

S obsahem souborů lze pracovat jako s prostým textem, aniž byste předpokládali, že soubory mají nějakou vnitřní strukturu.

Pokud ale chcete jejich strukturu využít (což samozřejmě můžete), vězte, že tyto soubory měly odpovídat normě RFC5322 (příp. RFC2822). V ní se v článku 3.6 píše:

 The only required header fields are the origination date field and
 the originator address field(s).  All other header fields are
 syntactically optional.
 

Nespoléhejte tedy na to, že všechny emaily budou mít subjekt, nebo další pole!!!

V tomtéž dokumentu se také dočtete:

 It is important to note that the header fields are not guaranteed to
 be in a particular order.  They may appear in any order, ...