{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "13a78612-e727-4e7d-b087-438014883903",
   "metadata": {},
   "outputs": [],
   "source": [
    "from nltk.chat.util import Chat, reflections\n",
    "\n",
    "pairs = (\n",
    "    (\n",
    "        r\"I need (.*)\",\n",
    "        (\n",
    "            \"Why do you need %1?\",\n",
    "            \"Would it really help you to get %1?\",\n",
    "            \"Are you sure you need %1?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"who created you (.*)\",\n",
    "        (\n",
    "            \"ELIZA was invented in 1966 by Weizenbaum. Why %1?\",\n",
    "\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Why don\\'t you (.*)\",\n",
    "        (\n",
    "            \"Do you really think I don't %1?\",\n",
    "            \"Perhaps eventually I will %1.\",\n",
    "            \"Do you really want me to %1?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Why can\\'t I (.*)\",\n",
    "        (\n",
    "            \"Do you think you should be able to %1?\",\n",
    "            \"If you could %1, what would you do?\",\n",
    "            \"I don't know -- why can't you %1?\",\n",
    "            \"Have you really tried?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"I can\\'t (.*)\",\n",
    "        (\n",
    "            \"How do you know you can't %1?\",\n",
    "            \"Perhaps you could %1 if you tried.\",\n",
    "            \"What would it take for you to %1?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"I am (.*)\",\n",
    "        (\n",
    "            \"Did you come to me because you are %1?\",\n",
    "            \"How long have you been %1?\",\n",
    "            \"How do you feel about being %1?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"I\\'m (.*)\",\n",
    "        (\n",
    "            \"How does being %1 make you feel?\",\n",
    "            \"Do you enjoy being %1?\",\n",
    "            \"Why do you tell me you're %1?\",\n",
    "            \"Why do you think you're %1?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Are you (.*)\",\n",
    "        (\n",
    "            \"Why does it matter whether I am %1?\",\n",
    "            \"Would you prefer it if I were not %1?\",\n",
    "            \"Perhaps you believe I am %1.\",\n",
    "            \"I may be %1 -- what do you think?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"What (.*)\",\n",
    "        (\n",
    "            \"Why do you ask?\",\n",
    "            \"How would an answer to that help you?\",\n",
    "            \"What do you think?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"How (.*)\",\n",
    "        (\n",
    "            \"How do you suppose?\",\n",
    "            \"Perhaps you can answer your own question.\",\n",
    "            \"What is it you're really asking?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Ponieważ (.*)\",\n",
    "        (\n",
    "            \"Czy to prawdziwy powód?\",\n",
    "            \"Jakie inne powody przychodzą Ci na myśl?”,\",\n",
    "            \"Czy ten powód dotyczy czegokolwiek innego?\",\n",
    "            \"Jeśli %1, co jeszcze musi być prawdą?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"(.*) przepraszam (.*)\",\n",
    "        (\n",
    "            \"Wiele razy przeprosiny nie są potrzebne.\",\n",
    "            \"Co czujesz kiedy przepraszasz?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Cześć(.*)\",\n",
    "        (\n",
    "            \"Cześć... cieszę się, że mogłeś dzisiaj wpaść..\",\n",
    "            \"Cześć... jak się masz dzisiaj?\",\n",
    "            \"Cześć, jak się dzisiaj czujesz?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Myśle, że (.*)\",\n",
    "        (\"Czy wątpisz w %1?\", \"Naprawdę tak myślisz?\", \"Ale nie jesteś pewien, że %1?\"),\n",
    "    ),\n",
    "    (\n",
    "        r\"(.*) przyjaciel (.*)\",\n",
    "        (\n",
    "            \"Opowiedz mi więcej o swoich przyjaciołach.\",\n",
    "            \"Kiedy myślisz o przyjacielu, co przychodzi ci na myśl?\",\n",
    "            \"Dlaczego miałbyś nie opowiedzieć o przyjacielu z dzieciństwa?\",\n",
    "        ),\n",
    "    ),\n",
    "    (r\"Tak\", (\"Wydajesz się całkiem pewien.\", \"OK, ale czy możesz trochę rozwinąć?\")),\n",
    "    (\n",
    "        r\"(.*) komputer(.*)\",\n",
    "        (\n",
    "            \"Naprawdę mówisz o mnie?\",\n",
    "            \"Czy rozmowa z komputerem wydaje się dziwna?\",\n",
    "            \"Jak się czujesz przy komputerach?\",\n",
    "            \"Czy czujesz się zagrożony przez komputery?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"To jest (.*)\",\n",
    "        (\n",
    "            \"Czy myślisz, że to %1?\",\n",
    "            \"Może to %1 -- co myślisz?\",\n",
    "            \"Gdyby to był %1, co byś zrobił?\",\n",
    "            \"Może być tak, że %1.\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Jest to (.*)\",\n",
    "        (\n",
    "            \"Wydajesz się bardzo pewny.\",\n",
    "            \"Gdybym ci powiedziała, że prawdopodobnie nie jest to %1, co byś poczuł?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Czy możesz (.*)\",\n",
    "        (\n",
    "            \"Dlaczego myślisz, że nie mogę %1?\",\n",
    "            \"Gdybym mógł %1, to co?\",\n",
    "            \"Dlaczego pytasz, czy mogę %1?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Czy mogę (.*)\",\n",
    "        (\n",
    "            \"Być może nie chcesz %1.\",\n",
    "            \"Czy chcesz mieć możliwość %1?\",\n",
    "            \"Gdybyś mógł %1, czy byś?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"You are (.*)\",\n",
    "        (\n",
    "            \"Why do you think I am %1?\",\n",
    "            \"Does it please you to think that I'm %1?\",\n",
    "            \"Perhaps you would like me to be %1.\",\n",
    "            \"Perhaps you're really talking about yourself?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"You\\'re (.*)\",\n",
    "        (\n",
    "            \"Why do you say I am %1?\",\n",
    "            \"Why do you think I am %1?\",\n",
    "            \"Are we talking about you, or me?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"I don\\'t (.*)\",\n",
    "        (\"Don't you really %1?\", \"Why don't you %1?\", \"Do you want to %1?\"),\n",
    "    ),\n",
    "    (\n",
    "        r\"I feel (.*)\",\n",
    "        (\n",
    "            \"Good, tell me more about these feelings.\",\n",
    "            \"Do you often feel %1?\",\n",
    "            \"When do you usually feel %1?\",\n",
    "            \"When you feel %1, what do you do?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"I have (.*)\",\n",
    "        (\n",
    "            \"Why do you tell me that you've %1?\",\n",
    "            \"Have you really %1?\",\n",
    "            \"Now that you have %1, what will you do next?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"I would (.*)\",\n",
    "        (\n",
    "            \"Could you explain why you would %1?\",\n",
    "            \"Why would you %1?\",\n",
    "            \"Who else knows that you would %1?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"Is there (.*)\",\n",
    "        (\n",
    "            \"Do you think there is %1?\",\n",
    "            \"It's likely that there is %1.\",\n",
    "            \"Would you like there to be %1?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"My (.*)\",\n",
    "        (\n",
    "            \"I see, your %1.\",\n",
    "            \"Why do you say that your %1?\",\n",
    "            \"When your %1, how do you feel?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"You (.*)\",\n",
    "        (\n",
    "            \"We should be discussing you, not me.\",\n",
    "            \"Why do you say that about me?\",\n",
    "            \"Why do you care whether I %1?\",\n",
    "        ),\n",
    "    ),\n",
    "    (r\"Why (.*)\", (\"Why don't you tell me the reason why %1?\", \"Why do you think %1?\")),\n",
    "    (\n",
    "        r\"I want (.*)\",\n",
    "        (\n",
    "            \"What would it mean to you if you got %1?\",\n",
    "            \"Why do you want %1?\",\n",
    "            \"What would you do if you got %1?\",\n",
    "            \"If you got %1, then what would you do?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"(.*) mother(.*)\",\n",
    "        (\n",
    "            \"Tell me more about your mother.\",\n",
    "            \"What was your relationship with your mother like?\",\n",
    "            \"How do you feel about your mother?\",\n",
    "            \"How does this relate to your feelings today?\",\n",
    "            \"Good family relations are important.\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"(.*) father(.*)\",\n",
    "        (\n",
    "            \"Tell me more about your father.\",\n",
    "            \"How did your father make you feel?\",\n",
    "            \"How do you feel about your father?\",\n",
    "            \"Does your relationship with your father relate to your feelings today?\",\n",
    "            \"Do you have trouble showing affection with your family?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"(.*) child(.*)\",\n",
    "        (\n",
    "            \"Did you have close friends as a child?\",\n",
    "            \"What is your favorite childhood memory?\",\n",
    "            \"Do you remember any dreams or nightmares from childhood?\",\n",
    "            \"Did the other children sometimes tease you?\",\n",
    "            \"How do you think your childhood experiences relate to your feelings today?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"(.*)\\?\",\n",
    "        (\n",
    "            \"Why do you ask that?\",\n",
    "            \"Please consider whether you can answer your own question.\",\n",
    "            \"Perhaps the answer lies within yourself?\",\n",
    "            \"Why don't you tell me?\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"quit\",\n",
    "        (\n",
    "            \"Thank you for talking with me.\",\n",
    "            \"Good-bye.\",\n",
    "            \"Thank you, that will be $150.  Have a good day!\",\n",
    "        ),\n",
    "    ),\n",
    "    (\n",
    "        r\"(.*)\",\n",
    "        (\n",
    "            \"Please tell me more.\",\n",
    "            \"Let's change focus a bit... Tell me about your family.\",\n",
    "            \"Can you elaborate on that?\",\n",
    "            \"Why do you say that %1?\",\n",
    "            \"I see.\",\n",
    "            \"Very interesting.\",\n",
    "            \"%1.\",\n",
    "            \"I see.  And what does that tell you?\",\n",
    "            \"How does that make you feel?\",\n",
    "            \"How do you feel when you say that?\",\n",
    "        ),\n",
    "    ),\n",
    ")\n",
    "\n",
    "eliza_chatbot = Chat(pairs, reflections)\n",
    "\n",
    "\n",
    "def eliza_chat():\n",
    "    print(\"Psychiatrist\\n---------\")\n",
    "    print(\"Talk to the program by typing in plain English, using normal upper-\")\n",
    "    print('and lower-case letters and punctuation.  Enter \"quit\" when done.')\n",
    "    print(\"=\" * 72)\n",
    "    print(\"Hello. My name is Eliza.\\nHow are you feeling today?\")\n",
    "\n",
    "    eliza_chatbot.converse()\n",
    "\n",
    "\n",
    "def demo():\n",
    "    eliza_chat()\n",
    "\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    demo()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8b790564-2e67-4f6a-8565-4c6eceeb3de3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Psychiatrist\n",
      "---------\n",
      "Talk to the program by typing in plain English, using normal upper-\n",
      "and lower-case letters and punctuation.  Enter \"quit\" when done.\n",
      "========================================================================\n",
      "Hello. My name is Eliza.\n",
      "How are you feeling today?\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "> czy moge\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Please tell me more.\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "> Czy moge\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Very interesting.\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "> Czy mogę\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "I see.\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "> Czy mogę\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Please tell me more.\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "> Czy mogę grać w płkę?\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Czy chcesz mieć możliwość grać w płkę?\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "> Czy moge grać w lotki?\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Perhaps the answer lies within yourself?\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      "> Czy mogę grać w lotki\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Być może nie chcesz grać w lotki.\n"
     ]
    }
   ],
   "source": [
    "demo()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}