Informationen aus Kundenanfragen extrahieren


Aus den kurzen Begründungstexten für Tierarztbesuche extrahieren wir Symptome, Krankheiten und gewünschte Dienstleistungen.

Input

Ein kurzer Text mit Angabe des Termingrundes

Output

Alle Symptome, Krankheiten oder gewünschte Dienstleistungen, die dem Text zu entnehmen sind

Ziel

Strukturierte Daten aus den Termingründen zu gewinnen


Einführung


Unsere Kunden bieten Hausbesuche von Tierärzten an, die online gebucht werden können. Beim Buchungsprozess kann ein Termingrund in ein kleines Textfeld eingeben werden. Für eine gute Planung ist es wichtig, die Termindauer gut abschätzen zu können. Unser Ziel war es, aus den Termingründen Symptome, Krankheiten und gewünschte Dienstleistungen abzuleiten, um ihre Prozesse zu optimieren.


Startpunkt


Unser Kunde, felmo, bietet in vielen deutschen Städten Hausbesuche von Tierärzten für Katzen und Hunde an. Bei der Online-Terminvergabe kann der Kunde einen kurzen Text als Begründung eingeben. 

Ziel des Projekts war es, alle Symptome, Krankheiten und Dienstleistungen aus den Termingründen zu extrahieren.

Um ein Modell dafür trainieren zu können, hat felmo uns ein Datensatz mit tausenden von Termingründen zur Verfügung gestellt mit jeweils bis zu 10 Symptomen, Krankheiten und Dienstleistungen, die Tierärzte aus dem Text ableiten konnten.


Herausforderungen


Einer der Herausforderungen dieser Aufgabe war, dass es mehr als 500 unterschiedliche Symptome, Krankheiten und Leistungen gab und viele Symptome nur geringfügige Unterschiede aufwiesen.

Auch die große Variation der Schreibstile machte diese Aufgabe anspruchsvoll. Die meisten Benutzer gaben eine Liste der beobachteten Symptome an. Einige fügten auch Spekulationen über die zugrunde liegende Ursache an, oder führten auch auf, welche Symptome sie ausschließen konnten. Andere beschrieben das Verhalten ihres Haustieres während der letzten Tage in vollständigen Sätzen.


Lösung


Als ersten Schritt schrieben wir einen einfachen Algorithmus, der auf regular expressions basierte, damit wir ein Vergleichswert für unsere Modelle hatten. Dies funktionierte bereits recht gut für Eingaben, die Listen von einzelnen Wörtern oder kurzen Beschreibungen waren.

Um mit Spekulationen, Negationen und detaillierten Beschreibungen umgehen zu können, haben wir ein vortrainiertes Sprachmodell verwendet (ein Modell, das auf einem großen öffentlichen Datensatz trainiert wurde, um ein allgemeines Sprachverständnis zu erlernen). Dies haben wir dann weiter trainiert auf dem Datensatz von felmo.

Wir haben auch mit felmo zusammengearbeitet, um den Datensatz zu verbessern. Das führte dann auch zu einer Verbesserung der Modellvorhersagen.

Dieses neue Modell hatte eine ebenso hohe Genauigkeit bei den listenartigen Termingründen wie unser ursprünglicher Algorithmus. War aber jetzt auch in der Lage, Negationen zu erkennen oder Symptome aus längeren Beschreibungen abzuleiten.

In dem einmonatigen Proof-of-Concept-Projekt konnten wir:

  • zeigen, dass ein tiefes neuronales Netzwerk Algorithmen basierend auf regular expressions übertreffen kann

  • ein Modell präsentieren, das bereits produktionsreife Ergebnisse liefert

Jetzt kann felmo die Ergebnisses dieses Modells mit ihrer Erfahrung und Fachwissen kombinieren, um ihre Prozesse zu verbessern. So kann felmo den Tierärzten wertvolle Zeit einsparen!

Ähnliche Projekte