FWPF Text Mining (dsci-txt) SS 2021

Eckdaten:

Einführung und Beginn:

  • Do 2020-03-18, 10:30-11:15

  • Zoom: siehe Moodle

Hinweis:

  • Wie in allen Veranstaltungen im Bereich KI und auch einigen anderen Fächern wie IoT, Security u.V.m. arbeiten wir mit Python. WIF-Studierende in einem Fachsemester >= 3 haben aber noch kein Python gelernt. Deshalb startet die Veranstaltung mit einer Python Intensiv-Phase, die dann in KW 14 abgeschlossen sein wird.

  • Coronabedingt sind die Pools in der HAW noch geschlossen. Damit wir in einer kontrollierten Umgebung sofort schnell losarbeiten können, stelle ich Ihnen ein Datascience Lab in Form einer komplett ausgesatteten virtuellen Linux-Maschine unter Oracle VirtualBox zur Verfügung. Technische Voraussetzungen siehe dsci-lab.

Themen und Termine

KW 11

Do 2021-03-18, 10:30 Uhr: Vorbesprechung

  • Besprechung Studienarbeit

  • Abschreiben erlaubt - machmal ;-)

TBD Teilnehmer die nächsten Tage:

Do Nachmittag:

KW 12

Do 2021-03-25

  • dsci-lab ist bei den TN installiert und betriebsbereit

  • Einführung in das Wiki (Accounts im Wiki anlegen, Wiki einrichten: Das mache ich auf Basis der Daten im Moodle-Kurs)

Do 2021-04-01 Gründonnerstag: vorlesungsfrei

KW 14

Beispiel Moodle > dsci-txt-mdsim.zip

Ideen für Veränderungen: Vergleiche Dateien

  • nur anhand von Zeilen, die keine Überschriften sind

  • nur anhand ihrer (Markdown-) Überschriften

KW 15

JB ist auf Dienstreise; asynchrones Lernen mit Moodle > a3.md, Feedback nächste Woche.

KW 16

Besprechung a3.md, sowie https://www.codewars.com/dashboard

Kollaborative Erstellung eines Toy-Corpus

Verwendung des Corpus’:

  • Wir in unserem Kurs: Textmining aus hoch strukturierten Dokumenten

  • Bachelorarbeit MK

  • allerlei öffentliche Experimente

Einführung in 20 newsgroups

Im Detail anschauen:

  • Wie ist so eine Newsgroup-Message aufgebaut?

  • Wir können wir die einzelnen Teile separieren?

  • Welche Daten wollen wir für den BoW auslesen?

  • Welche anderen semi-strukturierten Daten wollen wir auslesen?

    • basic: mit RegEx.

    • sophisticated: mit SpaCy

  • etc.

Ergebnissicherung: Etherpad: 20 Newsgroups KW 14

KW 17: Web-Crawling von Vereins-Terminen

2021-04-29: Erfahrungen aus der Masterarbeit LW.

KW 18: wget, pandoc

Kurze Übersicht in das Web-Crawlen mit wget, Nachbearbeitung mit Pandoc.

wget

Ausprobieren erlaubt mit http://jbusse.de/gpdscl/README.html - aber bitte serverfreundlich (!), d.h. mit wait!

Doku: https://www.gnu.org/software/wget/manual/, z.B. html, [PDF file (444K bytes)][https://www.gnu.org/software/wget/manual/wget.pdf)

weitere Beispiele z.B. hier:

Zusammensuchen:

  • only if the version on server is newer than your local copy

  • exclude some directories

  • limit the retrieval rate

  • include a wait period between consecutive fetch requests to reduce the server load

  • –convert-links

  • –adjust-extension

  • -np no parents!

  • download ONLY HTML files (ignore images, css, js): -A, -R, –follow-tags, –ignore-tags

pandoc

Pandoc ist ein Zauberkasten, um zwischen Formaten zu wechseln:

https://pandoc.org/

Mehrere Dokumente nacheinander mit Pandoc konvertieren: https://phlow.de/magazin/terminal/pandoc/:

$ for i in *.md;do pandoc -s -S $i -t asciidoc -o $i.adoc; done

Pandoc aus Python aufrufen: https://pypi.org/project/pypandoc/

beautifulsoup

https://pypi.org/project/beautifulsoup4/

Ausprobieren:

http://jbusse.de/gpdscl/README.html

KW xxx

Wofür brauchen wir regex? Siehe die Beispiele aus KW 16 im Etherpad Etherpad: 20 Newsgroups KW 14

Studienarbeit

Die LV besteht darin, die Studienarbeit während des Semesters anzufertigen.

  • zu Teilen, die rechtzeitig abgegeben werden, gibt es konstruktives Feedback.

  • Einige Abgaben sind für alle andere TN sichtbar:

    • Wir erzeugen damit einen Text-Korpus, den wir im Rahmen unserer Projekte selbst wieder zum Gegenstand unserer Textanalysen machen, insbesondere für Textähnlichkeits-Analysen.

  • Endergebnis: Zip-Datei, die gut dokumentiert alle relevanten Ergebnisse des Semesters enthält

Python Kompetenznachweis

Die Inhalte dieses Buchs sollten Sie beherrschen:

Idee:

  • Ein Cookbook ähnlich https://chrisalbon.com/

  • Eine Sammlung von Codewars-Aufgaben und Lösungen als dsci-txt-wiki

Unser Spielplatz:

In KW 15 möglich:

  • eine Zwischenklausur (digital, asynchron, Lösungszeit ein paar Tage, Zuhause)

  • Abschreiben möglich, aber nicht zu oft erwünscht

  • Wir werden die Ergebnisse der Klausur selbst wieder als Textgrundlage verwenden: Information retrieval from Python-Text

Textähnlichkeit

Konstruktive Beiträge zum einem der folgenden Projekte

  • Mindmaps

  • ipynb-Notebooks

RegEx

Extraktion von Uhrzeit aus Plaintext

Wir treffen uns Dienstags immer um 19 Uhr im großen Saal Proben sind Mittwochs 19:00-21:00 Donnerstags 18.30 bis 20.00 Uhr Treffpunkt Freitags 19 Uhr im Audimax G007

Aspekte:

  • einen Substring auswählen

  • definieren, was man damit machen will:

    • den Substring behalten?

    • einen String anhand der Substrings splitten?

  • den Substring als komplexes Objekt mit Anfang und Ende speichern

    Wir treffen uns Dienstags immer um 19 Uhr im großen Saal.

    Mittwochs 19:30-21:00 und Donnerstags 18 bis 20 Uhr ist offenes Training. An ungeraden Donnerstagen trainiert ab 20.15 Uhr dann noch die Leistungsgruppe in der großen Halle.

Projektidee für die Studienarbeit

Anliegen JB:

  • Ähnlichkeit zwischen semi-strukturierten Datensätzen (hier: Mindmaps) finden.

Im Detail:

  • Unsere Datensätze sind Mindmaps. Jeder Datensatz ist eine eigene Mindmap.

  • Die Mindmaps werden auf Basis der Aufgabenstellung “Stelle den Inhalt des Textes XXX als eine Freeplane-Mindmap dar” erzeugt. Lösungsbeispiel: die Mindmap unter https://de.wikipedia.org/wiki/Gew%C3%A4sser.

  • Nicht nur die Knoten-Inhalte sind interessant, sondern auch die (Baum-) Struktur der Mindmap, also Ober- und Unterbegriff

  • Die Mindmaps liegen als XML-Dateien vor: Auch die im XML enthaltenen Informationen könnten für die Ähnlichkeitssuche interessant sein.

Lösungsansatz

  • Wir betrachten ausschließlich die Text-Information der Mindmap plus Attribute von NODE-Elementen wie z.B. CREATED, MODIFIED. Wir betrachten keine komplexeren Layout-Mechanismen wie z.B. Farben, Wolken etc.

  • Die Lösung liegt schon als Gerüst vor (Moodle > dsci-txt-mmsim.zip), und kann jetzt kreativ erweitert werden.

Aktuelle Herausforderungen:

  • Manche Knoten enthalten Daten, die man an ihrer Struktur erkennt, z.B. ein HAW-Account (z.B. “s-jbusse”), ein Datum, eine Telefonnummer etc.: identifizieren, spezielle Behandlung?

  • Bei manchen Knoten ist der Typ explizit angegeben, z.B. Name: BUJ oder Datum: 2021-06-17: Auslesen, in ein DataFrame speichern?

  • Momentan werden z.B. die Knoten Fließgewässer / fließende Gewässer, Sankt Helena / St. Helena oder Ozean / Ozeane als komplett unterschiedlich betrachtet. Kann man mit spaCy hier etwas machen, z.B. Lemmatisieren? (anspruchsvoller)