de Giorgio Robino

Cum să construiți primul chatbot folosind ChatScript

10–10–2018: articol actualizat cu nou github repo url.

Chatboturile vă pot ajuta să faceți lucrurile chiar în interiorul instrumentelor de chat, cum ar fi Facebook Messenger, Telegram Messenger, Slack etc.

Și există un instrument special pentru construirea chatbot-urilor care există de ceva timp. Se numește ChatScript. Și, ca și Slack, a început ca o mică parte a unui joc video.

În 2009, Bruce Wilcox lucra ca dezvoltator de jocuri și cercetător în inteligență artificială. Sotia lui, Sue Wilcox, a vrut să modeleze personaje virtuale pentru jocurile ei interactive de ficțiune. Împreună, au construit ceea ce în cele din urmă a devenit ChatScript.

Cum sa construiti primul chatbot folosind ChatScript
Sue Wilcox (sursa: http://brilligunderstanding.com/aboutus.html)

Acest motor de procesare a limbajului natural + platforma de scriptare a fluxului de dialog l-a ajutat pe Bruce să câștige Premiul Loebner AI de trei ori.

Cum sa construiti primul chatbot folosind ChatScript
Urmăriți o discuție de Bruce Wilcox

Bruce încă dezvoltă și menține proiectul astăzi. Este scris în C și C ++ și este open source. De fapt, versiunea 6.8 a apărut acum câteva săptămâni.

ChatScript este unul dintre puținele motoare OPENOURCE chatbots NLProc!

Să ne scufundăm în elementele de bază ale ChatScript și întâlnește un chatbot pe nume Harry.

Instalarea ChatScript

Unii dintre acești pași pot fi puțin diferiți în funcție de sistemul de operare pe care îl utilizați. Folosesc Linux. De fapt, nu trebuie să parcurgeți acești pași pentru a vă bucura de acest articol, dacă nu doriți. Doar citește.

Pasul 1: Instalați componentele sistemului pe computerul dvs. local

În primul rând clonați depozitul ChatScript GitHub:

$ git clone https://github.com/ChatScript/ChatScript

Aceasta va crea un director ChatScript, care va conține aceste subdirectoare:

$ cd ChatScript/$ ls -d1 */
BINARIES/DICT/DOCUMENTATION/LINUX/LIVEDATA/LOEBNERVS2010/LOGS/MAC/RAWDATA/REGRESS/SERVER BATCH FILES/SRC/SUBLIME TEXT EDITOR/TMP/TOPIC/USERS/VERIFY/VS2010/VS2015/WEBINTERFACE/

BTW, am contribuit personal la actualizarea întregii documentații originale în format de reducere pentru a fi citită online și din linia de comandă atunci când se dezvoltă

  • RAWDATA conține un subdirector pentru fiecare bot. În mod implicit, platforma vine cu un bot implicit numit Harry, care se află la RAWDATA / HARRY.

BTW, vă rugăm să nu uitați să setați LinuxChatScript64 executabil:

$ chmod +x ChatScript/BINARIES/LinuxChatScript64

Notă: evident aici, mai sus, iau în considerare mediul OS Linux.
Mai multe informații despre instalarea Linux, MacOS sau Windows Aici.

Pasul 2: Pentru a rula motorul CS în modul independent:

$ BINARIES/LinuxChatScript64 local

Rularea motorului va lansa Harry, cu care putem vorbi apoi:

ChatScript EVSERVER Version 6.8  64 bit LINUX compiled Aug 16 2016 17:35:43 host=localParams:   dict:720895 fact:800000 text:70000kb hash:50000          buffer:22x80kb cache:1x5000kb userfacts:100WordNet: dict=201350  fact=85710  stext=12703744 Jul26'16-21:58:46Build0:  dict=67726  fact=130289  stext=1145656 Jul31'16-13:45:49 0Build1:  dict=167  fact=15  stext=211304 Jul31'16-13:45:44 harryUsed 53MB: dict 269,244 (23693kb) hashdepth 18/1 fact 216,014 (8640kb) text 14183kb           buffer (1760kb) cache (5000kb) POS: 918 (29kb)Free 79MB: dict 451,651 hash 924 fact 583,986 text 55,816KB
Enter user name: giorgio
HARRY:  Welcome backgiorgio: > what is your name ?HARRY:  My name is Harry.giorgio: > who is Bruce Wilcox?HARRY:  Bruce Wilcox (born 1951) is an artificial intelligence programmer.giorgio: > ok, I have to goHARRY:  Indeed.giorgio: > :quitExiting ChatScript via Quit$

Pasul 3: Codificați și depanați scripturile chatbot

Modul independent creează un mediu excelent de dezvoltare ChatScript. Vă permite să rulați conversații interactive, apoi să interacționați cu ele folosind : comenzi. Acesta este un set special de instrumente de comandă interactive pentru testarea și depanarea dialogurilor în timpul fazei de dezvoltare și depanare.

Iată câteva exemple de comenzi:

# recompile the bot Harry and reset the status of conversations with user giorgio
giorgio: > :build Harry giorgio: > :reset
# request statistics about topic ~pets
giorgio: > :topicstats ~pets    ~pets     gambits 2 responders 2 rejoinders 5 empties 0Concepts 1860 Topics 1 rules 9 empties 0  gambits 2  responders 2 (?: 2 s: 0  u: 0) rejoinders 5
# conversation ...
giorgio: > do you like snakes?HARRY:  I love pythons except ^"Python" (the programming language)
# ask the reason why a rule fired
giorgio: > :why~pets.2.0.5.9.0  ?:  ( << you like snake >> ) I love pythons except Python ( the programming language ) via ~control.5.9.0  u:  ( ) $$currenttopic = %topic ^if 00m( %response  0 ) 00I{ ^nofail ( TOPIC ^rejoinder ( ) ...

Rețineți că puteți rula : comenzi pentru a afișa lista completă a comenzilor disponibile.

Subiectele sunt conținute în fișiere specifice. De exemplu, ~animale de companie codul subiectului este conținut în animale de companie fișier, care arată astfel:

topic: ~pets (dog cat pet animal bird fish snake)
?: ( << you like snake >> ) I love pythons except ^"Python" (the programming language)
?: ( << you ~like ~animals >> )  I love all animals.
t: Do you have any pets? #! yes a: ( ~yes ) Great. You like animals.
#! no a: ( ~no ) You don’t like animals?
#! I have two parrots a: ( parrots ) Birds are nice.
#! I have a cat a: ( cat ) I prefer dogs
#! I have a canary a: ( [parrot bird canary finch swallow] ) Birds are nice.
t: I have a dog.

ChatScript este un motor bazat pe reguli, în care regulile sunt create de scriitori umani în scripturi de programe printr-un proces numit script de flux de dialog. Acestea folosesc un metalingv scripting (numit pur și simplu „script”) drept cod sursă.

Iată cum arată un fișier script ChatScript:

## file: food.top#
topic: ~food []
#! I like spinachss: ( I like spinach )    Are you a fan of the Popeye cartoons?
a: ( ~yes )        I used to watch him as a child. Did you lust after Olive Oyl?     b: ( ~no ) Me neither. She was too skinny.     b: ( ~yes ) You probably like skinny models.
a: ( ~no ) What cartoons do you watch?     b: ( none ) You lead a deprived life.     b: ( Mickey Mouse ) The Disney icon.
#! I often eat chickenu: ( ![ not never rarely ] I * ~ingest * ~meat )    You eat meat.
u: ( !~negativeWords I * ~like * ~meat ) You like meat.
?: (do you eat _ [ ham eggs bacon])    I eat ‘_0
?: (do you like _* or _*)    I don’t like ‘_0 so I guess that means I prefer ‘_1.
s: ( ~like ~fruit ![~animal _bear] )    Vegan, you too...
?: (do you eat _~meat)    No, I hate _0.
s: ( I eat _*1 >)   $food = ‘_0   I eat oysters.

Puteți defini fluxurile de dialog ale botului dvs. cu un script stocat ca fișier text normal. Acest lucru este mult mai simplu decât metodele utilizate de alte instrumente de chatbot, care implică adesea interfețe de utilizator bazate pe browser, JSON sau XML.

Scrierea scripturilor ca fișiere text vă oferă control deplin asupra fluxurilor de dialog. Puteți procesa și actualiza cu ușurință codul conversațional cu scripturi și instrumente back-end.

De exemplu, puteți actualiza automat regulile de dialog ChatScript pe baza înregistrărilor din baza dvs. de date.

Puteți folosi chiar și instrumente de învățare automată pentru a extrage jurnalele de conversații. Acest lucru ar putea dezvălui tot felul de oportunități pentru a vă îmbunătăți fluxurile de dialog.

Dar acestea sunt subiecte pentru un viitor articol ChatScript. Te las să te joci singur cu ChatScript.

Vă rugăm să contribuiți la baza sa de coduri open source și să o vizionați GitHub!?????

ChatScript / ChatScript
Contribuiți la dezvoltarea ChatScript / ChatScript prin crearea unui cont pe GitHub.github.com

Cum sa construiti primul chatbot folosind ChatScript
Atingeți sau faceți clic pe „︎❤ ”pentru a ajuta la promovarea acestei piese către alții.