Zpřesnění vyhledávání
Teď napíšeš bota, který uživatelům umožní přidávat filtry postupně – pro případ, že nezadají všechny své požadavky v jedné zprávě.
Za tímto účelem inicializuj prázdný slovník params mimo funkci respond() (na rozdíl od předchozího cvičení, kde byl uvnitř funkce).
Tvoje funkce respond() bude tento slovník přijímat jako argument.
Toto cvičení je součástí kurzu
Building Chatbots in Python
Pokyny k cvičení
- Definuj funkci
respond(), která přijímá dva argumenty – zprávumessagea slovníkparams– a vrací dva výsledky: zprávu k odeslání uživateli a aktualizovaný slovníkparams. - Extrahuj
"entities"ze zprávymessagepomocí metody.parse()objektuinterpreter, přesně jako v předchozím cvičení. - Pomocí funkce
find_hotels()najdi hotely odpovídající parametrůmparams. - Inicializuj slovník
paramsmimo funkcirespond()a klikni na Odeslat odpověď, aby se zprávy odeslaly botovi.
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 a respond function, taking the message and existing params as input
def ____(____, ____):
# Extract the entities
entities = ____
# Fill the dictionary with entities
for ent in entities:
params[ent["entity"]] = str(ent["value"])
# Find the hotels
results = ____
names = [r[0] for r in results]
n = min(len(results), 3)
# Return the appropriate response
return responses[n].format(*names), params
# Initialize params dictionary
params = ____
# Pass the messages to the bot
for message in ["I want an expensive hotel", "in the north of town"]:
print("USER: {}".format(message))
response, params = respond(message, params)
print("BOT: {}".format(response))