You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.8 KiB
45 lines
1.8 KiB
import random
|
|
from textblob import TextBlob
|
|
from textblob.np_extractors import ConllExtractor
|
|
extractor = ConllExtractor()
|
|
|
|
def main():
|
|
print("Hello, I am Marvin, the friendly 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:
|
|
# Create a TextBlob based on the user input. Then extract the noun phrases
|
|
user_input_blob = TextBlob(user_input, np_extractor=extractor)
|
|
np = user_input_blob.noun_phrases
|
|
response = ""
|
|
if user_input_blob.polarity <= -0.5:
|
|
response = "Oh dear, that sounds bad. "
|
|
elif user_input_blob.polarity <= 0:
|
|
response = "Hmm, that's not great. "
|
|
elif user_input_blob.polarity <= 0.5:
|
|
response = "Well, that sounds positive. "
|
|
elif user_input_blob.polarity <= 1:
|
|
response = "Wow, that sounds great. "
|
|
|
|
if len(np) != 0:
|
|
# There was at least one noun phrase detected, so ask about that and pluralise it
|
|
# e.g. cat -> cats or mouse -> mice
|
|
response = response + "Can you tell me more about " + np[0].pluralize() + "?"
|
|
else:
|
|
response = response + "Can you tell me more?"
|
|
print(response)
|
|
|
|
print("It was nice talking to you, goodbye!")
|
|
|
|
# Start the program
|
|
main()
|