Mindbreeze Prediction Service

Am Beispiel Textklassifizierung

Copyright ©

Mindbreeze GmbH, A-4020 Linz, 2018.

Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind Handelsnamen und/oder Marken der jeweiligen Hersteller.

Diese Unterlagen sind streng vertraulich. Durch die Übermittlung und Präsentation dieser Unterlagen alleine werden keine Rechte an unserer Software, an unseren Dienstleistungen und Dienstleistungsresultaten oder sonstigen geschützten Rechten begründet. Die Weitergabe, Veröffentlichung oder Vervielfältigung ist nicht gestattet.

Aus Gründen der einfacheren Lesbarkeit wird auf die geschlechtsspezifische Differenzierung, z.B. Benutzer/-innen, verzichtet. Entsprechende Begriffe gelten im Sinne der Gleichbehandlung grundsätzlich für beide Geschlechter.

ArchitekturPermanenter Link zu dieser Überschrift

Die Komponenten für die Textklassifzierung mit Mindbreeze InSpire bestehen aus

  • Mindbreeze Prediction Service
  • Mindbreeze Filter Service mit einem speziellen Filter für die Textklassifzierung und einem OCR Filter Plugin (optional)

Hinweis: Der Fabasoft Capture Client erfordert in der aktuellen Version immer ein gültiges OCR-Plugin.

Mindbreeze KonfigurationPermanenter Link zu dieser Überschrift

Mindbreeze Prediction ServicePermanenter Link zu dieser Überschrift

Das Prediction Service ist ein mehrmandantenfähiges Service, das die Infrastrukturkomponenten beinhaltet, um aus einem Datenset via einem Algorithmus ein Modell zu erstellen. Das Modell ist so trainiert, dass über dem Datenset Beziehungen zwischen Input und Output erlernt werden, was dann gegen untrainierten Inhalt angewendet werden kann. Konkret bedeutet das, dass zum Beispiel Zuordnungen zwischen Dokumenten und einer Klasse anhand des Dokumentinhalts erlernt werden können, um dann gegen neue Dokumente eine Klasse vorauszuberechnen.

Train Dataset Source Ratio

Mit diesem Parameter wird festgelegt welcher Anteil des Datasets (der Trainingsdokumente) zum Trainieren des Modells verwendet wird.

Der Wert 0.8 bedeutet zum Beispiel, dass mit 80% des Datasets trainiert wird. Mit den verbleibenden 20% des Datasets kann dann die Klassifizierung getestet werden.

Wie man das Modell testet ist im Abschnitt beschrieben.

Die Basis zur Aufteilung des Datasets in Trainings- bzw. Testobjekte bildet ein Hash-Wert der URIs der Dokumente im Dataset. Damit wird dieses sehr verlässlich aufgeteilt. Ähnliche Dokumentennamen und bestimmte Ordnerstrukturen vom Dataset stellen also kein Problem dar.

Mindbreeze Filter ServicePermanenter Link zu dieser Überschrift

Folgende Plugins sind Vorbedingungen für die Verwendung der Textkategorisierung

  • FilterPlugin.ABBYYFineReaderForPDFOCR (pdfocr)
  • FilterPlugin.PredictionServiceBasedTextCategorization (textcategorize)

Als Plugin für die Dateierweiterung pdf sollte darüberhinaus kein Thumbnail generiert werden.

FilterPlugin.ABBYYFineReaderForPDFOCRPermanenter Link zu dieser Überschrift

Aktivieren/Deaktivieren von ABBYY-Lizenz:

$ /opt/ABBYY/FREngine11/activatefre.sh

ABBYY FineReader Engine 11 activation script

Configuration file already exists.

1) Reconfigure service, manage licenses and set up samples

2) Manage licenses

3) Exit

Hinweis: Ist OCR nicht notwendig, kann mittels der Option „Pass Through on Engine Failure“ das PDF 1:1 ohne OCR weiterverarbeitet werden.

FilterPlugin.PredictionServiceBasedTextCategorizationPermanenter Link zu dieser Überschrift

Das Filter Plugin kann desweiteren so konfiguriert werden, dass Metadaten extrahiert werden.

Die Transformations-Pipeline besteht dabei aus mehreren Phasen, die in dieser Reihenfolge durchlaufen erden:

Precomputed Synthesized Metadata: Hier können Metadaten über eine Property Expression extrahiert werden

Entity Recognition Parameter: Hier können Metadaten über Entity Recognition Regeln extrahiert werden

CSV Transformation: Hier können Metadaten über CSV-Transformationsregeln extrahiert werden

Beginnen mit einem ProjektPermanenter Link zu dieser Überschrift

Das Prediction Service ist mehrmandantenfähig. Das heißt innerhalb eines Services können mehrere Mandanten betrieben werden. Innerhalb eines Mandanten können mehrere Projekte verwaltet werden. Ein Projekt entspricht einem Dataset. Über einem Projekt können wieder mehrere Modelle erzeugt werden.

DatasetPermanenter Link zu dieser Überschrift

Ein Dataset ist einem Projekt zugordnet. Das Dataset bildet die Basis für das Trainieren. Im konkreten Fall der Textklassifikation besteht das Dataset aus Inhalten bei denen die zugehörige Klasse bereits bekannt ist. Aktuell ist ein Dataset im Mindbreeze Index Format, da damit ein effizienter und flexibler Zugriff auf die Elemente möglich ist.

Importieren eines initialen DatasetPermanenter Link zu dieser Überschrift

Um ein Dataset zu erzeugen, reicht es also aus einfach eine Datenquelle zu indizieren und damit einen Index zu erstellen. Dieser Index kann dann einfach entsprechend im jeweiligen Projekt abgelegt werden. Auf der anderen Seite kann man Inhalte direkt via dem Prediction Service in den Store eingefügen. Dieser Ansatz kommt bei einem Capture Client einem Bulk Feedback gleich.

Die Dateisystemkonvention ist wie folgt aufgebaut:

<PredictionService-Daten-Verzeichnis>/tenants/<TenantID>/projects/<ProjectID>

storeDataset (Indexformat)

modelsMenge von Modellen

Arbeiten mit einem DatasetPermanenter Link zu dieser Überschrift

Man kann durch Ansprechen des Prediction Services via http auf dem jeweiligen Port (e.g 23800) die Mandanten und Projekte einesehen.

Hier eine Liste der Services auf innerhalb des Mandanten Training und des Projektes Energiesparhaus:

Trainieren und validieren eines ModellsPermanenter Link zu dieser Überschrift

Um ein Modell über einem Dataset zu trainieren, gibt es einen Steuerungsbefehl (mespredictioncontrol). Dieser kann auch auf einem entfernten Host ausgeführt werden, da zur Kommunikation lediglich der HTTP-Port des Services nötig ist.

mespredictioncontrol --in train_request.txt --type-in=textual --url=http://localhost:23800 --train

Die Information train_request.txt steuert die Selektion der Elemente aus dem Dataset sowie den Feature Extraction Prozess, wodurch aus den Quellelementen Feature-Vektoren werden, die für die Lernmethode entsprechend geeignet sind:

tenant_id: "Training"

project_id: "Energiesparhaus"

dataset_source {

        query_expr {

                   kind: EXPR_UNPARSED

                   unparsed_expr: "ALL"

        }

        item_ratio_property: ITEM_PATTERN

        item_property_pattern: "{{mes:key}}"

        item_ratio: 0.9

}(Datenquellen-Filter)

[mes.ipc.prediction.linear_kernel_config] {

    content_feature_weight: BINRF

    text_feature_config {

         label_property: "label"

         token_pattern: "\\pL{1,4}|\\d{1,3}"

         ngram_length: 2

max_token_count: 90

    }

}(Algorithmus-Konfig)

token_pattern

Mit dem Parameter token_pattern wird festgelegt wie der Text der Dokumente im Dataset für den Algorithmus aufgeteilt wird.

Mit den obigen Angaben wird der Text in Zeichenfolgen zwischen 1 und 4 Unicode-Buchstaben (\\pL{1,4}) bzw. Zahlen in 1 bis 3 Ziffern (\\d{1,3}) aufgeteilt.

Der sinnvollste Wert dieses Parameters ist abhängig vom zugrundeliegenden Dataset. Man erhält also bei der Modifikation dieses Parameters bessere bzw. schlechtere Ergebnisse.

ngram_length

Dieser Parameter legt fest wie viele der Tokens im Algorithmus wieder zusammengefügt werden. Auch hier wird man mit anderen Werten bessere bzw. schlechtere Ergebnisse erzielen.


Mit folgendem Befehl kann nun ein Modell getestet (validiert) werden:

mespredictioncontrol --in test_request.txt --type-in=textual --url=http://localhost:23800 --test

Die Konfiguration für das Testen besteht lediglich aus den Tenant, Project und Model IDs.

tenant_id: "Training"

project_id: "Energiesparhaus"

model_id: "7d3e97de-1680-11e5-a081-001a4af18900"

Optional können diese Parameter auch beim Aufruf überschrieben werden. Zum Beispiel um ein anderes Modell zu testen, kann auch einfach der Parameter --model_id angegeben werden:

mespredictioncontrol --in test_request.txt --type-in=textual
--url=http://localhost:23800 --test --model_id=<Alternative Model ID>

Modell verwaltenPermanenter Link zu dieser Überschrift

Mit folgendem Befehl werden die verfügbaren Modelle zu einem Projekt gelistet:

mespredictioncontrol --availablemodels  --tenant_id=Training
--project_id=Energiesparhaus --url=http://localhost:23800

Zu einem Projekt (innerhalb eines Tenants) können beliebig viele Modelle erzeugt werden. Wird im PredictRequest zum Klassifzieren eines Dokuments ein Modell angegeben, so wird dieses verwendet. Ist kein Modell definiert, so wird das Standard-Modell eines Projekts verwendet.

Nun kann mittels setdefaultmodel ein Modell zum Standardmodell definiert werden.

mespredictioncontrol --setdefaultmodel=<Model ID>  --tenant_id=Training
--project_id=Energiesparhaus --url=http://localhost:23800

Klassifizieren am Beispiel Capture ClientPermanenter Link zu dieser Überschrift

Nun wird als Beispiel der Capture Client dargestellt. Hier gibt es sogenannte Dokumenttypen diese sind entsprechende Labels des trainierten Modells zugeordnet.

Nach dem initialen Import (über XML Files im Dateisystem getriggert) wird automatisch eine Klassifizierung durchgeführt. Der Benutzer interagiert mit dem Dokument auf Basis der Liste offener Dokumente. Mit dem Bestätigen des Dokuments (Weiter) gibt es zwei mögliche Outcomes: Das Dokument ist korrekt klassifiziert bzw. das Dokument wurde falsch klassifiziert.


Unten finden Sie ein Beispiel, bei dem die Klasse korrekt ist. Mit Weiter wird diese bestätigt.

Hier ein Beispiel, bei dem durch Ändern des Dokumenttyps auf Baufinanzierung ebenfalls auch eine Korrektur als Feedback gegeben wird.

In jedem Fall wird ein Feedback an das Mindbreeze PredictionService gesendet.

Erneutes Trainieren auf Basis von FeedbackPermanenter Link zu dieser Überschrift

Mit folgendem Request werden nun auf der einen Seite die Dokumente aus dem Basis-Dataset (category:Web) zu 80% und das negative Feedback aus dem aktuellen Projekt (category:Training – category ist hier der Name des Mandanten) zu 100 % trainiert. Der übrigen Parameter sind ident zum initialen Trainings-Request.

tenant_id: "Training"

project_id: "Energiesparhaus"

dataset_source {

        query_expr {

                   kind: EXPR_UNPARSED

                   unparsed_expr: "category:Web"

        }

        item_ratio_property: ITEM_PATTERN

        item_property_pattern: "{{mes:key}}"

        item_ratio: 0.9

}

dataset_source {

        query_expr {

                   kind: EXPR_UNPARSED

                   unparsed_expr: "category:Training feedback_flag:true"

        }

        item_ratio_property: ITEM_PATTERN

        item_property_pattern: "{{mes:key}}"

        item_ratio: 1

}

(Datenquellen-Filter)

[mes.ipc.prediction.linear_kernel_config] {

    content_feature_weight: BINRF

    text_feature_config {

         label_property: "label"

         token_pattern: "\\pL{1,4}|\\d{1,3}"

         ngram_length: 2

max_token_count: 90

    }

mespredictioncontrol --in train_request.txt --type-in=textual --url=http://localhost:23800 --train

Entitäten aus Inhalten extrahierenPermanenter Link zu dieser Überschrift

Über Regeln können strukturierte Informationen aus Text erzeugt werden. Diese Regeln und die daraus zu extrahierenden Metadaten werden bei der Konfiguration des Plugins FilterPlugin.PredictionServiceBasedTextCategorization unterhalb des jeweiligen FilterServices in der Mindbreeze Konfiguration definiert.

Entities werden über Regeln definiert. Eine Regel hat folgende Syntax:

<RegelName> = <RegelDef_1> … <RegelDef_N> .

RegelName ist ein alphanummerisches Wort und muss mit einem Zeichen beginnen (a-z A-Z).

RegelDef_i kann folgende Form sein:

<RegelName>

/ <Regulärer Ausdruck> /

" <Text> "

Im obigen Beispiel sieht man die Regeln für Bausparantragsnummer (bspranr) bzw. für zwei Rechnungssnummern (rnr1, rnr2), die dann als Metadaten extrahiert werden.

bspranr = /\d{5}\.\d{6}/.

space = /\s*/.

num4 = /\d{4}/.

num4a = /\d{4}/.

num2 = /\d{2}/.

num5 = /\d{5}/.

rest = /x+/.

rnr1 = "Rechnung Nr." space num4 "-" num5 rest.

rnr2 = "Rechnung Nr." space num4 "-" num2 "-" num4a.

In der Konfiguration wird nun aus den Entities Metadaten (zB bspranr als data6).

Mittels der Entity Recognition Workbench können diese Regeln auch an konkreten Dokumenten aus dem Dataset dargestellt und getestet werden:

Im obigen Beispiel wird nun eine Rechnungsnummer anhand der Umgebung Rechnung Nr. <zahl>-<zahl>-<zahl> erkannt und als Eigenschaft „RNR“ ohne Trennzeichen erfasst.

AbfragesprachePermanenter Link zu dieser Überschrift

Die Mindbreeze InSpire Abfragesprache wird zur Formulierung von Abfragen in den Clients verwendet.

Abfragen von einzelnen Wortanfängen (Single Terms)Permanenter Link zu dieser Überschrift

Allgemein werden bei der Suche nach Wortanfängen und Wörtern keine Platzhalterzeichen (wie %, * usw.) verwendet.

Beispiel:

Bau

Eine Eingabe von „bau“ startet eine Suche nach Objekten, die Wörter mit den Zeichen „bau“ am Wortanfang und das Wort (den Term) bau enthalten. Bei einer Suche wird Groß- und Kleinschreibung grundsätzlich nicht berücksichtigt, d.h. eine Suche nach bau ergibt dieselben Treffer wie eine Suche nach Bau oder BAU.

Analog zum Abfragen von einzelnen Wörtern bzw. Wortanfängen können mehrere Wörter bzw. Wortanfänge in einem Dokument gesucht werden. Die einzelnen Wortanfänge einer Suchabfrage werden mit einem logischen UND verknüpft. Es werden nur jene Dokumente ausgegeben, die alle eingegebenen Wörter bzw. Wortanfänge enthalten.

Suche nach mehreren Wortanfängen im selben DokumentPermanenter Link zu dieser Überschrift

Beispiel:

Variante 1

auto test

Variante 2

Auto Test

Variante 3

AUTO TEST

Alle drei Varianten in diesem Beispiel liefern dasselbe Resultat. Es werden jene Ergebnisse geliefert, in denen die Wörter "auto" und "test" als Wortanfang oder als eigenständige Wörter (Terme) vorkommen. Die Groß- und Kleinschreibung wird nicht berücksichtigt.

Phrasensuche / exakte SuchePermanenter Link zu dieser Überschrift

Eine Phrasensuche sucht nach exakten Wörtern oder exakten Phrasen. Diese wird durch Angabe von beginnenden und schließenden Anführungszeichen (") unmittelbar vor und am Ende der gesuchten Phrase initiiert.

Beispiel:

"Knowledge is a matter of seconds"


Es wird nur nach exakt dieser Phrase gesucht. Die Phrasensuche ist daher nicht sinnvoll, wenn die genaue Schreibweise der Wörter bzw. der Phrase nicht bekannt ist.

Einschränkung nach DatenerweiterungPermanenter Link zu dieser Überschrift

Mindbreeze InSpire bietet die Möglichkeit, die Suche auf bekannte Dateierweiterungen einzuschränken.

Beispiel:

mind (extension:doc OR extension:xls OR extension:msg)


Diese Abfrage sucht in allen Dateien mit den Dateierweiterungen ".doc" (Microsoft Word), ".xls" (Microsoft Excel) und ".msg" (Microsoft Outlook) nach Wörtern mit dem Wortanfang "mind" und nach dem Wort "mind", wobei die Groß- und Kleinschreibung nicht berücksichtigt wird.

Logische VerknüpfungenPermanenter Link zu dieser Überschrift

ANDPermanenter Link zu dieser Überschrift

Wortanfänge, Wörter und Phrasen einer Suchabfrage werden implizit und-verknüpft. Das heißt, es werden nur jene Treffer zurückgeliefert, in denen alle gelisteten Wortanfänge, Wörter und Phrasen vorkommen. Das Schlüsselwort AND kann ebenfalls explizit in einer (zum Beispiel geschachtelten) Abfrage vorkommen.

Beispiel:

"Mindbreeze" AND "Search"

ORPermanenter Link zu dieser Überschrift

Die Oder-Verknüpfung liefert jene Ergebnisse, in denen zumindest eine der Suchbedingungen erfüllt ist, also in denen einer der Wortanfänge, eines der Wörter oder eine der Phrasen vorkommet. Das heißt, es werden auch jene Treffer zurückgeliefert, in denen nur ein einziger gelisteter Wortanfang, ein Wort oder eine gelistete Phrase vorkommen. Das Schlüsselwort OR muss explizit in einer Abfrage formuliert werden und kann auch geschachtelt vorkommen.

Beispiel:

Variante 1

("Mindbreeze" OR "Search") AND "Software"

Variante 2

("Mindbreeze" OR "Search") "Software"

Diese beiden Abfragen liefern jene Ergebnisse, in denen das Wort "Mindbreeze" und/oder das Wort "Search" gemeinsam mit dem Wort "Software" vorkommt. Sie liefern also Ergebnisse mit den Kombinationen "Mindbreeze" und "Software", "Search" und "Software", sowie "Mindbreeze", "Search" und "Software".

Andere SchlüsselwörterPermanenter Link zu dieser Überschrift

NEARPermanenter Link zu dieser Überschrift

Eine Suche mit NEAR liefert ausschließlich Ergebnisse zurück, in denen ein Wort nahe einem anderen steht.

Beispiel:

Mindbreeze NEAR Search

NOTPermanenter Link zu dieser Überschrift

Eine Suche mit NOT liefert Ergebnisse aus einer Grundmenge zurück, in denen ein Wort nicht vorkommt. NOT kann nicht alleine verwendet werden.

Beispiel:

Mindbreeze NOT slow

MetadatensuchePermanenter Link zu dieser Überschrift

Die Metadatensuche wird vor allem verwendet, um eine Ergebnismenge weiter einzuschränken, man spricht in diesem Zusammenhang auch von "Refinement" (Verfeinerung). Es gibt von Mindbreeze InSpire fix vorgegebene Metadaten sowie herstellerabhängige Metadaten (die von Mindbreeze-Partnern selbst definiert werden).

Syntax einer Metadatensuche: <metadatum>:<wert>

Beispiel:

title:Integration


Die Suche nach einer Dateierweiterung kann durch das Metadatum "extension" definiert werden.

Beispiel:

extension:doc mind


In diesem Beispiel liefern beide Varianten dasselbe Ergebnis: Microsoft Word Dateien, die das Wort „mind“ oder Wörter enthalten, die mit „mind“ beginnen.

Folgende Metadaten sind für die standardmäßig unterstützten Datenquellen definiert:

Kurzname

Metadatum

Erklärung

Verfügbar für

Name

title

Suche innerhalb des Namens

Alle

Erweiterung

extension

Suche innerhalb der Erweiterung

Alle

Ordner

directory

Suche innerhalb des Ordners

Dateisystem, Outlook, Exchange

Betreff

subject

Suche innerhalb des Betreffs

Outlook, Exchange

Von

from

Suche innerhalb der Sender

Outlook, Exchange

An

to

Suche nach Empfängern

Outlook, Exchange

(nicht angezeigt)

content

Suche innerhalb des Dokumentinhalts

Alle

Der Exchange Connector definiert unter anderem die Metadaten from und to.

Beispiel:

from:bauernf


Diese Suche liefert jene Objekte, die in der Absendeadresse den Begriff "bauernf" enthält.

IntervallsuchePermanenter Link zu dieser Überschrift

Eine Suche mit TO liefert grundsätzlich Begriffe zwischen der linken und der rechten Seite des TO Operators. Besonders interessant ist dasbei die verwendung der Intervallsuche in Verbindung mit numerischen Strings. Mindbreeze erkennt numerische Werte verschiedener Art, zB

Text

Kanonische Repräsentation (Deutsch)

100

100,00

100.0

100,00

100,0

100,00

1.000,00

1000,00

1.000

1,00

1,000.00

1000,00

-100

-100,00

Syntax einer Intervallsuche: <von> TO <bis>

Beispiel:

105 TO 110

Erweiterte Metadaten-IntervallsuchePermanenter Link zu dieser Überschrift

Syntax einer erweiterten Intervallsuche:

label:[<von> TO <bis>]

label:[<von>]

label:[TO <bis>]

Beispiel:

size:[1MB TO 1,4MB]

mes:date:[2012-03-20 TO 2012-03-25]

Kombination der Sprachelemente der AbfragesprachePermanenter Link zu dieser Überschrift

Eine Kombination der oben genannten Sprachelemente der Mindbreeze InSpire -Abfragesprache ist möglich.

Beispiel:

title:Integration from:bauernf extension:doc

Dieses Beispiel liefert Microsoft Word-Dokumente, die von einer Adresse mit dem Begriff "bauernf" geschickt wurden. Der Titel der resultierenden Objekte enthält das Wort "Integration" (bzw. ein Wort das mit "Integration" beginnt) enthält.



Familiar metadata search

Meaning

What you enter in the search field

title

Name

title:integration

extension

File ending

extension:doc search

directory

Directory

directory:review

subject

Subject

subject:Mindbreeze

from

From

from:Lehner

to

To

to:Lehner

url

Web addresse

url:"www.mindbreeze.com"

content

(not displayed)

content:search content:server

Combination of metadata

title:"integration from:Smith extension:doc