Jouw chatbot
Je chatbot heeft nu een regel per trefwoord. Met or past één regel op
twee trefwoorden, en met and alleen als twee trefwoorden allebei in de zin
staan. Daarna bouw je een chatbot over je eigen onderwerp, en zoek je uit
waar regels tekortschieten.
Je gebruikt hier or en and uit
And, or en elif.
Voorspel
zin = "tot ziens, bot"
if "doei" in zin or "tot ziens" in zin:
print("Doei, tot de volgende keer.")
if "ajax" in zin and "psv" in zin:
print("Dat is altijd een spannende wedstrijd.")
Wat print dit programma? En wat print het bij "ajax speelt vandaag"?
Antwoord
Bij "tot ziens, bot" print het Doei, tot de volgende keer. Er staat
geen "doei" in de zin, wel "tot ziens", en bij or is één genoeg. De
regel met and past niet. Bij "ajax speelt vandaag" print het niets:
and wil ze allebei, en "psv" ontbreekt.
Zo werkt het
Met or past een regel als minstens één van de twee trefwoorden in de zin
staat. Met and past hij alleen als ze er allebei in staan. Een regel met
and is dus strenger.
Hoeveel regels je ook toevoegt, de chatbot zoekt naar letters en niet naar
betekenis. Bij "ik ga weer naar huis" praatte hij in
meer regels
over het weer. Elke chatbot met regels heeft zulke zinnen.
Onderzoek
- Verander in de regel voor
"doei"deorinand. Wat antwoordt de chatbot nu op"Tot ziens, Bot"? En op"Doei, tot ziens"? - Zet de
orterug, maar schrijf de regel alselif "doei" or "tot ziens" in zin:. Probeer"Ik heb honger". Wat gebeurt er? - Probeer
"Ik zei hallo en doei". Welke regel wint, en waarom?
Antwoorden
- Bij
"Tot ziens, Bot"zegt hijDaar weet ik niets van., want"doei"staat er niet in. In"Doei, tot ziens"staan ze allebei, en krijg jeDoei, tot de volgende keer. - De chatbot zegt
Doei, tot de volgende keer., ook bij een zin over honger. Python leest"doei"als een losse vraag, en een tekst die niet leeg is, telt alsTrue. Schrijfin zinaan beide kanten vanor:"doei" in zin or "tot ziens" in zin. Dezelfde fout staat in And, or en elif, bijkleur == "rood" or "blauw". Hallo, leuk dat je er bent.De zin past op beide regels, en de bovenste wint.
Bouw zelf: een chatbot over jouw onderwerp
Bouw een chatbot die over iets praat waar jij veel van weet: voetbal, een
game, je huisdier. Hij heeft minstens vier regels, en één regel gebruikt
and: die past alleen als twee trefwoorden allebei in de zin staan.
Zoek daarna een zin die je chatbot verkeerd begrijpt, zoals de chatbot uit
meer regels
bij "ik ga weer naar huis".
Begin klein, en breid de code stap voor stap uit:
- Kies je onderwerp. Verander de zin en de eerste regel zo dat ze erover gaan, en draai.
- Zet er twee regels bij met
elif, en eenelsevoor de rest. Test elke regel met een eigen zin. - Maak één regel met
and, en test hem met een zin waar beide trefwoorden in staan, en met een zin met maar één. - Probeer zinnen tot je er een vindt die hij verkeerd begrijpt.
Tip
Zet de regel met and bovenaan. Hij is strenger dan een regel met één
trefwoord, en de chatbot neemt de eerste regel die past.
Antwoord
Een chatbot over voetbal, bijvoorbeeld:
zin = "Wie heeft er gisteren gewonnen?"
zin = zin.lower()
if "ajax" in zin and "psv" in zin:
print("Dat is altijd een spannende wedstrijd.")
elif "gewonnen" in zin or "verloren" in zin:
print("Ik heb de uitslag nog niet gezien.")
elif "keeper" in zin:
print("Een goede keeper is goud waard.")
elif "hoi" in zin:
print("Hoi, praat je mee over voetbal?")
else:
print("Daar weet ik niets van.")
Een zin die hij verkeerd begrijpt: "Ik heb mijn sleutels verloren". Daar
antwoordt hij Ik heb de uitslag nog niet gezien. Elke chatbot met regels
heeft zulke zinnen. Daarom leert het spamfilter straks van voorbeelden in
plaats van regels.
Door naar een score.