Een inleiding tot Chatbot-ontwikkeling met RASA

Bronknooppunt: 1569980

Dit artikel is gepubliceerd als onderdeel van het Data Science-blogathon

Introductie

Vraag je je ooit af hoe Google-assistent, Siri, chatbots op verschillende websites werken? De vooruitgang op het gebied van natuurlijke taalverwerking maakt de weg vrij voor verschillende zeer nauwkeurige AI-assistenten op verschillende gebieden zoals medisch, defensie, management, enz. Er zijn verschillende AI-frameworks en tools zoals RASA, Dialogflow, Microsoft Bot Framework, enz.. beschikbaar voor het maken van zowel grootschalige als kleinschalige chatbots.

In dit artikel bespreken we kort de ontwikkeling van chatbots met behulp van het RASA-framework.

Wat is RASA?

RASA is een open-source chatbotframework gebaseerd op machine learning. Met behulp hiervan kunnen we eenvoudig zeer nauwkeurige chatbots maken en deze chatbots eenvoudig integreren met onze website, telegram, Facebook, Whatsapp, enz.

Voordat we erop ingaan, laten we eens kijken naar enkele eenvoudige concepten die we moeten kennen bij het maken van een chatbot.

Vraag

Een query is het gebruikersbericht voor de chatbot om details van iets te krijgen.

Reactie/actie

Actie is de reactie van een chatbot op basis van de vraag.

intents

Intenties kunnen worden omschreven als het doel of de intentie van de gebruikersinvoer.

Hoi, hallo, goedemorgen, goedenavond, enz. kunnen bijvoorbeeld worden behandeld als begroetingsintentie.

Entiteiten

Entiteiten kunnen worden omschreven als nuttige informatie die kan worden geรซxtraheerd uit de gebruikersinvoer (de zelfstandige naamwoorden in de dialoog).

Bijvoorbeeld: 'Ik wil een ticket van DELHI naar COCHIN boeken', hier zijn zowel Delhi als Cochin entiteiten (locatie)

RASA-componenten

Het heeft twee hoofdcomponenten, RASA NLU en RASA CORE

RASA NLU

RASA NLU is de tolk die de gebruikersinvoer verwerkt, de intenties identificeert en de entiteiten eruit haalt.

RASA-KERN

RASA CORE ontvangt de uitvoer van de RASA NLU (waarin een woordenboek de intentie-entiteiten en andere informatie specificeert) en op basis van deze details selecteert het RASA Core-deel het juiste antwoord en stuurt dit terug naar de gebruiker als het botantwoord.

Architectuur van RASA

Architectuur van RASA

In de architectuur kunnen we voornamelijk 4 dingen bespreken: Tolk, Tracker, Beleid, Actie.

Wanneer een persoon een bericht typt en naar de RASA-chatbot verzendt, wordt dit ontvangen en doorgegeven aan de tolk. Het is deze tolk die de bedoeling van het bericht identificeert en de entiteiten eruit haalt.
Er is een Tracker aanwezig, die altijd de status van het gesprek tussen de gebruiker en de bot volgt. Beleid in de architectuur houdt de huidige gespreksstatus bij en beslist wat de juiste botactie is. De geselecteerde actie wordt vervolgens ook gevolgd door de tracker en vervolgens als antwoord naar de gebruiker verzonden.

RASA installeren op Windows

Virtuele omgeving creรซren

Laten we het in een virtuele omgeving installeren. We creรซren dus een virtuele omgeving in onze vensters met behulp van virtualenv

virtuele omgeving installeren

pip virtualenv installeren

het creรซren van een virtuele omgeving met de naam my_env

virtueleenv mijn_env

Vervolgens moeten we onze omgeving activeren

mijn_envScriptsactivate.bat

RASA installeren

Onze virtuele omgeving is succesvol aangemaakt en geactiveerd. Vervolgens moeten we de RASA installeren op onze my_env.

pip installeer rasa

Het volgende is het initialiseren van ons project

rasa begin

We kunnen het initiรซle model trainen tijdens het initialiseren.

RASA installeren

Na de initialisatie van het project worden er verschillende nieuwe bestanden aangemaakt. De bestandsstructuur zal zijn

RASA2 installeren

Laten we de bestandsstructuur doornemen om een โ€‹โ€‹idee te krijgen van de verschillende bestanden. Deze bestanden worden door RASA gevuld met standaardtekst.

De belangrijke bestanden zijn

nlu.yml

Dit bestand bevat de mogelijke berichten van de gebruiker en de bijbehorende intentie. Dit bestand wordt gebruikt voor het maken van het intentieclassificatiemodel. Telkens wanneer de gebruiker een bericht invoert, classificeert het classificatiemodel automatisch de bedoeling van het bericht.

versie: "2.0" nlu: - intentie: begroetingsvoorbeelden: | - hey - hallo daar - goedemorgen - goedenavond - intentie: tot ziens voorbeelden: | - goedemiddag - cu - tot ziens - tot ziens - intentie: ontkennen voorbeelden: | - nee - nooit - Ik denk het niet

verhalen.yml

Het bevat verschillende mogelijke voorbeeldinteracties tussen de gebruiker en de chatbot. Met dit voorbeeld krijgt de bot een idee van wat het mogelijke antwoord zou zijn op gebruikersinvoer.

versie: "2.0" verhalen: - verhaal: vrolijke stappen: - intentie: groet - actie: utter_greeting - intentie: mood_great - actie: utter_happy - verhaal: trieste padstappen: - intentie: groet - actie: utter_greeting - intentie: mood_unhappy - actie : utter_cheer_up - intentie: tot ziens - actie: utter_goodbye

domein.yml

Dit bestand bevat verschillende botreacties en vermeldt alle intenties en entiteiten die zijn gebruikt bij het maken van het nlu.yml-bestand.

versie: "2.0" bedoelingen: - groeten - tot ziens reacties: utter_greeting: - tekst: "Hii Hoe gaat het?" utter_goodbye: - tekst: "Dag"

acties.py

Dit is het Python-bestand om de aangepaste acties uit te voeren. Dit bestand kan worden gebruikt voor een API-oproep of databasequery's

door te typen import Any, Text, Dict, List from rasa_sdk import Action, Tracker from rasa_sdk.executor import CollectingDispatcher class ActionHelloWorld(Action): def name(self) -> Text: return "action_hello" def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domein: Dict[Text, Any]) -> Lijst[Dict[Text, Any]]: dispatcher.utter_message(text="Hallo") return []

Wanneer de actie action_hello is, wordt de bovenstaande code uitgevoerd en wordt de tekst "Hallo" als antwoord verzonden.

Trainingen

We kunnen ons model trainen op basis van de gegevens die we in de bovenstaande bestanden hebben verstrekt.

rasa trein

Wanneer we de bovenstaande code in de terminal uitvoeren, begint rasa zowel het nlu- als het kernmodel te trainen en slaat het getrainde model vervolgens op in de map models.

Laten we nu de werking van de bot controleren. We kunnen communiceren met de bot in een opdrachtshell

rasa schelp

Met dit commando laadt de rasa het getrainde model en kunnen we communiceren met de bot in de shell

rasa schelp

We kunnen deze rasa-shell stoppen door cntrl+c of door โ€œ/stopโ€ te typen.

RASA interactief

We kunnen onze rasa-bot in een interactieve modus instellen.

Rasa interactief

Bij het starten van de interactieve modus zal het eerst een model trainen, gevolgd door het openen van een interactieve sessie. Tijdens deze interactieve sessie kunt u met uw bot chatten en de voorspelling van de bot corrigeren. Na de interactieve sessie kunt u nog wat trainingsgegevens genereren en vervolgens een model trainen voor betere voorspellingen.

model voor betere voorspellingen

Conclusie

Dat ging allemaal over het creรซren van een eenvoudige basischatbot. Ik hoop dat je misschien een idee hebt gekregen van de werking van de RASA-chatbot. De ontwikkeling van een end-to-end chatbot kunnen we in het komende artikel bespreken.

Bedankt..!

De media die in dit artikel worden getoond, zijn geen eigendom van Analytics Vidhya en worden gebruikt naar goeddunken van de auteur

Bron: https://www.analyticsvidhya.com/blog/2021/11/an-introduction-to-chatbot-development-using-rasa/

Tijdstempel:

Meer van Analytics Vidhya