Toon posts:

Inplementeren van een naam in een chatrobot

Pagina: 1
Acties:
  • 496 views

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedemorgen!

Wij zitten met een klein programmeer probleempje
Het probleem is dat we zelf geen idee hebben hoe we iets kunnen implementeren zodat er steeds op een goed moment de naam van de gebruiker terugkomt in de reacties van de chatrobot. We dachten namelijk dat we van naam al een variabele hadden gemaakt, maar we snappen niet hoe we nu verder kunnen. Wij zitten zelf maar met 4 mensen in het college jaar en het is een zelfstandige opdracht waarbij de leraar ons kan helpen. We hebben ook geen lessen voor dit vak alleen een instructie mail. een onderdeel van de opdracht is om dus er voor te zorgen dat Eliza (de chatbot) je naam op de juiste momenten terug laat komen. Dus bijvoorbeeld: dat is fijn om te horen Laura!

Ik zal de code onderaan plaatsen zodat jullie kunnen zien in welke code het geimplementeerd moet worden. Het zou echt helemaal super zijn als iemand ons kon helpen! We hebben hiervoor Python gebruikt ;)

Met vriendelijke groet,
Laura (een vrolijke studente die toch wel een beetje hulp nodig heeft :))

Hieronder de code (excuses dat ik dit niet overzichtelijk in code heb neergezet. Dit lukte me niet):

import re
import random


reflections = {
"ben": "zijn",
"was": "waren",
"ik": "jij",
"ik zou": "wij zouden",
"ik heb": "jij hebt",
"ik zal" : "men zal",
"mijn": "jouw",
"zijn": "ben",
"jij hebt": "ik heb",
"jij zal": "ik zal",
"jouw": "mijn",
"van jou": "van mij",
"jij": "me",
"mezelf": "jij"
}

psychobabble = [

[r'(.*) Tilburg',
["Tilburg is een stad in Noord-Brabant",
"Waarom wil je wat weten over Tilburg?",
"Tilburg heeft meer dan vijftien miljoen inwoners."]],

[r'(.*) Tilburg University',
["Tilburg University is een universiteit in Tilburg",
"Waarom wil je meer weten over Tilburg University?",
"Tilburg University telt anno 2018 13050 studenten.",
"De campus van Tilburg university ligt in het hartje van Tilburg"]],

[r'Ik heb (.*) nodig',
["Waarom heb je {0} nodig?",
"Zou {0} je echt helpen?",
"Weet je zeker dat je {0} nodig hebt?"]],

[r'Waarom doe je ([^\?]*)\? niet?',
["Denk je echt dat ik {0} niet begrijp?",
"Wellicht dat ik het ooit {0}.",
"Wil je echt dat ik {0}?"]],

[r'Waarom kan ik niet ([^\?]*)\??',
["Denk je dat je in staat zou zijn om {0}?",
"Als je zou kunnen {0}, wat zou je dan doen?",
"Ik weet het niet -- Waarom kan je niet{0}?",
"Heb je het echt geprobeerd?"]],

[r'Ik kan niet (.*)',
["Hoe weet je dat je niet kan {0}?",
"Wellicht dat je {0} als je het zou proberen.",
"Wat zou er nodig zijn om je {0} te laten doen?"]],

[r'Ik ben (.*)',
["Kwam je naar mij omdat je {0} bent?",
"Hoe lang ben je al {0}?",
"Hoe voelt het om {0} te zijn?"]],

[r'Ik ben (.*)',
["Hoe voelt het om {0} te zijn?",
"Houdt je ervan om {0}?",
"Waarom vertel je me dat je {0} bent?",
"Waarom denk je dat je {0} bent?"]],

[r'Ben je ([^\?]*)\??',
["Waarvoor maakt het uit of ik {0} ben?",
"Zou je liever willen dat ik niet {0} was?",
"Wellicht dat je geloofd dat ik {0} ben.",
"Misschien ben ik {0} -- Wat denk je ervan?"]],

[r'Wat (.*)',
["Waarom vraag je dat?",
"Hoe zou een antwoord hiermee helpen?",
"Wat denk je ervan"]],

[r'Hoe (.*)',
["Wat stel jij voor?",
"Wellicht kun je je eigen vraag beantwoorden.",
"Wat vraag je eigenlijk precies?"]],

[r'Omdat (.*)',
["Is dat de echte reden?",
"Aan welke andere redenen denk je?",
"Valt deze reden op andere dingen toe te passen?",
"als {0} waar is, wat moet er dan nog meer waar zijn?"]],

[r'(.*) sorry (.*)',
["Het is vaak zo dat er geen excuses nodig is.",
"wat voor gevoelens wekt verontschuldigen bij je op?"]],

[r'Hallo(.*)',
["Hallo... Ik ben blij dat je vandaag langskomt.",
"Hee jij... hoe gaat het met je?",
"Hallo, hoe voel je je vandaag?"]],

[r'Ik denk (.*)',
["Twijfel je aan {0}?",
"Denk je dat echt?",
"Maar je bent niet zeker van {0}?"]],

[r'(.*) vriend (.*)',
["Vertel me meer over je vrienden.",
"Wanneer je denkt aan een vriend, waar denk je dan aan?",
"Waarom vertel je me niet over een vriend uit je kindertijd?"]],

[r'Ja',
["Je lijkt erg zeker van je zaak.",
"OK, maar kun je dat een beetje toelichten?"]],

[r'(.*) computer(.*)',
["Heb je het echt over mij?",
"Voelt het raar om tegen een computer te praten?",
"Hoe laten computers je voelen?",
"Voel je je bedreigt bij computers?"]],

[r'Is het (.*)',
["Denk je dat het {0} is?",
"Wellicht is het {0} -- Wat denk jij?",
"Als het {0} zou zijn, wat zou je dan doen?",
"Het zou best {0} kunnen zijn."]],

[r'Het is (.*)',
["Je lijkt me zeker van je zaak.",
"Wanneer ik je vertel dat het {0} waarschijnlijk niet is, wat zou je dan voelen?"]],

[r'Kan je ([^\?]*)\??',
["Wat laat je denken dat ik niet kan {0}?",
"Als ik kon {0}, wat dan?",
"Waarom vraag je of ik kan {0}?"]],

[r'Kan ik ([^\?]*)\??',
["Misschien wil je niet {0}.",
"Zou je {0} willen kunnen {0}?",
"Als je zou kunnen {0}, zou je dat dan doen?"]],

[r'Je bent (.*)',
["Waarom denk je dat ik {0} ben?",
"Vind je het leuk dat ik {0} ben?",
"Je zou willen dat ik {0} was.",
"Heb je het misschien over jezelf?"]],

[r'Je bent (.*)',
["Waarom zeg je dat ik {0} ben?",
"Waarom denk je dat ik {0} ben?",
"Hebben we het over jou of over mij?"]],

[r'Ik doe niet aan (.*) ',
["Doe je echt niet aan {0}?",
"Waarom doe je niet aan {0}?",
"Zou je willen {0}?"]],

[r'Ik voel me (.*)',
["Okay, vertel me meer over je gevoelens.",
"Voel je je vaak {0}?",
"Wanneer voel je je meestal {0}?",
"Als je je {0} voelt, wat doe je dan?"]],

[r'Ik heb (.*)',
["Waarom vertel je me dat je {0} hebt?",
"Heb je echt {0}?",
"Nu je {0} hebt, wat is het volgende dat je gaat doen?"]],

[r'Ik zou (.*)',
["Kan je misschien uitleggen waarom je zou {0}?",
"Waarom zou je {0}?",
"Wie weet nog meer dat je zou {0}?"]],

[r'Is er (.*)',
["Denk je dat {0} er is?",
"Er is een kans dat {0} er is.",
"Zou je willen dat {0} er zou zijn?"]],

[r'Mijn (.*)',
["Aha, je {0}.",
"Waarom zeg je dat jouw {0}?",
"Hoe voel je je, als jouw {0}?"]],

[r'Jouw (.*)',
["We hebben het over jou, niet over mij.",
"Waarom zeg je dat over mij?",
"Waarom boeit het jou of ik {0}?"]],

[r'Waarom (.*)',
["Waarom vertel jij me niet waarom {0}?",
"Waarom denk je dat {0}?"]],

[r'Ik wil (.*)',
["Wat zou het voor je betekenen, als ik {0}?",
"Waarom wil je {0}?",
"Wat zou je doen als ik {0} zou hebben?",
"Wat zou je doen als je {0} zou hebben?"]],

[r'(.*) moeder(.*)',
["Vertel me meer over je moeder.",
"Hoe zou je je relatie met je moeder beschrijven?",
"Wat vind je van je moeder?",
"Zijn deze gevoelens verwant aan hoe je je vandaag voelt?",
"Een goede relatie met je familie is belangrijk."]],

[r'(.*) vader(.*)',
["Vertel me meer over je vader.",
"Hoe laat je vader je voelen?",
"Wat vind je van je vader?",
"Is de relatie met je vader verwant aan je gevoelens van vandaag?",
"Vind je het moeilijk om je affectief te uiten tegenover je familie?"]],

[r'(.*) kind(.*)',
["Had je goede vrienden als kind?",
"Wat is je favoriete herinnering aan je jeugd?",
"Kan je je dromen of nachtmerries herinneren uit je jeugd?",
"Werd je soms getreitered door andere kinderen?",
"Hoe denk je dat ervaringen uit je jeugd verwant zijn aan je gevoelens van vandaag?"]],

[r'(.*)\?',
["Waarom vraag je dat?",
"Vraag jezelf alsjeblieft of je die vraag zelf kan beantwoorden.",
"Misschien ligt het antwoord bij jezelf?",
"Waarom vertel je me het niet?"]],

[r'stop',
["Bedankt dat je met me gepraat hebt.",
"Dag!",
"Bedankt, dat is dan 150$. Fijne dag verder!"]],

[r'exit',
["Bedankt dat je met me gepraat hebt.",
"Dag!",
"Bedankt, dat is dan 150$. Fijne dag verder!"]],

[r'(.*)',
["Vertel me alsjeblieft meer.",
"Laten we ergens anders over praten. Vertel me bijvoorbeeld eens over je familie.",
"Kan je dat iets meer toelichten?",
"Waarom zeg je dat {0}?",
"Juist ja.",
"Heel interessant.",
"{0}.",
"Aha. En wat verteld dat jou?",
"Hoe laat je dat voelen?",
"Hoe voel je je als je dat zegt?"]]

]


def reflect(fragment):
tokens = fragment.lower().split()
for i, token in enumerate(tokens):
if token in reflections:
tokens[i] = reflections[token]
return ' '.join(tokens)


def analyze(statement):
for pattern, responses in psychobabble:
match = re.match(pattern, statement.rstrip(".!"))
if match:
response = random.choice(responses)
return response.format(*[reflect(g) for g in match.groups()])


def main():
print ("Hoi! Wat leuk dat je met me praat! Als je het gesprek wilt stoppen, typ dan 'stop' of 'exit', of druk op het stopteken."),
print ("")
naam = input("Laten we beginnen met je naam:")
print ("Okay!",naam,", dus. Hoe voel je je vandaag,",naam, "?")

while True:
statement = input("> ")
print (analyze(statement))

if statement == "stop":
break
if statement == "exit":
break


if __name__ == "__main__":
main()

Alle reacties


Acties:
  • 0 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 27-09 22:07

MAX3400

XBL: OctagonQontrol

Zeg, @Verwijderd gisteren had je een vergelijkbaar topic.

Niet om lastig te zijn maar ik heb toen vragen gesteld "wat" er niet goed gaat. Posten "het werkt niet", daar hebben we weinig aan. @RobIII heeft in je vorige topic ook nog wat tips gegeven maar mogelijk heb je die ook over het hoofd gezien?

Ik wil best helpen, ondanks mijn beperktere kennis van Python, maar het helpt ons om exact te duiden wat je niet snapt, welke foutmeldingen je krijgt, welke loop / declaration / input / output je niet duidelijk is etc. etc. etc.

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat was er niet duidelijk aan Rob's post?
RobIII schreef op vrijdag 20 april 2018 @ 11:27:
[...]

Kan iemand even...?
Zo werkt 't hier dus niet.Als je onze Quickstart volgt en een nieuw topic opent en concrete vragen stelt, foutmeldingen vermeldt, aangeeft wat er niet werkt, wat je al geprobeerd hebt om 't op te lossen etc. (Debuggen: Hoe doe ik dat?) dan kunnen we je vast een eind op weg helpen. Als je echter wil dat wij je huiswerk voor je maken dan verwijs ik je naar Devschuurder werven? Gebruik Vraag & Aanbod!.

Open dus gerust een nieuw topic, maar hanteer dan wel de voorgenoemde quickstart. En als je dan code post, gebruik dan code tags en post enkel-en-alleen relevante(!) (stukjes) code a.u.b.
Je tekst een klein beetje aanpassen nog steeds alle code dumpen en basically zeggen dat wij het maar voor je aan moeten passen is gewoon niet hoe het hier werkt. Lees die linkjes eens door.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.