Maschinenlernen für Anfänger ‒ ein Workshop


13.07.2019 / Jahrestreffen des Junge Verlagsmenschen e. V.

Kai Weber / @fruehlingstag

Kurzlink zu den Folien: bit.ly/jvm19folien


[Leertaste für nächste Folie] [PDF-Download]

Kai Weber

  • Ausbildung: Buchhändler, Buchhandlung Reuffel, Koblenz
  • Studium:
    • [Magister Artium:] Allg. u. Vergl. Literaturwissenschaft, Buchwissen­schaft, Bohemistik und Deutsch als Fremdsprache, Johannes-Gutenberg-Universität, Mainz
    • [Master of Computer Science:] Fernstudium Informatik, Hochschule Trier
  • Berufsstationen:
    • e-Publishing / e-Business, Ernst Reinhardt Verlag, München
    • Projektmanager E-Book, Koch, Neff & Volckmar GmbH, Stuttgart
    • Softwareentwickler Digitale Verlagsauslieferung, Koch, Neff & Oetinger Verlagsauslieferung GmbH, Stuttgart
    • Softwareentwickler Digital Humanities, pagina GmbH Publikationstechnologien, Tübingen

Überblick

  • Teil 1: Funktionsweise von Maschinenlernen
    • Wie kann/muss man Texte in natürlicher Sprache vorverarbeiten, damit Sie mit Maschinenlern-Algorithmen verarbeitet werden können?
    • Wie funktionieren Maschinenlern-Algorithmen?
    • Erläuterung an konkreten Beispielen: Automatische Klassifikation von E-Books durch Naïve Bayes und Supportvektormaschine
  • Teil 2: Praxisteil
    • Wir trainieren eine Maschine, die Euren Literaturgeschmack erlernen soll
    • Wir verwenden dazu eine Menge von Romanen und Erzählungen als Trainingsdaten und das Programm WEKA zur Durchführung und Evaluation des Lernvorgangs.

Voraussetzungen für Teil 2

Wer im zweiten Teil auf einem eigenen Rechner die praktischen Schritte nachvollziehen möchte, sollte bis zum Beginn dieses zweiten Teils folgende Programme und Daten auf seinem Computer haben:

Teil 1

Entfremdung ist Folge von Desinteresse an der Technologie, die uns umgibt

"Modern man lives isolated in his artificial environment, not because the artificial is evil as such, but because of his lack of comprehension of the forces which make it work - of the principles which relate his gadgets to the forces of nature, to the universal order. It is not central heating which makes his existence 'unnatural', but his refusal to take an interest in the principles behind it. By being entirely dependent on science, yet closing his mind to it, he leads the life of an urban barbarian."

Arthur Koestler: The Act of Creation

(„Der moderne Mensch lebt isoliert in seiner künstlichen Umgebung, nicht weil das Künstliche ein Übel an sich wäre, sondern weil er die Kräfte, die das Künstliche funktionieren lassen, nicht versteht ‒ die Prinzipien, welche seine Geräte mit den Naturkräften, mit der universellen Ordnung, verbinden. Es ist nicht die Zentralheizung, die seine Existenz „unnatürlich“ werden lässt, sondern seine Weigerung, sich für die dahinterstehenden Prinzipien zu interessieren. Dadurch, dass er völlig von den Naturwissenschaften abhängig ist und zugleich seinen Geist vor ihnen verschließt, lebt er das Leben eines urbanen Barbaren.“)

... also sollten wir uns für Maschinenlernen und künstliche Intelligenz interessieren, um uns vor der Entfremdung zu bewahren!

Ziele dieses Teils

  • Vorstellen eines Beispiels zur Anwendung von Maschinenlernen im Verlagskontext
  • Aufzeigen einer typischen Datenvorbereitung bei Texten in natürlicher Sprache
  • Erklären von zwei für die Textklassifikation gut geeigneten Maschinenlernalgorithmen:
    • konkret, mit Beispielzahlen
    • ohne mathematische Formeln
  • Auch Nichtinformatikerinnen und Nichtmathematikern eine Vorstellung davon vermitteln, wie Maschinenlernen funktioniert

Voraussetzungen

Maschinenlernen verstehen ohne Informatik und Mathematik, echt jetzt?

Nun ja, eine Vorstellung von … ist schon nötig oder zumindest hilfreich:

  • Wahrscheinlichkeiten
  • Prozentrechnung
  • zwei- und dreidimensionale Koordinatensysteme
  • Funktionsbegriff (Abbildung Eingabe- auf Ausgabewert)

Ziemlich niedrigschwellig, nicht wahr?

Ziel meines Maschinenlern-Vorhabens

  • Deutschsprachige E-Books (EPUB) automatisch auf VLB-Warengruppe und/oder Thema-Kategorie abbilden

VLB-Warengruppen

  • codiert als dreistellige Ziffer
  • verpflichtend im Verzeichnis lieferbarer Bücher (VLB)
  • jedes Buch wird genau einer WG zugeordnet
  • Nummernkreise gruppieren Inhalte
  • komplette Auflistung in PDF-Datei: http://bit.ly/VLBWG20 (Kurzlink führt zu https://vlb.de/assets/images/wgsneuversion2_0.pdf)

Thema-Klassifikation

  • internationale Klassifikation (EDItEUR.org)
  • alphanumerische Codes von variabler Länge
  • jedem Buch können mehrere Codes zugewiesen werden

Wie klassifizierst Du?

  • Ich gebe Euch gleich ein paar Buchtitel, Cover und Kurzbeschreibungen
  • Ihr bekommt eine (nicht abschließende) Vorschlagsliste von VLB-Warengruppen
  • Überlegt bitte, welche Warengruppe Ihr vergeben würdet
  • Diskutiert mit Euren Sitznachbarinnen und -nachbarn

(A) George Sand: Ein Winter auf Mallorca

Die Kunst zu reisen ist fast die Wissenschaft des Lebens.

Im Oktober des Jahres 1838 bricht die gefeierte Schriftstellerin George Sand nach Mallorca auf, begleitet von Frédéric Chopin und ihren beiden Kindern. Zwar hofft sie auf die Gesundung ihres Geliebten und die ihres Sohnes, aber die Reise ist auch eine Flucht, um dem Klatsch und Tratsch der Pariser Gesellschaft zu entkommen. Der anfängliche Enthusiasmus weicht bald einer großen Ernüchterung, denn es gibt weder eine Willkommenskultur noch das erwartete milde Klima. Nach nur einem Winter kehrt die kleine Familie wieder nach Frankreich zurück.

Quelle: https://www.dtv.de/buch/george-sand-hermann-lindner-ein-winter-auf-mallorca-28099/

WG-Vorschläge: 111 (Belletristik/Hauptwerk vor 1945), 116 (Romanhafte Biographien), 117 (Briefe, Tagebücher), 362 (Reiseberichte/-erzählungen Europa), 951 (Kunst, Literatur: Biographien, Autobiographien)

(B) Elizabeth von Arnim: Elizabeth auf Rügen

In diesem berühmten Reiseroman veröffentlichte Elizabeth von Arnim ihre hinreißenden Erlebnisse und bezaubernden Naturbeobachtungen auf der Insel Rügen. Mit ihrem unvergleichlichen Erzähltalent entwirft sie ein prächtiges Bild der »Perle der Ostsee« und lädt zu einer kurzweiligen Wanderung über die Insel ein. Von Stralsund geht es über Miltzow und Lauterbach nach Göhren und Thiessow, von dort über Sellin nach Binz. Wir erkunden die Wälder um Granitz, das Jagdschloß und den Schwarzen See. Dann geht es weiter über Binz nach Stubbenkammer, Glowe und Wiek. Ein Abstecher nach Hiddensee beschließt die elftägige Wanderung.

https://www.suhrkamp.de/buecher/elizabeth_auf_ruegen-elizabeth_von_arnim_35816.html

WG-Vorschläge: 111 (Belletristik/Hauptwerk vor 1945), 117 (Briefe, Tagebücher), 321 (Sport- und Aktivreisen: Deutschland), 362 (Reiseberichte/-erzählungen Europa), 951 (Kunst, Literatur: Biographien, Autobiographien)

(C) Klüpfel / Kobr: Zwei Einzelzimmer, bitte

Kommissar Kluftinger reist nicht gern – seine geistigen Väter sind wegen ihm jedoch in ganz Deutschland unterwegs. Dieses Nomadenleben zwingt den beiden Allgäuern bisher ungeahnte Herausforderungen auf, denen sie sich mutig stellen: Wie verhält man sich auf einem roten Teppich, wenn einen kein Fotograf knipsen will, welche Allüren sollte man sich zulegen, um in der literarischen Welt ernst genommen zu werden? Und, allen voran, wie macht man den Veranstaltern klar, dass auch für ein Autorenduo ein Doppelzimmer keinesfalls in Frage kommt?

Quelle: https://www.piper.de/buecher/zwei-einzelzimmer-bitte-isbn-978-3-492-27220-9

WG-Vorschläge: 112 (Romane/Erzählungen), 117 (Briefe, Tagebücher), 118 (Essay), 185 (Humor), 361 (Reiseberichte/-erzählungen Deutschland), 951 (Kunst, Literatur: Autobiographien)

Maschinenlernen: kurzer schematischer Ablauf

Abb. aus Pavel Brazdil et al.: Metalearning. Applications to Data Mining, Berlin/Heidelberg 2009, S. 3

Modellbegriff

Ein Modell repräsentiert den gegenwärtigen Wissensstand, der durch Beobachtung von Beispielen erreicht wurde.

drei Bäume ein Baum ein Baum

ein Baum ein Baum und ein Strauch ein Bonsai

Bildnachweise: (1) Alethe - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=5076388 * (2) matin fattahi, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=54714067 * (3) Дмитрий Cкляренко, CC BY 3.0 https://commons.wikimedia.org/wiki/File:-_panoramio_(6749).jpg * (4) pakku, CC BY 3.0 * (5) Arieswings - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=49034785 * (6) CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=559431

Ausgangsmaterial

  • ca. 6900 E-Books aus ca. 70 Verlagen mit bekannten, von Verlagen vergebenen VLB-Warengruppen (ca. 150 Warengruppen kommen im Korpus vor)
  • ca. 1300 E-Books verfügen auch über Thema-Klassifikationen

Datenvorverarbeitung (1)

  • Zerlegen der E-Book-Texte in Sätze, Wörter, Lemmata
  • Wortartenerkennung („Part-of-Speech-Tagging“)
  • Zwischenspeicherung des Gesamtwortschatzes in effizienter Datenstruktur („Lucene-Index“) - das erleichtert spätere Berechnungen der „Wichtigkeit“ einzelner Wörter

Datenvorverarbeitung (1a)

Text aus HTML extrahieren:

							...
<head>
    <link href="../Styles/style001.css" rel="stylesheet" type="text/css"/>
    <title>Effi Briest</title>
</head>
<body>
    <h1 id="heading_id_10"><span class="bold">Zehntes Kapitel</span></h1>
    <p>Innstetten war erst sechs Uhr früh von Varzin zurückgekommen und hatte sich, Rollos Liebkosungen abwehrend, so leise wie möglich in sein Zimmer zurückgezogen. Er machte sich's hier bequem und duldete nur, dass ihn Friedrich mit einer Reisedecke zudeckte. »Wecke mich um neun.« Und um diese Stunde war er denn auch geweckt worden. Er stand rasch auf und sagte: »Bringe das Frühstück.«</p>
    <p>»Die gnädige Frau schläft noch.«</p>
    <p>»Aber es ist ja schon spät. Ist etwas passiert?«</p>
    <p>»Ich weiß es nicht; ich weiß nur, Johanna hat die Nacht über im Zimmer der gnädigen Frau schlafen müssen.«</p>
    <p>»Nun, dann schicke Johanna.«</p>
    [...]
</body>
						
Zehntes Kapitel

   Innstetten war erst sechs Uhr früh von Varzin zurückgekommen und hatte sich, Rollos Liebkosungen abwehrend, so leise wie möglich in sein Zimmer zurückgezogen.
   Er machte sich's hier bequem und duldete nur, dass ihn Friedrich mit einer Reisedecke zudeckte. »Wecke mich um neun.« Und um diese Stunde war er denn auch
   geweckt worden. Er stand rasch auf und sagte: »Bringe das Frühstück.«
   »Die gnädige Frau schläft noch.«
   »Aber es ist ja schon spät. Ist etwas passiert?«
   »Ich weiß es nicht; ich weiß nur, Johanna hat die Nacht über im Zimmer der gnädigen Frau schlafen müssen.«
   »Nun, dann schicke Johanna.«
						

Datenvorverarbeitung (1b)

Zerlegung des Textes in Sätze, dabei möglichst Punkte hinter Abkürzungen (Dr., bzw., usw.) nicht mit einem Satzende verwechseln.

1 Zehntes Kapitel
2 Innstetten war erst sechs Uhr früh von Varzin zurückgekommen und hatte sich, Rollos Liebkosungen abwehrend, so leise wie möglich in sein Zimmer zurückgezogen.
3 Er machte sich's hier bequem und duldete nur, dass ihn Friedrich mit einer Reisedecke zudeckte.
4 »Wecke mich um neun.«
5 Und um diese Stunde war er denn auch geweckt worden.

Datenvorverarbeitung (1c)

Zerlegung des Textes in Wörter (Tokenisierung)

1 Zehntes
2 Kapitel
3 Innstetten
4 war
5 erst
6 sechs
7 Uhr
8 früh
9 von
10 Varzin

Rückführung von flektierten Wörtern auf ihre Wörterbuchform (Lemmatisierung)

1 zehnt
2 Kapitel
3 Innstetten
4 sein
5 erst
6 sechs
7 Uhr
8 früh
9 von
10 Varzin

Ermittlung der Wortarten (Part-of-Speech-Tagging)

1 Nomen (NN) [fälschlicherweise!]
2 Nomen (NN)
3 Eigenname (NE)
4 finites Hilfsverb (VAFIN)
5 Adverb (ADV)
6 Kardinalzahl (CARD)
7 Nomen (NN)
8 determinierendes Adjektiv (ADJD)
9 Präposition (APPR)
10 Eigenname (NE)

Datenvorverarbeitung (2)

  • Erstellen sog. Wortvektoren (Tabellen) aus dem Gesamtvokabular der E-Books (ca. 3.000.000 „Lemmata“)
    • Ausfiltern sehr häufig vorkommender Wörter („Stopwords“)
    • Auswahl der ca. 15.000-25.000 wichtigsten Wörter
    • evtl. auch Ermittlung von Oberbegriffen (Hyperonymen)
E-Book Vorkommen des Wortes ... WG
... einstimmen energetisieren entspringen erhebend festfahren ...
#1 ja nein nein nein ja 112
#2 nein nein nein ja nein 260
#3 ja nein nein nein nein 973

Datenvorverarbeitung (3)

  • Berechnung der Häufigkeit bestimmer grammatischer oder statistischer Phänomene pro E-Book, z. B.
    • Häufigkeit von Adjektiven, Verb(form)en, Pronomina, usw.
    • Häufigkeit von Passivsätzen
    • durchschnittliche Wort- und Satzlänge
    • Schachtelungstiefe des Inhaltsverzeichnisses
    • Anzahl enthaltener Abbildungen
E-Book ... % Adjektive % Personalpronomen Ø Wortlänge IHVZ-Tiefe Anz. Abb. WG
#1 ... 6,28 10,48 5,08 1 14 112
#2 ... 5,57 11,41 4,68 1 2 260
#3 ... 7,58 6,01 5,70 1 4 973

Datenvorverarbeitung (4)

Alle bisher ermittelten Daten werden zu einem „Attributvektor“ (= einer Tabelle aller Dokumenteigenschaften) vereinigt.

E-Book Wortvektor sonstige Eigenschaften WG
entspringend erhebend festfahren ... % Adjektive Anz. Abb. ...
#1 nein nein ja ... 6,28 14 ... 112
#2 nein ja nein ... 5,57 2 ... 260
#3 nein nein nein ... 7,58 4 ... 973

Ist der Attributvektor zu groß (d. h. zu viele Spalten in der Tabelle), können die „informationshaltigsten“ Attribute berechnet werden und nur mit diesen weitergearbeitet werden.

Textklassifikation mit Naïve Bayes

  • Lernverfahren auf Basis von Wahrscheinlichkeitsrechnung
  • benannt nach dem englischen Mathematiker Thomas Bayes, dessen Satz von Bayes die theoretische Grundlage für das Verfahren liefert
  • wird bereits seit den 1950er Jahren erforscht
  • wird in der Textklassifikation schon lange erfolgreich verwendet (z. B. in der Spamklassifikation)

Benötigte Wahrscheinlichkeitswerte für Naïve Bayes

  1. A-priori-Wahrscheinlichkeit: „Wie wahrscheinlich ist es, dass ein E-Book zu einer bestimmten Warengruppe gehört, wenn ich den Inhalt des E-Books gar nicht beachte?“
  2. Bedingte Wahrscheinlichkeiten bereits bekannter E-Books: „Ich habe 283 E-Books, die zur Warengruppe 260 gehören und von denen ein gewisser Prozentsatz das Wort Meer, ein anderer Prozentsatz das Wort Insel enthält. Wie wahrscheinlich ist es, dass eines der bekannten E-Book der Warengruppe 260 diese Wörter enthält?
  3. A-posteriori-Wahrscheinlichkeit: Ich habe ein neues E-Book erhalten, von dem ich nicht weiß, zu welcher Warengruppe es gehört. Ich habe gesehen, dass das Buch die Wörter Brief, sehen und stark enthält. Zu welcher Warengruppe gehört das Buch am wahrscheinlichsten?

Mit dem Satz von Bayes lässt sich die A-posteriori-Wahrscheinlichkeit aus den beiden erstgenannten Wahrscheinlichkeiten berechnen.

A-priori-Wahrscheinlichkeit

Zum Beispiel die zehn häufigsten Warengruppen in meinem Trainingskorpus:

WG-Code Warengruppentext Anteil im Korpus Anteil im KNV-Katalog
112 erzählende Gegenwartsliteratur (ab 1945) 17,90% 10,12% (mit WG 110)
121 Krimis, Thriller, Spionage 8,30% 3,41%
260 Jugendbücher ab 12 Jahre 8,00% 0,47%
250 Kinderbücher bis 11 Jahre 4,06% 0,59%
132 Fantasy 3,89% 1,01%
481 Ratgeber Lebensführung, persönliche Entwicklung 3,72% 0,73%
973 Sachbuch: Gesellschaft 3,11% 0,42%
182 Manga 3,03% 0,03%
185 Humor 2,08% 0,23%
693 Fachbuch Medizin: klinische Fächer 1,60% 1,26%

Vorkommenswahrscheinlichkeiten von Attributen pro Klasse

(Wird in Trainingsphase berechnet)

Attribut Wahrscheinlichkeit des Auftretens in Warengruppe...
112 113 121 481 973 ...
angenehm 0,1944 0,3438 0,1328 0,3953 0,035 ...
ankommen 0,4662 0,2188 0,4792 0,4128 0,2098 ...
anmutig 0,0519 0,1094 0,0104 0,0174 0,007 ...
Attribut Mittelwert in Warengruppe...
112 113 121 481 973 ...
Tiefe des IHVZ 1,4324 1,5 1,3958 2,0465 1,7692 ...
Wortlänge 5,0921 5,1434 5,14 5,4322 5,7724 ...
Anz. Personalpron. 0,0893 0,0854 0,0869 0,0758 0,0462 ...

A-posteriori-Wahrscheinlichkeit

(wird in Evaluations- und Anwendungsphase berechnet)

Eingabe:

E-Book Wortvektor sonstige Eigenschaften WG
entspringend erhebend festfahren ... % Adjektive Anz. Abb. ...
#4 nein nein ja ... 8,96 12 ... ?

Ausgabe:

E-Book Wahrscheinlichkeit für Warengruppe ...
112 113 121 481 973 ...
#4 0,25 0,23 0,11 0,05 0,01 ...

Wieso naiv?

  • Satz von Bayes gilt nur, wenn Attribute (Dokumenteigenschaften) statistisch unabhängig voneinander sind
  • Die Wahrscheinlichkeit eines Attributs (eines Wortes) darf nur von der Dokumentklasse (Warengruppe) abhängig sein
  • Beispiel: Die Wahrscheinlichkeit des Vorkommens des Wortes Meer in Romanen (WG 112) sei 0,2. Die Wahrscheinlichkeit des Wortes Insel in Romanen sei 0,18. Diese Wahrscheinlichkeiten müssen auch dann gelten, wenn man weiß, dass das jeweils andere Wort ebenfalls im Text vorkommt: Wenn ich weiß, dass Meer in einem Roman vorkommt, muss die Wahrscheinlichkeit für das Vorkommen von Insel immer noch 0,18 betragen und nicht etwa 0,34.
  • Diese Annahme ist offensichtlich naiv: Meer und Insel korrelieren sehr wahrscheinlich miteinander und hängen nicht allein von der Textklasse ab.
  • Das Tolle: Naïve Bayes funktioniert in der Praxis trotzdem gut, selbst wenn die theoretische Grundbedingung missachtet wird.

Textklassifikation mit Supportvektormaschine (SVM)

  • als Algorithmus zur Mustererkennung von Vladimir Vapnik und Aleksej Červonenkis seit den 1970er Jahren entwickelt
  • als Verfahren zur Textklassifikation seit den 1990ern intensiv erforscht und erfolgreich angewendet
  • die Mathematik hinter SVMs ist kompliziert (strukturelle Risikominimierung, Lagrange-Multiplikatoren, Hilberträume)
  • es gibt aber eine anschauliche, leicht verständliche geometrische Interpretation von SVMs

Anordnung der Trainingsinstanzen in einer (Hyper-)Ebene

Der Anschaulichkeit halber wird hier ein vereinfachtes Beispiel im zweidimensionalen Raum gegeben.

In der Praxis hat der verwendete Raum so viele Dimensionen, wie die E-Books Attribute haben (= Spalten im Attributvektor, siehe oben), also für unsere E-Books ca. 25.000

weiße Punkte: Warengruppe A, schwarze Punkte: Warengruppe B

Trainingsphase: Trennebene berechnen

Zum Trainieren einer SVM wird nun die „Maximum Margin Hyperplane“ berechnet. Das ist die Hyperebene, welche die Elemente einer Warengruppe von den Elementen der anderen Warengruppe trennt und dabei den maximalen Abstand zu den Supportvektoren (= „Elemente am Rand“) hat.

Beliebige Trennlinie zwischen den Warengruppen
SVM mit Maximum Margin Hyperplane; Abb. aus Witten et al., Data Mining, 4. Aufl.

Anwendungsphase

Ein zu klassifizierendes Element wird im Hyperraum lokalisiert und berechnet, auf welcher Seite der Trennebene es sich befindet. Daraus ergibt sich dann die Warengruppe.

Beliebige Trennlinie: neue Instanz wird falsch klassifiziert
SVM mit Maximum Margin Hyperplane: neue Instanz wird korrekt klassifiziert

Nicht linear trennbare Probleme

Nicht alle Klassifikationsaufgaben sind linear trennbar. Diese Problem lässt sich im SVM-Kontext lösen, indem die Datenpunkte mit einer bestimmten Funktion („Kernelfunktion“) in eine höhere Dimension projeziert werden.

Linear trennbares Problem
Nicht linear trennbares Problem
Nach Transformation: linear trennbar

Evaluation des E-Book-Klassifikators für VLB-Warengruppen

Verfahren

Trainingsinstanzen

Attribute

Klassen

Erfolgsquote

SMO mit Hyperonymen

4615

25912

149

67,80%

SMO mit kontrolliertem Vokabular ohne Duplikate

4615

16798

149

66,93%

SMO

4615

16270

149

66,62%

Naïve Bayes mit AdaBoost.M1

4615

16270

149

60,91%

Naïve Bayes

4615

16270

149

59,42%

Nur 67,80% korrekt klassifiziert? Klingt nicht so gut...

Ja, stimmt, das geht noch besser, z. B. mit mehr Trainingsdaten.

Aber: Textklassifikation ist inhärent subjektiv!

Die Erfolgsquoten drücken nur aus, ob die trainierten Maschinen die E-Books genauso klassifizierten wie die Verlage. Nicht alle der übrigen 32,20% sind damit zwangsläufig falsch klassifiziert.

Vergleich Dich mit dem Verlag und mit der Maschine

(A) George Sand: Ein Winter auf Mallorca

Verlag: WG 111 (Romane, Erzählungen: Hauptwerk vor 1945)
Maschine: WG 362 (Reiseromane,-erzählungen: Europa)
Und du?

(B) Elizabeth von Arnim: Elizabeth auf Rügen

Verlag: WG 361 (Reiseromane,-erzählungen: Deutschland)
Maschine: WG 111 (Romane, Erzählungen: Hauptwerk vor 1945)
Und du?

(C) Klüpfel / Kobr: Zwei Einzelzimmer, bitte

Verlag: WG 361 (Reiseromane,-erzählungen: Deutschland)
Maschine: WG 185 (Humor)
Und du?

Fazit

  • Bei Trainingsmenge von ca. 5000 E-Books und ca. 150 Klassen erreichen die trainierten Maschinen mit Naïve Bayes und Supportvektormethode eine Treffergenauigkeit von ca. zwei Dritteln bezogen auf die Verlagsdaten
  • Man müsste aber eigentlich anders evaluieren: Wieviel Prozent der Klassifikationen wären für Fachleute akzeptabel, auch wenn sie nicht der Verlagsklassifikation entsprechen? Ich schätze: deutlich über 80 Prozent
  • Damit ist das hier vorgestellte Szenario nicht gut genug für eine vollautomatische Klassifikation, aber gut genug für ein Vorschlagssystem

Teil 2: Praxisworkshop

„Systemvoraussetzungen“

Wer die praktischen Schritte auf einem eigenen Rechner nachvollziehen möchte, sollte folgende Programme und Daten auf seinem Computer haben:

Aufgabenstellung

  • Wir wollen dem Computer beibringen, unseren Literaturgeschmack zu erlernen.
  • Wir verwenden dazu den einfachsten Fall von zwei verschiedenen Klassen: „mag_ich“ und „mag_ich_nicht“
  • Zur Verdeutlichung der Arbeitsweise genügen diese beiden Klassen, aber das Beispiel ließe sich natürlich beliebig erweitern: So könnten wir auch ein Sternchen-System (1 bis 5 Sterne als Klassen wie z. B. bei Goodreads) oder Schulnoten (1-6) als Klassen verwenden.

Manuelle Klassifikation der Trainings- und Testdaten

  • Entpackt die heruntergeladenen Plaintext-Romane (http://bit.ly/jvm19-romane)
  • Öffnet den Ordner „Klassiker“ in Eurem Datei-Explorer
  • Legt zwei Unterordner an: (a) Ordner „mag_ich“ und (b) Ordner „mag_ich_nicht“
  • Sortiert die 20 Romandateien in die beiden Ordner ein (per Verschiebeaktion)
  • (NB: Es wäre bei dieser geringen Datenmenge gut, wenn beide Ordner ungefähr gleich viele Texte enthalten)
  • (NB: Wer etwas mehr Texte zum Trainieren haben möchte, kann alternativ oder zusätzlich die 68 Texte aus https://github.com/computationalstylistics/68_german_novels/archive/master.zip verwenden)

Laden der Daten im Weka Explorer (1)

  • Wir starten das Weka-Programm und wählen im Startmenü die Explorer-Perspektive
  • Beim Laden von Textdaten verwenden wir den TextDirectoryLoader, den wir nur indirekt erreichen:
    • „Open file...“
    • „Dateityp“ auf „Alle Dateien“ stellen und zum vorhin bearbeiteten „Klassiker“-Ordner navigieren; dort auf „Öffnen“ klicken
    • Weka zeigt eine Fehlermeldung an(„Cannot determine file loader automatically, please choose one.“). Wir klicken auf „OK“
    • „Choose“ eröffnet uns die Möglichkeit, den „TextDirectoryLoader“ auszuwählen
    • Die Voreinstellungen der Parameter des Loaders können wir beibehalten und mit „OK“ bestätigen

Laden der Daten im Weka Explorer (2)

Weka liest nun die Texte ein und merkt sich für jeden Text die vergebene Klasse. Eine Visualisierung der Klassenverteilung erhalten wir nach Klick auf „@@class@@“ unter „Attributes“

Wortvektor erstellen (1)

Wie in Teil 1 erläutert, kann eine lernende Maschine mit einem Text als Ganzes nicht anfangen. Wir müssen also einen Wortvektor erstellen, also eine tabellarische Struktur, welche die Information enthält, welche Wörter in welchen Texten vorkommen.

Wir erstellen dazu in Weka einen „Filter“ mit Klick auf „Choose“ und Auswahl von „StringToWordVector“ im Pfad „filters -> unsupervised -> attribute“.

Nach der Auswahl klicken wir auf das fett gesetzte Wort „StringToWordVector“ und erhalten eine Parameterliste, mit der wir das Verhalten der Vektorisierung steuern können.

Wortvektor erstellen (2)

Einige interessante Einstellungen, mit denen man auch ohne größere Vorkenntnisse experimentieren kann:

  • outputWordCounts: Statt 0 (Wort kommt im Text nicht vor) und 1 (Wort kommt im Text vor) wird die genaue Anzahl der Vorkommen eines Wortes in einem Textes gezählt
  • normalizeDocLength: Wenn man outputWordCounts verwendet und die Texte unterschiedlich lang sind, sollte man diese Option ebenfalls verwenden, um die Anzahl der Worthäufigkeiten durch die Gesamtzahl der Worte eines Texte zu dividieren und die Zählung somit auf denselben „Maßstab“ zu bringen
  • minTermFreq: Nur Worte, die mindestens x mal in einem Dokument vorkommen, werden verwendet
  • lowerCaseTokens: Alle Worte werden in Kleinbuchstaben umgewandelt. Dadurch sind Nomen nicht mehr von anderen Wörtern unterscheidbar, aber großgeschriebene Wörter am Satzanfang werden gleich behandelt wie ihre kleingeschriebenen Varianten im Satzinnern.
  • stopWordsHandler: Bietet die Möglichkeit, eine Liste von zu ignorierenden Wörtern aus einer Textdatei zu laden („WordsFromFile“), so dass man z. B. inhaltleere Wörter wie Konjunktionen oder Pronomen ausfiltern kann

Wortvektor erstellen (3)

Wenn wir den „StringToWordVector“ anwenden („Apply“), erhalten wir eine neue Attributliste mit den ermittelten Wörtern.

Ein Klick auf ein Wort visualisiert im rechten unteren Fenster die Verteilung des Worts auf die beiden Klassen (rot/blau)

Wortvektor erstellen (4)

Wenn man beim Scrollen durch die Wortliste unzufrieden ist, kann man in der Optionsleiste oben auf „Undo“ klicken, den „StringToWordVector“ neu konfigurieren und erneut laufen lassen.

Wir stellen zum Beispiel fest, dass Guillemets wohl als normale Buchstaben gewertet wurden, die zum Wort gehören. Dies wollen wir ändern:

  • Für die Zerlegung des Textes in einzelne Worte ist der „WordTokenizer“ zuständig. Wir klicken in der „StringToWordVector“-Konfiguration auf das fett gesetzte Wort „WordTokenizer“
  • Dort sind im Feld „delimiters“ Zeichen angegeben, die als nicht zum Wort gehörende Trennzeichen definiert sind
  • Wir setzen den Curser ans Ende der Delimiterliste und geben dort die Guillemets und Chevrons ein, die wir entfernen wollen: « und » (in Windows tippen mit Alt+174 bzw. Alt+175 auf den Zahlenblocktasten, in Linux mit Strg+Shift+u00AB bzw. Strg+Shift+u00BB)
  • Wir führen die Vektorisierung erneut aus (zuerst „Undo“, dann „Apply“) und sehen nun in der Attributliste, dass die Worte mit den Guillemets verschwunden sind

Attribute bewerten

Auf dem Reiter „Select attributes“ kann man nach verschiedenen Algorithmen die besten, d. h. die „informativsten“ Attribute bezogen auf unser Klassifizierungsproblem, berechnen lassen.

Auf die Mathematik hinter den einzelnen Verfahren wollen wir hier nicht weiter eingehen.

Für Interessierte: „GainRatio“, „InfoGain“ und „SymmetricUncertainty“ basieren auf Entropieberechnung, „CfsSubset“ und „CorrelationAttributeEval“ berechnen Korrelationen zwischen Attributen und Klassen.

Beim Ausprobieren sollte der Schwellwert („Threshold“) beim „Ranker“ auf 0 oder größer eingestellt werden, damit man nicht zu viele Ergebnisse zurückbekommt.

Modell trainieren und evaluieren (1)

Auf dem Reiter „Classify“ kann man nun das eigentliche Modell erlernen und die Qualität statistisch prüfen.

Bei der voreingestellten Evaluation via „Cross-Validation“ werden unsere Eingabedaten in zehn Portionen eingetailt. In zehn Durchläufen werden dann jeweils 9 Portionen zum Trainieren und eine Portion zum Evaluieren verwendet. Das Evaluationsergebnis errechnet sich dann aus dem Durchschnitt der 10 einzelnen Trainings- und Testdurchläufe.

(Man sollte aus nahe liegenden Gründen niemals dieselben Daten zum Trainieren und Evaluieren verwenden, auch wenn das in Weka mit der Einstellung „Use training set“ möglich ist. Man fördert dadurch sogenannte „überangepasste“ Modelle, die zwar für die Trainingsdaten gute Ergebnisse liefern, nicht aber für noch unbekannte zukünftige Eingabedaten.)

Modell trainieren und evaluieren (2)

Im Bereich „Classifier“ können wir mit Klick auf „Choose“ den gewünschten Maschinenlernalgorithmus auswählen.

Hier finden wir die zuvor behandelten Verfahren „Naïve Bayes“ (im Ordner „bayes“) und Supportvektormaschine (als „SMO“ im Ordner „functions“).

Nach dem Durchführen eines Durchlaufs per Klick auf „Start“ erhalten wir Angaben über den Erfolg unseres Modells.

Es werden auch erlernte Parameter des Modells ausgegeben, z. B. Wahrscheinlichkeitswerte für einzelne Worte pro Klasse bei Naïve Bayes.

Ein Maschinenlernverfahren mit interessanter Ausgabe sind auch „Entscheidungsbaum-Lerner“, z. B. „J48“ (im Ordner „trees“).

Ausblick: Trainings- und Testmenge manuell erzeugen

  • Mit Klick auf „Edit” erhält man eine tabellarische Übersicht über die Daten
  • Dort kann man mit Klick auf die Nummern am Zeilenanfang zu entfernende Zeilen markieren (mit den üblichen Funktionalität von Klick bei gleichzeitig gedrückter Shift- oder Strg-Taste)
  • Danach bestätigt man unten mit Klick auf „OK” die Löschungen
  • Zurück im Hauptbildschirm kann man die verkleinerte Datenmenge als Testset speichern (Klick auf „Save…”)
  • Anschließend macht man die Löschung mit „Undo” rückgängig, öffnet die „Edit…”-Tabelle neu und löscht nun die Zeilen, die man beim ersten Mal stehen ließ. „OK” und nun als Trainingsset speichern

Mit manuellem Training-/Test-Setup arbeiten

  • Im „Classify”-Reiter kann man nun ein „Supplied Test Set” wählen („Set…”, „Open file…”, gewünschte Testdatei auswählen)
  • Im „Test Instances”-Fenster noch darauf achten, dass das Klassenattribut (in unserem Falle @@class@@) als Klasse eingestellt ist
  • „Classifier”-Algorithmus auswählen wie zuvor, starten
  • Ergebnis: Wir erhalten eine Aussage genau darüber, wie die im Testset enthaltenen Datensätze nach dem Training klassifiziert wurden

Hinweise für manuelles Zurichten der Testdaten

Es ist unbedingt darauf zu achten, dass die Testdatensätze in den Trainingsdatensätzen nicht enthalten sind, sonst erhält man kein zuverlässiges Ergebnis.

Die anderen Weka-Tools

  • Experimenter: Hier kann man mehrere Datensätze gleichzeitig von mehreren Algorithmen erlernen lassen und die Ergebnisse vergleichen
  • KnowledgeFlow: Hier kann man grafische Verarbeitungspipelines definieren und laufen lassen
  • Workbench: Explorer, Experimenter und KnowledgeFlow in einem
  • Simple CLI: Fenster zum Eingeben von Befehlen, für Fortgeschrittene

Beispiel KnowledgeFlow

Frohes Experimentieren!

(Rückfragen? Gerne! Ich bin erreichbar unter kai.weber@pagina.gmbh und via Xing, LinkedIn, Twitter, stackoverflow, etc.)