Dokumenten-Clustering *
  *(mit ActiveRecord)
         Ramon Wartala



     Rails Konferenz - 10.6.2008
Kollektive Intelligenz



•Wisdom of the crowds
•Collective intelligence
•Selbstorganisation
•Schwarmintelligenz
Wie schwer ist diese Kuh?
Information overload!!!
Clustering: Gruppen ähnlicher Dinge finden
Was sind relevante Informationen?
Index-Terme
   „Ein Index-Term ist für ein
Dokument um so signifikanter, je
häufiger er ein einem Dokument
  auftritt und je...
Linguististe Textanalyse
 Linguistisches Level    Textanalyseverfahren

     lexikalisch        Stopwortliste, Lexikon
   ...
unless stopwords

• bestimmte Artikel ('der', 'die', 'das')
• unbestimmte Artikel ('einer', 'eine', 'ein')
• Konjunktionen...
Part-of-speech-tagging
    This lecture's goal is to take you beyond
  simple database-backend applications and
 teach you...
Wortstämme

• Im Englischen sehr einfach mit dem Porter-
  Stemmer-Algorithmus (Porter 1980)
• Ruby Implementierung als Ru...
Alles zusammen
                             Text in Wörter
                                trennen
 Kurze Worte &
Stopwört...
Term-Gewichte
Term-Frequenz
                             freqij
                 tfij=
                         maxl(freqlj)

 wird pro ...
Inverse Dokumenten frequenz

                       N
           idfi= log   ni

    Die inverse Dokumentfrequenz idf
   h...
Term-Gewicht

                        freqij                N
wij= tfij * idfi =                  *   log
                ...
Ergebnis: Dokumenten
  Vektorraummodell
  Term1

          Dokument1= (Term1, Term22, Term56)


                  Dokument...
Document <
ActiveRecord::Base
Ähnlichkeit von Dingen = Korrelationsmaß
Korrelationsmaße
• Nummerisches    • Skalarprodukt
  Maß für die
  Ähnlichkeit     • Cosinus
  zweier N-       • Dice-Koef...
Dokumenten-Term-
     Matrix
 Term    Dokument1 Dokument2   DokFreq
 Apfel       2        0           2
Birne        0    ...
Termgewichtung
 Term    Dokument1   Dokument2
 Apfel       1           0
Birne        0           1
Mango       0,2       ...
Invertierte Liste
  Termfreq > 0.5
 Apfel   Dokument1

Birne                Dokument2
Mango                Dokument2
 Kiwi...
Dokumenten-Vektor
         als Hash
• dokument1={”Apfel”   1, ”Kiwi” 0.5}

• dokument2={”Birne”   1, ”Mango” 0.8, ”Kiwi” 0.5}
Cosinus-Koeffizient
Cosinus-Koeffizient




gleich: sim=1.0 orthogonal: sim=0.0
         ähnlich: 1 < sim > 0
Ziel von Dokumenten-Clustering
Ziele von Dokumenten
       Clustering
• Identifikation einer endlichen Menge von
  Clustern
• Dokumente im gleichen Cluste...
Vorteile von Clustering
Vorteile von Clustering
• Unbeaufsichtigtes Lernen
• schneller Überblick über den Inhalt einer
  sehr großen Datenmenge
• ...
k-means Algorithmus
• klassische Methode des Clustering und wurde für
  Textdokumente angepasst.

• In diesem Bereich weit...
k-means Algorithmus
1. Lege k fest                  5. Vergleiche jeden
                                   Dokumentenvekto...
D1                             D1
                     D5                             D5
           D4                    ...
co2alarm.com - clustered green headlines
•   co2alarm.com

•   Ruby on Rails Projekt

•   Übersicht über Neuigkeiten aus dem
    Umweltbereich

•   RSS-Agregator /...
Quellen
http://web.media.mit.edu/~dustin/rubyai.html
1.               2.                   3.
Kontakt
               ramon@wartala.de
               www.wartala.de
               xing.com/profile Ramon_Wartala
       ...
Dokumenten Clustering
Nächste SlideShare
Wird geladen in …5
×

Dokumenten Clustering

1.849 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.849
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
25
Aktionen
Geteilt
0
Downloads
3
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Dokumenten Clustering

  1. 1. Dokumenten-Clustering * *(mit ActiveRecord) Ramon Wartala Rails Konferenz - 10.6.2008
  2. 2. Kollektive Intelligenz •Wisdom of the crowds •Collective intelligence •Selbstorganisation •Schwarmintelligenz
  3. 3. Wie schwer ist diese Kuh?
  4. 4. Information overload!!!
  5. 5. Clustering: Gruppen ähnlicher Dinge finden
  6. 6. Was sind relevante Informationen?
  7. 7. Index-Terme „Ein Index-Term ist für ein Dokument um so signifikanter, je häufiger er ein einem Dokument auftritt und je seltener er in anderen Dokumenten vorkommt“
  8. 8. Linguististe Textanalyse Linguistisches Level Textanalyseverfahren lexikalisch Stopwortliste, Lexikon steigende morphologisch Wortstammanalyse Komplexität statistische und syntaktisch grammatikalische Regeln semantische Thesaurus pragmatisch Expertensysteme
  9. 9. unless stopwords • bestimmte Artikel ('der', 'die', 'das') • unbestimmte Artikel ('einer', 'eine', 'ein') • Konjunktionen ('und', 'oder', 'doch', usw.) • Präpositionen ('an', 'in', 'von', usw.) • Negation wie 'nicht'
  10. 10. Part-of-speech-tagging This lecture's goal is to take you beyond simple database-backend applications and teach you how to write smarter programs to take advantage of information you and others collect every day. DT, NN, PRP, JJ, VBZ, TO, NN, PRP, IN, JJ, nil, NNS, CC, VB, PRP, WRB, TO, VB, RBR, NNS, TO, VB, NN, IN, NN, PRP, CC, NNS,VB, DT, NN
  11. 11. Wortstämme • Im Englischen sehr einfach mit dem Porter- Stemmer-Algorithmus (Porter 1980) • Ruby Implementierung als RubyGem verfügbar • Mehr unter http://www.tartarus.org/ ~martin/PorterStemmer
  12. 12. Alles zusammen Text in Wörter trennen Kurze Worte & Stopwörter filtern Nur Nomen Wort & Wortstamm
  13. 13. Term-Gewichte
  14. 14. Term-Frequenz freqij tfij= maxl(freqlj) wird pro Term i abhängig vom Dokument j betrachtet. freqi,j ist die Auftrittshäufigkeit des betrachteten Terms i im Dokument j. Im Nenner steht die Maximalhäufigkeit über alle l Terme im Dokument (Baeza-Yates und Ribeiro-Neto, 1999).
  15. 15. Inverse Dokumenten frequenz N idfi= log ni Die inverse Dokumentfrequenz idf hängt hingegen nicht vom einzelnen Dokument, sondern vom Dokumentkorpus, der Gesamtmenge aller Dokumente im ab
  16. 16. Term-Gewicht freqij N wij= tfij * idfi = * log maxl(freqlj) ni Das Gewicht w eines Terms i im Dokument j
  17. 17. Ergebnis: Dokumenten Vektorraummodell Term1 Dokument1= (Term1, Term22, Term56) Dokument1= (Term11, Term13, Term42) Term3 Term2
  18. 18. Document < ActiveRecord::Base
  19. 19. Ähnlichkeit von Dingen = Korrelationsmaß
  20. 20. Korrelationsmaße • Nummerisches • Skalarprodukt Maß für die Ähnlichkeit • Cosinus zweier N- • Dice-Koeffiient Dimensionaler Vektoren • Jaccard- Koeffizeint • Overlap- Koeffizient
  21. 21. Dokumenten-Term- Matrix Term Dokument1 Dokument2 DokFreq Apfel 2 0 2 Birne 0 5 5 Mango 2 8 10 Kiwi 1 1 2 Pflaume 0 3 3
  22. 22. Termgewichtung Term Dokument1 Dokument2 Apfel 1 0 Birne 0 1 Mango 0,2 0,8 Kiwi 0,5 0,5 Pflaume 0 1
  23. 23. Invertierte Liste Termfreq > 0.5 Apfel Dokument1 Birne Dokument2 Mango Dokument2 Kiwi Pflaume Dokumen2
  24. 24. Dokumenten-Vektor als Hash • dokument1={”Apfel” 1, ”Kiwi” 0.5} • dokument2={”Birne” 1, ”Mango” 0.8, ”Kiwi” 0.5}
  25. 25. Cosinus-Koeffizient
  26. 26. Cosinus-Koeffizient gleich: sim=1.0 orthogonal: sim=0.0 ähnlich: 1 < sim > 0
  27. 27. Ziel von Dokumenten-Clustering
  28. 28. Ziele von Dokumenten Clustering • Identifikation einer endlichen Menge von Clustern • Dokumente im gleichen Cluster sollen möglichst ähnlich sein • Dokumente aus verschiedenen Clustern sollen möglichst unähnlich zueinander sein
  29. 29. Vorteile von Clustering
  30. 30. Vorteile von Clustering • Unbeaufsichtigtes Lernen • schneller Überblick über den Inhalt einer sehr großen Datenmenge • Identifikation der verborgenen Ähnlichkeit • Erleichterung der Suche nach ähnlichen Dokumenten • Verhalten gut erforscht
  31. 31. k-means Algorithmus • klassische Methode des Clustering und wurde für Textdokumente angepasst. • In diesem Bereich weit verbreitet und effizient • Findet nicht immer das Optimum • Ist schnell und effizient • Komplexität: O(k n i), wobei i die Anzahl * * Iterationen ist
  32. 32. k-means Algorithmus 1. Lege k fest 5. Vergleiche jeden Dokumentenvektor mit 2. Erzeuge k-Cluster jedem Zentroid (Zentroide) 6. Verschiebe Dokumente 3. Verteile alle Dokumente zu Zentroiden mit der zufällig auf die Zentroide höchsten Ähnlichkeit 4. Berechne Zentrodie als 7. Fertig, wenn kein Durchschnittsvektor Dokument mehr aller verschoben wird. Sonst Dokumentenvektoren zu Schritt 4 zurück
  33. 33. D1 D1 D5 D5 D4 D4 Z2 D2 D3 D2 D3 Z1 D1 D1 D5 D5 Z2 D4 Z2 D4 Z2 Z1 Z1 D2 Z1 D3 D2 D3
  34. 34. co2alarm.com - clustered green headlines
  35. 35. • co2alarm.com • Ruby on Rails Projekt • Übersicht über Neuigkeiten aus dem Umweltbereich • RSS-Agregator / -Crawler • k-means-Clusterer auf Datenbankebene • Visualisierung mit TreeMaps • Demokratisierung von „grünen“ Nachrichten
  36. 36. Quellen
  37. 37. http://web.media.mit.edu/~dustin/rubyai.html 1. 2. 3.
  38. 38. Kontakt ramon@wartala.de www.wartala.de xing.com/profile Ramon_Wartala twitter.com/rawar Ramon Wartala ist IT-Leiter beim Hamburger Online-Vermarkter orangemedia.de GmbH, Co-Autor des Buches Webanwendungen mit Ruby on Rails, Mitbegründer der ersten, deutschen Ruby on Rails Usergroup und seit 10 Jahren freier Autor im Bereich Softwareentwicklung und Entwickler von co2alarm.com.

×