CM/Machine Learning
Einführung in Machine Learning mit ConSol CM
CM/Machine Learning ist ein ConSol CM-Add-on, mit dem Sie Ihre vorhandenen Daten zur Prozessautomatisierung nutzen können. Mit Machine Learning können Sie die Produktivität erhöhen, indem Sie Routineanfragen erkennen und automatisieren. Manuelle Schritte können übersprungen werden und Sie können neue Erkenntnisse über Ihre vorhandenen Daten gewinnen.
Die folgende Abbildung zeigt die Textklassifizierung mit Machine Learning:
Abbildung 58: Prinzip der Textklassifizierung mit Machine Learning
Die Verwendung von Machine Learning zur Textklassifizierung umfasst folgende Schritte:
- Legen Sie fest, welches Feld als Kategorie verwendet wird. Dies ist ein Datenfeld des Typs enum.
- Exportieren Sie die vorhandenen Vorgänge. Dabei wird eine Datendatei erzeugt, die für jeden Vorgang einen Eintrag enthält. Die einzelnen Einträge setzen sich aus dem Vorgangstext, d. h. den Kommentaren und E-Mails, und dem Wert des Kategoriefeldes zusammen.
- CM/Machine Learning wandelt die Datendatei in ein Modell um, das später abgefragt werden kann.
- Neue Vorgänge, die klassifiziert werden sollen, haben schon Text, z. B. den initialen Kommentar oder die E-Mail, aber ihre Kategorie ist noch nicht bekannt. Zur Bestimmung der Kategorie wird das Machine-Learning-Modell abgefragt, um anhand des verfügbaren Vorgangstextes eine Vorhersage der Kategorie zu treffen.
Konzepte, Begriffe und Definitionen
|
Konzept |
Andere Begriffe |
Definition |
|---|---|---|
|
CM/Machine Learning |
|
Name des ConSol CM-Add-ons, das Machine-Learning-Funktionen bietet |
|
Machine Learning |
ML |
Verfahren, mit dem Informationen aus vorhandenen Daten gewonnen und auf neue Daten angewendet werden, um Prozesse zu automatisieren
|
|
Training |
|
Prozess, mit dem Informationen aus vorhandenen Daten gewonnen und in einem Modell, das später abgefragt werden kann, gespeichert werden |
|
Modell |
|
Binärdatei, die die Trainingsergebnisse enthält und abgefragt werden kann |
|
Konfidenz |
|
Wert zwischen 0 und 1, der angibt, wie sicher sich der Algorithmus ist, dass seine Vorhersage wahr ist. Dieser Wert hängt von der Anzahl der Kategorien, der Qualität der Trainingsdaten und dem verwendeten Algorithmus ab. Die Konfidenz wird normalerweise verwendet, um Schwellenwerte für auf Vorhersagen basierende automatische Aktionen zu definieren. |
Zweck und Verwendung
CM/Machine Learning ermöglicht die automatische Klassifizierung von Vorgängen anhand vorhandener Daten. Die Klassifizierung kann die Sprache, Stimmung oder die Kategorie der Vorgänge beinhalten. Als Kategorie kann ein beliebiges Datenfeld aus dem definierten Datenmodell dienen, z. B. die Kategorie, Priorität oder das Produkt eines Vorgangs.
CM/Machine Learning läuft lokal innerhalb Ihres ConSol CM-Systems. Es werden keine Daten an externe Anbieter übertragen.
CM/Machine Learning muss separat lizenziert werden.
Verfügbare Machine-Learning-Funktionen
CM/Machine Learning umfasst drei Funktionen:
-
Spracherkennung:
Bestimmen Sie die Sprache, in der die Texte geschrieben sind.
Beispiel: Wenn Sie eine E-Mail erhalten, können Sie die Sprache erkennen und einen Vorgang in der Queue des Teams erstellen, das mit dieser Sprache arbeitet.
-
Stimmungserkennung:
Bestimmen Sie die Stimmung (positiv, neutral oder negativ) von Texten. Nur für Deutsch verfügbar.
Beispiel: Wenn Sie von einem wichtigen Kunden eine E-Mail mit einer negativen Stimmung erhalten, können Sie dem Vorgang eine höhere Priorität geben.
-
Vorgangsklassifizierung:
Trainieren Sie die Machine-Learning-Engine mit Ihren vorhandenen Vorgängen und klassifizieren Sie neue Vorgänge automatisch.
Beispiel: Setzen Sie ein Vorgangsfeld mit einer Kategorie anhand des initialen Kommentars. Bestimmen Sie die Queue, in der der Vorgang erstellt werden soll. Erkennen Sie Routineanfragen und verarbeiten Sie diese automatisch.
Prozess zur Einführung von Machine-Learning
Der Prozess zur Verwendung von Machine Learning besteht aus zwei Phasen:
- Evaluierung:
Zuerst wird das bestehende ConSol CM-System analysiert, um sein Potential für Machine Learning zu bestimmen. Wenn einige mögliche Anwendungsfälle gefunden wurden, wird eine Evaluierung von Kosten und Nutzen durchgeführt und ein ungefährer ROI geschätzt. - Implementierung:
Die Implementierung hängt von den genutzten Funktionen ab. Die Algorithmen zur Sprach- und Stimmungserkennung können direkt genutzt werden, d. h. sie müssen nicht für Ihr ConSol CM-System trainiert werden. Wenn Sie die Textklassifizierung, die mächtigste Machine-Learning-Funktion, nutzen, müssen Sie ein Training durchführen und ein Modell erstellen:- Trainingsdaten vorbereiten: Legen Sie fest, welche Datenfelder und Texte für das Training verwendet werden sollen und exportieren Sie die Daten.
- Modell trainieren: Teilen Sie die Trainingsdaten auf, sodass ein Teil der Trainingsdaten nicht für das Training genutzt wird, sondern für den Test des erstellten Modells reserviert ist. Dann erstellen Sie ein Task-Skript, um das Modell mit den Trainingsdaten zu trainieren. Normalerweise werden mehrere Iterationen durchgeführt, d. h. nach dem Trainieren des Modells werden die Trainingsdaten anhand der Testergebnisse angepasst.
- Machine Learning integrieren: Wenn Sie ein zufriedenstellendes Modell haben, können Sie Machine Learning in die Workflows integrieren. Im ersten Schritt werden normalerweise Daten vorbelegt, die von den Benutzern geprüft werden müssen, bevor Aktionen ausgeführt werden. Wenn die Genauigkeit der Vorhersagen ausreicht, kann der Prüfschritt weggelassen werden, um die entsprechenden Prozesse zu automatisieren.
Erweiterte Aufgaben
Verwenden der Spracherkennung
Die wichtigste Methode für die Arbeit mit Spracherkennung ist createLanguageDetector() in der Klasse nlpService. Mit ihr können Sie die Sprache eines Textes (Strings) bestimmen. Die Sprache wird als ISO 639-3-Code zurückgegeben.
Das folgende Beispiel zeigt ein Skript, das Spracherkennung nutzt:
LanguageDetector languageDetector = nlpService.createLanguageDetector();
DetectedLanguage detectedLanguage = languageDetector.detectLanguage("hello world");
String language = detectedLanguage.getLanguage();
switch (language) {
case "eng":
// do something
break;
case "deu":
// do something
break;
}
double confidence = detectedLanguage.getConfidence();
Verwenden von Stimmungserkennung
Die wichtigste Methode für die Arbeit mit Stimmungserkennung ist createSentimentDetector() der Klasse nlpService. Mit ihr können Sie die Stimmung eines Textes (Strings) bestimmen. Die zurückgegebene Stimmung ist NEGATIVE, NEUTRAL oder POSITIVE. Die Stimmungserkennung wird nur für Deutsch unterstützt.
Das folgende Beispiel zeigt ein Skript, in dem Stimmungserkennung verwendet wird:
boolean html = true;
NormalizeLanguage normalizeLanguage = NormalizeLanguage.GERMAN; // only GERMAN language is supported
SentimentDetector sentimentDetector = nlpService.createSentimentDetector(normalizeLanguage, html);
DetectedSentiment detectedSentiment = sentimentDetector.detectSentiment("<p>text</p>");
Sentiment sentiment = detectedSentiment.getSentiment();
switch (sentiment) {
case NEGATIVE:
// do something
break;
case NEUTRAL:
// do something
break;
case POSITIVE:
// do something
break;
}
double confidence = detectedSentiment.getConfidence();
Wenn Sie die Ausführungsschritte des Algorithmus nachverfolgen möchten, können Sie die Methode detectSentiment mit einem zusätzlichen Boolean-Parameter aufrufen:
boolean recordDetails = true;
DetectedSentiment detectedSentiment = sentimentDetector.detectSentiment("<p>text</p>", recordDetails);
String details = detectedSentiment.getDetails();
Verwenden von Textklassifizierung
Die wichtigsten Klassen für die Arbeit mit Textklassifizierung sind MLTicketTextClassifierService und MLTicketTextClassifierSpec. Sie müssen folgende Schritte durchführen:
- Erstellen Sie eine Training-Spezifikation (Klasse MLTicketTextClassifierSpec). Sie können das Modell so trainieren, dass es entweder die Queue eines Vorgangs oder den Wert eines Vorgangsfelds des Typs enum bestimmt.
- Verwenden Sie die Methode classifyToQueueName, um das Modell so zu trainieren, dass die Vorgangs-Queue bestimmt wird, oder verwenden Sie die Methode classifyToEnumFieldValueName, um zu entscheiden, welches Vorgangsfeld des Typs enum die Kategorie bildet, für die das Modell trainiert werden soll.
- Entscheiden Sie, welche Vorgänge zum Trainieren des Modells verwendet werden sollen, z. B. Vorgänge in einer bestimmten Queue, Vorgänge, bei denen ein bestimmter Wert in einem bestimmten enum-Feld gesetzt ist, oder Vorgänge, für die eine bestimmte Aktivität noch nicht ausgeführt wurde.
- Entscheiden Sie, welche Art von Protokolleinträgen zum Trainieren des Modells genutzt werden soll, z. B. nur Kommentare, nur eingehende oder ausgehende E-Mails.
- Begrenzen Sie die Anzahl der verarbeiteten Vorgänge und Protokolleinträge.
- Trainieren Sie das Modell (Klasse MLTicketTextClassifierService). Verwenden Sie die Methode train, um eine Datei des Typs bin mit den Trainingsergebnissen zu erstellen. Sie müssen die erstellte Trainingsspezifikation angeben.
- Fragen Sie das Modell ab, um neue Vorgänge zu klassifizieren (Klasse MLTicketTextClassifierService). Verwenden Sie die Methode predict, um die vorhergesagte Klassifizierung zu erhalten. Sie müssen das Modell und den Vorgangstext angeben.
Details über die verfügbaren Methoden und Einstellungen finden Sie in der ConSol CM-API-Dokumentation.
Das folgende Beispiel zeigt, wie ein Modell für das Feld helpdesk_standard.priority trainiert wird.
// this method will replace old ticket_priority.bin MLFile with new one
MLTicketTextClassifierTrainingSummary summary = mlTicketTextClassifierService.train("ticket_priority.bin",
MLTicketTextClassifierSpec
.classifyToEnumFieldValueName("helpdesk_standard", "priority")
.limitNumberOfTicketsPerEnumFieldValue(10000)
.limitNumberOfContentEntriesPerTicket(1)
.trainUsingTexts()
.trainUsingOnlyClosedTickets()
.trainUsingOnlyTicketsFromQueues("ml_test")
);
log.info("Training summary :" + summary)
Das folgende Beispiel zeigt, wie das erzeugte Modell abgefragt wird:
mlTicketTextClassifierService.predict("ticket_priority.bin", "This is the initial email sent by the customer to create a ticket.")
Es ist möglich, die Daten, die für das Training verwendet werden, in eine CSV-Datei zu exportieren, die die Kategorie und den Text enthält. Sie können die Datei überprüfen und editieren, bevor Sie sie zum Erstellen eines Modells nutzen.
Das folgende Beispiel zeigt, wie Sie eine CSV-Datei mit den für das Training verwendeten Daten erstellen können:
// export file from source system / production system
mlFileService.exportWithMetaData(dataset.getId(), new FileOutputStream("/tmp/ticket_priority.csv.jar"));
mlFileService.delete(dataset.getId());
// use created file on training system (note that the data set may change name if file ticket_priority.csv already exists)
MLFile dataset = mlFileService.importWithMetaData(new FileInputStream("/tmp/ticket_priority.csv.jar"));
Anpassen von CM/Machine Learning
Es gibt zwei System-Properties, mit denen das Machine-Learning-Modul angepasst werden kann:
- cmas-core-server, ml.evict.unused.after.hours
Die Anzahl der Stunden, nach denen ein Machine-Learning-Modell aus dem Cache entfernt wird, wenn es nicht verwendet wird. Der ConSol CM-Server prüft jede Stunde, ob es Machine-Learning-Modelle gibt, die entfernt werden können. Der Standardwert ist 24. - cmas-core-server, ml.learn.worker.threads
Die Anzahl der Threads, die der Machine-Learning-Algorithmus zum Trainieren des Machine-Learning-Modells verwenden kann. Der Standardwert ist 1.