parent
aae8023ce3
commit
ee84c0aad8
@ -1,26 +1,91 @@
|
||||
import random
|
||||
import string
|
||||
# New Test
|
||||
INTENTS = {
|
||||
"greeting": ["hello", "hi", "hey"],
|
||||
"question": ["why", "what", "how", "is", "are", "?"],
|
||||
"opinion": ["i think", "i believe", "in my opinion"],
|
||||
"goodbye": ["bye", "exit", "quit"]
|
||||
}
|
||||
responses ={
|
||||
"greeting": [
|
||||
"Hello. How can I assist you today?"
|
||||
],
|
||||
"question": [
|
||||
"That is a thoughtful question. Could you clarify further?",
|
||||
"Let us explore that in more detail."
|
||||
],
|
||||
"opinion": [
|
||||
"That is an interesting perspective. What led you to that conclusion?"
|
||||
],
|
||||
"unknown": [
|
||||
"I am not entirely sure I understand. Could you rephrase?",
|
||||
"Could you provide more detail so I can respond appropriately?"
|
||||
]
|
||||
}
|
||||
conversation_state = {
|
||||
"last_intent": None,
|
||||
"last_topic": None
|
||||
}
|
||||
def normalize(text):
|
||||
text = text.lower()
|
||||
return text.translate(str.maketrans('', '', string.punctuation))
|
||||
def detect_intent(text):
|
||||
for intent, patterns in INTENTS.items():
|
||||
for pattern in patterns:
|
||||
if pattern in text:
|
||||
return intent
|
||||
return "unknown"
|
||||
|
||||
# This list contains the random responses (you can add your own or translate them into your own language too)
|
||||
random_responses = ["That is quite interesting, please tell me more.",
|
||||
"I see. Do go on.",
|
||||
"Why do you say that?",
|
||||
"Funny weather we've been having, isn't it?",
|
||||
"Let's change the subject.",
|
||||
"Did you catch the game last night?"]
|
||||
|
||||
print("Hello, I am Marvin, the simple robot.")
|
||||
print("You can end this conversation at any time by typing 'bye'")
|
||||
print("After typing each answer, press 'enter'")
|
||||
print("How are you today?")
|
||||
def extract_topic(text):
|
||||
keywords = ["coding", "programming", "money", "career", "finance"]
|
||||
for word in keywords:
|
||||
if word in text:
|
||||
return word
|
||||
return None
|
||||
|
||||
def generate_response(intent, topic):
|
||||
base_response = random.choice(responses.get(intent, responses["unknown"]))
|
||||
if topic:
|
||||
return f"{base_response} You mentioned {topic}, Would you like to discuss it further?"
|
||||
return base_response
|
||||
print("Hello, I am Paskal Chatbot, the conversational AI.")
|
||||
print("Type 'bye' to end the conversation.")
|
||||
while True:
|
||||
# wait for the user to enter some text
|
||||
user_input = input("> ")
|
||||
if user_input.lower() == "bye":
|
||||
# if they typed in 'bye' (or even BYE, ByE, byE etc.), break out of the loop
|
||||
normalized_input = normalize(user_input)
|
||||
if normalized_input == "bye":
|
||||
print("It was nice talking to you, goodbye!")
|
||||
break
|
||||
else:
|
||||
response = random.choices(random_responses)[0]
|
||||
intent = detect_intent(normalized_input)
|
||||
topic = extract_topic(normalized_input)
|
||||
conversation_state["last_intent"] = intent
|
||||
if topic:
|
||||
conversation_state["last_topic"] = topic
|
||||
response = generate_response(intent, topic)
|
||||
print(response)
|
||||
|
||||
print("It was nice talking to you, goodbye!")
|
||||
# This list contains the random responses (you can add your own or translate them into your own language too)
|
||||
# random_responses = ["That is quite interesting, please tell me more.",
|
||||
# "I see. Do go on.",
|
||||
# "Why do you say that?",
|
||||
# "Funny weather we've been having, isn't it?",
|
||||
# "Let's change the subject.",
|
||||
# "Did you catch the game last night?"]
|
||||
|
||||
# print("Hello, I am Marvin, the simple robot.")
|
||||
# print("You can end this conversation at any time by typing 'bye'")
|
||||
# print("After typing each answer, press 'enter'")
|
||||
# print("How are you today?")
|
||||
|
||||
# while True:
|
||||
# # wait for the user to enter some text
|
||||
# user_input = input("> ")
|
||||
# if user_input.lower() == "bye":
|
||||
# # if they typed in 'bye' (or even BYE, ByE, byE etc.), break out of the loop
|
||||
# break
|
||||
# else:
|
||||
# response = random.choices(random_responses)[0]
|
||||
# print(response)
|
||||
|
||||
# print("It was nice talking to you, goodbye!")
|
||||
|
||||
Loading…
Reference in new issue