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
Instrucciones del ejercicio
- Itera sobre el diccionario
rulesusando su método.items(), conpatternyresponsescomo variables del iterador. - Usa
re.search()conpatternymessagepara crear un objetomatch. - Si hay coincidencia, usa
random.choice()para elegir unaresponse. - Si
'{0}'está en esaresponse, usa el método.group()del objetomatchcon el índice1para 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"))