{"cells":[{"cell_type":"code","execution_count":1,"id":"a06e398f","metadata":{"id":"a06e398f","executionInfo":{"status":"ok","timestamp":1684905637979,"user_tz":-330,"elapsed":2081,"user":{"displayName":"Sowmya HK","userId":"12288333963982404914"}}},"outputs":[],"source":["import tensorflow as tf\n","import numpy as np"]},{"cell_type":"code","execution_count":2,"id":"656333bd","metadata":{"id":"656333bd","executionInfo":{"status":"ok","timestamp":1684905645140,"user_tz":-330,"elapsed":33,"user":{"displayName":"Sowmya HK","userId":"12288333963982404914"}}},"outputs":[],"source":["# Define the questions and answers\n","questions = [\"hi\",\"what is your name?\",\"bye\"]\n","answers = [\"Hello\",\"My name is Chatbot.\",\"Good bye\"]"]},{"cell_type":"code","execution_count":3,"id":"d32b33bb","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"d32b33bb","executionInfo":{"status":"ok","timestamp":1684905651773,"user_tz":-330,"elapsed":598,"user":{"displayName":"Sowmya HK","userId":"12288333963982404914"}},"outputId":"5db868e8-8550-4ab2-fa4f-98dae6e93217"},"outputs":[{"output_type":"stream","name":"stdout","text":["{'hi': 0, 'what': 1, 'is': 2, 'your': 3, 'name?': 4, 'bye': 5}\n"]}],"source":["# Define a vocabulary and mapping from words to indices\n","l=(\" \".join(questions)).split()\n","vocab={j:i for i,j in enumerate(l)}\n","print(vocab)"]},{"cell_type":"code","execution_count":4,"id":"38c1dc3a","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"38c1dc3a","executionInfo":{"status":"ok","timestamp":1684905663364,"user_tz":-330,"elapsed":5,"user":{"displayName":"Sowmya HK","userId":"12288333963982404914"}},"outputId":"f048fece-4480-4702-f427-de6129d6ceb0"},"outputs":[{"output_type":"stream","name":"stdout","text":["[[1. 0. 0. 0. 0. 0.]\n"," [0. 1. 1. 1. 1. 0.]\n"," [0. 0. 0. 0. 0. 1.]]\n","[[1. 0. 0.]\n"," [0. 1. 0.]\n"," [0. 0. 1.]]\n"]}],"source":["# Convert the questions and answers to numerical form\n","X = np.zeros((len(questions), len(vocab)), dtype=np.float32)\n","Y = np.zeros((len(answers), len(answers)), dtype=np.float32)\n","for i, question in enumerate(questions):\n","    for word in question.lower().split():\n","        if word in vocab:\n","            X[i, vocab[word]] = 1.0\n","    Y[i, i] = 1.0\n","print(X)\n","print(Y)"]},{"cell_type":"code","execution_count":5,"id":"d62dd4a9","metadata":{"id":"d62dd4a9","executionInfo":{"status":"ok","timestamp":1684905852343,"user_tz":-330,"elapsed":6,"user":{"displayName":"Sowmya HK","userId":"12288333963982404914"}}},"outputs":[],"source":["# Define the neural network model\n","model = tf.keras.Sequential([\n","    tf.keras.layers.Dense(64, activation='relu', input_shape=(len(vocab),)),\n","    tf.keras.layers.Dense(64, activation='relu'),\n","    tf.keras.layers.Dense(len(answers), activation='softmax')\n","])\n","model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])"]},{"cell_type":"code","execution_count":6,"id":"6ad54a36","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6ad54a36","executionInfo":{"status":"ok","timestamp":1684905857418,"user_tz":-330,"elapsed":1867,"user":{"displayName":"Sowmya HK","userId":"12288333963982404914"}},"outputId":"5108eac1-3693-4213-d40b-70457b0d7601"},"outputs":[{"output_type":"stream","name":"stdout","text":["Epoch 1/10\n","1/1 [==============================] - 1s 954ms/step - loss: 1.1684 - accuracy: 0.3333\n","Epoch 2/10\n","1/1 [==============================] - 0s 13ms/step - loss: 1.1420 - accuracy: 0.3333\n","Epoch 3/10\n","1/1 [==============================] - 0s 11ms/step - loss: 1.1165 - accuracy: 0.3333\n","Epoch 4/10\n","1/1 [==============================] - 0s 11ms/step - loss: 1.0926 - accuracy: 0.3333\n","Epoch 5/10\n","1/1 [==============================] - 0s 10ms/step - loss: 1.0697 - accuracy: 0.3333\n","Epoch 6/10\n","1/1 [==============================] - 0s 9ms/step - loss: 1.0495 - accuracy: 0.3333\n","Epoch 7/10\n","1/1 [==============================] - 0s 11ms/step - loss: 1.0300 - accuracy: 0.6667\n","Epoch 8/10\n","1/1 [==============================] - 0s 11ms/step - loss: 1.0107 - accuracy: 1.0000\n","Epoch 9/10\n","1/1 [==============================] - 0s 11ms/step - loss: 0.9929 - accuracy: 1.0000\n","Epoch 10/10\n","1/1 [==============================] - 0s 10ms/step - loss: 0.9757 - accuracy: 1.0000\n"]},{"output_type":"execute_result","data":{"text/plain":["<keras.callbacks.History at 0x7f99cc28dd20>"]},"metadata":{},"execution_count":6}],"source":["# Train the model on the questions and answers\n","model.fit(X, Y, epochs=10)"]},{"cell_type":"code","execution_count":7,"id":"9b5b776f","metadata":{"id":"9b5b776f","executionInfo":{"status":"ok","timestamp":1684905864239,"user_tz":-330,"elapsed":518,"user":{"displayName":"Sowmya HK","userId":"12288333963982404914"}}},"outputs":[],"source":["# Define a function to generate a response from the model\n","def generate_response(input_text):\n","    x = np.zeros((1, len(vocab)), dtype=np.float32)\n","    for word in input_text.lower().split():\n","        if word in vocab:\n","            x[0, vocab[word]] = 1.0\n","    y = model.predict(x)[0]\n","    index = np.argmax(y)\n","    print(index)\n","    return answers[index]"]},{"cell_type":"code","source":[],"metadata":{"id":"vxF0-D5N2bOw"},"id":"vxF0-D5N2bOw","execution_count":null,"outputs":[]},{"cell_type":"code","execution_count":null,"id":"1b767176","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"1b767176","outputId":"2fe80fd9-78c3-4382-eaab-538abfdc8e90"},"outputs":[{"output_type":"stream","name":"stdout","text":["You: hi\n","1/1 [==============================] - 0s 93ms/step\n","0\n","Chatbot: Hello\n","You: bye\n","1/1 [==============================] - 0s 21ms/step\n","2\n","Chatbot: Good bye\n","You: what is your name\n","1/1 [==============================] - 0s 24ms/step\n","1\n","Chatbot: My name is Chatbot.\n","You: what is the time now\n","1/1 [==============================] - 0s 22ms/step\n","0\n","Chatbot: Hello\n"]}],"source":["# Ask for user input and generate a response\n","while True:\n","    user_input = input(\"You: \")\n","    if user_input.lower() == \"exit\":\n","        break\n","    response = generate_response(user_input)\n","    print(\"Chatbot:\", response)"]},{"cell_type":"code","source":[],"metadata":{"id":"e-lh_H-W2Thz"},"id":"e-lh_H-W2Thz","execution_count":null,"outputs":[]},{"cell_type":"code","execution_count":null,"id":"e512d6bf","metadata":{"id":"e512d6bf"},"outputs":[],"source":[]}],"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.10.4"},"colab":{"provenance":[]}},"nbformat":4,"nbformat_minor":5}