$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Questo studio è stato condotto in conformità con le linee guida del Comitato etico per la ricerca dell'Università nazionale della Malesia (UKM) e approvato con il numero di approvazione UKM FST/2025-AI/023. Il consenso informato scritto è stato ottenuto da tutti i partecipanti prima della raccolta delle query del chatbot. Tutti i dati sono stati resi anonimi per garantire la riservatezza e la privacy dei partecipanti
Panoramica dello studio
La panoramica del sistema di ristorazione intelligente proposto assistito da tecnologie di intelligenza artificiale è mostrata nella Figura 1. Come illustrato, l'input del cliente viene pre-elaborato con le tecniche NLP come l'incorporamento di parole, la lemmatizzazione e la tokenizzazione per estrarre i tag. Quindi, il modello ML chiamato LDA è stato applicato alla modellazione dei tag dei clienti per fornire loro un servizio contactless. La proposta di cibo viene effettuata utilizzando un modello Conv-RNN. Sulla base della sequenza di flusso registrata dalle scelte del cliente precedente, il cibo viene suggerito al cliente in modo intelligente. Infine, il livello di soddisfazione del cliente viene previsto utilizzando un modello Conv-LSTM ottimizzato per un ulteriore miglioramento dei servizi del ristorante. Le prestazioni dei modelli di intelligenza artificiale proposti vengono valutate in base alle varie metriche di valutazione.

Figura 1: Modello di sistema proposto per i servizi di ristorazione intelligenti (ICS). L'architettura integra l'interazione con l'utente, la pre-elaborazione dei dati, il rilevamento delle intenzioni, le raccomandazioni alimentari e i meccanismi di feedback. Clicca qui per visualizzare una versione più grande di questa figura.
Set di dati utilizzato
Per creare il sistema di ristorazione intelligente, abbiamo raccolto 283 richieste da un ristorante vicino utilizzando un chatbot. Queste domande, che includevano un'ampia varietà di richieste dei clienti, dai dettagli del menu agli orari di apertura, sono state suddivise manualmente in 15 diversi gruppi di intenti. Ciò garantisce una copertura completa di tutte le possibili interazioni dell'utente con il sistema. Saluti, saluti, apprezzamenti, catering, orari, impostazione, informazioni di contatto, domande sui pagamenti, menu di oggi, alternative di consegna, domande sul menu, processi di ordinazione, offerte speciali, prenotazioni, opzioni di bevande e accessibilità per sedersi all'aperto sono solo alcuni degli aspetti specifici delle richieste dei clienti che le classi di intenti sono state fatte per registrare. La tabella 1 mostra la frequenza delle domande in ciascuno dei gruppi di finalità e la classificazione in base alla sostanza tematica delle domande. Ad esempio, la categoria Informazioni di contatto ha avuto le query più alte, suggerendo che i clienti sono molto interessati a scoprire come entrare in contatto con il ristorante. D'altra parte, le categorie Posti a sedere e Bevande hanno ricevuto il minor numero di richieste, il che potrebbe indicare che c'è meno interesse dei consumatori per questi argomenti o che c'è già più chiarimento su di essi.
Servizio contactless tramite NLP con LDA
L'input dell'utente che avvia l'attività del framework viene inizialmente pre-elaborato per standardizzare il testo ed eliminare il rumore. La tokenizzazione, l'eliminazione delle stop word e la lemmatizzazione sono esempi di questa preparazione, che prepara i dati per ulteriori analisi. Dopo l'elaborazione preliminare, le richieste degli utenti vengono convertite in rappresentazioni numeriche. I collegamenti semantici e la rilevanza contestuale sono tra le caratteristiche linguistiche che vengono catturate da queste rappresentazioni. Diversi classificatori di apprendimento automatico sono stati utilizzati per addestrare queste rappresentazioni vettoriali delle query utente per la classificazione di 16 classi predefinite (intenti/tag). Il modello recupera la risposta correlata predeterminata e la restituisce all'utente dopo aver stimato con precisione le finalità di query dell'utente.
Preelaborazione
L'affidabilità della nostra analisi è notevolmente migliorata dalle query pre-elaborate, che verificano che i dati in arrivo siano formattati in modo coerente e pertinenti per la procedura di classificazione che segue. I modelli di intento (ad esempio, saluti come ciao, ciao, ehi) sono stati raccolti e pre-elaborati convertendo il testo in minuscolo, rimuovendo le parole non significative e applicando la tokenizzazione utilizzando il toolkit NLTK33. La Tabella 2 mostra le fasi di pre-elaborazione seguite da questo studio.
Modellazione dei tag basata su LDA
Il sistema classifica i tag dell'utente utilizzando la regressione vettoriale di supporto (SVR) in modo che i messaggi di saluto dell'utente vengano riconosciuti dal sistema. Al fine di migliorare la capacità del sistema di anticipare l'intento dell'utente, abbiamo esaminato a fondo i metodi di elaborazione del testo convenzionali e all'avanguardia, oltre ai modelli di Machine Learning (ML) e Deep Learning (DL). Il nostro obiettivo era quello di creare un algoritmo altamente accurato in grado di comprendere un'ampia gamma di domande degli utenti. Questo studio ha impiegato le strategie fondamentali di Bag of Words (BoW) e TF-IDF a causa della loro facilità d'uso e potenza nell'enfatizzare la frequenza delle parole e l'importanza delle parole nel testo. La capacità di Glove e Word2Vec di produrre incorporamenti di parole in base all'uso delle parole ha permesso loro di fornire conoscenza dei significati e del contesto delle parole22.
Una volta preparati i dati, le query intents vengono classificate utilizzando il metodo di allocazione di Dirichlet latente (LDA). L'obiettivo è quello di utilizzare il text mining con il metodo LDA per analizzare le connessioni tra i termini e identificare i modelli nelle loro strutture34,35. Di natura probabilistica e non supervisionata, l'LDA parte dal presupposto che ogni documento in un corpus sia composto da un numero predeterminato di temi definiti manualmente. Ogni documento in LDA ha lo stesso peso e ha un sacco di parole. Si presume che le parole di ogni documento non siano ordinate. Un argomento viene anche descritto utilizzando una funzione di massa di probabilità di parole. Ogni documento utilizza una funzione di massa di probabilità per scegliere i temi. Per la classificazione delle intenzioni, l'allocazione di Dirichlet latente (LDA) è stata applicata utilizzando la libreria GensimPython34.
Nell'LDA, gli intenti sono visti come la distribuzione sul latente che è indicata dalla distribuzione dell'aria LDA chiamata
. Viene selezionato un modello in base alla distribuzione dell'intento, che è indicato come θ (multinomiale) che definisce l'intento dato, la probabilità di I appartiene alla classe data C. Una distribuzione di Dirichlet è correlata a β che codifica il modello in un Bag of words. Data la α e la β, è definita come la distribuzione multivariata con N parole correlate a modelli M con intenti z. Il gruppo di N termini è indicato come W, che è dato come36:
(1)
Integrando su θ, la somma viene dichiarata come Z, e si prende il prodotto delle probabilità del marginale degli intenti individuali, e si calcola l'intera probabilità dell'intento come,
(2)
I modelli, comprese le variazioni dell'intento per i saluti, sono ciao, ciao, ehi, buongiorno/mezzogiorno/vigilia e hola. Durante la ricezione di questi schemi, il sistema trova l'intento dell'utente come saluti e risponde di conseguenza con la frase definita, come ad esempio Cosa posso aiutarti? o Come posso aiutarti? Se la query non viene riconosciuta dal sistema con le 15 classi predefinite, il sistema fornisce informazioni sul ristorante e suggerisce all'utente di comunicare con il servizio clienti. Il risultato della modellazione dei tag basata su LDA delle query utente relative ai messaggi di saluto è illustrato nella Figura 2. Allo stesso modo, le risposte vengono eseguite per tutte le 15 classi relative agli intenti dell'utente (Query). Il modello LDA ha i seguenti parametri. Il numero di argomenti (k) è dichiarato come 40, Alpha è fissato come 0,05, il valore Beta è 0,04 e il numero di iterazioni è dichiarato come 100.
Suggerimento alimentare utilizzando Bi-NN per ICS
Nell'Intelligent Catering System (ICS), gli alimenti sono sistematicamente classificati per supportare raccomandazioni accurate. Ogni voce di menu può rappresentare una singola voce (ad esempio, hamburger, snack, bevanda) o una combinazione di voci come un set da pasto (ad esempio, pollo fritto con una bevanda fredda). Questi articoli sono raggruppati in sei categorie principali: pollo, hamburger, snack, bevanda, abito e tiffin. Per chiarezza, il seme si riferisce ai set di pasti confezionati, mentre il tiffin rappresenta i tradizionali pasti multi-articolo. Ogni alimento è definito da tre caratteristiche chiave: il prezzo, la categoria e un vettore di contenuto che ne descrive la composizione. Questa categorizzazione strutturata consente al modello di raccomandazione di analizzare la cronologia degli acquisti dei clienti sia a livello di articolo che di categoria, migliorando la capacità del sistema di suggerire pasti e combinazioni pertinenti in linea con le preferenze dell'utente. Tutti gli alimenti nell'ICS sono un insieme indicato come,
dove N denota il numero totale di prodotti alimentari nell'ICS. Per ogni prodotto
alimentare in F,
consiste di dettagli delle caratteristiche del cibo, ed è indicato come,
(3)
dove,
denota i prezzi dei prodotti alimentari,
denota la categoria dei prodotti alimentari dove
, C denota le categorie.
denota il numero di menu dove
dove M denota i menu
denota il vettore di contenuto del cibo,dove
dove
è l'elemento del vettore di contenuto e rappresenta rispettivamente pollo, hamburger, snack, bevanda, vestito e Tiffin.
I dati dell'utente sono costituiti da dettagli sull'utente per indicare le funzionalità dell'utente che possono essere ottenute dall'app o dal flusso di utilizzo. Per ogni utente
, le caratteristiche sono indicate come,
(4)
dove
, denota i dettagli sull'utente, come l'età e il sesso.
Denota l'evento click dell'utente, che è un vettore a lunghezza variabile dove
e t dichiara l'ora dell'evento click recente,
è il numero positivo e
denota l'intera sequenza di flusso che denota l'intero acquisto effettuato dall'utente.
Indica l'elenco degli alimenti acquistati dal cliente, dove
, k indica la quantità totale di prodotti alimentari acquistati dall'utente.
Con l'uso di F e U, che denotano rispettivamente gli alimenti e i dati dell'utente, il sistema di raccomandazione è inquadrato in ICS. L'obiettivo di questo sistema è quello di migliorare l'accuratezza per potenziare l'intenzione di acquisto dell'utente. Il problema dell'ICS è formulato come,
(5)
L'equazione (5) denota l'obiettivo del problema di trovare risultati di precisione migliorati sul problema ICS riducendo la funzione di perdita indicata nell'equazione (6).
(6)
dove,
è il risultato previsto e
è il risultato effettivo. Il modello offre prestazioni migliori quando il valore della funzione di perdita è inferiore. La funzione di perdita viene impiegata per determinare la discrepanza tra il valore previsto del modello e il valore reale Y. In questo,
(7)
dove
(8)
(9)
In questo, r indica i dati di addestramento in X e s è il numero di prodotto alimentare acquistato di un dato di addestramento. L'ICS sviluppato ha impiegato l'entropia incrociata come funzione di perdita, che è descritta nella sezione seguente.
Raccomandazione alimentare basata su Conv-RNN
Analizzando gli attributi del prodotto, le valutazioni degli utenti e i profili degli utenti, un sistema di raccomandazione basato su Conv-RNN fornisce agli utenti consigli basati sui loro interessi. La Figura 3 mostra il progetto CRNN proposto. I modelli Conv-RNN spesso considerano o aggiungono automaticamente informazioni specifiche sul contesto temporale dell'utente durante l'invio di suggerimenti. Tuttavia, il modo in cui un sistema di raccomandazione comprende e utilizza il contesto fornito dalle richieste di suggerimento spesso determina la sua efficacia. Conv-RNN calcola le valutazioni delle previsioni in base alle caratteristiche e agli attributi dinamici dell'elemento e al contesto dell'ora corrente dell'utente per fornire consigli adeguati per un utente specifico. È inevitabile che le persone che stanno attraversando cose simili allo stesso tempo abbiano preferenze simili. L'efficacia di un sistema di riferimento temporale basato sulla CNN per le raccomandazioni dipende dalla sua capacità di trovare utenti che sono più comparabili al destinatario previsto e che condividono lo stesso contesto temporale. Pertanto, la CNN registra il contesto temporale, che è l'informazione sensibile al tempo sull'attività dell'utente. Al livello di input della CNN sono stati quindi forniti gli attributi dell'utente, le caratteristiche dell'elemento e le informazioni temporali per ricostruire la matrice originale. Un metodo per calcolare l'output finale viene fornito una volta che il livello di convoluzione è stato utilizzato per estrarre le caratteristiche dalla matrice.
Dagli strati di convoluzione, gli eventi di clic del cibo vengono estratti utilizzando Eqn (10)
(10)
dove O è la dimensione dell'output, X è la dimensione dei dati di input, F è la dimensione del kernel convoluzionale, a è riempire i dati di input e S è maggiore di 1 e S è lo stride del kernel. La rete neurale può modellare modelli più complessi di quanto potrebbe fare se si limitasse a simulare calcoli tra strati vicini della rete, cosa che fa utilizzando l'uniformità ma solo il funzionamento lineare, perché la funzione di attivazione all'interno del livello di stimolazione viene utilizzata per eseguire operazioni non lineari. In una rete neurale, la comunicazione da strato a strato è strettamente sequenziale. In Conv-RNN, le funzioni di attivazione erano le più prevalenti. Le funzioni convenzionali di Tanh, sigma e altri tipi di attivazione mancano di un gradiente e hanno intervalli di intervallo piccoli e pratici. Quando viene utilizzata anche un'operazione non lineare efficiente in termini di risorse, le funzioni dell'unità lineare rettificata (ReLU) diventano lo strumento principale per superare questi due problemi.
Per l'efficienza computazionale, il livello di pooling esegue il downsampling ed elabora in modo sparso i dati delle feature. I metodi di pooling massimo e medio sono due esempi ben noti di algoritmi di pooling; MaxPooling offre risultati migliori nella selezione delle funzionalità. MaxPooling ha selezionato le seguenti funzionalità:
(11)
Il Conv-RNN impiega quindi il livello completamente connesso utilizzando due approcci densi per riaddestrare la coda Conv-RNN con una minore perdita di informazioni sulle caratteristiche. I livelli ricorrenti sono comunemente usati nelle reti neurali per l'analisi di dati sequenziali. A causa delle connessioni che consentono loro di mantenere una memoria interna degli input precedenti, i livelli ricorrenti gestiscono ciascun input separatamente, a differenza dei tradizionali livelli feedforward. Ciò rende i livelli ricorrenti particolarmente adatti per attività che coinvolgono sequenze, dati di serie temporali o qualsiasi tipo di informazione in cui l'ordine degli input è importante. L'unità fondamentale di uno strato ricorrente è il neurone ricorrente, spesso noto come cellula RNN. Poiché le cellule RNN gestiscono gli input uno alla volta, mantengono uno stato interno che contiene i dati degli input precedenti. La sua condizione interna viene alterata ad ogni passo temporale, il che influenza l'elaborazione degli input successivi. Il livello di output mostra all'utente i risultati dopo aver utilizzato il classificatore SoftMax. Prima di utilizzare i campi, le cui caratteristiche sono classificate come indice della matrice incorporata, devono essere convertiti in numeri interi.
La funzione di perdita di entropia incrociata categoriale, che quantifica la differenza tra le vere etichette di classe y e la distribuzione di probabilità proiettata y', è stata utilizzata per addestrare il modello di raccomandazione Conv-RNN. La discesa stocastica del gradiente (SGD) con stima del momento adattivo (Adam) è stata utilizzata per migliorare i parametri θ del modello (pesi e distorsioni). I parametri sono stati modificati come segue ad ogni iterazione di addestramento t:
(12)
dove, η è la velocità di apprendimento,
è il gradiente della funzione di perdita rispetto a θ.
Le seguenti tattiche sono state utilizzate per evitare l'overfitting. Durante l'addestramento, la regolarizzazione del dropout (ρ=0,3) viene utilizzata su livelli completamente collegati per disattivare casualmente i neuroni. Quando non è stato osservato alcun miglioramento per 15 epoche consecutive, l'addestramento è stato interrotto in anticipo a causa della perdita di convalida.
Convalida incrociata suddivisa in cinque fasi per confermare le prestazioni della generalizzazione
Utilizzando una ricerca a griglia sul set di convalida, è stata eseguita la regolazione degli iperparametri. Inclusi nello spazio di ricerca c'erano il numero di filtri per il livello di convoluzione, 64, la dimensione del kernel, 3 x 3, il numero di livelli ricorrenti come 100, la dimensione del batch, il tasso di abbandono 0,2 e il tasso di apprendimento 0,002. L'ottimizzatore utilizzato è ADAM. Infine, il livello di output restituisce i risultati degli alimenti consigliati come vettore di codifica one-hot, dove gli alimenti suggeriti sono indicati con uno e gli altri output saranno indicati con 0.
Previsione della soddisfazione del cliente utilizzando Conv-LSTM
Questo studio ha utilizzato la memoria a breve termine lunga di convoluzione (Conv-LSTM) per prevedere la soddisfazione del cliente una volta terminato il catering. La struttura di Conv-LSTM è mostrata nella Figura 4. L'architettura della CNN include neuroni di input, una serie di strati convoluzionali, pooling, livelli completamente connessi e livelli di normalizzazione37. Le cellule nervose dello strato di convoluzione sono collegate allo strato sopra di esso attraverso una regione stretta, mentre i neuroni di attivazione degli strati completamente collegati sono completamente correlati agli strati sottostanti. Gli input Conv-LSTM definiscono esplicitamente le forme tensoriali e la granularità temporale. Ogni sequenza di input è strutturata per sessione dell'ordine del cliente (fase temporale = per ordine), in cui la lista acquisti è codificata come un vettore multi-hot e il livello di soddisfazione associato è rappresentato come un punteggio numerico. Il tensore risultante ha la forma (dimensione del batch × lunghezza della sequenza × dimensione della funzione).
La trasmissione inversa in avanti e all'indietro di una funzione nella CNN generalmente separa i fattori in diversi gruppi in base al loro input. Numerosi progetti di CNN sono emersi come risultato dei recenti progressi della ricerca. Come mostrato nell'equazione (15), tre pesi, iw, rw e b, denotano rispettivamente il peso di input, il peso ricorrente e la polarizzazione che sono stati impiegati in ciascun blocco LSTM.
(13)
Di seguito è riportata una dichiarazione dello stato della cella al passaggio temporale t:
(14)
dove il prodotto Hadamard è indicato con . Il codice per lo stato nascosto Ht di t è,
(15)
Gli iperparametri e i relativi valori di Conv-LSTM sono dichiarati come segue: il numero di filtri per il livello di convoluzione è 64, la dimensione del kernel è 3 x 3, le unità LSTM sono 100 con un tasso di abbandono di 0,2, la dimensione del batch è 64, la velocità di apprendimento è 0,002 e il numero di passaggi temporali è 50 con l'ottimizzatore Adam.
Diagramma UML e pseudo codice per l'interazione con il cliente
Il flusso dinamico delle interazioni nel sistema suggerito è illustrato nel diagramma di sequenza UML (Figura 5). Il modulo NLP-LDA elabora la richiesta dell'utente (ad esempio l'ordine di un pasto o una query) per la modellazione degli argomenti e l'estrazione delle intenzioni. Dopo l'elaborazione, il motore di raccomandazione (Conv-RNN) riceve la richiesta e produce una raccomandazione personalizzata. Infine, l'utente riceve una risposta in tempo reale dal sistema. Questa sequenza garantisce la trasparenza nella conversione dell'input dell'utente in output di servizio intelligenti e sottolinea l'interazione modulare dei componenti.
All'algoritmo di raccomandazione Conv-RNN è stato assegnato uno pseudocodice per migliorare la riproducibilità. Fornisce una panoramica della logica computazionale sequenziale, che include la pre-elaborazione della richiesta dell'utente, l'utilizzo di livelli convoluzionali e ricorrenti per la modellazione di sequenze e l'estrazione di funzionalità, la regolarizzazione e un livello di output softmax per generare un suggerimento. Questo pseudocodice offre una chiara visione a livello di implementazione del flusso di lavoro del modello, che migliora le formulazioni matematiche.
Pseudo codice: algoritmo di raccomandazione Conv-RNN
Input: Richiesta utente U, sequenza di interazione storica H
Output: Prodotto alimentare consigliato R
- Pre-elaborazione di U → tokenizzare, incorporare con Word2Vec
- Costruire la sequenza di input S = [H, U]
- Applica livello convoluzionale:
S_conv = Conv1D(S, filtri, kernel_size)
- Passaggio attraverso il livello ricorrente (RNN/GRU):
S_RNN = RNN(S_conv, hidden_units)
- Applica Dropout per la regolarizzazione
- Strato denso con attivazione Softmax:
P = Softmax(W xS_rnn + b)
- Seleziona la raccomandazione:
R = argmax(P)
- Restituisce R all'utente