ELIZA II: Extrakce klíčových frází
Opravdu chytrá věc na ELIZe je způsob, jakým program zdánlivě rozumí tomu, co jsi mu řekl/a – občas totiž do svých odpovědí zahrne fráze ze vstupu uživatele.
V tomto cvičení budeš porovnávat zprávy s běžnými vzory a extrahovat z nich fráze pomocí re.search().
Je již definován slovník rules, který odpovídá těmto vzorům:
"do you think (.*)""do you remember (.*)""I want (.*)""if (.*)"
Před začátkem cvičení si tento slovník prohlédni v Shellu.
Toto cvičení je součástí kurzu
Building Chatbots in Python
Pokyny k cvičení
- Iteruj přes slovník
rulespomocí jeho metody.items()a jako proměnné iterátoru použijpatternaresponses. - Pomocí
re.search()s argumentypatternamessagevytvoř objektmatch. - Pokud shoda existuje, použij
random.choice()k výběru hodnotyresponse. - Pokud se
'{0}'nachází v dané hodnotěresponse, použij metodu.group()objektumatchs indexem1k získání fráze.
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 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"))