Filtering with excluded slots
Now you're going to put together some of the ideas from previous exercises in order to allow users to tell your bot about what they do and do not want, split across multiple messages.
The negated_ents()
function has already been defined for you. Additionally, a slightly tweaked version of the find_hotels()
function, which accepts a neg_params
dictionary in addition to a params
dictionary, has been defined.
Este ejercicio forma parte del curso
Building Chatbots in Python
Instrucciones del ejercicio
- Define a
respond()
function which accepts amessage
,params
, andneg_params
as arguments. - Use the
negated_ents()
function withmessage
andent_vals
as arguments. Store the result innegated
. - Use the tweaked
find_hotels()
function with theparams
andneg_params
dictionaries as arguments to find matching hotels. Store the result inresults
. - Initialize the
params
andneg_params
dictionaries outside therespond()
function and hit 'Submit Answer' to see the bot's responses!
Ejercicio interactivo práctico
Prueba este ejercicio completando el código de muestra.
# Define the respond function
def ____:
# Extract the entities
entities = interpreter.parse(message)["entities"]
ent_vals = [e["value"] for e in entities]
# Look for negated entities
negated = ____
for ent in entities:
if ent["value"] in negated and negated[ent["value"]]:
neg_params[ent["entity"]] = str(ent["value"])
else:
params[ent["entity"]] = str(ent["value"])
# Find the hotels
results = ____
names = [r[0] for r in results]
n = min(len(results),3)
# Return the correct response
return responses[n].format(*names), params, neg_params
# Initialize params and neg_params
params = ____
neg_params = ____
# Pass the messages to the bot
for message in ["I want a cheap hotel", "but not in the north of town"]:
print("USER: {}".format(message))
response, params, neg_params = respond(message, params, neg_params)
print("BOT: {}".format(response))