ComenzarEmpieza gratis

ELIZA II: Extracción de frases clave

Lo realmente ingenioso de ELIZA es cómo el programa da la impresión de entender lo que le dices al incluir a veces frases del usuario en sus respuestas.

En este ejercicio, compararás mensajes con algunos patrones comunes y extraerás frases usando re.search(). Ya se ha definido un diccionario llamado rules, que hace corresponder los siguientes patrones:

  • "do you think (.*)"
  • "do you remember (.*)"
  • "I want (.*)"
  • "if (.*)"

Antes de empezar el ejercicio, inspecciona este diccionario en la Shell.

Este ejercicio forma parte del curso

Creación de chatbots en Python

Ver curso

Instrucciones del ejercicio

  • Itera sobre el diccionario rules usando su método .items(), con pattern y responses como variables del iterador.
  • Usa re.search() con pattern y message para crear un objeto match.
  • Si hay coincidencia, usa random.choice() para elegir una response.
  • Si '{0}' está en esa response, usa el método .group() del objeto match con el índice 1 para recuperar una frase.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Define match_rule()
def match_rule(rules, message):
    response, phrase = "default", None
    
    # Iterate over the rules dictionary
    for ____, ____ in ____:
        # Create a match object
        match = ____
        if match is not None:
            # Choose a random response
            response = ____
            if '{0}' in response:
                phrase = ____
    # Return the response and phrase
    return response.format(phrase)

# Test match_rule
print(match_rule(rules, "do you remember your last birthday"))
Editar y ejecutar código