Wie Methodius zu Anna wurde: die Erfahrung, Sprachnachrichten-Klassifikatoren zu entwickeln und zu starten. Teil 1

Ziel und Ziel


In einer Reihe von Artikeln betrachten wir die Klassifikatoren von Sprachanrufen, warum sie benötigt werden und wie sie schnell produktiv gemacht werden können. Ich erzĂ€hle Ihnen von AnsĂ€tzen, die die Zeit vom Festlegen einer Aufgabe bis zum Starten eines Modells und dem Erhalten eines GeschĂ€ftsergebnisses verkĂŒrzen.
FĂŒr diesen Artikel können Sie den Bericht unter dem Link sehen


Wie Methodius Anna wurde. Serie Nr. 1


Fangen wir an!


Mein Name ist Julia, ich bin Ingenieurin in der Abteilung fĂŒr maschinelles Lernen eines großen Anbieters. Pro Tag kommen rund 3.000 Anrufe von Kunden in unserem Callcenter an. Jeder Betreiber erhĂ€lt durchschnittlich 100 Anrufe pro Tag. Na und? Es scheint, dass dies 100 Anrufe akzeptiert. Es gibt jedoch viele Themen, bei denen das Unternehmen angerufen wird. Der Betreiber muss alle Produkte, Dienstleistungen und Prozesse des Unternehmens verstehen. Wenn wir die typischsten Kundenanfragen annehmen, können sie in 40 (!) Themen gruppiert werden, und es gibt immer noch atypische Anwendungen, die ebenfalls verarbeitet werden mĂŒssen.
Bild


Aufgrund der Themenvielfalt dauerte die Bedienerschulung drei Monate. Zuerst mĂŒssen Sie alle Anweisungen studieren und erst dann dĂŒrfen Anrufe entgegengenommen werden. Es wird eine enorme Menge an Ressourcen aufgewendet, um einen neuen kompetenten Betreiber zu schaffen. So entstand die Idee, den Bediener schrittweise in eine Linie zu bringen. Das heißt, er erhĂ€lt Anrufe nur zu den Themen, die er beherrscht, und verbessert im Laufe der Zeit seine FĂ€higkeiten, um andere Themen zu studieren.


Gute Idee, warum nicht ... eine einfache IVR machen? (Ein System von aufgezeichneten Sprachnachrichten, das Anrufe innerhalb des Callcenters mithilfe von Informationen weiterleitet, die der Client ĂŒber die Tonwahl ĂŒber die Tonwahl eingegeben hat. Wiki )


Bild


Aber nur wenige Menschen hören gerne lange Zeit eine aufgenommene Stimme, um zu warten, welche Zahl gedrĂŒckt werden muss, aber am Ende erhalten sie immer noch nicht die erforderlichen Informationen.


Wir wollten unsere Kunden nicht mit IVR quÀlen und haben uns die Aufgabe gestellt, die Anfrage des Abonnenten nach dem ersten Satz zu klassifizieren. Entsprechend der stimmhaften Anforderung erfolgt somit ein Routing zwischen Betreibern.


Daten


Die Betreiber des technischen Supports ĂŒber das Ergebnis jedes Anrufs legen das Thema des Anrufs seit etwa 10 Jahren offen. Wir haben die zahlreichsten 16 Gruppen identifiziert, und aus diesen Themen sind Markups hervorgegangen. Anschließend haben wir Aufzeichnungen von 120.000 Konversationen zu verschiedenen Themen hochgeladen, die Konversationsaufzeichnung des Kunden mit Yandex.SpeechKit erkannt und diese durch Schweigen in Phrasen unterteilt. Also haben wir Audio-StĂŒcke mit separaten Phrasen.


Ich möchte Sie daran erinnern, dass mein Ziel darin bestand, die ursprĂŒngliche Anfrage des Kunden zu klassifizieren, sodass bei jedem Anruf nur die erste Phrase ausgewĂ€hlt wurde. Insgesamt waren die Daten 120.000 Kundenphrasen im Textformat mit Markup von Betreibern. Standard-Textvorverarbeitung: Stoppwörter entfernen, Text normalisieren (Tricks: AnhĂ€ngen eines „Nicht“ -Partikels an das nĂ€chste Wort) und die Daten sind fertig. In einem anderen Artikel werde ich Ihnen mehr ĂŒber unsere Vorverarbeitungspipeline erzĂ€hlen.


Klassifizierung


Nachdem wir den verarbeiteten Text erhalten hatten, fĂŒhrten wir viele Experimente durch, sortiert nach verschiedenen Konfigurationen von Modellen und Einbettungen.


Tabelle mit Vergleich der experimentellen Ergebnisse
Naive BayesSVMLogistische RegressionZufÀlliger WaldLightgbmXGBoostNeuronales Netz
TF-IDF-Unigramm66.969.669.764.368.268.270.3
TF-IDF Bigram68.470.470,564.368.468.370,5
TF-IDF-Trigramm68.470.370,564.268.368.170,5
Word2vec67.969.369.668.770.269.370.7
Word2Vec + TF-IDF66.469,869.468.370.269.970.3
TF-IDF + Kontext70.671.772.467.371.370.371.2
Word2Vec + Kontext69.271.871.169.271.470.972.1
Word2Vec + TF-IDF + Kontext69.770.471,070.371.271.371.8

Das beste Ergebnis wurde mit dem Standardsatz von TF-IDF und logistischer Regression erzielt. Die Tabelle zeigt die f-Score-Metrik. In einigen Experimenten wurden zusĂ€tzlich zum Text zum Zeitpunkt des Anrufs weitere 11 Zeichen zum Client (Kontext) hinzugefĂŒgt. In der Hoffnung, dass dies irgendwie die QualitĂ€t erhöht. Kontext - Dies sind Boolesche Zeichen, ob der Client jetzt einen negativen Saldo hat, ob die Reparatur der Adresse zugewiesen ist und andere, die den Client im Moment charakterisieren. Aber selbst im Kontext ist die QualitĂ€t schlecht, nur 72% wurden erreicht.


Fehleranalyse


Ohne Fehleranalyse könnte die QualitÀt der Klassifizierung nicht verbessert werden. Nachdem wir die FÀlle untersucht haben, in denen die Modelle falsch sind, haben wir die folgenden typischen Probleme identifiziert:


  • schlechtes Markup
  • Klassenungleichgewicht
  • Es fĂ€llt den Menschen schwer, einen Gedanken zu formulieren
  • Spracherkennung

Markup


Das Markup war oft falsch, da das GesprÀch mit einem Thema beginnen und mit einem anderen enden konnte und der Bediener das Thema des Anrufs festlegte, das ganz am Ende des Dialogs gesagt wurde. Manuelle Verteilung solcher FÀlle und das Problem verschwand.


Klassenbilanz


Es gibt verschiedene AnsÀtze, um Klassen auszugleichen.


Weitere Details
  1. Unterabtastung. ZufĂ€lliges Entfernen von Beispielen aus großen Klassen.
  2. Überabtastung. ZufĂ€llige HinzufĂŒgung von Beispielen aus Nebenklassen.
  3. Überabtastung synthetischer Minderheiten. ZufĂ€llige HinzufĂŒgung von Beispielen aus den kleinsten Klassen, aber geringfĂŒgige Änderung.

Welcher Ansatz gewÀhlt werden soll, hÀngt von der Aufgabe und der Datenmenge ab. Im Rahmen dieser Aufgabe war es möglich, den Datensatz auszugleichen, indem Beispiele aus den meisten Frequenzklassen auf den Medianwert der Anzahl der Beispiele entfernt wurden. Die Nebenklassen blieben jedoch unverÀndert.


Es fÀllt den Menschen schwer, Gedanken zu formulieren


Nachdem wir die ersten paar SĂ€tze gelesen hatten, stellten wir fest, dass 36% der Anfragen nicht informativen Text enthielten, zum Beispiel: "Hallo, hallo" oder "Hallo, ich habe eine Frage". Erst nachdem der Bediener gefragt hatte: „Was ist Ihre Frage?“, Formulierte der Kunde das Problem.


Daher war es falsch, nur den ersten Satz des Kunden aus dem GesprĂ€ch zu nehmen, da jemand einfach nicht in der Lage war, eine Anfrage sofort zu formulieren. Daher wurde fĂŒr jeden ersten Satz die „InformativitĂ€t“ berechnet. Wenn das Modell die Anforderung keiner der Klassen mit hoher Sicherheit zugeordnet hat, dh alle Klassen einen gleichen Wahrscheinlichkeitswert erhalten haben, ist die Nachricht nicht informativ und Sie mĂŒssen die zweite Phrase verwenden. Und wenn die Klasse bereits mit hoher Wahrscheinlichkeit bestimmt ist, reicht der erste Satz aus.


Hier mag die richtige Frage auftauchen, aber was ist mit dem Produkt zu tun, da es die gleichen nicht informativen Abfragen geben wird. Ich werde spĂ€ter im nĂ€chsten Artikel darĂŒber sprechen.


Spracherkennung


Bei der Analyse von Fehlern haben wir Ungenauigkeiten bei der Texterkennung festgestellt, aufgrund derer die Klasse falsch definiert wurde. Zum Beispiel wurde das Wort "Gleichgewicht" manchmal durch "Banane" ersetzt. Wir haben uns entschlossen, die Anerkennung von Yandex und Google zu vergleichen. Google hat sich bei unseren Daten besser gezeigt, aber nicht zu viel, um dafĂŒr zu viel zu bezahlen. Der Preis ist fast doppelt so hoch.


Vergleich der Spracherkennung zwischen zwei Systemen.

Bild


Zusammenfassung der Fehleranalyse


Nach der Analyse und Korrektur von Fehlern konnten wir die QualitÀt auf einen durchschnittlichen f-Score von 84% verbessern. Die beste QualitÀt war immer noch das Ergebnis einer logistischen Regression.


QualitĂ€tsgewinn fĂŒr jede Klasse
KlasseWarIst geworden
Probleme mit dem Internet59,9786,5
Probleme mit KTV86,7189.02
Gegensprechanlagen51.585,74
Vertrag57,8169,13
Zahlung46,8174,26
.........
Durchschn72,4484,39

Schlussfolgerungen


Zusammenfassend können wir die folgende Entwicklungsstufe zusammenfassen.


ZunĂ€chst mĂŒssen Sie sich mit Daten und Markups befassen. Sie sollten neuronale Netze nicht sofort trainieren, da bei falschen Daten nicht viel davon profitiert. Um Zeit- und Energieverschwendung zu vermeiden, reicht es aus, Fehler an „einfachen“ Modellen zu analysieren.


Wir sehen uns in der zweiten Serie , in der wir darĂŒber sprechen, wie ein trainiertes Modell in einem produktiven Modell ausgefĂŒhrt wird. Wir werden uns Beispiele anhören, wie Methodius, der Roboter, Anrufe erhĂ€lt, und wir werden verstehen, warum er Anna wurde.

Source: https://habr.com/ru/post/de472350/


All Articles