Filtrování s vyloučenými sloty
Teď spojíš několik myšlenek z předchozích cvičení, aby mohl uživatel botovi říct, co chce i co nechce — přičemž tyto informace může rozdělit do více zpráv.
Funkce negated_ents() je pro tebe už připravena. Navíc je k dispozici mírně upravená verze funkce find_hotels(), která kromě slovníku params přijímá i slovník neg_params.
Toto cvičení je součástí kurzu
Building Chatbots in Python
Pokyny k cvičení
- Definuj funkci
respond(), která přijímá argumentymessage,paramsaneg_params. - Zavolej funkci
negated_ents()s argumentymessageaent_vals. Výsledek ulož do proměnnénegated. - Zavolej upravenou funkci
find_hotels()se slovníkyparamsaneg_paramspro vyhledání odpovídajících hotelů. Výsledek ulož do proměnnéresults. - Inicializuj slovníky
paramsaneg_paramsmimo funkcirespond()a klikni na 'Submit Answer', abys viděl/a odpovědi bota!
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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))