2. Über mich
●
Thomas Aglassinger
●
MSc
●
Software Entwickler / Product Owner
– Ursprünglich “klassische” Software-Entwicklung: Gesundheitswesen,
Banking, e-commerce
– “Hingerutscht” in die Sprachverarbeitung während Master’s Thesis zur
Auswertung elektronische Feedback
– Inzwischen angestellt bei ITELL.SOLUTIONS
●
“casual” Open Source Entwickler, Mit-Organisator PyGRAZ
●
http://www.roskakori.at/
●
https://github.com/roskakori
3. Agenda
●
Einführung in die Sprachverarbeitung
– Einige Grundbegriffe
– Texte in Sätze und Wörter zerlegen (sents, tokens)
– Tokens und verschiedenen Rollen von Wörtern
– Stimmungsanalyse
– Themen-Modellierung
●
Daten beschaffen
●
Praxis-Beispiel: TeLLers Feedbacks auswerten
4. Pipeline Architektur
●
Generelle Schritte, um Texte zu verarbeiten:
1.Daten beschaffen: Datenformate, Scrapping
2.Vorverarbeiten: Tippfehler, Smiley-Codes, Zerlegung in Sätze,
Wörter, Aspekte
3.Klassifizieren: Themen, Bewertung
4.Ergebnisse: Darstellung, Ablage
●
Video: Recipe for text analysis in social media (Eulalia Veny)
●
Article:
Extracting Twitter Data, Pre-Processing and Sentiment Analy
sis using Python 3.0
(Dilan Kalpa)
5. Einführung in die Sprachverarbeitung
●
Abgelegt als Jupyter-Notebook zum selbst
ausprobieren und herum spielen
●
Beispieldaten im Netz (Kaggle)
●
Video vom Vortrag bei Grazer Linuxtagen 2019:
https://www.youtube.com/watch?v=bgoBWegVeG
Y
7. Daten beschaffen
●
Öffentlich Daten für Wettbewerbe:
https://www.kaggle.com/
●
eBooks in Public Domain (auch als Textdateien):
http://www.gutenberg.org/
●
Aus dem Netz
– API: Über definierte Schnittstellen abholen
– Scraping: aus Web-Seiten extrahieren
8. Daten aus dem Netz: API
●
Mit fertigen Befehlszeilen Werkzeugen: curl, wget
●
Mit Scripts, z.B. Python und requests Modul
– Artikel: Python’s Requests Library (Guide) (Alex
Ronquillo)
●
Beispiel:
>>> import requests
>>> response = requests.get('https://api.github.com')
>>> response.json()
{'current_user_url': 'https://api.github.com/user',
'current_user_authorizations_html_url': 'https://github.com/settings/
connections/applications{/client_id}', 'authorizations_url': ...}
9. Scraping
●
Know-how erforderlich: HTML, CSS, X-Path expressions
– Für Suchfilter der relevanten Inhalte
●
Statisches HTML: https://scrapy.org/
– i.d.R. einfach
●
Dynamisch JavaScript-Seiten: z.B. mit Selenium
– i.d.R.mühsam
– Artikel: Intro to automation and web Crawling with Selenium
(Igor Zabukove)
●
Nach Neuorganisation der Seite: Programm anpassen
11. Plain text (*.txt)
●
Mit Standard-Bibliothek jeder beliebigen Sprache
●
Encoding beachten:
– UTF-8
– UTF-8 mit BOM
– Cp1252 (“code page”)
– ISO-8859-1 (“Latin 1”)
– …
– Heuristiken zum erraten, z.B. chardet
●
Zeilenumbruch: Windows vs Unix/macOS
12. CSV
●
Für Tabellen
●
Gibt nicht an: Trennzeichen, Zeichensatz, Escape-
Zeichen → im Programm oder als Parameter
●
Python: csv Modul in Standard-Bibliothek
13. Excel
●
Für Tabellen
●
Mehrere Tabellen in einer Datei (“Workbook”)
●
Fließkommazahlen vs. Dezimalzahlen
●
Kann auch Grafiken, Makros usw. Enthalten →
schwer verarbeitbar
●
Python: xlrd Modul
14. XML
●
Gut zum Abbilden von Beziehungen und
Hierarchien
●
“aufgeblasen”
●
Inhalte finden mit X-Path
●
Validieren mit Schema oder DocType
●
Mit Python: lxml
15. Word Dokumente
●
Kann viel Formatierung enthalten
●
Logische Formatierung wie “Überschrift”, “Zitat”
etc. möglich
●
Generierte Inhalte (z.B. Inhaltsverzeichnis)
●
Python: docx (unterstützt aber nicht altes “*.doc”
Format)
16. PDF
●
Beliebt zur Ablage, da nur umständlich wieder bearbeitbar
●
Physikalisch Formatierung
– Statt “Überschrift”: Fettschrift, Zeichensatz Times 24
●
Wenn Text auf der selben Seite in mehrere Spalten
unterteilt (vgl. Zeitung): schwer wieder
zusammenzuführen
●
Python: pdfminer.six, PyPDF2
●
Artikel: How to Extract Words from PDFs with Python
(Rizwan Qaiser)