Seminar Text- und Datamining Textmining-Grundlagen Erste Schritte mit NLTK Martin Hacker Richard Schaller Künstliche Intelligenz Department Informatik FAU Erlangen-Nürnberg 16.05.2013
Gliederung 1 Vorverarbeitung Segmentierung Normalisierung 2 Dokumentrepräsentationen 3 Worthäufigkeiten
Gliederung 1 Vorverarbeitung Segmentierung Normalisierung 2 Dokumentrepräsentationen 3 Worthäufigkeiten
Gliederung 1 Vorverarbeitung Segmentierung Normalisierung 2 Dokumentrepräsentationen 3 Worthäufigkeiten
Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Vorverarbeitung Segmentierung Tokenisierung Zerlegung eines Textes in einzelne Wörter (Tokens) Satzzeichen werden als eigene Tokens behandelt Einfacher Tokenizer in NLTK: import nltk tokens = nltk.word_tokenize( Dies ist ein Satz. ) Sonderfälle: Abkürzungen URLs und E-Mail-Adressen Mehrwortlexeme, Bindestrich-Komposita Zahlengruppen 5 / 22
Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Vorverarbeitung Segmentierung Satzgrenzenerkennung Hinweise für Satzgrenze: Satzzeichen.,!? Nächstes Wort großgeschrieben Schwierigkeiten: mehrdeutige Satzzeichen (Punkt nach Abkürzungen) Eigennamen und Nomen (im Deutschen) immer groß Eingeschachtelte Sätze (Parenthesen, Zitate)... 6 / 22
Gliederung 1 Vorverarbeitung Segmentierung Normalisierung 2 Dokumentrepräsentationen 3 Worthäufigkeiten
Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Vorverarbeitung Normalisierung Grundformenreduktion Ziel: Unterschiedliche flektierte Wortformen sollen als gleiches Wort (Lexem) erkannt werden. a) Lemmatisierung Ziel: Ermittle das Lemma Vollformenlexikon und/oder linguistische Analyse der morphologischen Wortuntereinheiten Implementierung z.b. mit Hilfe endlicher Automaten b) Stemming Ziel: Abbildung auf denselben Wortrumpf (idealerweise Wortstamm) regelbasiert/heuristisch simple Transformationsregeln 8 / 22
Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Vorverarbeitung Normalisierung Porter-Stemmer Bekannter, simpler Stemming-Algorithmus: In NLTK: Abschneiden von Suffixen Plätten von Umlauten Weitere kleine Anpassungen import nltk stemmer = nltk.stem.snowball.snowballstemmer( german ) stemmer.stem(u Übung ) 9 / 22
Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Vorverarbeitung Normalisierung Weitere Normalisierung Abgleich von Schreibvarianten Groß- und Kleinschreibung Schreibfehler Entfernen von Stoppwörtern ggf. Auflösen von Abkürzungen ggf. Entfernen von Satzzeichen 10 / 22
Gliederung 1 Vorverarbeitung Segmentierung Normalisierung 2 Dokumentrepräsentationen 3 Worthäufigkeiten
12 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Dokumentrepräsentationen Dokumente als Bag of Words Reihenfolge der Wörter unwichtig Grammatik unwichtig Zähle, wie oft jedes Wort vorkommt Als der Hase und der Igel um die Wette liefen, gewann der Igel. { Als :1, der :3, die :1, gewann :1, Hase :1, Igel :2, liefen :1, um :1, und :1, Wette :1}
13 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Dokumentrepräsentationen Vektorraum-Modell Darstellung jedes Dokuments durch einen Vektor gleicher Dimension. 1 Lexikon aller Wörter in der gesamten Dokumentsammlung (besser: Wortstämme, ohne Stoppwörter) Jedes Wort bekommt eine Dimension zugewiesen. Nummeriere dazu die Wörter aufsteigend ab 0: { Als :0, der :1, die :2, gewann :3, Hase :4, Igel :5, liefen :6, um :7, und :8, Wette :9} 2 Die Koordinaten des Vektors geben an, wie gut das jeweilige Wort das Dokument beschreibt. (in diesem Beispiel: Anzahl der Vorkommen) [1,3,1,1,1,2,1,1,1,1]
14 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Dokumentrepräsentationen Wie gut beschreibt ein Wort w das Dokument d? Absolute und relative Häufigkeit Term Frequency (TF) Gewichtetes Vorkommen eines Wortes w in einem Dokument d tf (w, d) = #w max x d {#x} Inverse Document Frequency (IDF) Wichtigkeit eines Wortes w generell weniger wichtig, wenn w in vielen Dokumenten d D vorkommt idf (w) = log D {d D:w d} TF-IDF Wichtigkeit eines Wortes w bzgl. Dokument d tfidf (w, d) = tf (w, d) idf (w)
15 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Dokumentrepräsentationen Abstand zwischen Dokumentvektoren Frage: Wie ähnlich sind sich zwei Dokumente (inhaltlich)? Anwendung: Clustering (Ähnliche Dokumente gehören zusammen), Information Retrieval (Ähnlichkeit zwischen Dokument und Suchanfrage), Bestimmte Klassifikationsverfahren (Ähnlichkeit zwischen Dokument und Prototyp).
16 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Dokumentrepräsentationen Abstandsmaße/Ähnlichkeitsmaße Euklidischer Abstand? Manhattan-Distanz? Besser: Kosinus-Maß (Kosinus des Winkels α zwischen den Vektoren):
Gliederung 1 Vorverarbeitung Segmentierung Normalisierung 2 Dokumentrepräsentationen 3 Worthäufigkeiten
18 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Worthäufigkeiten Zipfsches Gesetz Anzahl der Vorkommen der Wörter: umgekehrt proportional zum Häufigkeitsrang des Wortes. H(w r ) 1 r Folge: wenige sehr häufige Wörter Die meisten Wörter treten nur einmal (oder gar nicht) auf.
19 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Worthäufigkeiten Zipfsches Gesetz in Goethes Faust (1) 2500 '../output/tokens.dat' using 1:3 tokens (idealized) 2000 Haeufigkeit 1500 1000 500 0 0 2000 4000 6000 8000 10000 12000 14000 16000 Rang
20 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Worthäufigkeiten Zipfsches Gesetz in Goethes Faust (2) 10000 '../output/tokens.dat' using 1:3 tokens (idealized) 1000 Haeufigkeit 100 10 1 0.1 1 10 100 1000 10000 100000 Rang
21 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Worthäufigkeiten Zipfsches Gesetz in Goethes Faust (3) 10000 non-stopwords stopwords stems tokens 1000 Haeufigkeit 100 10 1 1 10 100 1000 10000 100000 Rang
22 / 22 Textmining-Grundlagen Seminar Text- und Datamining SoSe 2013 Worthäufigkeiten N-Gramme Mitunter sind nicht Einzelwörter, sondern Abfolgen von Wörtern von Interesse N-Gramm: Tupel von N aufeinanderfolgenden Wörtern: (w 1, w 2,..., w n ) Beispiele: (Unigramm), Bigramm, Trigramm,... Einsatzbeispiel: Suchvorschläge bei Google Ebenfalls möglich: N-Gramme von Wortklassen (z.b. für POS-Tagging) N-Gramme von Zeichen (z.b. für Sprachenidentifikation)