Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss19:laborbuch

Laborbuch

16.05.2019 Anja, Leon, Jojo

  • Was wollen wir machen?

Texte Autoren zuordnen. Erstmal nur deutsche Texte. Grundsätzlich auch nur Vergleich Texte einer Sprache. Frage: Was sind unser Input und Output? z.b. Input = 2 Autoren und ein Text. Oder nur ein Text, der zu einem Autor gehört, den unser Programm schon kennt.

  • Wie wollen wir das machen?

Analyse: Worthäufigkeiten, Verwendung Wortarten, Satzstruktur (Nebensätze?, wie lang sind die Sätze? etc.)

  • Was für Materialien gibt es dazu?

Project Gutenberg:https://www.gutenberg.org/ (nur via VPN erreichbar in DE)

Natural Language Toolkit: https://www.nltk.org/ https://www.nltk.org/book/

TensorFlow: https://www.tensorflow.org/ (Machine Learning/Deep Learning Database)


23.05.2019 Anja, Leon, Jojo

https://pdfs.semanticscholar.org/5c2b/6876df693e096c6c150a5b0d2a2c05043003.pdf (← ein Paper ws sich mit unserer Problematik auseinandersetzt) https://www.researchgate.net/post/What_is_the_most_appropriate_similarity_measure_to_choose_in_high_dimensional_spaces (← antwort auf skalierungsproblem)

Trainieren an 90% der Texte eines Autors, 10% als Testmenge Menge an Autoren die unser Programm kennt, Texte diesen Autoren zuordnen Was passiert wenn ein Text von einem Autor den er nicht kennt? (Ähnlich zu welchem Autor?)

  • Wörterbuch (Bag of words represenation): Liste der Wörter aus dem Text mit Häufigkeiten (oder n-grams statt wörter(https://en.wikipedia.org/wiki/N-gram))
  • relative Häufigkeiten der 5(oder wieviel auch immer) Standarwörter als Vektor(oder statt Worthäufigkeit Tf-idf Maß (https://de.wikipedia.org/wiki/Tf-idf-Ma%C3%9F))
  • Welche Abstandsrechnung zwischen Worthäufigkeitsvektoren? Euklidischer Abstand? Gewichteter Abstand?
  • Einbettung des Textes in einen Vektorraum
  • charakteristische Wörter sind häufig selten im Text, je kürzer der Text desto schwieriger
  • Schwankungen innerhalb eines Werkes von einem Autor, wenn kürzere Abschnitte genutzt werden
  • smooth bag of words: Betrachtung der Wörter vor und nach dem Wort; gleiches Wort, wenn gleicher Kontext (der Hund rennt, die Katze rennt, Hund = Katze?)

90% aller Texte auf Project Gutenberg im Englischen (~2011) von 25000 Bücher 59000 Bücher (Stand 2019) 36000 Bücher (Stand 2019) DE Hauptseite (alle auf Deusch?) –> Analyse Englischer Texte / nope Stefan's Library

  • Vektorraum mit „Autorenwolken“ → Label = Autor für jeden Punkt
  1. Schritt: Bibliothek (Texte!)
  2. Schritt: Bag of words
  • Wörterbuch mit Worthäufigkeiten (Leon & Anja alte HA)
  • Wörterbuch zu „Autorenwolke“? Betrachtung von n - Wörtern und deren Häufigkeiten, n-dimensionaler Vektor im n-Dimensionalen Vektorraum → 1 Punkt ist ein Text

TSNE scikit-learn (Paket machinelearning u. Klassifikation)


06.06.2019

Folgendes haben wir gelernt: -Unser Projekt lässt sich auf das Problem der Klassifikation zurückführen -für die Datenbank an Texten erstellen wir einen Vektor der alle Wörter aller Dokumente nach tf-idf sortiert damit die Reihenfolge für alle individuellen Vektoren gleich bleibt →

Nächstes Mal → wie bauen wir unser Modell auf? Logistische Regression?


13.06.2019 Jojo, Leon, Anja

html files auslesen, Liste mit Autoren erstellt, jeder Text als langer String (html einlesen.py)

Klassen Dictionary erstellen um nicht jedes Mal Texte aus der file-directory ziehen zu müssen. (Autoren und ihre Texte sind momentan extern (aka nicht in Python) gespeichert. D.h. um mit den Texten zu arbeiten müssen wir auf den Speicherort zu greifen. Und das ist anstrengend und kostet Rechenzeit und ist doof.)


20.06.2019 Jojo, Leon, Anja

Folgende Variablen müssen wir erfassen:

  • für tf-Wert:(nicht die absolute term frequency sondern die normalisierte):
    • 1. anzahl-dokumente * anzahl-wörter-in-diesem-Dokument * ||| häufigkeit eines wortes in einem dokument
    • 2. anzahl-dokumente * ||| maximale Häuigkeit eines Wortes in diesem Dokument
  • für idf wert:
    • 3. anzahl der dokumente
    • 4. anzahl verschiedener Wörter * ||| anzahl der dokumente, die dieses wort beinhalten
  • diese ergeben dann:
    • anzahl-dokumente * anzahl-wörter-in-diesem-Dokument * ||| tf = 1./2.
    • anzahl verschiedener Wörter * ||| idf = ln(3./4.)
  • tfidf-Wert = tf*idf

Ziel für unsere Datensammlung:

wir erstellen einen Vektor der alle wörter aller dokumente nach tf-idf sortiert damit die reihenfolge für alle individuellen vektoren gleich bleibt

→ es werden pro text ein Vektor für jeden autor erstellt. es entstehen autoren-vektoren-wolken

Ziel für den Umgang mit neuen unbekannten Texten:

Text wird eingelesen → Liste/Bibliothek mit allen Wörtern wird nach Häufigkeit erstellt.

→max(Wort,Dokument), anzahl der dokumente, anzahl der dokumente, die dieses wort beinhalten

→ ein vektor wird erstellt, der den Text repräsentiert. Ein Eintrag des Vektors = tf-idf wert

→ alle vektoren werden normalisiert und mit dem Neuen verglichen indem der Abstand gemessen wird(oder k-nearest neighbour, oder eine andere Art der Klassifikation)

Wörterbuch, alle Autoren + dazugehörige Texte: Schnitt vs. Vereinigung (Schnitt: alle Wörter aus dieser Liste sind garantiert in jedem Text, aber seltenere Wörter fallen weg; Vereinigung: alle Wörter die in allen Texten auch nur einmal vorkommen –> Gewichtung häufigere Wörter, mittelhäufige Wörter, seltene Wörter?


27.06.2019 Jojo, Anja, Leon

Stemmer: zu jedem Wort den „Wortstamm“ finden Bsp: kategorisch zu kategor, für Deutsch Snowball http://snowball.tartarus.org/algorithms/german/stemmer.html

Lemmatizer: zu jedem Wort den Infinitiv finden Bsp: Kategorien zu Kategorie, für Deutsch germalemma https://github.com/WZBSocialScienceCenter/germalemma

→ kürzere Wortliste, aber signifikante Verwendung von Genitiv o.Ä. fällt weg, Stemmer u. Lemmatizer sind nicht perfekt

ss19/laborbuch.txt · Zuletzt geändert: 2019/07/01 13:39 von anja00