327 lines
8.6 KiB
Python
327 lines
8.6 KiB
Python
from nltk.chat.util import Chat, reflections
|
|
|
|
pairs = (
|
|
(
|
|
r"I need (.*)",
|
|
(
|
|
"Why do you need %1?",
|
|
"Would it really help you to get %1?",
|
|
"Are you sure you need %1?",
|
|
),
|
|
),
|
|
(
|
|
r"who created you (.*)",
|
|
(
|
|
"ELIZA was invented in 1966 by Weizenbaum. Why %1?",
|
|
|
|
),
|
|
),
|
|
(
|
|
r"Why don\'t you (.*)",
|
|
(
|
|
"Do you really think I don't %1?",
|
|
"Perhaps eventually I will %1.",
|
|
"Do you really want me to %1?",
|
|
),
|
|
),
|
|
(
|
|
r"Why can\'t I (.*)",
|
|
(
|
|
"Do you think you should be able to %1?",
|
|
"If you could %1, what would you do?",
|
|
"I don't know -- why can't you %1?",
|
|
"Have you really tried?",
|
|
),
|
|
),
|
|
(
|
|
r"I can\'t (.*)",
|
|
(
|
|
"How do you know you can't %1?",
|
|
"Perhaps you could %1 if you tried.",
|
|
"What would it take for you to %1?",
|
|
),
|
|
),
|
|
(
|
|
r"I am (.*)",
|
|
(
|
|
"Did you come to me because you are %1?",
|
|
"How long have you been %1?",
|
|
"How do you feel about being %1?",
|
|
),
|
|
),
|
|
(
|
|
r"I\'m (.*)",
|
|
(
|
|
"How does being %1 make you feel?",
|
|
"Do you enjoy being %1?",
|
|
"Why do you tell me you're %1?",
|
|
"Why do you think you're %1?",
|
|
),
|
|
),
|
|
(
|
|
r"Are you (.*)",
|
|
(
|
|
"Why does it matter whether I am %1?",
|
|
"Would you prefer it if I were not %1?",
|
|
"Perhaps you believe I am %1.",
|
|
"I may be %1 -- what do you think?",
|
|
),
|
|
),
|
|
(
|
|
r"What (.*)",
|
|
(
|
|
"Why do you ask?",
|
|
"How would an answer to that help you?",
|
|
"What do you think?",
|
|
),
|
|
),
|
|
(
|
|
r"How (.*)",
|
|
(
|
|
"How do you suppose?",
|
|
"Perhaps you can answer your own question.",
|
|
"What is it you're really asking?",
|
|
),
|
|
),
|
|
(
|
|
r"Because (.*)",
|
|
(
|
|
"Is that the real reason?",
|
|
"What other reasons come to mind?",
|
|
"Does that reason apply to anything else?",
|
|
"If %1, what else must be true?",
|
|
),
|
|
),
|
|
(
|
|
r"(.*) sorry (.*)",
|
|
(
|
|
"There are many times when no apology is needed.",
|
|
"What feelings do you have when you apologize?",
|
|
),
|
|
),
|
|
(
|
|
r"Hello(.*)",
|
|
(
|
|
"Hello... I'm glad you could drop by today.",
|
|
"Hi there... how are you today?",
|
|
"Hello, how are you feeling today?",
|
|
),
|
|
),
|
|
(
|
|
r"I think (.*)",
|
|
("Do you doubt %1?", "Do you really think so?", "But you're not sure %1?"),
|
|
),
|
|
(
|
|
r"(.*) friend (.*)",
|
|
(
|
|
"Tell me more about your friends.",
|
|
"When you think of a friend, what comes to mind?",
|
|
"Why don't you tell me about a childhood friend?",
|
|
),
|
|
),
|
|
(r"Yes", ("You seem quite sure.", "OK, but can you elaborate a bit?")),
|
|
(
|
|
r"(.*) computer(.*)",
|
|
(
|
|
"Are you really talking about me?",
|
|
"Does it seem strange to talk to a computer?",
|
|
"How do computers make you feel?",
|
|
"Do you feel threatened by computers?",
|
|
),
|
|
),
|
|
(
|
|
r"Is it (.*)",
|
|
(
|
|
"Do you think it is %1?",
|
|
"Perhaps it's %1 -- what do you think?",
|
|
"If it were %1, what would you do?",
|
|
"It could well be that %1.",
|
|
),
|
|
),
|
|
(
|
|
r"It is (.*)",
|
|
(
|
|
"You seem very certain.",
|
|
"If I told you that it probably isn't %1, what would you feel?",
|
|
),
|
|
),
|
|
(
|
|
r"Can you (.*)",
|
|
(
|
|
"What makes you think I can't %1?",
|
|
"If I could %1, then what?",
|
|
"Why do you ask if I can %1?",
|
|
),
|
|
),
|
|
(
|
|
r"Czy mogę (.*)",
|
|
(
|
|
"Być może nie chcesz %1.",
|
|
"Czy chcesz mieć możliwość %1?",
|
|
"Gdybyś mógł %1, czy byś?",
|
|
),
|
|
),
|
|
(
|
|
r"Ty jesteś (.*)",
|
|
(
|
|
"Jak myślisz, dlaczego jestem %1?",
|
|
"Czy cieszy cię myśl, że jestem %1?",
|
|
"Być może chciałbyś, żebym był %1.",
|
|
"Może naprawdę mówisz o sobie?",
|
|
),
|
|
),
|
|
(
|
|
r"Jesteś (.*)",
|
|
(
|
|
"Dlaczego mówisz, że jestem %1?",
|
|
"Jak myślisz, dlaczego jestem %1?",
|
|
"Mówimy o tobie, czy o mnie?",
|
|
),
|
|
),
|
|
(
|
|
r"Ja nie (.*)",
|
|
("Czy naprawdę nie %1?", "Dlaczego nie %1?", "Czy chcesz %1?"),
|
|
),
|
|
(
|
|
r"Ja czuję (.*)",
|
|
(
|
|
"Dobrze, powiedz mi więcej o tych uczuciach.",
|
|
"Czy często czujesz %1?",
|
|
"Kiedy zwykle czujesz %1?",
|
|
"Kiedy czujesz % 1, co robisz?",
|
|
),
|
|
),
|
|
(
|
|
r"Mam (.*)",
|
|
(
|
|
"Dlaczego mówisz mi, że masz %1?",
|
|
"Czy naprawdę masz %1?",
|
|
"Teraz, kiedy masz %1, co zrobisz dalej?",
|
|
),
|
|
),
|
|
(
|
|
r"Ja chcę (.*)",
|
|
(
|
|
"Czy możesz wyjaśnić, dlaczego chcesz %1?",
|
|
"Dlaczego %1?",
|
|
"Kto jeszcze wie, że chcesz %1?",
|
|
),
|
|
),
|
|
(
|
|
r"Jest (.*)",
|
|
(
|
|
"Myślisz, że jest %1?",
|
|
"Prawdopodobnie istnieje %1.",
|
|
"Czy chciałbyś, aby był %1?",
|
|
),
|
|
),
|
|
(
|
|
r"Mój (.*)",
|
|
(
|
|
"Rozumiem, twój %1.",
|
|
"Dlaczego mówisz, że twój %1?",
|
|
"Kiedy Twój %1, jak się czujesz?",
|
|
),
|
|
),
|
|
(
|
|
r"Ty (.*)",
|
|
(
|
|
"Powinniśmy rozmawiać o Tobie, nie o mnie.",
|
|
"Dlaczego tak o mnie mówisz?",
|
|
"Dlaczego obchodzi cię, czy ja %1?",
|
|
),
|
|
),
|
|
(r"Dlaczego (.*)", ("Powiedz mi dlaczego %1?", "Wydaje ci się że, %1?")),
|
|
(
|
|
r"Ja chcę (.*)",
|
|
(
|
|
"Co by dla ciebie znaczyło, gdybyś dostał %1?",
|
|
"Dlaczego chcesz %1?",
|
|
"Co byś zrobił, gdybyś dostał %1?",
|
|
"Jeśli masz %1, co byś zrobił?",
|
|
),
|
|
),
|
|
(
|
|
r"(.*) mother(.*)",
|
|
(
|
|
"Tell me more about your mother.",
|
|
"What was your relationship with your mother like?",
|
|
"How do you feel about your mother?",
|
|
"How does this relate to your feelings today?",
|
|
"Good family relations are important.",
|
|
),
|
|
),
|
|
(
|
|
r"(.*) father(.*)",
|
|
(
|
|
"Tell me more about your father.",
|
|
"How did your father make you feel?",
|
|
"How do you feel about your father?",
|
|
"Does your relationship with your father relate to your feelings today?",
|
|
"Do you have trouble showing affection with your family?",
|
|
),
|
|
),
|
|
(
|
|
r"(.*) child(.*)",
|
|
(
|
|
"Did you have close friends as a child?",
|
|
"What is your favorite childhood memory?",
|
|
"Do you remember any dreams or nightmares from childhood?",
|
|
"Did the other children sometimes tease you?",
|
|
"How do you think your childhood experiences relate to your feelings today?",
|
|
),
|
|
),
|
|
(
|
|
r"(.*)\?",
|
|
(
|
|
"Why do you ask that?",
|
|
"Please consider whether you can answer your own question.",
|
|
"Perhaps the answer lies within yourself?",
|
|
"Why don't you tell me?",
|
|
),
|
|
),
|
|
(
|
|
r"quit",
|
|
(
|
|
"Thank you for talking with me.",
|
|
"Good-bye.",
|
|
"Thank you, that will be $150. Have a good day!",
|
|
),
|
|
),
|
|
(
|
|
r"(.*)",
|
|
(
|
|
"Please tell me more.",
|
|
"Let's change focus a bit... Tell me about your family.",
|
|
"Can you elaborate on that?",
|
|
"Why do you say that %1?",
|
|
"I see.",
|
|
"Very interesting.",
|
|
"%1.",
|
|
"I see. And what does that tell you?",
|
|
"How does that make you feel?",
|
|
"How do you feel when you say that?",
|
|
),
|
|
),
|
|
)
|
|
|
|
eliza_chatbot = Chat(pairs, reflections)
|
|
|
|
|
|
def eliza_chat():
|
|
print("Psychiatrist\n---------")
|
|
print("Talk to the program by typing in plain English, using normal upper-")
|
|
print('and lower-case letters and punctuation. Enter "quit" when done.')
|
|
print("=" * 72)
|
|
print("Hello. My name is Eliza.\nHow are you feeling today?")
|
|
|
|
eliza_chatbot.converse()
|
|
|
|
|
|
def demo():
|
|
eliza_chat()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
demo()
|