Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Językwidziany„oczyma”komputera
WSKAZÓWKA
Litera„r”przedcudzysłowemokreślałańcuchczystotekstowy(rawstring),
aniewyrażenieregularne.WPythoniełańcuchczystotekstowypozwalanawysłanie
odwrotnychukośnikówbezpośredniodokompilatorawyrażeniaregularnego,bez
koniecznościstosowaniapodwójnegoodwrotnegoukośnika(„
\\
”)przedspecjalnymi
znakamiwyrażeńregularnych,jakspacje(„
\\
”)inawiasyklamrowe(„
\\{\\}
”)).
15
Wpierwszymwierszukoduzawartowieletreściwyrażenieregularne.Wykonujeonoswoje
zadaniedlazaskakującodużegozakresupozdrowień.Alenieuwzględniliterówki„Man-
ning”,cojestjednymzpowodówtrudnościwprzetwarzaniajęzykanaturalnego(NLP).
Wuczeniusięmaszynitestachdiagnostycznychwmedycynieokreślasiętojakobłądkla-
syfikacjifałszywieujemny.Niestetywyrażeniebędzieteżpasowaćdoniektórychzdań,któ-
rychludzieraczejniewypowiedząprzypadekfałszywiedodatni,któryteżniejestdobry.
Występowaniebłędówfałszywieujemnychifałszywiedodatnichoznacza,żenaszewyraże-
nieregularnejestzarównozbytliberalne,jakizbytścisłe.Błędytemogąsprawić,żenasz
botbędziezbytnudnyimechaniczny.Musielibyśmywłożyćznaczniewiększąpracę,aby
udoskonalićnaszefrazy,takabydopasowaniabardziejprzypominałykonwersacjęludzi.
Tauciążliwapracazapewneitakniezakończyłabysiępowodzeniemuwzględniają-
cymcałyslangibłędyliteroweludzi.Naszczęścieręcznetworzeniewyrażeńregularnych
niejestjedynymsposobemszkoleniachatbota.Więcejnatentematbędziedalej(to
pozostałaczęśćksiążki).Więcużywamytegotylkowtedy,gdychcemymiećprecyzyjną
kontrolęnadzachowaniemchatbota,jakpodczaswnioskowaniapoleceńdlaasystenta
głosowegowwaszymtelefoniekomórkowym.
Przejdźmyjednakdalejiukończmynaszegochatbotazapomocąsztuczki,dodając
generatortekstu.Wszakchatbotmusicośmówić.Używamynarzędziaformatowania
łańcuchawPythonie,abyutworzyć„szablon”odpowiedzinaszegochatbota:
>>>my-names=set(['rosa','rose','chatty','chatbot','bot',
...
'chatterbot'])
>>>curt-names=set(['hal','you','u'])
>>>greeter-name=''
>>>match=re-greeting.match(input())
...
Niewiemyjeszcze,kto
>>>ifmatch:
rozmawiazbotem,
...
at-name=match.groups()[-1]
iwtymmiejscusiętym
...
ifat-nameincurt-names:
nieprzejmujemy.
...
print("Goodone.")
...
elifat-name.lower()inmy-names:
...
print("Hi{},Howareyou?".format(greeter-name))
Jeśliwięcuruchomicietenniewielkiskryptiporozmawiacieznaszymbotemzapomocą
frazyjak„HelloRosa”,odpowie,pytając,jakminąłdzień.Jeśli,zwracającsiędochat-
bota,użyjemyniecomniejgrzecznegotekstu,zareagujegorzej,aleniebędzieoburzony,
próbujączachęcićdogrzeczności14.Jeślipodacieimiękogoś,ktomożemonitorować
14PomysłtakiejrozbrajającejodpowiedzizostałwprowadzonywpracyViktoraFrankla,Man’sSearchfor
Meaning,jegologoteurapeutycznym(https://en.wikipedia.org/wiki/Logotherapy)podejściudo
psychologiiiwielupopularnychpowieści,gdziedziecięcyprotagonista,jakOwenMeany,
mamądrośćpozwalającąodpowiadaćnaobelgiwtakisposób.