Sprechen wir Menschen von einer Birne, wird aus dem Kontext der Unterhaltung schnell klar, ob es sich um das Obst oder die Lichtquelle handelt. Anders sieht das bei der Kommunikation zwischen Mensch und Maschine aus. Damit Computer und Co. komplexe Textzusammenhänge und Sachverhalte vollständig erfassen können, ist der Einsatz des so genannten Natural Language Processings notwendig. Aber wie können aus einzelnen Begriffen größere Zusammenhänge identifiziert und entscheidende Informationen extrahiert werden? Ich persönlich habe als Software-Entwickler dabei drei Phasen durchlebt. Hier erläutere ich anhand des Projekts „CV-Parsing“, welche Phasen und Analysen ich durchgeführt habe.

 

1. Mit Texten Berechnungen durchführen

In der Regel ist die Ausgangslage eine Menge an Dokumenten in PDF- oder Word-Format und es sind nur wenige weitere Informationen vorhanden. Bei CV-Parsing wurden von ca. 50.000 Lebensläufen die Texte extrahiert, Lebenlauf-Abschnitte ermittelt und eine einfache Datenbereinigung durchgeführt. Anschließend wurden die einzelnen Wörter aus den Abschnitten extrahiert. Das Projekt-Ziel war die Ermittlung der Branche je Lebenslauf-Abschnitt.

Aber wie kann man nun aus einer Menge einzelner Wörter eine Kategorie oder andere Informationen ermitteln?

Im NLP-Bereich gibt es dafür eine Standard-Methode mit dem Namen Word2Vec. Mit einem sehr einfachen Neuronalen Netz werden dabei Wörter zu n-dimensionalen Vektoren abgebildet, sodass Wörter mit ähnlichem Kontext (Wortumgebung) nahe beieinander liegen. Die Dimension muss vorgegeben werden und ist im Bereich von 50-300 ein guter Ausgangspunkt. Weitere Parameter sind die Größe der Wortumgebung und wie oft ein Wort mindestens vorhanden sein muss, damit es „in die Wolke“ aufgenommen wird.

In CV-Parsing wurden 131.756 Wörter mit 50 Dimensionen berechnet. Einen ersten Eindruck erhält man, wenn man alle Wörter auf zwei Dimension projeziert – ähnlich zu einem Schattenwurf von 3D zu 2D.

In der Grafik fallen auch bestimmte Gebiete auf. Ein großer Bereich rechts oben behandelt z. B. englische Bewerbungen.

Andere Bereiche sind schon branchenspezifisch, wie z.B. Software…

…oder Medizin.

Schematisch kann man damit gewisse Umgebungen festlegen, die für die Kategorisierung oder weitere Analysen wichtig sind.

Durch die Abbildung der Wörter auf Vektoren kann man nun zwar Berechnungen durchführen und insbesondere Wort-Ähnlichkeiten bestimmen, aber wie kann man damit automatisch Texte zu Kategorien zuordnen?

2. Kategorisierung der Texte

Bei CV-Parsing waren die Branchen noch nicht bekannt. Demnach mussten wir anhand der Lebensläufe zuerst manuell geeignete Kategorien ermitteln. Das ist nicht immer einfach, da zum Beispiel „Logistische Planung bei Nestle“ sowohl der Branche „Logistik“ als auch „Lebensmittel“ zugeordnet werden kann.

Im zweiten Schritt wurde zu festen Begriffen eine Zuordnung zu einer Branche definiert. Mit der Wort-Ähnlichkeit können damit Bereiche in der „Wolke“ einer Branche zugeordnet werden. Der Text wird nun daraufhin analysiert, welche Branchen mit welcher Intensität vorhanden sind. Die höchste Branchen-Intensität wird nun als errechnete Branche ausgewählt.

3. Häufige Iterationen von: Analyse, Update, Evaluation

Da die Zuordnung schon manuell schwer fällt, ist es wichtig, die Ergebnisse immer wieder zu evaluieren. Insbesondere gibt es für die Wort-Ähnlichkeit viele verschiedene Berechnungsmethoden und auch ein projektspezifisches Feintuning hilft, die Ergebnisse weiter zu verbessern.

Natürlich gibt es neben den oben genannten Verfahren eine Vielzahl von Alternativen. Zum Beispiel kann man mit dem Word2Vec-Modell weitere DeepLearning-Techniken einsetzen. Aber man sollte zuerst mit relativ einfachen Modellen starten, um die Aussagefähigkeit des Modells zu verifizieren. Word2Vec kann einfach mit Python oder auch in Java mit DeepLearning4j erstellt werden und die Modelle sind auch austauschbar. Dem nächsten NLP-Projekt steht also nichts mehr im Weg.