Post­stel­len gro­ßer Unter­neh­men müs­sen jedes Jahr unzäh­lige Schrift­stü­cke ent­ge­gen­neh­men, kate­go­ri­sie­ren und anschlie­ßend an die Fach­ab­tei­lun­gen des Unter­neh­mens wei­ter­lei­ten. Dabei wird die Post in vie­len Unter­neh­men heut­zu­tage zuerst ein­ge­scannt, sodass sie den Mit­ar­bei­tern schnell auf elek­tro­ni­schem Wege zuge­stellt wer­den kann. Das Kate­go­ri­sie­ren der ein­ge­scann­ten Doku­mente wird jedoch vie­ler­orts noch manu­ell aus­ge­führt. Möchte man auch die­sen Vor­gang auto­ma­ti­sie­ren, wird eine Soft­ware benö­tigt, wel­che die ein­zel­nen Doku­men­ten­ty­pen iden­ti­fi­zie­ren und ent­spre­chend zuord­nen kann. Zu die­sem Zweck muss eine Doku­men­ten­klas­si­fi­ka­tion durch­ge­führt werden.

Bei einer Doku­men­ten­klas­si­fi­ka­tion ord­net die Soft­ware jedes ein­zelne Doku­ment genau einer Kate­go­rie zu, wel­che aus einer vorab defi­nier­ten Liste von Kate­go­rien stam­men muss. In dem hier vor­ge­stell­ten Fall­bei­spiel han­delt es sich bei dem Unter­neh­men um eine Ver­si­che­rung, deren Post­ein­gänge aus dem Bereich Kfz-Haft­pflicht bei­spiels­weise in die fol­gen­den Kate­go­rien ein­ge­teilt wer­den sollen:

  • Scha­dens­an­zeige
  • Kos­ten­vor­anschlag
  • Gut­ach­ten Kfz
  • Rech­nung Werkstatt
  • Medi­zi­ni­sches Gut­ach­ten (bei Personenschäden)
  • Rech­nung Arzt (bei Personenschäden)
  • Voll­macht
  • Sons­ti­ges
  1. Scha­dens­an­zeige
  2. Kos­ten­vor­anschlag
  3. Gut­ach­ten Kfz
  4. Rech­nung Werkstatt
  5. Medi­zi­ni­sches Gut­ach­ten (bei Personenschäden)
  6. Rech­nung Arzt (bei Personenschäden)
  7. Voll­macht
  8. Sons­ti­ges

Bei mehr­sei­ti­gen Schrift­stü­cken stellt sich zudem die Frage, ob man jede ein­zelne Seite als ein eige­nes Doku­ment auf­fas­sen soll oder ob das gesamte Schrift­stück ein ein­zi­ges Doku­ment dar­stellt. Im Fol­gen­den gehen wir davon aus, dass jede Seite ein­zeln klas­si­fi­ziert wer­den soll. Dies ist in unse­rem Fall­bei­spiel sinn­voll, da mehr­sei­tige Briefe z. B. einen Kos­ten­vor­anschlag und ein Gut­ach­ten Kfz ent­hal­ten können.

Super­vi­sed Learning

Damit die Soft­ware die kor­rekte Kate­go­rie eines Doku­ments auto­ma­tisch erken­nen kann, muss sie vorab durch Super­vi­sed Lear­ning (dt.: Über­wach­tes Ler­nen) trai­niert wer­den. Beim Super­vi­sed Lear­ning wird eine hin­rei­chend große Menge (>=1.000) an Doku­men­ten als Trai­nings­set aus­ge­wählt. Jedes Trai­nings­do­ku­ment wird dabei gela­belt, d.h. die kor­rekte Kate­go­rie wird manu­ell vor­ge­ge­ben, sodass sie der Soft­ware bekannt ist. Nun müs­sen Fea­tures (dt.: Merk­male) gefun­den wer­den, anhand derer die Soft­ware unter­schei­den kann, in wel­che Kate­go­rie ein Trai­nings­do­ku­ment fällt. Bei einer Doku­men­ten­klas­si­fi­ka­tion kann man zwi­schen Text-Fea­tures und Bild-Fea­tures unterschieden.

Text-Fea­tures erge­ben sich aus dem rei­nen Text­in­halt des Doku­men­tes wie bei­spiels­weise die Häu­fig­keit bestimm­ter Wör­ter oder das Ver­hält­nis von Zif­fern zu Buchstaben.

Bild-Fea­tures wer­den aus dem Lay­out der Seite abge­lei­tet, wie bei­spiels­weise das Vor­han­den­sein von Fotos auf einer Seite oder die Posi­tion und Größe der Textblöcke.

Text-Fea­ture-Extrak­tion

Zur Extrak­tion von Text-Fea­tures muss im ers­ten Schritt eine Soft­ware zur Tex­terken­nung (OCR für engl.: opti­cal cha­rac­ter reco­gni­tion) ein­ge­setzt wer­den. Diese extra­hiert aus der zunächst nur als Bild vor­lie­gen­den Seite den eigent­li­chen Text und macht ihn für die Wei­ter­ver­ar­bei­tung ver­füg­bar. Für die Tex­terken­nung kann bei­spiels­weise Tes­seract (Open­So­urce, kos­ten­los) oder ABBY Fine­Rea­der (kom­er­zi­ell) ein­ge­setzt werden.

Der durch die OCR-Soft­ware gewon­nene Text wird nun in ver­schie­de­nen Schrit­ten wei­ter aufbereitet:

Toke­ni­sie­rung:

Der fort­lau­fende Text wird in ein­zelne Wör­ter auf­ge­teilt und in eine geeig­nete Daten­struk­tur überführt.

Berei­ni­gung (Clea­ning):

Ent­fer­nen von Satz­zei­chen und Stopp­wör­tern. Dies sind Wör­ter mit gram­ma­ti­ka­li­schen Funk­tio­nen wie z.B. Hilfs­ver­ben, Prä­po­si­tio­nen oder Arti­kel, die auf­grund ihrer Häu­fig­keit kaum Rück­schlüsse auf den Inhalt eines Doku­ments zulas­sen und somit zur Doku­men­ten­klas­si­fi­ka­tion unge­eig­net sind.

Recht­schreib­kor­rek­tur:

Kor­ri­gie­ren von Recht­schreib­feh­lern und Feh­lern, die durch feh­ler­haf­tes OCR ent­stan­den sind. Hier­für kann bei­spiels­weise die freie Soft­ware Hun­spell ein­ge­setzt werden.

Lem­ma­ti­sie­rung:

Die Wör­ter wer­den auf ihre Grund­form zurück­ge­führt. So wird z.B. aus „gehe“, „gehst“, „ging“ etc. das Haupt­wort „gehen“. Für diese Auf­gabe kann die freie Pro­gramm­bi­blio­thek spaCy ver­wen­det werden.

Im nächs­ten Schritt wird nun ein Wör­ter­buch erstellt, das alle Wör­ter der Trai­nings­do­ku­mente nach Berei­ni­gung, Recht­schreib­kor­rek­tur und Lem­ma­ti­sie­rung ent­hält. Anschlie­ßend wird für jedes Trai­nings­do­ku­ment ein Vek­tor erstellt, der zu jedem Wort aus dem Wör­ter­buch einen nume­ri­schen Wert ent­hält. Die­ser Wert sollte mög­lichst groß sein, falls das Wort zur Klas­si­fi­ka­tion des Doku­ments geeig­net ist, andern­falls sollte er mög­lichst nahe null sein. Auf den ers­ten Blick ist es nahe­lie­gend, die Häu­fig­keit des Wor­tes im Doku­ment anzugeben.

Jedoch ist ein sol­ches Wort nicht zur Klas­si­fi­ka­tion geeig­net, falls es auch in Doku­men­ten ande­rer Kate­go­rien häu­fig auf­tritt. Aus die­sem Grunde ver­wen­den wir das soge­nannte Tf-idf-Maß (von eng­lisch term fre­quency (=Vor­kom­mens­häu­fig­keit) und inverse docu­ment fre­quency (=inverse Doku­men­ten­häu­fig­keit)). Die­ses gibt an, wie häu­fig ein Wort in einem Doku­ment rela­tiv zu allen ande­ren Doku­men­ten vor­kommt und hat einen Wert zwi­schen 0 und 1 (für Details zur Berech­nung siehe Infobox).

Als zusätz­li­ches Text-Fea­ture kann für manu­ell vor­ge­ge­bene Wör­ter oder Wort­teile ange­ge­ben wer­den, ob sie in einem Doku­ment auf­tau­chen oder nicht. Dem oben genann­ten Vek­tor wird dann ent­spre­chend eine 0 oder 1 ange­fügt. So taucht z. B. das Wort „Rech­nung“ in einer Rech­nung oft nur ein­mal auf, jedoch ist es in unse­rem Fall­bei­spiel trotz­dem für die Doku­men­ten­klas­si­fi­ka­tion nützlich.

Bild-Fea­ture-Extrak­tion

Bei der Bild-Fea­ture-Extrak­tion wird ein Bild in eine Reihe von Zah­len (einen Fea­ture-Vek­tor) umge­wan­delt, wel­cher die cha­rak­te­ris­ti­schen Eigen­schaf­ten eines Bil­des mög­lichst gut reprä­sen­tie­ren soll. Gleich­zei­tig soll­ten ähn­li­che Bil­der ähn­li­che Fea­ture-Vek­to­ren auf­wei­sen. Hierzu wer­den heut­zu­tage in der Regel Con­vo­lu­tio­nal Neu­ral Net­works (CNNs) eingesetzt.

In die­sem Fall­bei­spiel haben wir Mobi­leNet ein­ge­setzt. Dies ist ein CNN, wel­ches bereits mit einer gro­ßen Bild­da­ten­bank (ImageNet) vor­trai­niert wurde und daher direkt ein­ge­setzt wer­den kann. Das rechen­auf­wän­dige Trai­nie­ren eines eige­nen CNNs kann damit ent­fal­len, auch wenn der Ver­zicht auf ein usecase-spe­zi­fi­si­ches Trai­ning des CNNs mit leich­ten Per­for­man­ce­ein­bu­ßen ver­bun­den ist.

Sup­port Vec­tor Machine zur Klassifikation

Für jedes Trai­nings­do­ku­ment wer­den die bei­den Vek­to­ren aus der Text-Fea­ture- und der Bild-Fea­ture-Extrak­tion nun zusam­men­ge­führt. Mit die­sem zusam­men­ge­führ­ten Vek­tor wird eine Sup­port Vec­tor Machine (SVM) trai­niert, wel­che die eigent­li­che Doku­men­ten­klas­si­fi­ka­tion durch­führt. In die­sem Fall­bei­spiel wird jedes Doku­ment (=der zusam­men­ge­führte Fea­ture-Vek­tor) genau einer Kate­go­rie zugeordnet.

Bei einer spä­te­ren Klas­si­fi­ka­tion eines neuen, unbe­kann­ten Doku­ments wird die­ses genau wie die Trai­nings­do­ku­mente zunächst in einen Text-Fea­ture- und Bild-Fea­ture-Vek­tor umge­wan­delt, die bei­den Vek­to­ren zusam­men­ge­führt und dann von der Sup­port Vec­tor Machine einer Kate­go­rie zuge­ord­net, womit das Doku­ment dann klas­si­fi­ziert ist.

In Abbil­dung 1 sind die ein­zel­nen Schritte noch ein­mal gra­fisch zusammengefasst.

Dokumentenklassifikation mithilfe von Supervised Learning Bild2
Abbil­dung 1 Doku­men­ten­klas­si­fi­ka­tion im Überblick

Per­for­mance-Test

Um die Per­for­mance des Modells zu tes­ten, wird eine hin­rei­chend große Zahl an Test­do­ku­men­ten benö­tigt, die wie­der gela­belt sind, sodass die kor­rekte Kate­go­rie bekannt ist. Das Ver­hält­nis zwi­schen Trai­nings- und Test­do­ku­men­ten sollte dabei etwa 80 zu 20 betra­gen. Anschlie­ßend wer­den die Test­do­ku­mente mit­hilfe der Soft­ware klassifiziert.

Abbil­dung 2 zeigt die Klas­si­fi­ka­ti­ons­ge­nau­ig­keit in Form einer Tabelle (Con­fu­sion Matrix). Hier­bei ist die von der Soft­ware bestimmte Kate­go­rie hori­zon­tal dar­ge­stellt, wäh­rend die tat­säch­li­che Kate­go­rie ver­ti­kal auf­ge­lis­tet ist.

Die Anzahl der kor­rekt klas­si­fi­zier­ten Doku­mente pro Kate­go­rie würde in der Dia­go­na­len von links oben nach rechts unten auf­ge­lis­tet. Da wir uns aber nur für die falsch klas­si­fi­zier­ten Test­do­ku­mente inter­es­sie­ren, wur­den die Ein­träge auf der Dia­go­na­len durch Nul­len ersetzt.

Dokumentenklassifikation mithilfe von Supervised Learning Bild3
Abbil­dung 2 Con­fu­sion Matrix

Fazit

Mit dem hier beschrie­be­nen Ver­fah­ren wurde trotz eines rela­tiv klei­nen Trai­nings­set von ca. 1.000 Doku­men­ten bereits eine Per­for­mance von 86 % erreicht. Mit­hilfe grö­ße­rer Trai­nings­sets lässt sich die Per­for­mance dage­gen wei­ter stei­gern. So kann man z.B. anstelle der SVM auch ein Recur­rent Neu­ral Net­work (RNN) trai­nie­ren, wel­ches für kleine Trai­nings­sets zwar unge­eig­net ist, jedoch bei hin­rei­chend gro­ßen Trai­nings­sets eine deut­li­che Stei­ge­rung der Per­for­mance gegen­über einer SVM bewir­ken kann. Die auto­ma­ti­sche Doku­men­ten­klas­si­fi­ka­tion ist somit eine kos­ten­ef­fi­zi­ente Alter­na­tive zur manu­el­len Sor­tie­rung der Post­ein­gänge eines Unternehmens.