HULP NODIG CHATROBOT

Pagina: 1
Acties:
  • 580 views

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mijn vraag

Voor ons schoolproject moesten we een chatbot bepaalde vragen laten beantwoorden. Op dit moment werkt alles, maar we moeten nog implementeren dat er later in het gesprek de ingegeven naam naar voren komt. De robot moet dus later in het gesprek je naam opnieuw gebruiken (die wordt gegeven tijdens het gesprek) op een geschikt moment (de robot zal dus een basisgeheugen moet hebben van delen van het gesprek). We kunnen het niet opgelost krijgen. Kunt u ons helpen? Dat zou geweldig zijn! Bij voorbaat bedankt.
Met vriendelijke groet, Laura


Wat ik al gevonden of geprobeerd heb op pyhton:

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:
  • +1 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 17-09 12:55

MAX3400

XBL: OctagonQontrol

Schoolproject
Ik neem aan dat je klasgenoten dezelfde opdracht hebben gekregen en dat je eventueel wel met ze kan overleggen of de leraar om advies kan vragen? Tenminste, de code lijkt me niet onoverzichtelijk lang/groot dus iemand heeft toch wel een tip of een andere aanpak?
kunnen het niet opgelost krijgen
Wat niet? Ik zie namelijk geen foutcodes of vraagstelling waar je tegenaan loopt. Alleen een lap code (die je trouwens beter even tussen code-tags kan zetten). Ik neem aan dat jullie met Python 2.7 werken en nog niet met 3.0? Of doe ik nu een aanname (en dus mogelijk een code-blok / verbetering) die niet correct is?

Hier even een voorbeeldje van code-tags
code:
1
2
3
mport re
import random
   reflections = {

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


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op vrijdag 20 april 2018 @ 11:03:
Kunt u ons helpen? Dat zou geweldig zijn! Bij voorbaat bedankt.
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.

OH EN DOE DAN METEEN EEN WAT MINDER SCHREEUWENDE TOPICTITEL EN PROBEER DAN OOK EVEN EEN TITEL TE VERZINNEN DIE DE LADING EEN BEETJE DEKT I.P.V. EEN GENERIEKE "HELP! PEEUW!"

[ Voor 7% gewijzigd door RobIII op 20-04-2018 11:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.