SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Startmeeting NLP
NLU Graz
Lerngruppe Sprachverarbeitung Graz
Ü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
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
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)
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
Daten beschaffen
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
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': ...}
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
Dateiformate
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
CSV
●
Für Tabellen
●
Gibt nicht an: Trennzeichen, Zeichensatz, Escape-
Zeichen → im Programm oder als Parameter
●
Python: csv Modul in Standard-Bibliothek
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
XML
●
Gut zum Abbilden von Beziehungen und
Hierarchien
●
“aufgeblasen”
●
Inhalte finden mit X-Path
●
Validieren mit Schema oder DocType
●
Mit Python: lxml
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)
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)
Q & A

Weitere ähnliche Inhalte

Ähnlich wie Startmeeting Interessengruppe NLP NLU Graz

PostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePeter Eisentraut
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 
Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007jan_mindmatters
 
Docbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XMLDocbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XMLPeter Eisentraut
 
Datenformate und Standards
Datenformate und StandardsDatenformate und Standards
Datenformate und StandardsJakob .
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBTobias Trelle
 
Schnittstellen und Webservices
Schnittstellen und WebservicesSchnittstellen und Webservices
Schnittstellen und WebservicesJakob .
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & ToolsUlrich Krause
 
2006 | Kollaboratives Wissensmanagement mit Plone
2006 | Kollaboratives Wissensmanagement mit Plone2006 | Kollaboratives Wissensmanagement mit Plone
2006 | Kollaboratives Wissensmanagement mit PloneJutta Horstmann
 
Netd@ys 08/09 Workshop - "Von der kreativen Idee zum innovativen Projekt"
Netd@ys 08/09 Workshop - "Von der kreativen Idee zum innovativen Projekt"Netd@ys 08/09 Workshop - "Von der kreativen Idee zum innovativen Projekt"
Netd@ys 08/09 Workshop - "Von der kreativen Idee zum innovativen Projekt"Stephan Hamberger
 
Wordpress vs. Textpattern
Wordpress vs. TextpatternWordpress vs. Textpattern
Wordpress vs. Textpatternguestcb8462
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzKai Donato
 
Datenformate und Standards
Datenformate und StandardsDatenformate und Standards
Datenformate und StandardsJakob .
 

Ähnlich wie Startmeeting Interessengruppe NLP NLU Graz (20)

Workshop: Besseres C#
Workshop: Besseres C#Workshop: Besseres C#
Workshop: Besseres C#
 
PostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie DatenbankalternativePostgreSQL: Die Freie Datenbankalternative
PostgreSQL: Die Freie Datenbankalternative
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
Lightningtalk Erlangen
Lightningtalk ErlangenLightningtalk Erlangen
Lightningtalk Erlangen
 
Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007
 
Docbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XMLDocbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XML
 
Datenformate und Standards
Datenformate und StandardsDatenformate und Standards
Datenformate und Standards
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen IBit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
 
Schnittstellen und Webservices
Schnittstellen und WebservicesSchnittstellen und Webservices
Schnittstellen und Webservices
 
JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
2006 | Kollaboratives Wissensmanagement mit Plone
2006 | Kollaboratives Wissensmanagement mit Plone2006 | Kollaboratives Wissensmanagement mit Plone
2006 | Kollaboratives Wissensmanagement mit Plone
 
Netd@ys 08/09 Workshop - "Von der kreativen Idee zum innovativen Projekt"
Netd@ys 08/09 Workshop - "Von der kreativen Idee zum innovativen Projekt"Netd@ys 08/09 Workshop - "Von der kreativen Idee zum innovativen Projekt"
Netd@ys 08/09 Workshop - "Von der kreativen Idee zum innovativen Projekt"
 
Ia 2009
Ia 2009Ia 2009
Ia 2009
 
Ia 2009
Ia 2009Ia 2009
Ia 2009
 
User Interface Patterns at IA09 Conference
User Interface Patterns at IA09 Conference User Interface Patterns at IA09 Conference
User Interface Patterns at IA09 Conference
 
Wordpress vs. Textpattern
Wordpress vs. TextpatternWordpress vs. Textpattern
Wordpress vs. Textpattern
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
 
Datenformate und Standards
Datenformate und StandardsDatenformate und Standards
Datenformate und Standards
 

Mehr von roskakori

Expanding skill sets - Broaden your perspective on design
Expanding skill sets - Broaden your perspective on designExpanding skill sets - Broaden your perspective on design
Expanding skill sets - Broaden your perspective on designroskakori
 
Multiple django applications on a single server with nginx
Multiple django applications on a single server with nginxMultiple django applications on a single server with nginx
Multiple django applications on a single server with nginxroskakori
 
Helpful pre commit hooks for Python and Django
Helpful pre commit hooks for Python and DjangoHelpful pre commit hooks for Python and Django
Helpful pre commit hooks for Python and Djangoroskakori
 
Helpful logging with python
Helpful logging with pythonHelpful logging with python
Helpful logging with pythonroskakori
 
Helpful logging with Java
Helpful logging with JavaHelpful logging with Java
Helpful logging with Javaroskakori
 
Einführung in Kommunikation und Konfliktmanagement für Software-Entwickler
Einführung in Kommunikation und Konfliktmanagement für Software-EntwicklerEinführung in Kommunikation und Konfliktmanagement für Software-Entwickler
Einführung in Kommunikation und Konfliktmanagement für Software-Entwicklerroskakori
 
Analyzing natural language feedback using python
Analyzing natural language feedback using pythonAnalyzing natural language feedback using python
Analyzing natural language feedback using pythonroskakori
 
Microsoft SQL Server with Linux and Docker
Microsoft SQL Server with Linux and DockerMicrosoft SQL Server with Linux and Docker
Microsoft SQL Server with Linux and Dockerroskakori
 
Migration to Python 3 in Finance
Migration to Python 3 in FinanceMigration to Python 3 in Finance
Migration to Python 3 in Financeroskakori
 
Introduction to pygments
Introduction to pygmentsIntroduction to pygments
Introduction to pygmentsroskakori
 
Lösungsorientierte Fehlerbehandlung
Lösungsorientierte FehlerbehandlungLösungsorientierte Fehlerbehandlung
Lösungsorientierte Fehlerbehandlungroskakori
 
XML namespaces and XPath with Python
XML namespaces and XPath with PythonXML namespaces and XPath with Python
XML namespaces and XPath with Pythonroskakori
 
Erste-Hilfekasten für Unicode mit Python
Erste-Hilfekasten für Unicode mit PythonErste-Hilfekasten für Unicode mit Python
Erste-Hilfekasten für Unicode mit Pythonroskakori
 
Introduction to trader bots with Python
Introduction to trader bots with PythonIntroduction to trader bots with Python
Introduction to trader bots with Pythonroskakori
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with pythonroskakori
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit antroskakori
 
Kanban zur Abwicklung von Reporting-Anforderungen
Kanban zur Abwicklung von Reporting-AnforderungenKanban zur Abwicklung von Reporting-Anforderungen
Kanban zur Abwicklung von Reporting-Anforderungenroskakori
 

Mehr von roskakori (17)

Expanding skill sets - Broaden your perspective on design
Expanding skill sets - Broaden your perspective on designExpanding skill sets - Broaden your perspective on design
Expanding skill sets - Broaden your perspective on design
 
Multiple django applications on a single server with nginx
Multiple django applications on a single server with nginxMultiple django applications on a single server with nginx
Multiple django applications on a single server with nginx
 
Helpful pre commit hooks for Python and Django
Helpful pre commit hooks for Python and DjangoHelpful pre commit hooks for Python and Django
Helpful pre commit hooks for Python and Django
 
Helpful logging with python
Helpful logging with pythonHelpful logging with python
Helpful logging with python
 
Helpful logging with Java
Helpful logging with JavaHelpful logging with Java
Helpful logging with Java
 
Einführung in Kommunikation und Konfliktmanagement für Software-Entwickler
Einführung in Kommunikation und Konfliktmanagement für Software-EntwicklerEinführung in Kommunikation und Konfliktmanagement für Software-Entwickler
Einführung in Kommunikation und Konfliktmanagement für Software-Entwickler
 
Analyzing natural language feedback using python
Analyzing natural language feedback using pythonAnalyzing natural language feedback using python
Analyzing natural language feedback using python
 
Microsoft SQL Server with Linux and Docker
Microsoft SQL Server with Linux and DockerMicrosoft SQL Server with Linux and Docker
Microsoft SQL Server with Linux and Docker
 
Migration to Python 3 in Finance
Migration to Python 3 in FinanceMigration to Python 3 in Finance
Migration to Python 3 in Finance
 
Introduction to pygments
Introduction to pygmentsIntroduction to pygments
Introduction to pygments
 
Lösungsorientierte Fehlerbehandlung
Lösungsorientierte FehlerbehandlungLösungsorientierte Fehlerbehandlung
Lösungsorientierte Fehlerbehandlung
 
XML namespaces and XPath with Python
XML namespaces and XPath with PythonXML namespaces and XPath with Python
XML namespaces and XPath with Python
 
Erste-Hilfekasten für Unicode mit Python
Erste-Hilfekasten für Unicode mit PythonErste-Hilfekasten für Unicode mit Python
Erste-Hilfekasten für Unicode mit Python
 
Introduction to trader bots with Python
Introduction to trader bots with PythonIntroduction to trader bots with Python
Introduction to trader bots with Python
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with python
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit ant
 
Kanban zur Abwicklung von Reporting-Anforderungen
Kanban zur Abwicklung von Reporting-AnforderungenKanban zur Abwicklung von Reporting-Anforderungen
Kanban zur Abwicklung von Reporting-Anforderungen
 

Startmeeting Interessengruppe NLP NLU Graz

  • 1. Startmeeting NLP NLU Graz Lerngruppe Sprachverarbeitung Graz
  • 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)
  • 17. Q & A