Extracción de entidades con regex
Ahora vas a usar otro método sencillo, esta vez para encontrar el nombre de una persona en una frase, como "hello, my name is David Copperfield".
Buscarás las palabras clave "name" o "call(ed)", y localizarás palabras con mayúscula inicial usando regex y asumirás que son nombres. Tu tarea en este ejercicio es definir una función find_name() para hacerlo.
Este ejercicio forma parte del curso
Creación de chatbots en Python
Instrucciones del ejercicio
- Usa
re.compile()para crear un patrón que compruebe si aparecen las palabras clave"name"o"call". - Crea un patrón para encontrar palabras con mayúscula inicial.
- Usa el método
.findall()sobrename_patternpara recuperar todas las palabras que coincidan enmessage. - Llama a tu función
find_name()dentro derespond()y luego pulsa "Enviar respuesta" para ver cómo responde el bot a los mensajes proporcionados.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Define find_name()
def find_name(message):
name = None
# Create a pattern for checking if the keywords occur
name_keyword = ____
# Create a pattern for finding capitalized words
name_pattern = ____
if name_keyword.search(message):
# Get the matching words in the string
name_words = ____
if len(name_words) > 0:
# Return the name if the keywords are present
name = ' '.join(name_words)
return name
# Define respond()
def respond(message):
# Find the name
name = ____
if name is None:
return "Hi there!"
else:
return "Hello, {0}!".format(name)
# Send messages
send_message("my name is David Copperfield")
send_message("call me Ishmael")
send_message("People call me Cassandra")