Deep Learning bei snapADDY

Deep Learning Ansatz bei snapADDY

Im heutigen Blogbeitrag geht es um den Einsatz von sogenanntem Deep Learning, welches wir zurzeit für die Verbesserung der Ergebnisse unseres Adress-Parsers entwickeln und nutzen. Mit dem Beitrag möchten wir Ihnen einen kleinen Einblick hinter die Kulissen unserer Entwicklungsabteilung geben und zeigen, wie unser Parser neue technische Möglichkeiten nutzt, um die Qualität der Datenextraktion in Ihr CRM-System für Sie weiter zu verbessern. Der neue Parser befindet sich derzeit in der Entwicklung und wird im Laufe des Jahres für unsere Kunden freigeschaltet.

Unsere Hauptaufgabe – Daten recherchieren und Adressblöcke erkennen

Viele Unternehmen sind mit der Datenqualität in Ihrem CRM-System nicht zufrieden. Eine händische Dokumentation von Gesprächsdaten und die manuelle Erfassung von Kontaktdaten sorgen für eine geringe Datenqualität und einen großen Zeitverlust. Wir lösen dieses Problem durch die Automation der Kontakterfassung.

Eine Kernfunktion unserer Produkte ist dabei die automatisierte Erkennung von Kontaktdaten durch unseren Algorithmus. Es reicht beispielsweise einen Unternehmensnamen in die Suchleiste einzutippen – der snapADDY Algorithmus findet eigenständig die Impressumsseite des Unternehmens, analysiert den gefundenen Text und erkennt aus diesem mögliche Kontaktdaten, die automatisiert in die vorgesehen Felder eingeordnet werden. Dieses Ergebnis lässt sich anschließend als Kontakt direkt ins CRM-System exportieren – der Arbeitsaufwand mit snapADDY verkürzt sich auf rund zwei Minuten pro Kontakt.

Das Hauptproblem – Wie können Kontaktdaten in einem Text automatisiert erkannt werden?

Wenn wir als Mensch einen Text lesen, fällt es uns nicht schwer hieraus einen Namen und eine E-Mail-Adresse zu erkennen. Wir lesen einfach die Zeichen, verstehen durch unsere Erfahrung den Kontext und extrahieren die nötigen Informationen in kürzester Zeit. Wie schwierig kann es also sein, einer Maschine dasselbe beizubringen, damit diese die Arbeit selbständig erledigen kann?

Es stellt sich heraus, dass diese Aufgabe ziemlich schwer ist. Ein Computer weiß grundsätzlich nichts über Text oder kann diesen zumindest nicht so verarbeiten, wie ein Mensch. Der Computer versteht Folgen von Zeichen nicht als Wörter und Folgen von Wörtern nicht als Sätze. Er unterscheidet qualitativ nicht zwischen Haus und 72 97 117 115. Wie also soll eine Maschine diesen Schritt automatisch erledigen?

Zwei Strategien im Vergleich – Zuordnung über Listen

Unser bisheriger Ansatz bei snapADDY besteht darin, Listen von Wörtern zu verwenden, anhand derer unsere Software feststellen kann, ob eine Folge von Zeichen in der „Vornamen“-Liste oder in der „Job-Bezeichnung“-Liste vorkommt. Wenn also in einem Text, beispielsweise auf der Impressums-Seite, eine Position wie Vertrieb vorhanden ist, wird dieser Wert auch als Position erkannt, weil die Zeichenfolge in der Liste der Positions-Klasse zugeordnet ist.

Klingt nach einer einfachen Lösung? Was geschieht dann mit der Peter Mayer GmbH in der Robert-Bosch-Straße 47? Wie kann die Maschine entscheiden, wann Peter ein Personenname ist und wann Teil eines Unternehmensnamens? Dieses elementare Problem lässt sich nicht trivial durch den Abgleich der Wörter mit verschiedenen Listen lösen. Deswegen beschäftigen wir uns im Data-Team ausführlich mit intelligenteren Systemen, die eigenständig Muster für die Erkennung von Kontaktdaten entwickeln können, so dass wir diese nicht mehr händisch erstellen müssen.

Außerdem bedeutet das Zusammenstellen von Listen mit Personennamen, Städten und Unternehmen viel Handarbeit. Unser Data-Team bei snapADDY verwendet viel Zeit darauf, Listen zu erstellen, zu überprüfen und die Zuverlässigkeit der Klassenzuweisungen (z.B. Peter -> Vorname) nach statistischen Kriterien zu gewichten. Mit dieser Herangehensweise erreicht snapADDY in vielen Feldern eine hohe Genauigkeit. Dieser Ansatz erzeugt also grundsätzlich gute Ergebnisse, doch es wird mit zunehmender Erkennungsleistung und größeren Datenmengen sichtbar, dass die Regeln und Listen ihre Beschränkungen haben. Es wird mit der Zeit immer schwerer, den Parser noch genauer zu machen und immer aufwendiger, neue Regeln zu erstellen. Hier soll eine Technik aus den 60er Jahren, die heute einen verspäteten Frühling erlebt, Abhilfe verschaffen: Deep Learning.

Zwei Strategien im Vergleich – Muster erkennen mit Deep Learning

Deep Learning ist eines der größten Buzz Words der letzten Jahre. Es ist nicht einfach, in Kürze zu erklären, was sich hinter diesem Begriff verbirgt. Daher wird hier die Idee hinter Deep Learning anhand unseres speziellen Problems erklärt, ohne zu sehr in technische Details einzutauchen. Im Grunde ist Deep Learning die Antwort auf die Frage: Was kann ich tun, wenn ich einer Maschine nicht selbst alle relevanten Regeln zur Erkennung von Daten beibringen möchte oder kann?

Mit Deep Learning müssen wir keine Regeln mehr selber schreiben, wir müssen der Maschine nicht einmal mehr Wörter beibringen. Die Idee ist einfach: Statt explizite Regeln aufzuschreiben, bereiten wir Trainingsdaten vor, und statt die Logik zu programmieren, trainieren wir die Maschine darauf, Muster von selbst zu erkennen. Die daraus resultierenden Muster übertreffen in einer Vielzahl von Anwendungsfällen auch sehr komplexe, von Menschen erstelle Regelwerke.

Deep Learning bei snapADDY – ein selbstständig lernender Algorithmus durch Testfälle

Deep Learning bezeichnet im Allgemeinen die Verwendung von sogenannte Artificial Neural Networks, um allgemeine Modelle zu erstellen, die ein bestimmtes Problem lösen (Klassifizierung, Übersetzung, Texterkennung etc.). Ein neuronales Netzwerk kann aus Erfahrung lernen. Anhand der Beispieldaten erlernt der Algorithmus welche Wörter häufig zusammen auftreten und zu welchen Klassen diese gehören. Die Erfahrung kommt bei uns in Form von Beispieldaten, die wir in das Netzwerk einspeisen, bei denen jedem Wort eine Klasse zugeordnet ist.

Deep Learning bei snapADDY

Aus diesen Wort/Klasse-Paaren versucht das neuronale Netzwerk allgemeine Regeln abzuleiten, anhand derer es zu einem beliebigen Wort die entsprechende Klasse finden kann, auch wenn dieses Wort nicht in den Trainingsdaten enthalten war. Was wir hier als Regeln bezeichnen, sieht im Inneren des Netzwerks aus wie eine Reihe von Berechnungen – nämlich mathematischen Funktionen. Die Parameter, die diese Funktionen verwenden, werden zuerst zufällig gewählt. Die ersten Versuche des Netzwerks werden also chaotische Lösungen liefern. Da das Netzwerk während des Trainings aber die selbst gefundene Lösung mit der richtigen Antwort vergleicht, kann es immer, wenn es falsch lag, die Parameter entsprechend ändern. Die Parameter werden also so lang angepasst, bis das Netzwerk so wenige Fehler macht, dass es nicht mehr besser werden kann.

Auf diese Weise können wir die Erkennung einzelner Felder in unserem Testsystem deutlich verbessern. Beispielsweise ist die Erkennung von Unternehmensnamen von etwa 70% auf über 80% gestiegen. Vor- und Nachnamenerkennung liegt mit dieser Methode im Testsystem jetzt deutlich über 90%. Sobald der Deep Learning Parser für den produktiven Einsatz bereit ist, können sich unsere Kunden über eine noch bessere automatisierte Adresserkennung freuen. Wenn es soweit ist, werden wir Sie über unsere üblichen Kanäle (Facebook, Newsletter etc.) informieren.

Nächste Schritte – automatisierte Aktualisierung von Kontaktdaten im CRM-System

Mit der neuen Technologie verbessern wir bei snapADDY die Genauigkeit einer unserer Kernfunktionen. Durch zusätzliche Beispieldaten kann das Deep-Learning-Modell außerdem immer weiter trainiert werden und eine noch höhere Genauigkeit erreichen.

In Zukunft kann sich unser Data Team auf die nächsten Herausforderungen konzentrieren, die snapADDY-Nutzern die Arbeit noch mehr erleichtern. Damit rücken beispielsweise die automatisierte Aktualisierung von Kontaktdaten und weitere spannende Features in greifbare Nähe.