Machine Learning: So nutzen Sie Salesforce Daten mit Python (Scikit-Learn & NLTK) am Beispiel der Case-Klassifikation

Machine Learning: So nutzen Sie Salesforce Daten mit Python (Scikit-Learn & NLTK) am Beispiel der Case-Klassifikation

Machine Learning: So nutzen Sie Salesforce Daten mit Python (Scikit-Learn & NLTK) am Beispiel der Case-Klassifikation 1600 930 H+W CONSULT

Der Einsatz von künstlicher Intelligenz (KI) wird für Unternehmen immer wichtiger, um Prozesse zu automatisieren und sich Wettbewerbsvorteile zu sichern. Machine Learning ist ein Teilbereich der künstlichen Intelligenz. Hier wird künstliches Wissen aus Erfahrungen generiert. Salesforce bietet seinen Kunden schon heute einfache und sehr effiziente Lösungen für Machine Learning in der Plattform an.

In diesem Artikel geben wir einen Überblick zu den verfügbaren Salesforce Diensten für Machine Learning. Schwerpunkt unseres Artikels sind allerdings Möglichkeiten, wenn Sie an die Grenzen der Salesforce Plattform kommen. Denn nur, weil Salesforce Einstein Ihre Anforderung nicht löst, heißt es nicht, dass es nicht möglich ist. Hier kommt die Nummer 1 der Machine Learning Programmiersprachen „Python“ ins Spiel, um Salesforce Daten verarbeiten zu können.

Marcel Joist, Professional Service Leiter von Salesforce Partner H+W CONSULT, zeigt Ihnen am Beispiel der Case-Klassifikation wie Sie Cases aus Salesforce abfragen und diese für das Anlernen eines Klassifizierungalgorithmus verwenden. Dieses Beispiel kann man als Einstieg in das Thema nutzen und es dann immer weiter ausbauen. Es dient nur als „Proof of Concept“. Die nächsten Schritte sind unten beschrieben.

Dieser Artikel wurde veröffentlicht am 12.05.2020.

Künstliche Intelligenz in Salesforce

Grundsätzlich empfehlen wir als Salesforce Partner immer erst die vorhandenen Click-to-Point Möglichkeiten der Salesforce Plattform zu nutzen. Diese sind bereits sehr mächtig und führen mit viel weniger Aufwand zum Ziel und mit jedem Release werden diese besser.

Verfügbare Einstein Dienste

  • Einstein Prediction Builder – Vorhersagen von Werten z.B Wahrscheinlichkeit für einen Abschluss (Opportunity) oder die Konvertierung eines Leads
    • Opportunity Scoring
    • Lead Scoring
    • Case-Classification
  • Einstein Vision  – Bildverarbeitung (Objekterkennung)
  • Einstein Bots – Textverarbeitung und Automatisierung von Service-Anfragen
  • Einstein Language – Textverarbeitung (Sentiment & Cassification)
  • Einstein Discovery – Auswertung von Daten zur Analyse
  • Einstein Next Best Action –  Vorschlagen der nächsten besten Aktion (Recommendation)
  • Sales Cloud, Service Cloud Einstein – Fertige Lösung für Sales und Service Abteilungen
  • Einstein Voice –  Sprachverarbeitung

Weitere Informationen finden Sie auch hier und auf Trailhead:


Python: Wenn die Grenzen von Salesforce Einstein erreicht sind


Mögliche Gründe für einen solchen Schritt könnten sein:

  • Sprachen werden nicht unterstützt.
  • Die Ergebnisse sind nicht optimal und müssen weiter verbessert werden.
  • Funktionen werden noch nicht bereitgestellt von Salesforce.
  • Man hat ein Machine Learning Team, welches spezialisiert ist auf Python.
  • Man benötigt ein sehr individuelles Modell und Datenverarbeitung, welche aus weiteren Quellen integriert werden sollen.
  • Man hat keine Lizenzen für Einstein Produkte erworben aber ein eigenes Machine Learning Team.
Schritt 1: Wir laden alle benötigten Libraries
Schritt 2: Wir verbinden uns zur Org und holen uns die Daten

Falls Sie mehr als 50.000 Datensätze verwenden wollen, sollten Sie auf die BULK-API wechseln. Mehr Informationen

Schritt 3: Umwandlung der Datenstruktur und Bereinigung

Wir wandeln die Daten in eine Datenstruktur um, welche genutzt werden kann und bereinigen die Daten. Zusätzlich geben wir uns die Kategorien inkl. der Datensätze aus.

Jetzt haben wir unsere Daten fertig in der Datenstruktur „train_features“.

Zur Konfiguration der Sprache, welche wichtig ist für die Auswahl der richtigen Filterwörter (Stopwords) und der Reduktion von Wörtern auf ihre Grundformen (Stemming), definieren wir eine Variable, die wir später nutzen.

Beispiel: Aus dem Satz „Ich fahre mit unseren Autos zur Werkstatt“ wird durch die Reduktion der Wörter „ich fahr mit uns autos zur werkstatt“ und nach den Filterwörtern „fahr autos werkstatt“.  Hier können Sie es selber mal testen.

language = 'german'
Schritt 4: Definition der Methoden für Training und Stemming

Die Trainingsmethode gibt uns das Modell und Reporting-Informationen zurück.

Ich verwende hier ein paar interessante Methoden aus SciKit-Learn & NLTK: 

  • fit: Anlernen des Modells
  • predict: Vorhersagen von Daten
  • train_test_split: Trennen der Daten in Training- und Testdaten
  • score: Bewerten des Modells mit einem Accuracy Score
  • classification_report: Erstellen eines Reports
  • SnowballStemmer: Reduzieren der Wörter auf den Stamm
  • word_tokenize: Sätze in Wörter zerlegen

Sie können alle Funktionen einfach auf der Webseite von Scikit-Learn nachschlagen.

Schritt 5

Als nächsten Schritt erstellen wir die Pipelines zur Berechnung der Modelle:

Zur Verarbeitung des Textes nutze ich immer einen Vectorizer, welcher die Wörter umwandelt in Zahlen, da die Maschine nur mit Zahlen arbeiten kann.

In diesem Fall nutze ich den „TfidfVectorizer“ zum Zerlegen und Zählen der Wörter im Verhältnis zum Gesamttext. Hieraus kommen dann die Features, also die zu lernenden Werte für den Klassifizierungsalgorithmus.

In unserem Beispiel verwende ich direkt mehrere Klassifizierungsalgorithmen und vergleiche später die Performance.

Ich will das Beispiel so einfach wie möglich halten, aus diesem Grund verwende ich keine weiteren Optimierungen. Zur Optimierung könnte man die Parameter per GridSearch einbauen oder mit #(’skb‘, SelectKBest(chi2, k = 50)) arbeiten. Hier kommt ein Experte für Machine Learning zum Einsatz.

Schritt 6: Ausführung

Nun zum letzten Teil des Codes. Wir führen alles aus und geben die Ergebnisse aus

Ausgabe des Scripts aus meiner Developer Org: CLI Command: pyhton main.py

In unserem Beispiel ist das Modell leider noch nicht verwendbar, da wir viel zu wenig Datensätze haben. Jetzt beginnt die Arbeit des Machine Learning Experten.

Der beste Score liegt nur bei Accuracy: 0.6065573770491803 und nur die Kategorien „Migration, Programming und Customization SFDC“ werden einigermaßen erkannt.

So teste ich die Modelle im Code:

Ausgabe des Script aus meiner Developer Org:


So könnte man die  Modelle speichern, damit man einen Webservice bauen kann. 
Für die Verwendung des Modells als Web-Service kann ich Ihnen folgendes Projekt empfehlen. Zum Projekt


Wie es weitergeht, um das Modell auch in die Produktion nehmen zu können

  • Testen mit mehr Daten: Ich empfehle mind. 1.000-2.000 Datensätze pro Kategorie.
  • Optimieren der Parameter und Daten Features – Link
  • Bereinigen der Kategorien z.B ApexCode und ApexPage
  • Hinzufügen von mehr Daten z.B Quelle des Leads.
  • Optimieren, Optimieren, Optimieren – Link
    • GridSearch ist bei wenigen Datensätzen allerdings gefährlich und kann schnell zum Overfitting führen.
    • Ich empfehle mind. eine Precision von 80 und einen Recall von 80. Allerdings müssen Sie es für Ihren Einsatzzweck entscheiden.
  • Web Service für das Modell erstellen – Link
  • Authentifizierung einbauen in den Service – Link
  • Deployment des Services z.B auf Heroku – Link
  • Apex Development – Trigger mit HTTP-Call-Out  – Link
Diese Python Libraries empfehlen wir Ihnen noch:
Haben Sie Fragen zu Machine Learning in Salesforce?

Falls Sie sich zu diesem Thema mit jemandem austauschen möchten, kommen Sie gerne auf H+W CONSULT zu.

Sie haben Fragen? Gern!



Blogposts per E-Mail erhalten

Unser H+W Newsletter informiert Sie kostenfrei 1-2 Mal im Monat über Themen rund um Salesforce und uns: Best Practices, Trends, neue Technologien,  Veranstaltungen und vieles mehr.

Mit Klick auf "Jetzt anmelden" willige ich bis auf Widerruf ein, den personalisierten Newsletter der H+W CONSULT GmbH ("H+W") zu erhalten. Zu diesem Zweck verarbeitet H+W meine personenbezogenen Daten, wie in den Datenschutzhinweisen beschrieben. Diese Einwilligung kann ich jederzeit mit Wirkung für die Zukunft widerrufen z.B. per Abmeldelink am Ende eines jeden Newsletters.

Back to top
Mit dem Fortsetzen des Besuchs dieser Website akzeptieren Sie die Verwendung von Cookies. Für mehr Informationen und zur Änderungen der Cookie-Einstellungen auf Ihrem Computer, lesen Sie bitte die Datenschutzerklärung.
Informationen ⟶