Sind Sie schon einmal in eine Situation geraten, in der Sie sich auf einer Webseite befinden, ohne eine benutzerfreundliche Oberfläche, dafür vollgestopft mit zu vielen Informationen? Sie aber suchen nach einem kleinen Stück Information, das irgendwo in der tiefsten Unterkategorie versteckt ist? Und müssen eine Menge irrelevanter Texte lesen, nur um die richtige Seite und den richtigen Abschnitt zu finden? Leider müssen manche Websites eine Unmenge an Informationen enthalten, aber die Art und Weise, wie Sie damit interagieren, kann vereinfacht werden.
Chatbots und Sprachassistenten spielen eine große Rolle bei der Vereinfachung der Kommunikation mit unseren Endgeräten. Es liegt in der menschlichen Natur, mit Hilfe der Stimme zu kommunizieren. Mit der Erweiterung der Künstlichen Intelligenz, insbesondere der Verarbeitung natürlicher Sprache, können Programmierer Chatbots erstellen, die die menschliche Sprache und den Kontext von Gesprächen verstehen können, um relevante Antworten zu geben. In diesem Artikel werde ich Ihnen zeigen, wie einfach es ist, einen NLP-basierten Chatbot zu trainieren und in Ihre Anwendung zu integrieren.
Es gibt viele Bereiche der Künstlichen Intelligenz, aber in diesem Artikel werden wir uns ausschließlich mit der Verarbeitung natürlicher Sprache beschäftigen, da sie für intelligente Chatbots entscheidend ist und die Kommunikation mit ihnen dramatisch verbessert.
Per Definition:
Natürliche Sprachverarbeitung ist die Fähigkeit eines Computers, die gleiche Sprache zu verarbeiten, gesprochen oder geschrieben, die Menschen im normalen Diskurs verwenden.
Ein Conversational User Interface (CUI) ist eine digitale Schnittstelle, bei der eine Konversation als Hauptwerkzeug für die Interaktion mit einem Benutzer eingesetzt wird. Die CUI ist insofern *sozialer und natürlicher*, als der Benutzer "meldet", "fragt", "zustimmt" oder "nicht zustimmt" statt "navigiert" oder "blättert".
Wozu benötigen wir also Natural Language Processing in Chatbots? Um es einfach auszudrücken: NLP macht die Kommunikation für den Benutzer einfacher und natürlicher, und deshalb zieht es mehr Menschen an und macht die Technologie für Unternehmen und für Benutzer im Allgemeinen nützlicher und attraktiver. Die Rolle, die NLP bei der Implementierung von Chatbots spielt, ist in der folgenden Abbildung dargestellt.
Der Grundtyp der Chatbots ist ein Menü-/Button-basierter Chatbot. Dieser Chatbot basiert auf Entscheidungsbaum-Hierarchien, die dem Benutzer in Form von Buttons dargestellt werden. Der Benutzer muss mehrere Auswahlen treffen, indem er die Buttons auswählt, die zur Antwort führen. Diese Art von Chatbot eignet sich gut für die Beantwortung häufig gestellter Fragen und ist am einfachsten zu implementieren. Wenn die Szenarien komplexer werden und mehr Variablen enthalten und es schwieriger ist, vorherzusagen, wie der Benutzer reagieren wird, versagen diese Chatbots in der Regel.
Eine weitere, fortgeschrittene Art von Chatbots sind auf Schlüsselworterkennung basierende Chatbots. Der Hauptunterschied besteht darin, dass sie erkennen können, was Benutzer eingeben, die Schlüsselwörter identifizieren und auf der Grundlage dieser Eingabe eine angemessene Antwort geben können.
Kontextbezogene Chatbots sind aktuell am weitesten fortgeschritten. Neben der Verarbeitung natürlicher Sprache nutzen sie auch einen anderen Zweig der Künstlichen Intelligenz, der als Maschinelles Lernen (ML) bekannt ist. ML hilft dabei, sich an Unterhaltungen mit bestimmten Benutzern zu erinnern und aus diesen Unterhaltungen zu lernen, Daten zu sammeln und so mit der Zeit eine Verbesserung herbeizuführen. Gerade diese Funktion verbessert die Kommunikation mit einem Chatbot dramatisch, da sie die Gesprächszeit verkürzt und die Interaktion erleichtert, sobald der Bot beginnt, die Bedürfnisse der Benutzer zu verstehen.
Es gibt einige Werkzeuge, die als Services geliefert werden und für die Arbeit mit Künstlicher Intelligenz einschließlich NLP zur Verfügung stehen. Die meisten von ihnen haben APIs für die Integration in Ihre Anwendung und eine Art Werkzeug, normalerweise eine Benutzeroberfläche, um die NLP-Instanz zu erstellen, zu trainieren und zu verwalten.
Die bekanntesten sind:
Alle diese Lösungen wären geeignet, aber in diesem Artikel möchte ich mich auf IBM Watson konzentrieren, weil es einen kostenlosen Lite-Plan, eine benutzerfreundliche Oberfläche und eine Menge SDKs beinhaltet. Mir erschien es auch einfacher und leichter, damit zu beginnen.
Nun wollen wir uns anschauen, wie wir den Assistenten trainieren und integrieren können. Werfen Sie zunächst einen Blick auf die High-Level-Architektur eines jeden Systems, das mit IBM Watson zusammenarbeitet.
Wie Sie sehen, können Sie Watson in einige beliebte Messaging-Plattformen bzw. jede andere Anwendung integrieren, da IBM SDKs für viele Programmiersprachen (einschließlich JavaScript) anbietet. Dann verbindet sich Ihr Client mit Watson Assistant, einem IBM Cloud-Service, der wiederum eine Verbindung zu anderen IBM Services herstellt, um eine Reihe von Tools für die Chatbot-Erstellung bereitzustellen. Als Entwickler sollten Sie sich nur darum kümmern, sich mit dem Watson Assistant und dessen Endpoints zu verbinden. Dieser Prozess wird in der nächsten Session beschrieben. Konzentrieren wir uns nun darauf, eine Chatbot-Instanz zu erstellen und diese zu trainieren.
Bevor wir beginnen, möchte ich Ihnen die Schlüsselkomponenten eines IBM NLP-Chatbots vorstellen: intents, entities und dialogs.
Die Namen sind mehr oder weniger selbsterklärend, aber um Klarheit zu schaffen, hier ein paar Beispiele für intents:
Sie sind derjenige, der die Absichten (Intents) definiert, also können Sie diese benennen, wie Sie möchten. Aber Sie müssen Watson Beispiele geben, damit er lernen kann, welche Fragen mit gegebenen Absichten verbunden werden sollten. Zum Beispiel kann der Chatbot lernen, dass die Frage "Kann ich ein Smartphone kaufen?" zu der Absicht "buy_a_smartphone" führt. Die Idee ist, dass Sie mehr als ein Beispiel geben können, und wenn Sie genügend Beispiele definieren, lernt der Chatbot andere Fragen, die diese Absicht meinen könnten, automatisch zu erkennen.
Die entities sind etwas einfacher. Die Beispiele für Entitäten sind: Laptop, Wetter, Monitor, Ikea.
Sie können dem Chatbot beibringen, Synonyme von Laptop als Laptop zu erkennen, oder wenn jemand ein bestimmtes Wort falsch tippt, sollte Watson es trotzdem verstehen und es der richtigen "Entität" zuordnen.
Die dritte Schlüsselkomponente ist ein dialog. Der Dialog ist die Definition der Art und Weise, wie sich der Chatbot verhalten soll. Die Art und Weise, wie er reagieren soll, wenn er eine bestimmte Absicht oder/und Entität erkennt, und die Aktionen, die er nach Benutzereingaben ausführen soll.
Folgende Schritte sollten sie durchführen, um eine Instanz des Watson-Assistenten zu erstellen:
Die Definition des Knotens sieht wie folgt aus: wenn der Assistent Ihre Bedingungen erkennt, antwortet der Assistent (eine Antwort) und dann sollte der Assistent entweder auf eine Antwort warten oder zu einem anderen angegebenen Knoten springen.
Lassen Sie uns nun einen "Try it"-Knopf benutzen und sehen, wie es funktioniert. Ich werde absichtlich versuchen, komplizierte Sätze zu verwenden, die ich nicht in Beispielen definiert habe.
Wie Sie sehen können, hat er alles richtig verstanden, auch wenn ich es kompliziert formuliert habe.
Ich werde Ihnen zeigen, wie man dies mit node.js durchführt, da es extrem einfach ist. Folgen Sie einfach diesen Schritten:
{% c-block language="js" %}
npm install body-parser ibm-watson --save-dev
{% c-block-end %}
{% c-block language="js" %}
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
{% c-block-end %}
{% c-block language="js" %}
const bodyParser = require('body-parser');
/* parser for post requests */
const AssistantV2 = require('ibm-watson/assistant/v2');
/* watson sdk */
const { IamAuthenticator } = require('ibm-watson/auth');
app.use(bodyParser.json());
{% c-block-end %}
{% c-block language="js" %}
const credentials = {
API_KEY: 'your_api_key',
URL: 'https://api.eu-gb.assistant.watson.cloud.ibm.com',
VERSION: '2019-02-28',
ASSISTANT_ID: 'your_assisntant_id'
}
{% c-block-end %}
{% c-block language="js" %}
const authenticator = new IamAuthenticator({
apikey: credentials.API_KEY
})
{% c-block-end %}
{% c-block language="js" %}
const authenticator = new IamAuthenticator({
apikey: credentials.API_KEY
})
{% c-block-end %}
{% c-block language="js" %}
app.get('/session_id', function (req, res) {
assistant.createSession(
{
assistantId: credentials.ASSISTANT_ID,
},
function(error, response) {
if (error) {
return res.send(error);
} else {
return res.send(response);
}
}
);
})
{% c-block-end %}
{% c-block language="js" %}
app.post('/message', function (req, res) {
if (!req.body.sessionId || !req.body.message) {
res.status(400).send("bad request")
}
var payload = {
assistantId: credentials.ASSISTANT_ID,
sessionId: req.body.sessionId,
input: {
message_type : 'text',
text : req.body.message
}
};
assistant.message(payload, function(err, data) {
if (err) {
return res.status(err.code || 500).json(err)
}
return res.json(data)
})
})
{% c-block-end %}
Und das war's! Jetzt sind Sie in der Lage, sich über Ihre Anwendung mit Ihrer Chatbot-Engine zu verbinden!
Zuerst müssen Sie eine Session-ID über den Endpoint /session_id erhalten, und dann diese session_id verwenden, wenn Sie eine Nachricht über den Endpoint /message senden!
Schauen wir uns an, wie es im Postman funktioniert. Ich sende eine POST-Anforderung an den Endpunkt /message mit 'sessionId' und 'message' im Hauptteil und die Antwort lautet:
In der Antwort erhalten Sie alle Informationen, die Sie benötigen. Sie erhalten die Intents und Entitäten, die Watson erkannt hat (mit einem Vertrauenswert), und Sie erhalten die Antwort, die in einem bestimmten Knoten definiert wurde. Jetzt können Sie als Entwickler mit diesen Informationen tun, was immer Sie wollen. Sie können den Benutzer umleiten, den Inhalt Ihrer Seite ändern oder einfach nur die Antwort anzeigen.
In diesem Beispiel würde ich auf die positive oder negative Antwort warten, dem Benutzer eine relevante Antwort geben und ihn auf den richtigen Abschnitt der Seite mit den allgemeinen Geschäftsbedingungen umleiten.
Die Beispiele, die ich hier gezeigt habe, sind recht primitiv, aber ihr Hauptzweck bestand darin zu zeigen, wie der intelligente Assistent funktioniert. Sobald Sie eine Menge verschiedener Intentionen, Entitäten und Dialogpfade erstellen, kann dieser Bot Ihnen als Ersatz für jede Art von Kundenbetreuung oder einfach nur als coole Funktion dienen. Und falls er die Antwort nicht weiß, kann er den Benutzer zu einem echten Menschen umleiten.
Ich hoffe, dass ich Ihnen zeigen konnte, wie einfach dies möglich ist und dass die Verwendung mehrerer Arten von Künstlicher Intelligenz in Ihrer Anwendung keine speziellen Kenntnisse erfordert.
Was denken Sie darüber? Hinterlassen Sie mir eine Nachricht über das Kontaktformular! 😃