Il mercato online: le desuete FAQ e le nuove CHATBOT
Il
mercato online: le desuete FAQ e le nuove CHATBOT
(articolo)
― Good
Evening. Tell me your problems. Please terminate input with a period
or a question mark.
― People
get on my nerves sometimes.
― I
am not sure I understand you fully.
― You
should pay more attention.
― Suppose
you should pay more attention.
― You're
entitled to your own opinion.
― What
makes you think I am entitled to my own opinion? [...]
(conversazione
fra Eliza e Parry, 1972)
Le
chatbot si avviano in questi ultimi anni a sostituire le più note e
statiche FAQ (Frequently Asked Questions) sui siti
commerciali. Parliamo quindi un preciso ambito di utilizzo, quello
del web imbevuto di corpus testuali in costante aggiornamento, in cui
ogni sito che integri una chatbot per interagire con la propria
clientela è un dominio linguistico a sé. Benché personalità di
spicco come Matt Mullenweg, il padre di WordPress, distingua una
chatbot, dotata di motore semantico basata sull’intelligenza
artificiale e su un sistema di autoapprendimento da un bot costruito
su una minuscola porzione di nozioni che non aumentano nel tempo in
modo automatico ma devono essere sempre gestite da un essere umano,
tendenzialmente non si riscontra online una grande cura a tenere
distinti i termini, e anzi si sente spesso usare bot come semplice
diminutivo di chatbot.
Da
quando il 12 Aprile 2016 Facebook ha presentato all'evento
F8 la nuova piattaforma di Messenger con la sua
ultima novità, ovvero i chatbot per Messenger, il mondo degli
sviluppatori e le aziende, piccole, medie o grandi che siano, hanno
iniziato a darsi molto da fare per trovare nuove idee e giusti
impieghi per questa rinnovata tecnologia. A giugno dello stesso anno
si contavano già 11,000 bot per interagire con vari singoli user di
Facebook. Parliamo di un mercato stimato in 900 milioni di persone.
Salvo repliche, e profili fake, Facebook risulta quindi usato
dall'11% della popolazione mondiale. Si è pertanto variamente
sentito del 2016 come l'anno dei chatbot, e il 2017 come l'anno delle
possibili conferme delle promesse.
Originariamente
sul web, le aziende usavano il proprio sito per parlare di sé. Spese
le dovute pagine in presentazioni e offerte promosse, non era
scontato continuare a ricevere dubbi curiosità e solleciti da parte
degli utenti. Ben presto fu chiaro che alcune domande ricorrevo
sempre, e dopo un primo estenuante copia/incolla via email, molti
siti hanno preferito fissare una pagina che collezionasse le domande
più comuni, e le risposte più tipiche a queste.
Una
buona pagina FAQ sui siti commerciali rappresenta quindi un punto di
riferimento per i clienti dubbiosi o in cerca di informazioni,
tuttavia il visitatore che potrebbe voler approfondire una questione
non avrebbe modo di fare altre domande. Oppure l'organizzazione della
FAQ potrebbe non essere immediata nei suoi vari rimandi, o essere
priva di iper-link ad esempio, e non tutti gli utenti sono disposti a
ripetere una ricerca. Se l'azienda prevede la possibilità di
contattare un operatore, l'utente potrebbe contattarlo, se ne ha
voglia o se ha trovato subito il numero, anche se il rischio di
abbandonare la pagina è ancora più alto e più facile dello sforzo
di continuare a cercare una risposta. Su Internet l'attenzione media
non gode di buona fama. Per di più non tutte le aziende possono
permettersi del personale per l'assistenza clienti ventiquattro ore
al giorno e sette giorni su sette.
Utilizzando
invece tutte le domande che sono state realmente poste, magari
pervenute via e-mail, si possono creare degli schemi di domanda e
risposta che realizzino l'automatismo che ha per fine l'acquisto di
un certo prodotto o del suo ordine.
Gli
attuali bot rispondono ad un unico dominio di domande con risposte in
parte già scritte. I vari servizi online che offrono chatbot per
aziende lo fanno forti del fatto che le domande ai vari servizi
clienti (constumer service) sono ripetitive e altamente prevedibili
(o sarebbe meglio dire: totalmente vincolate al target dell'azienda).
Con del training supervisionato da un operatore reale si possono poi
migliorare le risposte automatiche rendendole sempre meno goffe e
artificiose. Un utente meno percepisce che sta dialogando con una
macchina più si sente appagato.
***
La
storia dei chatbot comincia quando i computer non erano ancora,
neanche lontanamente, imparentati con il mercato privato. Non
esisteva Internet e il primo corpus digitale, l'«Index Thomisticus»
di Padre Roberto Busa iniziato nel 1949 sarebbe stato portato a
termine soltanto negli anni Ottanta. Correva gennaio 1966 e Joseph
Weizenbaum rilasciò il programma Eliza il cui compito era simulare
una seduta psicologica rogersiana.
ELIZA
deve il suo nome da Eliza Doolittle, la fioraia dall'eloquio incolto
e dialettale protagonista della commedia Pigmalione di Shaw che
grazie alla ripetizione delle forme corrette di pronuncia, apprese il
modo di esprimersi delle classi più agiate.
180
PRINT "HI! I'M ELIZA. WHAT'S YOUR PROBLEM?"
190
REM
200
REM ----USER INPUT SECTION----
210
REM
220
INPUT I$ |
Il
programma è implementato mediante semplici tecniche di pattern
matching, ovvero viene fatto il parsing delle frasi del paziente
e vengono poi sostituite le parole chiave in frasi preconfezionate,
ritenute verosimili se dette dalla bocca di uno psicologo. Nonostante
la sua semplicità, ELIZA venne preso sul serio da molti dei suoi
utenti, anche dopo la spiegazione del suo funzionamento da parte
dello sviluppatore. Secondo lo stesso Weizenbaum infatti, il
programma doveva semplicemente parodiare una seduta psicanalitica.
È
utile allora spendere due parole circa la particolarità della
psicologia rogersiana: la tecnica principale di questo tipo di
seduta è la cosiddetta risposta riflettente, che è lo strumento con
cui lo psicologo statunitense Carl Rogers (1902-1987) cercò di
affinare la comprensione empatica col “cliente” (termine che lo
psicologo preferiva a paziente). Anche nella sua applicazione più
semplice, che consiste nel riformulare il contenuto appena espresso,
questa modalità fa sentire al cliente che non è da solo e che
qualcuno lo ascolta e che cerca di capirlo. Inoltre permette di
mettere a fuoco meglio quanto sta dicendo; infatti è del tutto
istintivo per il “cliente” cercare di capire se la riformulazione
fatta dal terapeuta gli corrisponda oppure no; in questo modo ha la
possibilità di esplorarsi. L'effetto Eliza, ovvero ritenere un
computer assai più complesso di quanto non sia in realtà, non è
assolutamente dovuto ad una reale complessità del codice
programmato, ma è frutto soltanto della disperata ricerca umana
(almeno nella contingenza di paziente/cliente) di voler sapere di
essere ascoltati. Inoltre giova ricordare che la struttura della
lingua inglese permette molto facilmente di trasformare una frase
affermativa in una interrogativa spostando la posizione del verbo ad
inizio sintagma. Ecco quindi che l'eventuale sfogo “I'M AFRAID OF
THE DARK” trovato il pronome personale che identifichi il cliente
(I'm) e invertito questo (reso un “io” in un “tu”) e
spostato la sua posizione, può facilmente essere reso in una frase
interrogativa “DID YOU COME TO ME BECAUSE YOU ARE AFRAID OF THE
DARK?”. Ovviamente tutto questo a patto che una porzione di testo
fosse già stata preventivata. Eccone alcune
1500
REM ----REPLIES----
1510
REM
1520
DATA "DON'T YOU BELIEVE THAT I CAN*"
1530
DATA "PERHAPS YOU WOULD LIKE TO BE ABLE TO*"
1540
DATA "YOU WANT ME TO BE ABLE TO*"
1550
DATA "PERHAPS YOU DON'T WANT TO*"
1560
DATA "DO YOU WANT TO BE ABLE TO*"
1570
DATA "WHAT MAKES YOU THINK I AM*"
[...]
1790
DATA "DID YOU COME TO ME BECAUSE YOU ARE*" |
Vediamo
qui sopra riportate alcune delle frasi preconfezionate ritenute
possibili in una situazione di sessione con uno psicologo. Le frasi
vengono completate sostituendo a l'asterisco il verbo usato dal
cliente, o l'intero costrutto sintagmatico. Questo è possibile
finché la frase digitata dal cliente è costruita nel più semplice
dei modi, se la frase contiene un errore o una forma non standard (o
più semplicemente non preventivato dal programma) viene rilasciata
una frase randomica (una frase scelta a caso fra una lista di frasi
chiuse), totalmente cristallizata, ma comunque ritenuta verosimile
nel contesto di una seduta psichiatra. Frasi ad esempio come
2390
DATA "HOW?"
2400
DATA "YOU SEEM QUITE POSITIVE."
2410
DATA "ARE YOU SURE?"
2420
DATA "I SEE."
2430
DATA "I UNDERSTAND." |
Questo
tipo di frase vengono interpretate nella situazione di seduta
rogersiana come un invito a continuare a parlare, a discorrere;
quando il programma riesce invece a fare matching allora
rilascia una delle frasi che si completano con elementi del sintagma
digitato dal cliente, come già mostrato nell'esempio precedente. Per
inciso: la prima scrittura del programma fu in SLIP (Symmetric
List Processer), un linguaggio ideato dallo stesso Weizenbaum e
non più in uso, per semplicità ho riportato quindi una riscrittura
del programma in linguaggio Basic di cui l'ultimo editing risale al
1979.
Bisogna
ammettere che Eliza è ben congegnato per riflettere quello che in
linguistica sarebbe stato poi individuato come frame semantico
da Charles Fillmore nel 1982; per cui il significato di un dato
termine può essere compreso solo nel suo contesto. Frame: scenari
ricorrenti, tipici. I legami con le esperienze e credenze che
costituiscono la visione del mondo condivisa dai parlanti in atto (il
background) e quindi una condizione essenziale per la comprensione
linguistica. La capacità di Eliza, e quindi dei chatbot, sono state
fin da subito sovrastimate non tenendo conto del frame in cui
veniva inizialmente collocato. Quasi a mo' di sberleffo Parry, un
chatbot del 1972 ideato dallo psichiatra KennethColby, come contro
risposta, simulava la conversazione di un paziente schizofrenico, e
nello stesso anno fu tentata una dialogo con il suo più noto omologo
(di cui la nota in esergo di queste pagine).
L’accettazione
di una concezione meccanicistica del mondo implica tuttavia una o più
concezioni meccanicistiche del costrutto che chiamiamo mente; così
l'epistemologo statunitense Thomas Kuhn nel suo saggio “La
struttura della rivoluzioni scientifiche” (1962), rifiuta la
concezione tradizionale della scienza come accumulazione progressiva
di nuove scoperte e afferma invece che in certi momenti (detti
rivoluzionari) viene interrotto il rapporto di continuità con il
passato e viene iniziato un nuovo corso, in modo non
completamente razionale. Sarà lo stesso Weizenbuam a farsi
autocritica nel suo libro “Computer Power and Human Reason: From
Judgment to Calculation” (1976), in cui discute i limiti dei
calcolatori affermando che le visioni antropomorfiche dei computer
sono delle ingiustificate riduzioni degli esseri umani. Torniamo coi
piedi per terra.
Oggi,
attraverso Internet in pochi minuti solo su Facebook saranno generati
più di 20 milioni di post, su Snapchat oltre 3 milioni di messaggi e
su Instagram ben più di 250.000 foto verranno caricate, con a
corollario molti tag su come trovare (e implicitamente interpretare
le foto). Non è difficile immaginare di poter trovare dei pattern
ricorsivi all'interno dei dialoghi quotidiani e della azioni compiute
sul web. Però più questo diventa pieno di dati, e quindi
dispersivo, più si fa urgente trovare dei metodi per riuscire a
tenere un utente il più tempo possibile su una pagina per poterlo
acquistare come cliente.
***
I
chatbot attuali, detti anche più semplicemente bot, rappresentano
una evoluzione delle relazioni online. I bot di cui si tratta fra
queste righe, e bene precisarlo quindi, non rappresentano un
tentativo di creare una coscienza, ne tantomeno psicanalizzare il
prossimo (al più solo ricavarne dati statistici buoni per vendite e
pubblicità). Certo, sono servizi ancora in una fase iniziale del
loro sviluppo e della loro integrazione nella messaggistica di
supporto e nella loro scelta da parte dell’utente, ma è facile
prevedere che saranno sempre più utilizzati dalle varie assistenze
clienti (constumer service)
Nel
caso di Facebook Messenger, che ha dato una spinta alla moda
nell'ultimo periodo, i bot assumono il ruolo di intermediari tra una
azienda ed un cliente finale, fungendo da supporto automatizzato per
le informazioni su prodotti o nella ricerca dei contenuti, ad
esempio. Attraverso lo spazio della messaggistica si riesce oggi a
portare a termine anche acquisti, senza barcamenarsi in continui
rimandi di pagine web. L’utente non è più bombardato da
pubblicità invasive, è lui stesso a contattare i bot e a decidere
il numero di volte in cui desidera essere aggiornato.
Attenzione
però, tutti i bot sono limitati a un sottoinsieme di argomenti. Nel
programma ELIZA, il dominio era una sessione di terapia, e
la personalità del bot era quella di un terapeuta
rogersiano. Dominio e personalità non necessariamente hanno bisogno
di essere strettamente accoppiati, anche se un bot-commerce ha
bisogno di di poter prevedere ogni possibile domanda sui prodotti
dell'azienda, e alcune preferiscono fare del proprio bot una
mascotte stilizzandolo in questa o quella forma (antropizzare un bot
è comunque un buon modo per renderlo simpatico ad una vasta fetta di
utenza). Internet allora è visto come un enorme laboratorio, un
cantiere aperto, in cui si sta secondo dopo secondo formando il più
grande corpus testuale della storia. Grande si intende qui
esclusivamente come volume, non come spessore culturale. Castonerie,
errori e pensieri opinabili occorreranno comunque a dare forma,
giustamente, a questo enorme corpus.
***
Per
provare a comprendere come funzionano i chatbot, prendiamo come
esempio un semplice codice per la lingua inglese scritto in Python (
https://github.com/lizadaly/brobot/ ). Scegliamo come linguaggio
Python perché i programmatori che lo usano e lavorano con la NLP
(Natural Language Processing) hanno due grandi librerie di
alto livello tra cui scegliere: TextBlob e spaCy.
La
prima è una libreria Python per l'elaborazione di dati
testuali, ovvero una semplice API per maneggiare l'elaborazione del
linguaggio naturale (NLP) in compiti come l'analisi grammaticale,
l'estrazione di un sostantivo in una frase, sentiment analysis, la
classificazione, la traduzione, e altro ancora. SpaCy è un'altra
libreria, maggiormente indirizzata al deep learning e che in queste
poche pagine non vedremo.
Cominciamo
quindi ad entrare nel vivo del funzionamento di un basilare bot,
partendo dal più tipico esempio di inizio dialogo
(le
righe anticipate dal carattere cancelletto sono dei commenti al
codice)
#
PAROLE CON CUI RISPONDERE IN CASO DI SALUTO
GREETING_KEYWORDS
= ("hello", "hi", "greetings",
"sup", "what's up",)
GREETING_RESPONSES
= ["'sup bro", "hey", "*nods*", "hey
you get my snap?"]
def
check_for_greeting(sentence):
#
SE UNA DELLE PAROLE INSERITE DALL'UTENTE È
#
NELLA LISTA IL CHATBOT RISPONDE CON UNA
#
PAROLA A CASO DALL'ARRAY DI OUTPUT
for word in
sentence.words:
if word.lower() in
GREETING_KEYWORDS:
return
random.choice(GREETING_RESPONSES) |
Questo
è la più semplice implementazione possibile di un chatbot: esso
cioè cerca l'espressione dell'utente per una o più note parole
chiave e restituisce una delle diverse possibili risposte. Venuta
meno la parola chiave, quel “hello” inviato per primo dal bot, la
conversazione non prende mai luogo. Una azienda online può allora
non considerare vantaggioso aspettare che sia l'utente a richiedere
di avviare una chat. Controllando, ad esempio, che il visitatore sia
sulla pagina di un prodotto specifico per più di 30 secondi e
interpretando questo dato come la ricerca di ulteriori informazioni
circa il prodotto in vendita sulla pagina, ovvero una dimostrazione
di interesse dell'utente, potrebbe aprirsi la chat con un trigger
e presentare una finestra di dialogo in cui sarà possibile inserire
un vasto numero di contenuti, dal testo alle immagini. Il trigger
possiamo descriverlo qui, sommariamente come un timer associato alla
pagina, si attiva appena l'utente entra dentro questa (si può però
modificare ed inserire ad esempio variazioni se l'utente muove il
mouse verso un link, ad esempio). Il contenuto di questa prima
finestra, ovvero il saluto automatico del bot, deve cercare di
catturare l'attenzione del visitatore. Pertanto dovrà essere, per
stile e lessico, ben congegnata al target aziendale e a quello che si
aspetta sia l'utente medio.
Il
ciclo principale di un chatbot dovrebbe eseguire le seguenti
operazioni: a) Fare qualche iniziale pre-elaborazione del testo
dell'utente, in modo da poter agganciare dei controlli per ingresso
testuali non sicuri quali frasi non ben formate o frasi contenti
parole offensive. b) Chiedere a TextBlob di analizzare l'input per
noi, ovvero tokenizzarlo e farne la part-of-speech-tagging. c)
Eseguire una serie di routine progettata per estrarre le informazioni
dalle espressione dell'utente in modo strutturato. d) Comporre una
risposta che meglio corrisponda alla dichiarazione inviata
dell'utente. e) Eseguire una post-elaborazione per garantire nel
miglior modo possibile che il nostro bot non possa “comportarsi
male”, ovvero rispondere con frasi volgari ad esempio.
Le
scarne righe di codice che adesso vedremo affibbiano una
part-of-speech-tagging ai singoli token, ovvero associano ciascuna
parola in un corpus ad una parte del discorso. Più precisamente, più
che una parola (una entità difficile da stabilire, come variamente
sostenuto dal linguista Edward Sapir) qui si parla di token ovvero si
assegna una parte di discorso ad ogni blocco di caratteri testuali
divisi, a sinistra e destra, da spazi delimitatori (tanto per fare un
esempio la locuzione latina “ad hoc”, ampiamente usata anche nel
vocabolario italiano, sarebbe trattata dalla part-of-speech-tagging
come due parole indipendenti).
def
respond(sentence):
#
ANALIZZA FRASE IN ENTRATA DALL'UTENTE E TROVA I
#
TERMINI CANDIDATI PER FORMARE UNA RISPOSTA
cleaned =
preprocess_text(sentence)
parsed = TextBlob(cleaned)
#
ESTRARRE LA PIÙ RILEVANTE PARTE DELLA PART-OF-SPEECH
pronoun, noun, adjective,
verb = find_candidate_parts_of_speech(parsed)
#
SE ABBIAMO DETTO QUALCOSA CIRCA IL BOT COSTRUIRE
#
LA RISPOSTA SCARTANDO GLI ALTRI CANDIDATI
resp =
check_for_comment_about_bot(pronoun, noun, adjective)
|
La
conversione utente-bot non include generali pronomi come “loro” o
“essi”. Ricordiamo che ci stiamo rivolgendo ad una macchina per
poter portare a termine un acquisto non per parlare dei nostri
problemi famigliari. Può darsi quindi che la frase digitata
dall'utente contenga nessuno dei pronomi che ci aspettiamo
#
SE NON ABBIAMO OTTENUTO NULLA LANCIARE
#
UNA RISPOSTA A CASO FRA QUELLE PREVENTIVATE
if not resp:
resp =
random.choice(NONE_RESPONSES)
logger.info("Returning
phrase '%s'", resp)
# CONTROLLARE DI NON AVERE
UN OUTPUT OFFENSIVO
filter_response(resp)
|
Possiamo
immaginare una frase come una tupla di co-occorrenze di elementi di
parti del discorso in modo da poterlo poi ricomporre
def
find_candidate_parts_of_speech(parsed):
#
DATO UN INGRESSO ANALIZZATO RESTITUIRE UNA
#
TUPLA DI PRONOME, NOME, AGGETTIVO E VERBO
pronoun = None
noun = None
adjective = None
verb = None
for sent in
parsed.sentences:
pronoun =
find_pronoun(sent)
noun = find_noun(sent)
adjective =
find_adjective(sent)
verb = find_verb(sent)
logger.info("Pronoun=%s,
noun=%s, adjective=%s, verb=%s", pronoun, noun, adjective,
verb)
return pronoun, noun,
adjective, verb
def
find_pronoun(sent):
#
RESTITUISCE _NONE_SE NESSUN CANDIDATO DEL
#
PRONOME È STATO TROVATO NELLA FRASE
pronoun = None
for word, part_of_speech
in sent.pos_tags:
# DISAMBIGUARE I PRONOMI
if part_of_speech ==
'PRP' and word.lower() == 'you':
pronoun = 'I'
elif part_of_speech ==
'PRP' and word == 'I':
# SE L'UTENTE SI È
PALESATO ALLORA VICEVERSA
pronoun = 'You'
return
pronoun |
Superati
un'intera serie di controlli dovrebbe approssimarsi la risposta
def
check_for_comment_about_bot(pronoun, noun, adjective):
#
CONTROLLARE SE L'INPUT DELL'UTENTE ERA O MENO
#
CIRCA IL BOT STESSO
resp = None
if pronoun == 'I' and
(noun or adjective):
if noun:
if
random.choice((True, False)):
resp =
random.choice(SELF_VERBS_WITH_NOUN_CAPS_PLURAL).format(**{'noun':
noun.pluralize().capitalize()})
else:
resp =
random.choice(SELF_VERBS_WITH_NOUN_LOWER).format(**{'noun': noun})
else:
resp =
random.choice(SELF_VERBS_WITH_ADJECTIVE).format(**{'adjective':
adjective})
return resp
|
Come
sul modello Eliza, già visto, si possono prevedere delle frasi
pre-confezionate che aspettano solo l'integrazione della variabile
digitata dall'utente. In questo caso però, la nuova tecnologia della
parserizzazione permette di individuare esattamente la parte del
discorso che ci interessa e copiare solo quella, mentre in Eliza ci
si limitava (sulla scorta di previste frasi semplici) l'individuzione
del soggetto la sua sostituzione e lo spostamento in blocco di quanto
digitato dall'utente in modo che, secondo la sintassi inglese, una
frase affermativa diventasse una interrogativa. Oggi invece possiamo
prevedere risposte che attendono un sostantivo diretto, ad esempio
#
MODELLO PER RISPOSTE CHE INCLUDONO UN
#
SOSTANTIVO DIRETTO
SELF_VERBS_WITH_NOUN_CAPS_PLURAL
= [
"My last startup
totally crushed the {noun} vertical",
"Were you aware I was
a serial entrepreneur in the {noun} sector?",
"My startup is Uber
for {noun}",
"I really consider
myself an expert on {noun}",
]
|
Il
codice integra anche altri array per frasi randomiche con per
variabili aggettivi o nomi-sostantivi scritti interamente in
minuscolo, sono strutturalmente uguale pertanto è in questo momento
risparmiabile mostrarle.
Andando
avanti, è bene fare in modo di rendere il bot immune dagli attacchi
di perdigiorno o dalla possibile e imprevista coprolalia dell'utente
frustrato perché non ha ottenuto la risposta che desiderava.
È
utile inserire pertanto una lista di insulti con cui schermare le
risposte del bot. È appurato che davanti ad un chatbot in molti
inizino a sfidarlo, si scatena uno strano meccanismo per il quale
dare una voce e un aspetto a un bot fa si che le persone vogliano
metterlo alla prova nei modi più offensivi e inappropriati. Non si
tratta di sottostimabile goliardia, un bot il cui training di
risposte contempli anche risposte offensive inizierà a dare risposte
offensive con conseguente danno di immagine alla azienda che ha
deciso di affidarsi all'assistenza clienti automatica.
def
filter_response(resp):
#CONTROLLARE QUELLO CHE HA
SCRITTO L'UTENTE
tokenized = resp.split('
')
for word in tokenized:
if '@' in word or '#'
in word or '!' in word:
raise
UnacceptableUtteranceException()
for s in FILTER_WORDS:
if
word.lower().startswith(s):
raise
UnacceptableUtteranceException() |
Esistono
online diverse librerie, in vari formati (*.txt, *.xml, *.csv),
composte esclusivamente da parole ritenute mediamente offensive o
inappropriate ad una immagine pubblica (balls, bastard, bitch, biatch
bloody, blowjob, blow job, bollock, bollok, boner, etc) Bisogna anche
prevedere che l'utente più smaliziato possa usare delle storpiature
delle succitate parole, ad esempio inserendo una chiocciola al posto
di una lettera a, conscio che in questo modo possa eludere per
qualche momento i filtri. È bene quindi che la lista non sia chiusa
ma aperta ad accogliere ogni nuova tendenza alla cafonaggine. Ne vale
del decoro del aziendale.
Questo
esempio fin qui visto è ovviamente un modello giocattolo, tuttavia
ci permette di poter pensare di comprendere cosa si cela al di sotto
del pannello di controllo dato dai vari servizi offerti dalla Wit.ai,
gestito da Facebook, o dalla piccola startup italiana Awhy. Wit.ai
funziona esclusivamente se si è registrati con Facebook, limitazione
urticante e che vincola a dover dare i propri dati personali alla
nota azienda della Silicon Valley.
***
Prendiamo
in esame, a puro titolo di esempio, l'interfaccia offerta da Awhy. Il
sito, dopo una necessario iscrizione, permette di testare il bot in
modo gratuito per qualche giorno. Appena loggati ci viene segnalato
un frammento di codice html da inserire nella pagina web della nostra
azienda
<script type="text/javascript"> awhy_api_url = '//manage.awhy.it'; awhy_contents_base_url = '//widget.awhy.it/chat'; awhy_widget_id = '309'; instance_id = '369'; instance_name = 'ay_m_malagnino_gmail_com'; </script> <script src='//widget.awhy.it/chat/awhypa.js' type='text/javascript'></script> |
Questo
iniziale punto di partenza ci ricorda, se ce ne fosse bisogno, che i
bot di oggi sono molto pragmaticamente rivolti alle aziende su
internet. Niente voli pindarici di fantasia sul linguaggio, solo uno
strumento per gestire con minore spesa i constumer sevice e rendere
il servizio di assistenza attivo 24h. La chatbot è un software che
comunica con gli utenti tramite servizi di messaggistica istantanea,
quali quelle presenti su Facebook, Skype o altre piattaforme di
comunicazione, non è un programma indipedente.
Awhy,
con la sua interfaccia, ci aiuta a comprendere molto velocemente
quali sono i pregi e i limiti di un chatbotter. Vediamo di seguito:
Nella
GESTIONE DEI DATI troviamo quelle che sono propriamente le FAQ
tipiche di una azienda online, ad esempio domande come “Come si fa
ad ordinare un prodotto?” oppure “Dove posso controllare lo stato
del mio ordine e trovare il mio tracking number?” oppure “Non ho
ricevuto il mio ordine. Come posso fare un reclamo?” e via, per
altri venti domande considerate base. Le risposte sono vuote e spessa
all'iscritto al servizio compilarle. Ahwy suggerisce di non essere
troppo laconici. Ad esempio alla domanda: “Quanto costa la
spedizione?” non è gradevole un secco e piccato “10€”, tanto
per dirne una, quanto piuttosto una risposta più cordiale che
contenga un frammento della domanda “La spedizione costa 10€”.
Awhy consiglia anche di inserire domande e risposte che siano
generiche e non inserire casi d’uso troppo specifici; ad un
“Spedite anche in Germania?” e consigliabile un “Spedite anche
all'estero?” e al più sarà la risposta automatica già scritta a
precisare che si spedisce anche o solo in Germania, per dire. Si
possono ovviamente inserire proprie domande scritte di pugno
dall'utente. Questo è quanto, per il resto l'utente si deve
incaricare di supervisionare l'uso del chatbot per poterlo far
funzionare meglio. Nella sezione REPORTISTICA si trovano report
dettagliati sul funzionamento e l’efficienza della chat attraverso
un semplice grafico statistico, quindi nella sezione
AUTOAPPRENDIMENTO si offre un processo che aiuta l'amministratore a
gestire tutte le domande che arrivano al sistema in modo da smistarle
nella base di conoscenza, e secondo la corretta priorità. Perché le
FAQ possano entrare nel database, dovranno raggiungere l’indice di
frequenza stabilito, almeno tre identiche richieste ad esempio. Ogni
30 giorni, tutte le domande non gestite verranno però cancellate. Le
altre sezioni del pannello di controllo di Awhy, sono indirizzate
esclusivamente al lato grafico o a questioni inerenti il timer del
trigger per far avviare la chat, che va a questo punto letta anche
come una finestra pubblicitaria popup interattiva che invita l'utente
a risolvere i suoi eventuali dubbi.
Non
tutto il lavoro può essere gestito da un bot, alcune domande
altamente specifiche o eccezionali possono essere risolte solo da un
centralinista reale, se è presente, oppure si può preventivare un
messaggio automatico che inviata a scrivere una email all'azienda che
provvederà a ricontattare il cliente. Quello che è importa è
premunirsi alle possibile storture nell'uso di questa tecnologia.
Difatti la chatbot causa con le sue risposte emozioni negative,
quando non riesce a processare bene la frase dell'utente, rabbia o
frustrazione, sentimenti o atteggiamenti facilmente identificabili
nel linguaggio utilizzato dagli utenti, soprattutto quando iniziano a
scrivere insulti, o frasi di sfogo come “non servi a niente”.
Awhy, con lodevole intelligenza, consiglia di preventivare queste
situazioni e prepare un set di risposte automatiche come “Mi
dispiace, non posso aiutarti” oppure “Non ho capito, potresti
spiegarti meglio?” oppure per i casi più rozzi qualcosa come “Non
è una cosa carina da dire”. Ricordando l'effetto Eliza, un utente
adirato potrebbe sentirsi spiazzato dalla cordialità mostrata dal
bot. Frasi ancora più utili per risolvere eventuali blocchi di
dialogo sono “Comprendo la tua frustrazione, prova a formulare
diversamente la tua domanda”, è verosimile che cambiando lessico e
invitando l'utente a scrivere più stringato e preciso l'algoritmo
possa finalmente processare la frase inviata dall'utente. È utile
però inserire un vincolo di errori possibili, non ci si può certo
aspettare che la pazienza dell'utente sia infinita, e preparare frasi
come “Mi dispiace che la tua esperienza sia frustrante, per avere
maggiore supporto contattaci alla mail xxx@mail.com e un
operatore sarà pronto a gestire la tua richiesta”. Quello che è
importante è tenere a mente che la maggior parte delle chat è
pensata per assistere il cliente nel completare un’azione
specifica, come modificare una prenotazione di viaggio ad esempio.
Benché
bisogna sforzarsi di rispettare la privacy dell'utente se il valore
delle risposte di una chatbot dipende da parametri specifici quali il
nome o il luogo in cui si trova l’utente con il quale sta
interagendo, non c’è alcuna valida spiegazione al fatto che queste
informazioni vengano perse dalla chatbot nel corso della
conversazione stessa. L'importante sarà semmai segnalare, a norme di
legge, che alcuni dati della conversazione virtuale saranno salvati
per scopi commerciali strettamente interessati al solo utente, senza
per questo farlo sentire usato come campione per analisi statistiche.
Gli
sviluppi crescenti nel campo dell’Intelligenza Artificiale e della
messaggistica istantanea potrebbero essere in grado di sostituire
interamente gli operatori di call center determinando così la fine
dell’era delle lunghissime attese telefoniche gestite da personale
non sempre adeguatamente qualificato
***
Concludiamo questa breve introduzione ai bot con due singolari casi della più
recente cronaca in cui, le risposte automatiche dei bot sono in
qualche modo entrate nel dominio della vita quotidiana. Nel marzo del
2016 la Microsoft ha rilasciato “Tay” un chatbot basato
sull’intelligenza artificiale, targettizzato per la generazione
Millenials, dall’aspetto, ancora una volta, di una giovane donna.
Pare ci sia una stereotipo sessista che ricorra negli assistenti
vocali o nei bot, da Eliza (1966) a Alice (1995), Siri (2010), Alexa
(2015) o Cortona (2015) quando il bot prevede di interagire con il
pubblico si tende a darle una personalità femminile. Tay per i
Millenials non ha fatto eccezione in questo. In meno di 24h dopo Tay
è stata “spenta” dopo accuse di razzismo, sessismo e negazione
dell’olocausto. Microsoft è sempre stata piuttosto vaga nello
spiegare i meccanismi e gli algoritmi che permettono a Tay di
funzionare e, di conseguenza, non è nemmeno possibile capire nel
dettaglio cosa è andato storto. La Microsoft era ben consapevole di
questo rischio: Cortana, il loro assistente virtuale, è spesso
soggetto a molestie sessuali, e perciò programmato per gestirle, e
nessuno può davvero dire di essere stupito se un chatbot in uso sui
social media, dalla forma di una ragazza e nelle mani di adolescenti,
avrebbe portato ad un simile risultato. Tuttavia per Tay era previsto
che imparasse dalle infinite interazioni presenti su Twitter, senza
alcuno schermo o tutela. Il problema reale con il quale la Microsoft
si è scontrata è relativo al fatto che la maggior parte delle
interazione sui social media sono sessiste, razziste e via cantando.
Per di più queste interazioni, nelle mani di un bot fatto per
ripetere tutto ciò che apprende non potevano che arrivare presto a
galla nelle risposte automatiche. Proprio per questo molti assistenti
virtuali sono in grado di riconoscere una serie di insulti e di
rispondere in modo appropriato, bisogna fare in modo che gli
algoritmi siano sostenuti da una lista di parole becere per poterne
fare un filtro di risposta. Secondo il Washington Post scrive gran
parte della colpa è stata di alcuni troll di un gruppo di 4chan. I
troll sono, su internet, le persone che fanno cose il cui scopo è
irritare gli altri, divertendosi; 4chan è invece una delle più note
idiote chat in cui gli utenti possono scrivere di tutto forti
dell'anonimato. Ad ottobre dello stesso anno è invece venuto alla
ribalta il caso, abbastanza gonfiato, di un chatbot dedicato ad una
persona defunta. La 29enne Eugenia Kuyda, una startrupper russa, ha
programmato un chatbot di un amico scomparso. Si sono presto
sperticate le riflessioni della stampa sul fatto di come il futuro
fosse improvvisamente diventato più vicino, traendo forzatamente una
analogia fra la storia di Kuyda e una puntata della nota serie
televisiva Black Mirror, in cui nell'episodio "Be right back",
la protagonista Martha rivive il rapporto col compagno Ash, scomparso
il giorno dopo il trasloco in una nuova casa di campagna, grazie a
una chat intelligente prima – arricchita dalla replica della voce –
e, poi, a un clone sintetico. Nulla di più distante dalla realtà.
Kuyda ha nutrito infatti il chatbot con le migliaia di messaggini
scambiati con il suo amico attraverso Telegram. Parliamo di appena
"ottomila righe" pare più che sufficienti a scatenare il
piripiglio della stampa, più che nel mondo reale. Ci sarebbero più
righe di testo scritte da William Shakespeare o da Karl Marx, ed è
facile immaginare come l'invenzione di un chatbot nutrito dai loro
testi non sarebbe percepito dalla comunità molto più che un gioco
di citazioni. Ecco che ci troviamo quindi di fronte ad un ennesimo e
nuovo caso di effetto Eliza: dimenticando il contesto l'effetto
diventa magico. Il chatbot digitalizzato è programmato per parlare
volentieri della sua vita e del suo lavoro ma, curiosità a parte,
nel complesso la chiacchierata è tuttavia frustrante, forse solo gli
amici più stretti possono cogliere, di tanto in tanto, qualche
chicca dimenticata. Il grande interessete suscitato però dal
fallimento del chatbot intelligente Tay della Microsoft, dall'omaggio
all'amico defunto in @Roman (di cui è ancora possibile scaricare
qualche versione online), fino al pompaggio del mercato dei bot con
Facebook e Messangers; mostrano con ogni evidenza che nel bene e nel
male i bot diventeranno parte sempre più integrante della nostra
vita. Bisogna però spendere due righe ancora e riportare a due
concetti chiave stabili dal linguistica americano Noam Chomsky:
competenza ed esecuzione. La competenza è la capacità di
comprendere il linguaggio, nel caso in specie diremmo che è la
capacità di un algoritmo di un bot di computare adeguatamente un
discorso. L'esecuzione è la capacità di formare nuove frasi. Se nel
già citato Edward Sapir è la parola l'unità minima del linguaggio
in Chomsky lo è la frase, e quest'ultima ha una caretteristica
particolare: è sempre diversa. Per l'americano noi comprendiamo una
struttura sottostante la frase, cioè la relazione fra le posizioni
dei singoli argomenti di questa, mentre un bot può allo stato
attualmente soltanto emulare la struttura superficiale. E la emula
sino a sclerotizzarla, rendendola fissa. Un bot è quindi quanto più
di distante dal linguaggio umano perché questo non si basa (almeno
non si basa esclusivamente) su inferenze statistiche. Il linguaggio
genera nuove frasi ed è aperto a nuove parole, la cui ontologia è
rimandata al mondo esterno certo non al corpus testuale preso in
esame che, per quanto vasto potrà essere, sarà sempre chiuso.
Sitografia
consultata
https://www.theatlantic.com/technology/archive/2014/06/when-parry-met-eliza-a-ridiculous-chatbot-conversation-from-1972/372428/
https://it.semrush.com/blog/chatbot-cosa-sono/
https://futurism.com/images/the-history-of-chatbots-infographic/
http://www.awhy.it/chatbot/
http://www.neuroscienze.net/?p=324
http://www.softfobia.com/news/mobile/13/cosa-sono-i-chatbot-come-funzionano-intelligenza-artificiale-marketing#sthash.xZvZQQEA.dpuf
http://www.federica.unina.it/sociologia/metodologia-e-tecnica-della-ricerca-sociale/il-concetto-di-paradigma-nelle-scienze-sociali/
https://chatbotsmagazine.com/a-brief-history-of-bots-9c45fc9b8901
https://apps.worldwritable.com/tutorials/chatbot/
https://github.com/lizadaly/brobot/
https://www.unigre.it/sito/PUG_HG_03O820150936/web/LaGregoriana/46_38_busa_it.pdf
https://chatbotslife.com/ultimate-guide-to-leveraging-nlp-machine-learning-for-you-chatbot-531ff2dd870c
https://textblob.readthedocs.io/en/dev/
http://www.ilpost.it/2016/03/25/tay-microsoft-ai-razzista/
https://www.wired.it/attualita/tech/2016/10/10/ho-chattato-col-bot-di-un-morto/
https://spacy.io/
http://corpora.dslo.unibo.it/People/Nissim/FdL-0910/lecture181109.pdf
http://www.awhy.it/awhy-blog/pagina-faq-customer-care/
https://users.dimi.uniud.it/~angelo.montanari/Udine2014-2.pdf
https://everything2.com/title/ELIZA+source+code+in+BASIC
http://www.sabrinamarazzi.it/1/il_metodo_rogersiano_469046.html
Commenti
Posta un commento