Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Definuj funkci respond(), která přijímá argumenty message, params a neg_params.
  • Zavolej funkci negated_ents() s argumenty message a ent_vals. Výsledek ulož do proměnné negated.
  • Zavolej upravenou funkci find_hotels() se slovníky params a neg_params pro vyhledání odpovídajících hotelů. Výsledek ulož do proměnné results.
  • Inicializuj slovníky params a neg_params mimo funkci respond() 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))
Upravit a spustit kód