$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Deze studie is uitgevoerd in overeenstemming met de richtlijnen van de Research Ethics Committee van The National University of Malaysia (UKM) en goedgekeurd onder goedkeuringsnummer UKM FST/2025-AI/023. Voorafgaand aan het verzamelen van chatbotvragen werd schriftelijke geïnformeerde toestemming verkregen van alle deelnemers. Alle gegevens werden geanonimiseerd om de vertrouwelijkheid en privacy van de deelnemers te waarborgen
Studie overzicht
Het overzicht van het voorgestelde intelligente cateringsysteem met behulp van AI-technologieën wordt weergegeven in figuur 1. Zoals geïllustreerd, wordt de input van de klant voorbewerkt met de NLP-technieken zoals woordinbeddingen, lemmatisering en tokenisatie om de tags te extraheren. Vervolgens is het ML-model met de naam LDA toegepast op het modelleren van klanttags om hen contactloze service te bieden. De voedingssuggestie wordt uitgevoerd met behulp van een Conv-RNN-model. Op basis van de stroomvolgorde die is vastgelegd van de keuzes van de vorige klant, wordt het voedsel op een intelligente manier aan de klant voorgesteld. Ten slotte wordt de klanttevredenheid voorspeld door gebruik te maken van een geoptimaliseerd Conv-LSTM-model voor verdere verbetering van de dienstverlening van het restaurant. De prestaties van de voorgestelde AI-modellen worden geëvalueerd aan de hand van de verschillende evaluatiemaatstaven.

Figuur 1: Voorgesteld systeemmodel voor intelligente cateringdiensten (ICS). De architectuur integreert gebruikersinteractie, gegevensvoorverwerking, intentiedetectie, voedselaanbeveling en feedbackmechanismen. Klik hier om een grotere versie van deze figuur te bekijken.
Gebruikte dataset
Om het intelligente cateringsysteem te creëren, verzamelden we 283 verzoeken van een restaurant in de buurt met behulp van een chatbot. Deze vragen, die een breed scala aan vragen van klanten omvatten, van menudetails tot openingstijden, werden handmatig onderverdeeld in 15 verschillende intentiegroepen. Dit garandeert een grondige dekking van alle mogelijke gebruikersinteracties met het systeem. Aanhef, afscheid, waardering, catering, openingstijden, setting, contactgegevens, vragen over betalingen, het menu van vandaag, bezorgalternatieven, menuvragen, bestelprocessen, speciale aanbiedingen, boekingen, drankopties en toegankelijkheid om buiten te zitten zijn slechts enkele van de specifieke aspecten van vragen van klanten die de intentieklassen moesten registreren. Tabel 1 toont de frequentie van de vragen in elk van de doelgroepen en de indeling volgens de thematische inhoud van de vragen. De categorie Contactgegevens had bijvoorbeeld de meeste zoekopdrachten, wat suggereert dat klanten erg geïnteresseerd zijn om erachter te komen hoe ze in contact kunnen komen met het eetcafé. Aan de andere kant kregen de categorieën Zitplaatsen en Dranken de minste vragen, wat erop kan wijzen dat er minder belangstelling van de consument is voor deze onderwerpen of dat er al meer duidelijkheid over is.
Contactloze service met behulp van NLP met LDA
De gebruikersinvoer die de activiteit van het framework start, wordt in eerste instantie voorbewerkt om de tekst te standaardiseren en ruis te elimineren. Tokenisatie, stopwoordeliminatie en lemmatisering zijn voorbeelden van deze voorbereiding, waardoor de gegevens klaar zijn voor aanvullende analyse. Na voorlopige verwerking worden gebruikersaanvragen omgezet in numerieke weergaven. Semantische verbanden en contextuele relevantie behoren tot de linguïstische kenmerken die door deze representaties worden vastgelegd. Er werden verschillende machine learning-classificaties gebruikt om deze vectorrepresentaties van gebruikersquery's te trainen voor de classificatie van 16 vooraf gedefinieerde klassen (intenties/tags). Het model haalt het vooraf bepaalde gerelateerde antwoord op en stuurt dit terug naar de gebruiker na het nauwkeurig voorspellen van de query-intenties van de gebruiker.
Preprocessing
De betrouwbaarheid van onze analyse wordt aanzienlijk verbeterd door de voorbewerkte query's, die controleren of de binnenkomende gegevens consistent zijn geformatteerd en relevant zijn voor de volgende classificatieprocedure. De intentiepatronen (bijv. begroetingen zoals hallo, hallo, hé) werden verzameld en voorbewerkt door tekst naar kleine letters te converteren, stopwoorden te verwijderen en tokenisatie toe te passen met behulp van de NLTK-toolkit33. Tabel 2 toont de voorbewerkingsstappen die in dit onderzoek zijn gevolgd.
Tagmodellering op basis van LDA
Het systeem classificeert de tags van de gebruiker met behulp van Support Vector Regression (SVR), zodat de begroetingen van de gebruiker door het systeem worden herkend. Om het systeem beter in staat te stellen te anticiperen op de intentie van de gebruiker, hebben we naast Machine Learning (ML) en Deep Learning (DL) modellen ook zowel conventionele als geavanceerde tekstverwerkingsmethoden grondig onderzocht. Het was ons doel om een zeer nauwkeurig algoritme te bouwen dat een breed scala aan gebruikersvragen kon begrijpen. Deze studie maakte gebruik van de fundamentele strategieën van Bag of Words (BoW) en TF-IDF vanwege hun gebruiksgemak en potentie bij het benadrukken van woordfrequentie en het belang van woorden in de tekst. Het vermogen van Glove en Word2Vec om woordinbeddingen te produceren op basis van woordgebruik stelde hen samen in staat om kennis van woordbetekenissen en context te leveren22.
Zodra de gegevens zijn voorbereid, worden de intentiequery's geclassificeerd met behulp van de latente Dirichlet-toewijzing (LDA)-methode. Het doel is om text mining met de LDA-methode te gebruiken om de verbanden tussen termen te analyseren en patronen in hun structuren te identificeren34,35. LDA gaat ervan uit dat elk document in een corpus is samengesteld uit een vooraf bepaald aantal handmatig gedefinieerde thema's. Elk document in LDA heeft evenveel gewicht en heeft een zak met woorden. De woorden van elk document worden verondersteld ongeordend te zijn. Een onderwerp wordt ook beschreven met behulp van een waarschijnlijkheidsmassafunctie van woorden. Elk document gebruikt een waarschijnlijkheidsmassafunctie om thema's te kiezen. Voor intentieclassificatie werd Latent Dirichlet Allocation (LDA) toegepast met behulp van de GensimPython-bibliotheek34.
In LDA worden de intenties gezien als de verdeling over het latente die wordt aangeduid door de LDA-verdelingslucht die wordt genoemd
. Een patroon wordt geselecteerd op basis van de intentieverdeling, die wordt aangeduid als θ (multinomiaal) die de gegeven intentie definieert, de waarschijnlijkheid van I behoort tot de gegeven klasse C. Een Dirichlet-verdeling is gerelateerd aan β die het patroon codeert in een zak met woorden. Gegeven de α en β, wordt het gedefinieerd als de multivariate verdeling met N woorden gerelateerd aan M-patronen met z-intenties. De groep van N termen wordt aangeduid als W, die wordt gegeven als36:
(1)
Door te integreren over θ, wordt de sommatie gedeclareerd als Z, en wordt het product genomen van de waarschijnlijkheden van de marginale van de individuele intenties, en wordt de volledige intentiekans berekend als,
(2)
De patronen, inclusief de intentievariaties voor begroetingen, zijn hi, hello, Hey, Good morning/noon/eve en hola. Bij het ontvangen van deze patronen vindt het systeem de intentie van de gebruiker als begroetingen en reageert er vervolgens op met de gedefinieerde zin, zoals Wat kan ik je helpen? of Hoe kan ik je helpen? Als de zoekopdracht niet wordt herkend door het systeem met de vooraf gedefinieerde 15 klassen, biedt het systeem restaurantinformatie en stelt het voor dat de gebruiker communiceert met de klantenservice. Het resultaat van de op LDA gebaseerde tagmodellering van gebruikersquery's met betrekking tot begroetingen wordt weergegeven in figuur 2. Op dezelfde manier worden de antwoorden uitgevoerd voor alle 15 klassen die betrekking hebben op de gebruikersintenties (Queries). Het model LDA heeft de volgende parameters. Het aantal onderwerpen (k) wordt gedeclareerd als 40, Alpha wordt vastgesteld als 0,05, de bètawaarde is 0,04 en het aantal iteraties wordt gedeclareerd als 100.
Voedingssuggestie met Bi-NN voor ICS
In het Intelligent Catering System (ICS) worden etenswaren systematisch gecategoriseerd om nauwkeurige aanbevelingen te ondersteunen. Elk menu-item kan een enkel item vertegenwoordigen (bijv. hamburger, snack, drankje) of een combinatie van items, zoals een maaltijdset (bijv. gebakken kip met een koud drankje). Deze items zijn gegroepeerd in zes hoofdcategorieën: kip, hamburger, snack, drankje, pak en tiffin. Voor de duidelijkheid: pak verwijst naar verpakte maaltijdsets, terwijl tiffin staat voor traditionele maaltijden met meerdere items. Elk voedingsmiddel wordt gedefinieerd door drie belangrijke kenmerken: de prijs, de categorie en een inhoudsvector die de samenstelling beschrijft. Deze gestructureerde categorisering stelt het aanbevelingsmodel in staat om de aankoopgeschiedenis van klanten op zowel artikel- als categorieniveau te analyseren, waardoor het systeem beter in staat is om relevante maaltijden en combo's voor te stellen die aansluiten bij de voorkeuren van de gebruiker. Alle voedingsmiddelen in de ICS zijn een set die wordt aangeduid als,
waarbij N staat voor het totale aantal voedingsmiddelen in de ICS. Voor elk voedingsproduct
in F,
bestaat uit details van de kenmerken van voedsel, en het wordt aangeduid als,
(3)
waar,
de prijzen van voedsel aangeeft,
de categorie van de voedingsmiddelen aangeeft, waarbij
, C de categorieën aangeeft.
geeft het aantal menu's aan, waarbij
M de menu's aangeeft, de inhoudsvector
van voedsel aangeeft, waar
het element van de inhoudsvector is en respectievelijk kip, hamburger, snack, drankje, pak en Tiffin vertegenwoordigt.
De gebruikersgegevens bestaan uit details over de gebruiker om de functies van de gebruiker aan te duiden die kunnen worden verkregen via de app of de gebruiksstroom. Voor elke gebruiker
worden de functies aangeduid als:
(4)
waarbij
, de details over de gebruiker aangeeft, zoals leeftijd en geslacht.
Geeft de klikgebeurtenis van de gebruiker aan, wat een vector met variabele lengte is, waarbij
en T de tijd van de recente klikgebeurtenis aangeeft,
het positieve getal is en
de volledige stroomsequentie aangeeft die de volledige aankoop aangeeft die door de gebruiker is uitgevoerd.
Geeft de lijst aan van voedsel dat door de klant is gekocht, waarbij
k het totale aantal gekochte etenswaren door de gebruiker aangeeft.
Met het gebruik van F en U, die respectievelijk voedingsmiddelen en gebruikersgegevens aanduiden, wordt het aanbevelingssysteem ingekaderd in ICS. Het doel van dit systeem is om de nauwkeurigheid te verbeteren om de aankoopintentie van de gebruiker te verbeteren. Het probleem van ICS is geformuleerd als,
(5)
Vergelijking (5) geeft het doel van het probleem aan om verbeterde nauwkeurigheidsresultaten te vinden op het ICS-probleem door de verliesfunctie te verminderen die wordt aangegeven in vergelijking (6).
(6)
waar,
is de voorspelde resultaten en
is het werkelijke resultaat. Het model presteert beter wanneer de waarde van de verliesfunctie kleiner is. De verliesfunctie wordt gebruikt om de discrepantie te bepalen tussen de voorspelde waarde van het model en de werkelijke waarde Y. Hierin,
(7)
waar
(8)
(9)
Hierin staat r voor de trainingsgegevens in X, en s is het nummer van het gekochte voedingsmiddel van één trainingsgegevens. Het ontwikkelde ICS gebruikte kruisentropie als een verliesfunctie, die in de volgende paragraaf wordt beschreven.
Voedselaanbeveling op basis van Conv-RNN
Door de kenmerken, gebruikersbeoordelingen en gebruikersprofielen van het product te analyseren, biedt een op Conv-RNN gebaseerd aanbevelingssysteem gebruikers aanbevelingen op basis van hun interesses. Figuur 3 toont het voorgestelde CRNN-ontwerp. De Conv-RNN-modellen houden vaak rekening met of voegen automatisch specifieke informatie toe over de tijdelijke context van de gebruiker bij het doen van suggesties. Hoe goed een aanbevelingssysteem de context van de suggestieverzoeken begrijpt en gebruikt, bepaalt echter vaak hoe effectief het is. Conv-RNN berekent voorspellingsclassificaties op basis van de dynamische kenmerken en kenmerken van het item en de huidige tijdscontext van de gebruiker om geschikte aanbevelingen te doen voor een specifieke gebruiker. Het is onvermijdelijk dat mensen die tegelijkertijd soortgelijke dingen meemaken, dezelfde voorkeuren zullen hebben. De effectiviteit van een op CNN gebaseerd tijdbewust systeem voor aanbevelingen hangt af van het vermogen om gebruikers te vinden die het meest vergelijkbaar zijn met de beoogde ontvanger en dezelfde tijdscontext delen. CNN registreert dus de tijdelijke context, de tijdgevoelige informatie over de activiteit van de gebruiker. De invoerlaag van CNN werd vervolgens gevoed met de gebruikersattributen, itemkenmerken en tijdinformatie om de oorspronkelijke matrix opnieuw op te bouwen. Een methode voor het berekenen van de uiteindelijke output wordt gegeven zodra de convolutielaag is gebruikt om kenmerken uit de matrix te extraheren.
Uit de convolutielagen worden de voedselklikgebeurtenissen geëxtraheerd met behulp van Eqn (10)
(10)
waarbij O de uitvoergrootte is, X de grootte van de invoergegevens, F de convolutionele kernelgrootte, a is om de invoergegevens te vullen, en S is meer dan 1 en S is de kernelpas. Het neurale netwerk kan complexere modellen modelleren dan het zou kunnen als het beperkt zou zijn tot het simuleren van berekeningen tussen aangrenzende lagen van het netwerk, wat het doet door uniformiteit te gebruiken, maar alleen lineaire bewerking, omdat de activeringsfunctie binnen de stimulatielaag wordt gebruikt om niet-lineaire bewerkingen uit te voeren. In een neuraal netwerk is de communicatie van laag tot laag strikt sequentieel. In Conv-RNN kwamen activeringsfuncties het meest voor. De conventionele Tanh-, sigmoïde en andere soorten activeringsfuncties missen een gradiënt en hebben kleine, praktische intervalbereiken. Wanneer ook een hulpbronnenefficiënte niet-lineaire bewerking wordt gebruikt, worden de gerectificeerde lineaire eenheid (ReLU) het primaire instrument om deze twee problemen op te lossen.
Voor rekenefficiëntie downsamplet de poolinglaag en verwerkt deze spaarzaam functiegegevens. De maximale en gemiddelde poolingmethoden zijn twee bekende voorbeelden van pooling-algoritmen; MaxPooling zorgt voor betere resultaten bij het selecteren van functies. MaxPooling heeft de volgende functies geselecteerd:
(11)
De Conv-RNN maakt vervolgens gebruik van de volledig verbonden laag met behulp van twee dichte benaderingen voor het opnieuw trainen van de Conv-RNN-staart met minder verlies van functie-informatie. Terugkerende lagen worden vaak gebruikt in neurale netwerken voor de analyse van sequentiële gegevens. Vanwege verbindingen waarmee ze een intern geheugen van eerdere invoer kunnen behouden, verwerken terugkerende lagen elke invoer afzonderlijk, in tegenstelling tot traditionele feedforward-lagen. Dit maakt terugkerende lagen bijzonder geschikt voor taken met betrekking tot sequenties, tijdreeksgegevens of elke vorm van informatie waarbij de volgorde van invoer van belang is. De fundamentele eenheid van een terugkerende laag is het terugkerende neuron, vaak bekend als een RNN-cel. Omdat RNN-cellen de invoer één voor één verwerken, behouden ze een interne toestand die gegevens van eerdere invoer bevat. De interne toestand wordt bij elke tijdstap gewijzigd, wat de verwerking van volgende invoer beïnvloedt. De uitvoerlaag toont de gebruiker de resultaten na het gebruik van de SoftMax-classificatie. Voordat de velden worden gebruikt, waarvan de kenmerken zijn gecategoriseerd als de index van de ingebedde matrix, moeten ze eerst worden geconverteerd naar gehele getallen.
De categorische cross-entropieverliesfunctie, die het verschil kwantificeert tussen de ware klasselabels y en de geprojecteerde kansverdeling y', werd gebruikt om het Conv-RNN-aanbevelingsmodel te trainen. Stochastic gradient descent (SGD) met adaptieve momentschatting (Adam) werd gebruikt om de modelparameters θ (gewichten en biases) te verbeteren. De parameters zijn als volgt gewijzigd bij elke trainingsiteratie t:
(12)
waarbij, η de leersnelheid is,
de gradiënt van de verliesfunctie ten opzichte van θ is.
De volgende tactieken werden gebruikt om overfitting te voorkomen. Tijdens de training wordt drop-out regularisatie (ρ=0,3) gebruikt op volledig gekoppelde lagen om neuronen willekeurig te deactiveren. Toen er gedurende 15 opeenvolgende perioden geen verbetering werd gezien, werd de training vroegtijdig gestopt op basis van validatieverlies.
Vijfvoudige gesplitste kruisvalidatie om generalisatieprestaties te bevestigen
Met behulp van een rasterzoekopdracht op de validatieset werd hyperparameterafstemming uitgevoerd. Inbegrepen in de zoekruimte waren het aantal filters voor de convolutielaag, 64, de kernelgrootte, 3 x 3, het aantal terugkerende lagen als 100, de batchgrootte, dropoutpercentage 0,2 en leersnelheid 0,002. De gebruikte optimizer is ADAM. Ten slotte retourneert de uitvoerlaag de resultaten van aanbevolen voedingsmiddelen als een één-hete coderingsvector, waarbij voorgestelde voedingsmiddelen worden aangeduid met één en andere outputs worden aangeduid als 0.
Voorspelling van de klanttevredenheid met behulp van Conv-LSTM
Deze studie maakte gebruik van het Convolution Long Short-Term Memory (Conv-LSTM) om de klanttevredenheid te voorspellen zodra ze klaar zijn met hun catering. De structuur van Conv-LSTM wordt weergegeven in figuur 4. De architectuur van CNN omvat invoerneuronen, een reeks convolutionele lagen, pooling, volledig verbonden lagen en normalisatielagen37. De zenuwcellen van de convolutielaag zijn via een smal gebied verbonden met de laag erboven, terwijl de activeringsneuronen van de volledig verbonden lagen volledig verwant zijn aan de lagen eronder. Conv-LSTM-ingangen definiëren expliciet de tensorvormen en temporele granulariteit. Elke invoersequentie is gestructureerd per klantordersessie (tijdstap = per order), waarbij de inkooplijst wordt gecodeerd als een multi-hot vector en het bijbehorende tevredenheidsniveau wordt weergegeven als een numerieke score. De resulterende tensor heeft de vorm (batchgrootte × sequentielengte × functiedimensie).
De voorwaartse en achterwaartse transmissie van een functie in CNN scheidt factoren over het algemeen in verschillende groepen op basis van hun input. Talloze CNN-ontwerpen zijn naar voren gekomen als gevolg van recente onderzoeksontwikkelingen. Zoals weergegeven in vergelijking (15), geven drie gewichten, iw, rw en b, respectievelijk het invoergewicht, het terugkerende gewicht en de bias aan die in elk LSTM-blok zijn gebruikt.
(13)
Het volgende is een verklaring van de celtoestand op tijdstip stap t:
(14)
waar het Hadamard-product wordt aangeduid met . De code voor de verborgen toestand Ht van t is,
(15)
De hyperparameters en hun waarden van Conv-LSTM worden als volgt gedeclareerd: Het aantal filters voor de convolutielaag is 64, de kernelgrootte is 3 x 3, de LSTM-eenheden zijn 100 met een uitvalpercentage van 0,2, de batchgrootte is 64, de leersnelheid is 0,002 en het aantal tijdstappen is 50 met de Adam-optimizer.
UML-diagram en pseudocode voor klantinteractie
De dynamische stroom van interacties in het voorgestelde systeem wordt weergegeven in het UML-sequentiediagram (Figuur 5). De NLP-LDA-module verwerkt het verzoek van de gebruiker (zoals een maaltijdbestelling of query) voor onderwerpmodellering en intentie-extractie. Na verwerking ontvangt de recommendation engine (Conv-RNN) de aanvraag en produceert een op maat gemaakte aanbeveling. Ten slotte ontvangt de gebruiker een real-time reactie van het systeem. Deze volgorde garandeert transparantie bij de omzetting van gebruikersinvoer in intelligente service-outputs en benadrukt het modulaire samenspel van componenten.
Het Conv-RNN-aanbevelingsalgoritme heeft pseudocode gekregen om de reproduceerbaarheid te verbeteren. Het biedt een overzicht van de sequentiële computationele logica, waaronder het voorverwerken van het gebruikersverzoek, het gebruik van convolutionele en terugkerende lagen voor sequentiemodellering en functie-extractie, regularisatie en een softmax-uitvoerlaag om een suggestie te genereren. Deze pseudocode biedt een duidelijk overzicht op implementatieniveau van de modelworkflow, wat wiskundige formuleringen verbetert.
Pseudocode: Conv-RNN-aanbevelingsalgoritme
Invoer: Gebruikersverzoek U, historische interactiesequentie H
Output: Aanbevolen voedingsmiddel R
- Voorbewerken U → tokeniseren, insluiten met Word2Vec
- Bouw invoersequentie S = [H, U]
- Convolutionele laag aanbrengen:
S_conv = Conv1D(S, filters, kernel_size)
- Ga door Recurrent Layer (RNN/GRU):
S_RNN = RNN(S_conv, hidden_units)
- Dropout toepassen voor regularisatie
- Dichte laag met Softmax-activering:
P = Softmax(W xS_rnn + b)
- Selecteer aanbeveling:
R = argmax(P)
- Retourneer R naar de gebruiker