ComenzarEmpieza gratis

Filtrado con ranuras excluidas

Ahora vas a reunir algunas de las ideas de los ejercicios anteriores para permitir que las personas le digan a tu bot lo que quieren y lo que no quieren, repartido en varios mensajes.

La función negated_ents() ya está definida para ti. Además, se ha definido una versión ligeramente ajustada de la función find_hotels(), que acepta un diccionario neg_params además de un diccionario params.

Este ejercicio forma parte del curso

Creación de chatbots en Python

Ver curso

Instrucciones del ejercicio

  • Define una función respond() que acepte message, params y neg_params como argumentos.
  • Usa la función negated_ents() con message y ent_vals como argumentos. Guarda el resultado en negated.
  • Usa la versión ajustada de find_hotels() con los diccionarios params y neg_params como argumentos para encontrar hoteles que coincidan. Guarda el resultado en results.
  • Inicializa los diccionarios params y neg_params fuera de la función respond() y pulsa "Enviar respuesta" para ver las respuestas del bot.

Ejercicio interactivo práctico

Prueba este ejercicio y completa 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))
Editar y ejecutar código