Een drempel
Het filter telt nu een score. Daarna moet het nog beslissen: vanaf welke score is een bericht spam? Die grens heet de drempel.
Voorspel
score = 1
drempel = 2
if score >= drempel:
print("spam")
else:
print("geen spam")
Wat print dit programma? En wat print het als score 3 is? En als de score
1 blijft, maar de drempel 1 wordt?
Antwoord
Eerst geen spam, want 1 is kleiner dan 2. Bij score 3 print het spam.
Met drempel 1 print het ook spam, want >= betekent "groter dan of gelijk
aan".
Zo werkt het
Na de loop beslist één if: is de score minstens de drempel, dan is het
bericht spam. Dat is het hele idee van dit filter: een score optellen, en die
vergelijken met een drempel.
De drempel staat als variabele bovenaan. Zo zie je meteen welke grens het filter gebruikt, en verander je hem op één plek.
Onderzoek
- Verander het bericht in
"Hoi, bel je me nu?". Welke score krijgt het, en is het besluit terecht? - Zet
drempelop 1, en probeer het bericht uit vraag 1 nog eens. - Zet
drempelop 4, en probeer"Klik nu en win een gratis telefoon"nog eens.
Antwoorden
- Score 1, geen spam. Dat klopt: een vriend die vraagt of je belt, is geen
spam. Het woord
nugeeft wel een punt. - Nu is het bericht van je vriend spam. Een lage drempel vangt meer spam, maar ook meer gewone berichten.
- Score 3, geen spam: het spambericht glipt erdoor. Een hoge drempel laat meer spam door. Een goede drempel kiezen is altijd een afweging.
Opdracht: twijfel
Geef het filter een derde uitkomst. Is de score minstens de drempel, dan is
het spam. Is hij lager maar minstens 1, dan print het twijfel. Bij score
0 is het geen spam. Met de score uit de editor wordt de uitvoer:
twijfel
Begin klein, en breid de code stap voor stap uit:
- Draai de code: bij score 1 zegt het filter
geen spam. - Zet tussen de
ifen deelseeenelif score >= 1:dietwijfelprint, en draai opnieuw. - Verander
scorein 0, en daarna in 3. Elke score geeft nu een ander antwoord. - Zet
drempelop 3. Nu twijfelt het filter bij score 1 en bij score 2.
Tip
Twijfelt het filter ook bij score 3? Dan staat de elif boven de if met
de drempel. Welke regel moet een score van 3 als eerste tegenkomen?
Antwoord
score = 1
drempel = 2
if score >= drempel:
print("spam")
elif score >= 1:
print("twijfel")
else:
print("geen spam")
twijfel
Bij score 3 passen beide regels, maar net als bij de chatbot beslist de
bovenste: spam.
Door naar hele woorden.