Extrakce entit pomocí regexu
Teď vyzkoušíš další jednoduchou metodu – tentokrát pro vyhledání jména osoby ve větě, například „hello, my name is David Copperfield".
Budeš hledat klíčová slova "name" nebo "call(ed)" a pomocí regexu vyhledávat slova začínající velkým písmenem, která budeš považovat za jména. Tvým úkolem v tomto cvičení je definovat funkci find_name().
Toto cvičení je součástí kurzu
Building Chatbots in Python
Pokyny k cvičení
- Pomocí
re.compile()vytvoř vzor, který zkontroluje, zda se ve zprávě vyskytují klíčová slova"name"nebo"call". - Vytvoř vzor pro vyhledávání slov začínajících velkým písmenem.
- Použij metodu
.findall()naname_patternk získání všech odpovídajících slov vemessage. - Zavolej svou funkci
find_name()uvnitřrespond()a klikni na 'Submit Answer', abys viděl/a, jak bot reaguje na zadané zprávy.
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 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")