Auf dem Höhepunkt der Beliebtheit von Chatbots stellte unser Team 2016 Button-Assistenten für Unternehmen her. Bis ein interessanter Gedanke auftauchte: "Was ist, wenn wir die Client-Unterstützung mit neuronalen Netzen automatisieren?" Wir wollten, dass die Chat-Roboter endlich lernen, die natürliche Sprache zu verstehen und sich wohl zu fühlen.
Es dauerte vier Mathematiker, sechs Monate harte Arbeit, eine neue Programmiersprache und viele Fehler - und wir haben einen Konstruktor erstellt, in dem jeder einen virtuellen Assistenten mit AI zusammenstellen kann.
Im Material werden wir erzählen
- Wie unterscheidet sich ein virtueller Assistent von einem normalen Chat-Bot?
- Stimmt es, dass virtuelle Assistenten die Sprache verstehen?
- Wie wir dem Roboter beigebracht haben, den Kontext zu verstehen und die Sprache Lialang geschrieben haben
- Fallbeispiel: Wie wir den Support in drei Banken automatisiert haben
- Erstellung von Lia Platform und Engine für Interfaces
- Drei Schritte: Wie funktioniert die Plattform zum Zusammenstellen virtueller Assistenten (wo jeder, auch ein Nicht-Programmierer, einen Roboter zusammenbauen kann)
Chat bot vs virtueller Assistent
Fortgeschrittene Chatbots konnten bereits in den 60er Jahren Stichwörter hervorheben und den menschlichen Dialog imitieren. Hippies warfen sich auf LSD, die Beatles sammelten Stadien und Joseph Weizenbaum gründete Eliza, eine Gesprächspartner-Psychotherapeutin, die vielen modernen Bots und sogar Psychologen Chancen einräumt.
Zum Beispiel antwortete Eliza im Satz „Mein Vater hasst mich“ auf das Schlüsselwort „Vater“ und fragte: „Wer in der Familie hasst dich noch?“ Aber der Robo-Psychotherapeut verstand die Essenz der Probleme nicht. Moderne Chatbots funktionieren auch: Schlüsselwörter, lineare Skripte und eine Parodie des Live-Dialogs.
Seit den 60er Jahren hat sich jedoch etwas geändert: Dank maschinellem Lernen und NLP-Technologien können wir Chat-Bots nun das Verstehen der natürlichen Sprache und des Kontexts beibringen. Dies ist immer noch eine Nachahmung, aber sinnvoller.
Um den Unterschied zu erkennen, vergleichen wir den Chatbot und den Assistenten. Stellen Sie sich vor, wir müssen einen
virtuellen Sommelier erstellen , der den Kunden bei der Auswahl des Weins hilft.
Stufe 1
Die erste Stufe des Chatbots und des virtuellen Assistenten ist eine: Wir finden Benutzeranforderungen heraus und entwickeln Sätze, die sie schreiben können. Und dann schreiben wir vor, wie der Roboter darauf reagieren soll.
Die Grundanforderung ist klar - holen Sie den Wein ab. Aber diese Anfrage kann viele Parameter haben: Grund, Preis, Land, Farbe, Rebsorte. Vielleicht schreibt der Benutzer sofort den Namen des zu findenden Weins. Oder er klärt die Details: "Wo wird es gemacht?" Oder vielleicht aus Neugier wirft er dem Bot Fragen zu: „Welche Flasche ist die teuerste der Welt?“ Und so weiter. Außerdem gibt es neben den Anfragen im Fall „Hallo“, „Tschüss“, „Wie geht es dir“ und andere Smalltalk-Sätze, die gefragt werden müssen.
Sie können endlos fantasieren, aber wir können nicht alle Fragen der Benutzer vorhersagen. Wenn es uns so vorkommt, als würden die beschriebenen Situationen ausreichen, um 98% der Anfragen abzudecken, hören wir auf (obwohl dann die harte Realität abbricht und wir herausfinden, dass bestenfalls 80% abgedeckt werden).
Dann streuen wir unsere Annahmen über die Bedürfnisse der Benutzer nach bestimmten Anforderungen - Absichten. Absichten geben an, was der Benutzer möchte, verwerfen jedoch Informationen darüber, wie er darüber geschrieben hat. Diese Phase gilt auch für Chatbots und Assistenten.
Liste der Absichten
Absicht 1 - Ich möchte WeinSätze:
- Hilf mir, einen Wein auszuwählen
- Welchen Wein würdest du empfehlen?
- Ich will den besten Wein
- ...
Was ist damit zu tun? Wählen Sie nach dem Zufallsprinzip einen der beliebtesten Weine aus und informieren Sie den Benutzer.
Absicht 2 - billigerer WeinSätze:
- Gibt es gute Weine bis 1000 Rubel?
- Aber es gibt nichts billigeres?
- zu teuer für mich
- ...
Was ist zu tun? Fügen Sie der Anfrage einen Preisfilter hinzu und wählen Sie einen der beliebtesten Weine aus.
Absicht 3 - Ich möchte Wein zum FleischSätze:
- Raten Sie den Wein zum Steak
"Ich werde Gulasch zum Abendessen haben." Was zu trinken
- ...
Was zu tun ist: Eine Anfrage an die Datenbank nach dem Kriterium "Fleisch", einen der beliebtesten Weine auswählen und den Benutzer informieren.
... (und so weiter Hunderte von verschiedenen Absichten)
Absicht 290 - wir haben den Benutzer nicht verstandenSätze: jede andere
Was zu tun ist: Geben Sie einen kurzen Satz ein: "Ich weiß nicht, was Sie meinen, aber der Pinista ist zu jeder Jahreszeit ein Genuss."
Stufe 2
In dieser Phase beginnen wir mit der Erstellung eines Algorithmus, mit dem der Roboter arbeitet. Hier endet die Ähnlichkeit von Chatbot und virtuellem Assistenten.
Beim Codieren eines Chatbots bestimmt der Programmierer die Schlüsselwörter für jede Absicht manuell, und wenn der Benutzer schreibt, sucht der Bot nach diesen Schlüsselwörtern in der Phrase.
Bei der Entwicklung eines Assistenten lehrt ein Programmierer einen Algorithmus zum Vergleichen von Benutzerreplikaten gemäß der lexikalischen Bedeutung. Auf diese Weise können Sie die nächstgelegene Absicht finden.
Wie es funktioniert: Eine Tabelle, die Chatbots und virtuelle Assistenten vergleicht Stimmt es, dass virtuelle Assistenten die Sprache verstehen?
Algorithmen können einige Ausdrücke von anderen unterscheiden - aber können wir sagen, dass Roboter die Sprache wirklich verstehen?
Um diese Frage zu beantworten, kehren wir zu einem Vergleich der lexikalischen Bedeutung von Phrasen zurück. Die Bedeutung für einen Computer sind verständliche Datentypen: Zeichenfolgen, Zahlen und Kombinationen davon. Daher steht der Programmierer vor der Aufgabe, den Ausgangstext in eine für mathematische Vergleichsoperationen geeignete Form umzuwandeln - einen Vektor.
vectorize(" ") = (0.004, 17.43, -0.021, ..., 18.68) vectorize(" ") = (0.004, 19.73, -0.001, ..., 25.28) vectorize(" ") = (-8.203, 15.22, -9.253, ..., 10.11) vectorize(" ") = (89.23, -68.99, -10.62, ..., -0.982)
Für unsere Aufgaben sollten die Vektoren von lexikalisch nahen Phrasen mathematisch nah beieinander liegen, die lexikalisch entfernten sollten weit entfernt sein, der Vektor von Phrasen aus einer anderen Oper sollte sehr weit entfernt sein. Zum Beispiel steht "Ich möchte Wein" näher bei "Ich möchte Weißwein" als bei "Ich möchte keinen Wein". Und weit weg von "Marsangriffen".Ein richtig trainiertes neuronales Netzwerk wird in der Lage sein, auf die lexikalische Bedeutung dieser Vektoren zu schließen. Es stellt sich heraus, dass Sie zum Vergleichen der Bedeutung von zwei Phrasen deren Vektoren vergleichen müssen.
Daher lautet die Antwort auf die Frage „Verstehen Roboter die Sprache?“ Wie folgt: Sie verstehen nicht, wie eine Person ist, sie können einfach lexikalische Bedeutungen vergleichen und das Warme nicht mit dem Weichen verwechseln. Aber wenn die Algorithmen suggestive Verfeinerungen bieten und Schlussfolgerungen ziehen können, sagen wir ehrlich: Ja, das Verständnis ist da. In der Zwischenzeit ist "die Sprache verstehen" nur eine schöne Marketingphrase.
Tatsächlich arbeitet der Roboter nur mit Analogien, wie ein dreijähriges Kind. Wenn Sie dem Kind jedoch eine ausreichende Anzahl von Beispielen geben, kann es vortäuschen, ein Intellektueller zu sein und eine Diskussion zu führen. Der "Live" -Operator der ersten Supportlinie arbeitet auf die gleiche Weise - er skizziert eine Reihe von Situationen und teilt ihnen mit, wie sie sich in ihnen verhalten sollen. Daher eignen sich virtuelle Assistenten gut für die Support-Automatisierung.
Wie wir dem Roboter beigebracht haben, den Kontext zu verstehen: Lialang
Für die normale Unterstützung benötigen Roboter nur ein geringes „Verständnis“ der natürlichen Sprache - es ist wichtig, dass sie Fragen beantworten und im Kontext bleiben können. Zu diesem Zweck haben wir Lialang geschrieben, eine Dialog-Markup-Sprache, in der Skripte beschrieben und an den Roboter übergeben werden können.
Die Hauptaufgabe eines Lialang-Programmierers besteht darin, alle Situationen zu beschreiben, die im Dialog zwischen einer Person und einer Maschine auftreten können. Zu diesem Zweck können Sie in unserer Sprache die Namen von Absichten und Aktionen zuordnen.
Betrachten Sie ein einfaches Beispiel - eine Begrüßung:
if intent() { reaction(_) }
Es sieht aus wie normaler Code, aber ein neuronales Gitter funktioniert hinter dem Intent-Konstrukt (...) - Lialang beschreibt den Dialog in allgemeinen Mustern („wenn Sie nach etwas gefragt wurden“) unter Verwendung der üblichen Programmierkonstrukte. Damit dies funktioniert, müssen Sie natürlich maschinelles Lernen und NLU-Technologien anwenden, da der Benutzer seine Anfrage nach Belieben schreiben kann.
Und hier erfahren Sie, wie Sie kontextbezogene Situationen beschreiben.Wir haben das Konstrukt "was" eingeführt, um an einer beliebigen Stelle im Dialog unangemessene Grüße zu erhalten:
if intent() { if was_reaction(_) { reaction(___) } else { reaction(_) } }
Es heißt: Lia, wenn sie dich begrüßt haben, sag hallo als Antwort. Und wenn sie danach wieder „Hallo“ sagten - sagen Sie, dass Sie bereits Hallo gesagt haben.
Eine Reaktion ist eine Handlung, die Lia als Reaktion auf eine Absicht ausführen muss. In 95% der Fälle handelt es sich nur um Text. Aber auch der Roboter kann eine Funktion im Code aufrufen, die Kommunikation zum Bediener umschalten oder andere komplexe Aktionen ausführen.
Der Code zum Versenden von Text und Funktionen existiert unabhängig von der Sprache - die Sprache beschreibt Situationen so einfach wie möglich.
Versuchen wir nun, etwas Komplizierteres zu schreiben - in einem Chat mit der Bank fragen Kunden häufig nach ihren Details. Lassen Sie uns lernen, wie man sie mit Lialang zum Chatten und Mailen sendet.
if intent(_) or intent(___) { reaction(___) { if intent(__) { reaction(___) } } } if intent(___) { reaction(___) }
Hier werden zwei Situationen beschrieben:
- Lia, wenn du gebeten wurdest, die Details zu senden - schicke sie an den Chat. Wenn sie gefragt haben, "es ist notwendig, die Post", dann senden Sie sie an die Post.
- Lia, wenn Sie sofort gebeten wurden, die Details an die Mail zu senden - senden Sie die Details an die Mail.
Also macht Lialang seine Arbeit - arbeitet im Kontext. Selbst wenn eine Person "per Post" schreibt, wird der Roboter verstehen, dass es sich um Details handelt.
Lia hat gelernt, komplexe Szenarien zu unterstützen - zu der Zeit, die der Benutzer benötigt, wird sie Daten von / zu CRM abrufen / ablegen, SMS senden, beim Bezahlen helfen oder über das Leben sprechen.
Allmählich verbesserten wir die Sprache: Wir fügten Variablen, Funktionen, Entitäten (Daten, Adressen, Telefonnummern, Namen usw.), Zustände und andere nützliche Konstrukte hinzu. So wurde es noch bequemer, darauf zu schreiben.
Fallbeispiel: Wie wir den Support in drei Banken automatisiert haben
Sobald wir die Technologie hergestellt hatten, musste sie dringend fertiggestellt werden - wir hatten unseren ersten Kunden. VTB musste den Support in einer neuen Internetbank für Unternehmer automatisieren.
Wir sind sehr erfolgreich gestartet - vor allem für ein Produkt, das in vier Monaten entwickelt wurde. Unser Hybridroboter für VTB basierte auf neuronalen Netzen und war sofort wirksam: Er beantwortete mehr als 800 Fragen, unterstützte mehrere komplexe Szenarien (Aussagen, Tarifänderungen, Benutzereinstellungen) und sprach wie eine Person. Infolgedessen reduzierte unser Lia in zwei Monaten die Stützlast um 74%. Es wurde klar: Die Idee mit Support-Automatisierung funktioniert.

Auf Basis von Lia haben wir die FAQ bei Rocketbank und DeloBank automatisiert - und in zwei Wochen haben sie 32% der Anträge ohne Bediener geschlossen.
Es scheint, dass die Jungs zum Erfolg kamen. Nach den ersten Kunden wurde jedoch klar, dass das Konzept geändert werden musste. Es war die Hölle - wir mussten die Skripte manuell modifizieren, Änderungen vornehmen, die Zweige entwickeln. Dasselbe gilt für einfache Bots, die nur härter sind und mehr Kraft erfordern. In dieser Situation war es schwierig zu skalieren.
Dann haben wir beschlossen, ein Werkzeug zu entwickeln, mit dem der Kunde selbst einen komplexen Assistenten zusammenstellen kann. Und wir werden nur mit Tutorials helfen und Benutzer erziehen.
Lia Platform und Engine für Interfaces
Deshalb haben wir beschlossen, eine
Plattform für diejenigen zu schaffen, die die Entwicklung nicht verstehen. Obwohl Lialang weniger als zehn verschiedene Designs enthält, wird nicht jeder Manager lernen, einen eigenen Bot zu erstellen. Manager lieben die Maus.
Deshalb haben wir begonnen, über eine solche Schnittstelle nachzudenken, die alles kann, was Lialang kann. Er wird keine Probleme mit verschachtelten Verzweigungen, Übergängen von einem Skript zu einem anderen haben und vor allem - nicht nur unsere Programmierer, sondern alle, die Skripte erstellen möchten.
Sehen Sie, wie es aussieht:
Dialoge sind eine nichtlineare Sache und das Schreiben einer universellen Engine für alle Arten von Konversationsschemata ist sehr schwierig. Aber bevor wir über die Pläne nachdachten, hatten wir bereits Lialang - es wurde zum Motor.Was auch immer sich Interface-Designer ausgedacht haben mögen, wir programmieren keine Köpfe dafür, sondern schreiben nur einen kleinen Übersetzer für Markups vom Interface zum Lialang-Code. Wenn die Schnittstelle erneuert wird, müssen wir nur den Übersetzer ändern - dank dessen können der Schnittstellenbefehl und der Kernbefehl getrennt existieren.
Wie funktioniert die Plattform zur Erstellung virtueller Assistenten?
Um Ihren eigenen virtuellen Assistenten in Lia zusammenzustellen, muss der Benutzer drei Phasen durchlaufen.
Schritt 1. Laden Sie den Chatverlauf mit den Benutzern herunter, damit der Roboter die Hauptszenarien versteht und hervorhebt
Wenn der Client bereits Gespräche mit Benutzern geführt hat, kann er diese auf das System hochladen und Cluster aus den beliebtesten Abfragen abrufen. Es wird sehr praktisch sein, aus ihnen Absichten zu machen.

Mit der Zeit wird die Wirksamkeit von Lia zunehmen. Nachrichten, die der Roboter nicht beantworten konnte, werden erneut in Gruppen aufgeteilt: "Wer bist du?", "Wer bist du?", "Wie heißt du?" Und "Bist du ein Roboter?" Die Plattform lernt also halbautomatisch selbst: Der Benutzer erkennt, wo die Lücke ist, schließt sie und fügt neue Szenarien hinzu. Infolgedessen steigt der Prozentsatz der gedeckten Anfragen in sechs Monaten von 30% auf 70%.
Wenn kein Korrespondenzverlauf vorhanden ist, überspringen wir diesen Schritt und beginnen sofort mit dem zweiten Schritt: Wir sagen voraus, welche Anforderungen Benutzer an den Assistenten senden.
Schritt 2. Wir notieren die Absicht: 10-20 Optionen für die häufigsten Benutzeranforderungen
In der zweiten Phase schreiben wir Absichten basierend auf den 10-20 beliebtesten Abfragen vor: Diese Anzahl von Optionen ist dank neuronaler Netze ausreichend. Ein Ausdruck wie "Ich möchte Wein bestellen" lehrt den Bot, ähnliche Benutzeranforderungen zu erkennen: zum Beispiel "Wein holen" oder "Wein bestellen".

Ein anderer Assistent versteht und extrahiert das Wesentliche: Städtenamen, Telefonnummern, Adressen, Zeitstempel, Zeiträume, Daten und Flüche - auch wenn Sie sagen: „Müde, bringen Sie morgen eine Schachtel Wein mit“.
Darüber hinaus können Benutzer eigene Objekte hinzufügen und Trainingssätze manuell markieren, damit der Assistent schneller lernt. Dies ist eine der leistungsstärksten Funktionen der Plattform, dank derer Roboter geschaffen werden können, die nicht schlechter funktionieren als ein menschlicher Bediener.
Schritt 3. Erstellen Sie ein Szenario: Geben Sie mehrere Antworten oder Aktionen vor
Hier muss der Benutzer Antworten auf Benutzeranfragen finden. 95% des durchschnittlichen Projekts verwenden normalerweise ein einfaches Frage-Antwort-Szenario - Antworten auf häufig gestellte Fragen.

Übrigens kann der Assistent mit Bildern, Videos und Audiodateien antworten und bei Bedarf eine Geolocation senden.
Der Konstruktionssprung ist besonders nützlich - dank ihm kann Lia von einem Szenario zu einem anderen wechseln und dann zurückkehren, um mehrere Probleme zu lösen. Dies ist nützlich, wenn Sie im Dialogfeld einen Schritt zurücktreten und dann zum richtigen Titel zurückkehren müssen: Stellen Sie beispielsweise eine klärende Frage.
Beispieldialog springen zu:Assistent: Wir müssen die Lieferadresse klären, da der Empfänger nicht antwortet.
Kunde: Und worüber? Welche Bestellung? (JumpTo zur Auftragsklärung)
Assistent: Order 21. August, Antigal, "Uno" Malbec.
Assistent: Können wir also die aktuelle Lieferadresse klären? (Zurück zum Hauptskript)
Wenn der Ersteller möchte, dass sein Assistent nicht nur mit Text antwortet, sondern Aktionen ausführt, kann er einen Programmierer anrufen, um JS-Ausschnitte für den Spezialisten zu schreiben. Sie können JavaScript direkt während des Skripts ausführen: Greifen Sie auf die externe API zu, senden Sie eine E-Mail oder führen Sie andere komplexe Aktionen aus.
4. Zusammenfassung
Ein Assistent kann sich in alles integrieren: mit einer Person am Telefon, in Instant Messenger oder einem Widget, das der Kunde auf der Website veröffentlicht, sprechen.
Das Zusammenbauen eines intelligenten Assistenten in der Plattform dauert ein paar Stunden bis zu einem Monat. Dann lernt der Roboter, Anforderungen realistisch zu verstehen und Muster zu erkennen - es dauert ungefähr sechs Monate (die ganze Zeit über wacht eine lebende Person darüber). Unternehmen können die meisten Routineaufgaben für das Lia-Robotermädchen erledigen: von der Koordination der Zustellung und der Bestellung eines Taxis bis hin zur Beratung der Kunden.

Übrigens haben wir bereits Projekte mit Banken auf die Plattform übertragen. Sie funktionieren genauso gut, werden aber viel komfortabler moderiert.
In naher Zukunft planen wir, Extraktoren hinzuzufügen, mit denen unsere Benutzer komplexere Daten extrahieren können (der Roboter wird beispielsweise den Ausdruck "übermorgen nach dem Mittagessen" verstehen). Wir werden auch die Versionskontrolle abschließen, damit Kunden Versionen von Projekten schnell rollen und zurücksetzen können. Außerdem werden wir das Rollensystem der Organisation freisetzen.
Wir gehen davon aus, dass die
Prognosen von Gartner korrekt sind - und im Jahr 2022 werden bis zu 70% aller Kundeninteraktionen eine Art KI durchlaufen. Nach unserer Vorstellung werden Designer wie Lia dabei helfen, den Kundenservice noch schneller auf Roboter zu übertragen.