Kofax Transformation Modules (KTM) bietet diverse Werkzeuge, um Dokumente zu klassifizieren und Daten zu extrahieren. Diese Werkzeuge wurden bereits in früheren Blog-Artikeln erläutert:
– Dokumentenklassifizierung
– Datenextraktion mit Format-Lokatoren
– Maschinelles Lernen
Die aktuelle KTM-Hauptversion 6.3 hat mit dem ServicePack 6.3.1 ein weiteres interessantes Werkzeug erhalten: Natural Language Processing (NLP)
Natural Language Processing versucht, den Text des Dokuments zu analysieren, Wörter und deren Beziehungen zu verstehen, um daraus Informationen und Wissen zu gewinnen.
Das Kofax NLP-Paket scheint auf der Salience Engine der Firma Lexalytics zu basieren.
Dadurch, dass NLP in KTM nicht mit einer Hauptversion, sondern einem ServicePack eingeführt wurde, ist die Dokumentation dazu noch etwas rudimentär. In der Hauptdokumentation ist dazu noch gar nichts enthalten. Diese Dokumentation wird wohl erst mit dem Release der nächsten Hauptversion angepasst. Teile der Dokumentation sind aber schon im Readme des ServiePacks zu finden.
Dieser Blog-Artikel liefert einen Überblick über die Installation des NLP-Pakets, die beiden zugehörigen neuen Lokatoren (Extraktionswerkzeuge) und individuelle Erweiterungsmöglichkeiten der Entitäten und Stimmungen:
- Installation des NLP-Pakets
- Entitäten und Stimmungen
- Individuelle Stimmungen und Entitäten
1. Installation des NLP-Pakets
Das NLP-Paket ist nicht Bestandteil der Installationssourcen von KTM 6.3 und auch nicht vom ServicePack 6.3.1. Das ServicePack beinhaltet allerdings zwei Lokatoren, die sich das NLP-Paket zunutze machen.
Das NLP-Paket an sich ist ein eigenes Installationspaket, das über delivery.kofax.com heruntergeladen werden kann. Nach dem Download stehen drei msi-Installationsdateien zur Verfügung, die diverse Sprachen abdecken:
KofaxTransformation_Salience6.4_LanguageBundle_western-default.msi
KofaxTransformation_Salience6.4_LanguageBundle_western-extended.msi
KofaxTransformation_Salience6.4_LanguageBundle_extended.msi
Die drei Pakete können nacheinander installiert werden.
2. Entitäten und Stimmungen
Mit den bekannten Werkzeugen wie zum Beispiel Format-Lokatoren mit regulären Ausdrücken oder Stammdatenabgleich können schon sehr viele Informationen aus Dokumenten gewonnen werden. Meist handelt es sich dabei um eindimensionale Daten wie ein Datum, Nummern, Beträge oder bestimmte Zeichenketten.
Mit dem neuen Entitäten-Lokator erkennt KTM nun automatisch Objekte wie beispielsweise Personen, Firmen, Produkte, Orte, URLs, Email-Adresse, Schulen, Organisationen, Städte, uvm. Dieser neue Lokator ist konfigurierbar, so dass man festlegen kann, ob man nur einzelne Entitätstypen suchen will oder ob er alle gefundenen als Treffer liefern soll.
Der ebenfalls neu hinzugekommene Sentiment-Lokator versucht die vorherrschende Stimmung eines Dokuments zu bestimmen. Beinhaltet der Text eher eine positive Grundstimmung oder ist es vielleicht eine Beschwerde mit negativem Grundton? Der Sentiment-Lokator ist bis auf die übliche Möglichkeit, ihn auf bestimmte Dokumentenregionen zu beschränken, nicht konfigurierbar.
2.1 Entitäten-Lokator
Der Entitäten-Lokator kann wie jeder andere KTM-Lokator auf einer beliebigen Klasse im Klassenbaum genutzt werden. Eine Besonderheit hierbei ist, dass man in den Eigenschaften dieser Klasse(n) die zu benutzende Sprache einstellen muss. Hier stehen genau die Sprachen zur Verfügung, die mit den drei msi-Paketen installiert wurden. Diese Einstellmöglichkeit findet sich ab KTM 6.3.1 ganz unten bei den Klasseneigenschaften:
Momentan stehen die folgenden Sprachen zur Auswahl:
Für die folgenden Beispiele wird immer das folgende Dokument benutzt:
Der Entitäten-Lokator selbst bietet drei verschiedene Modi:
Modus 1: Einfaches Feld und kein ausgewählter Entitätstyp:
In diesem Modus liefert der Lokator alle gefundenen Entitätstypen:
Modus 2: Einfaches Feld mit ausgewähltem Entitätstyp:
Alternativ kann man auch einen bestimmten Eintitätstyp festlegen (hier Person):
Wie zu erwarten, werden dann nur Treffer passend zum gewählten Entitätstyp geliefert:
Die Trefferliste liefert leider nur den Treffer und die Konfidenz und nicht den Entitätstyp, was insbesondere im ersten Beispiel mit mehreren Entitätstypen unschön ist.
Hier hilft der dritte Modus:
Modus 3: Tabellenfeld mit oder ohne ausgewähltem Entitätstyp:
Um diesen Modus nutzen zu können, muss man vorher ein einfaches Tabellenmodel erstellen (wie beim Auslesen von Tabellen mit dem Tabellenlokator). Sinnvoll sind hier die Spaltenbezeichnungen Text, Confidence, EntityType und Sentiment, die ich in dem Tabellenmodell Entity zusammengefasst habe. In diesem Modus liefert der Lokator die aussagefähigsten Ergebnisse:
Man sieht hier in Tabellenform alle Treffer mit Konfidenz, Wert, Typ und ‚Stimmung‘. Wobei ich den Sinn des Sentiments in diesem Zusammenhang anzweifle.
Was spricht nun für Modus 1/2 und was für Modus 3?
Das Ergebnis aus Modus 1/2 kann ich direkt einem KTM-Feld zuordnen (wie gehabt den besten Treffer). Dort erhalte ich dann allerdings nur den Wert und nicht den Entitätstyp. Weitere Treffer können wie üblich in KTM per Skript abgefragt werden.
Im Gegensatz dazu kann das Ergebnis von Modus 3 nur einem Tabellenfeld zugeordnet werden, da es ja eine Tabelle darstellt. Natürlich kann das Tabellenergebnis auch per Skript abgefragt werden.
Insgesamt bevorzuge ich den Tabellenmodus des Entitäten-Lokators, da ich dort alle Ergebnisinformationen im Zugriff habe.
2.2 Sentiment-Lokator
Dieser Lokator versucht die Grundstimmung eines Dokuments herauszufinden.
Das Ergebnis des Sentiment-Lokators ist ein Wert zwischen -1.00 und +1.00 und kann einem einfachen Feld zugeordnet werden. Kofax erläutert den Wertebereich folgendermaßen:
Positiv: 0.12 bis 1.00
Neutral: -0.025 bis 0.11
Negativ: -0.026 bis -1.00
Der Sentimentlokator sucht automatisch nach einer Grundstimmung und hat keine konfigurierbaren Einstellungen. Allerdings kann man den Bereich des Dokuments, der für den Lokator genutzt werden soll wie üblich durch die Einschränkung auf bestimmte Regionen begrenzen.
Die Eigensschaftsseite des Sentimentlokators:
Ein Test mit dem obigen Beispieldokument liefert das folgende Ergebnis:
Das Ergebnis von fast 0.5 lässt auf eine positive Grundstimmung schließen (immerhin hat sich der Kontostand erhöht!).
Eine endgültige Beurteilung dieses Lokators kann ich noch nicht liefern, da mir nicht genug Belege mit ‚Stimmungen‘ zur Verfügung standen. Da der Lokator aber sehr einfach zu nutzen ist, kann man ihn ja durchaus mal in verschiedenen Projekten ‚mitlaufen‘ lassen und damit Erfahrungen sammeln.
3. Individuelle Stimmungen und Entitäten
3.1 Eigene Entitäten
Kofax liefert mit dem NLP wie oben beschrieben ja schon viele vordefinierte Entitäten mit (Personen, Orte, usw.). Darüber hinaus ermöglicht das NLP auch, eigene projektspezifische Entitäten zu definieren und für die Erkennung zu nutzen.
Ein Beispiel für eigen definierte Entitäten:
Eine Firma produziert Produkte, die sich in verschiedene Bereiche aufteilen. Jeder einzelne Bereich hat diverse Modellnummern. Für allgemeine Texte und Schreiben wird die spezifische Modellnummer nicht benötigt, aber auf jeden Fall der Produktbereich.
Für diesen Fall kann man sich nun eine eigene Entitäten-Datei definieren und KTM bereitstellen. Die Extraktion würde dann bspw. eine Modellnummer erkennen und den passenden Bereich als Extraktionsergebnis zurückliefern.
Das Vorgehen zur Nutzung eigener Entitäten:
Die projektspezifische Entitätendatei muss im Pfad des KTM-Projekts abgelegt werden:
…Projektordner\Custom\SalienceData\de\salience\entities\
Der Pfad unterhalb des Projektordners muss manuell angelegt werden (falls nicht vorhanden).
Für andere Sprachen muss de im Pfad durch das passende Sprachenkürzel ersetzt werden (en = Englisch, es = Spanisch, usw.)
legt den Entitätstyp fest, der vom Entitätslokator zurückgeliefert wird (im Tabellenmodus).
Innerhalb des Entitätsordners muss nun die eigentliche Entitätsdatei mit den Definitionen liegen. Der Name der Datei spielt keine Rolle, aber die Dateierweiterung muss .cdl lauten.
Die Zeilen der Datei müssen folgenden Aufbau haben:
SuchtextEntity-LabelEntity Name
Entity-Label wird momentan noch nicht unterstützt, kann aber in der Datei stehen.
Ohne Entity-Label müssen beide nacheinander folgen.
‚Suchtext‘ wird im Dokument gesucht und als Ergebnis des Lokators wird ‚Entity Name‘ in der Spalte ‚Text‘ geliefert.
Zum besseren Verständnis hier ein Beispiel:
Fahrzeuge.cdl hat folgenden Inhalt:
VW Tiguan PKW Volkswagen (PKW)
VW Golf PKW Volkswagen (PKW)
VW Bus Transporter Volkswagen (Nutzfahrzeuge)
Skoda Octavia PKW Skoda (PKW)
Skoda Fabia PKW Skoda (PKW)
Honda CBR 650 Motorrad Honda (Motorrad)
Honda CBR 123 Motorrad Honda (Motorrad)
Die Datei wird in folgendem Pfad abgelegt:
…Projektordner\Custom\SalienceData\de\salience\entities\Firmenwagen\Fahrzeuge.cdl
Ein Test des Entitätslokatores mit einer passenden Datei
liefert als Ergebnis:
Die selbst definierten Entitäten tauchen als Entitätstyp unter den Entitätenfiltern leider nicht auf.
Um die selbst definierten Entitäten dem KTM-System im Project Builder bekannt zu machen, muss die zugrundeliegende Salience Engine einmal gestoppt werden. Das kann unter den Eigenschaften der Dokumentenklasse geschehen, auf der der Entitätslokator definiert wurde:
Beim nächsten Extraktionslauf wird die Engine automatisch neu gestartet.
3.2 Eigene Stimmungen
Ähnlich wie bei den Entitäten kann man auch den Sentiment-Lokator um eigene Definitionen erweitern. Das NLP liefert für viele Sprachen eine Sentiment-Definitionsdatei mit.
Für die deutsche Sprache liegt diese in folgendem Pfad:
C:\Program Files (x86)\Common Files\Kofax\Salience6.4\de\salience\sentiment
und hat die Bezeichnung general.hsd.
Hier ein Auszug daraus:
auch empfehlen 0.3
besser verkaufen 0.3
getrennter Freund -0.3
berührend gefunden 0
viel harmloser 0.3
laufenden Band 0
öffentlichen Heiratsantrag 0.3
Goldenen Kamera 0.3
langjährigen Lebensgefährten 0.3
angeschlagenen Moderatorin -0.3
mangelnden Taktgefühls -0.3
Zuerst steht die bewertete Phrase und dann durch getrennt die Bewertung zwischen -1 und +1.
Um diese standardmäßig vorhandenen Phrasen anders zu bewerten oder neue Phrasen einzufügen, muss die Datei general.hsd in den Pfad des eigenen KTM-Projekts kopiert werden. Der Zielpfad ist:
…Projektdatei\Custom\SalienceData\de\salience\sentiment
Anschließend kann man die dorthin kopierte Datei general.hsd editieren und um eigene Begriffe und Bewertungen ergänzen.
Wie schon bei den selbst definierten Entitäten muss auch hier die Salience-Engine über die Eigenschaften der Dokumentenklasse gestoppt werden, damit die Änderungen im Project Builder wirksam werden.
Fazit
Insgesamt stellt Kofax mit dem Natural Language Pack für Kofax Transformaton Modules eine interessante und vielversprechende Erweiterung zur Dokumentenklassifikation und Datenextraktion zur Verfügung. Ich hoffe, dieser Artikel konnte einen ersten Überblick über die Möglichkeiten des NLPs liefern und die momentan noch fehlende Kofax Dokumentation ersetzen.
Weitere Beiträge
von Jürgen Voss
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Jürgen Voss
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.