Mehr als nur eine Suchmaschine – Solr goes Machine Learning! Teil I
Spätestens seit dem letzten Major Release von Solr im April letzten Jahres, der Version 6.0, sind Features und Möglichkeiten eingeführt worden, die nicht mehr unbedingt zum klassischen Repertoire einer Suchmaschine zu zählen sind. Abfragen auf Basis von SQL-Syntax sind hier zu nennen, Graphen-Traversierung oder eben Textklassifikation, ein Bereich des Machine Learning, das in dieser Blogserie näher beleuchtet wird. In diesem ersten Beitrag werden die inhaltlichen Grundlagen der Textklassifikation erläutert, bevor ein konkreter Use Case dargelegt wird.
Was ist Textklassifikation?
Klassifikation besteht als Teildisziplin des ĂĽberwachten Lernens (Supervised Learning) prinzipiell aus drei Schritten:
- Training eines Modells
- Testen und Validierung des Modells
- Klassifikation von neuen Dokumenten mit Hilfe des berechneten Modells
Bei der Klassifikation ist immer bekannt, welchen Klassen Daten zugeordnet werden sollen. FĂĽr diese Blogserie nehmen wir an, dass E-Mails in zwei Klassen eingeordnet werden sollen: Spam und kein Spam. FĂĽr jeden Datensatz gilt, dass er einer dieser Klassen zugeordnet werden kann. Da wir in Zusammenhang mit Solr immer von Dokumenten sprechen, ist ein Datensatz gleichzusetzen mit einer E-Mail und einem Dokument.
Trainingsphase
Voraussetzung für das Trainieren eines Modells ist, dass für einen Teil der Dokumente bereits bekannt ist, zu welcher Klasse sie gehören. Für das Trainingsset nimmt man eine Teilmenge des initialen Datenbestands, üblicherweise zwischen 10% und 20%. Ausgehend von einer Menge von 1000 E-Mails wäre ein passendes Trainingsset also 100 E-Mails. Für diese 100 E-Mails ist nun eine manuelle Klassifikation vonnöten, d.h. man weist einer Spam-Mail eine 1, einer „normalen“ E-Mail eine 0 zu. Diese Information übergibt man einem Klassifikationsalgorithmus, der daraus ein sogenanntes Modell errechnet. Bei einer Textklassifikation kann man sich die Modellberechnung in etwa folgendermaßen vorstellen: Für jede Klasse wird versucht zu ermitteln, welche Features eine Klasse beschreiben. Diese Features sind bei der Textklassifikation wiederum textbasiert. Wenn z.B. in 90% der klassifizierten Spam-Mails die Wörter „kostenlos“ und „Gewinnspiel“ vorkommen, ist dies als brauchbares Indiz (also Feature) zu sehen, das Spam-Mails identifizieren kann.
Testphase und Validierung
Ist nun also mit einem Teil der Daten ein Modell erstellt, muss dieses Modell getestet werden. Dafür werden die restlichen Dokumente des Datenbestands verwendet. Ausgehend von unseren anfangs 1000 E-Mails sind dies die restlichen 900 E-Mails. Jede E-Mail wird mit dem berechneten Modell klassifiziert und das Ergebnis wird anschließend auf Richtigkeit überprüft, um die Güte des Modells zu ermitteln. Wenn das Modell (noch) nicht gut (genug) abschneidet, müssen gegebenenfalls weitere Iterationen der Trainingsphase durchlaufen werden. Die Inhalte einer E-Mail können in jeder Iteration anders verarbeitet werden und in die Modellberechnung mit einfließen. Stoppwörter können entfernt werden, der Text einer E-Mail auf die ersten X Zeichen begrenzt werden, Normalisierungsoperationen (z.B. Lowercasing, Stemming) eingeführt werden etc.
Klassifikation
Hat man die gewünschte Klassifikationsgüte erreicht, können neue Dokumente mit diesem Modell klassifiziert werden. Dafür werden die Features des Dokuments ermittelt und gegen das Modell geprüft, um die Klasse für dieses Dokument zu ermitteln.
Solr – Klassifikation mit Streaming Expressions
Klassifikation ist als Teildisziplin des maschinellen Lernens natürlich stark im Bereich Big Data angesiedelt. Technologien, die Use Cases dieser Art unterstützen, sind im Open Source Umfeld traditionell Apache Spark oder Apache Mahout, oftmals in Zusammenspiel mit Apache Hadoop, gewesen, die als hoch skalierbare Technologien bereits eine Auswahl an Klassifikationsalgorithmen beinhalten und schnell eingesetzt werden können. Doch nun ist mittels der in Solr 6.0 eingeführten Streaming Expressions ein Klassifikationsverfahren auch in Solr möglich. Das heißt, es können basierend auf indexierten Dokumenten Features extrahiert werden und mittels logistischer Regression Klassifikationsmodelle berechnet werden. Diese Modelle können wiederum in einer Solr Collection gespeichert werden, um dann zur Klassifikation weiterer Dokumente verwendet zu werden.
Der nächste Teil der Blog-Serie beschreibt die Vorbereitungsmaßnahmen, deren Umsetzung für die tatsächliche Klassifikation notwendig ist.
- Mehr als nur eine Suchmaschine – Solr goes Machine Learning! Teil II
- Mehr als nur eine Suchmaschine – Solr goes Machine Learning! Teil III