39
Dokumenten-Clustering (mit ActiveRecord) Ramon Wartala Rails Konferenz - 10.6.2008 * *

Dokumenten Clustering

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Dokumenten Clustering

Dokumenten-Clustering (mit ActiveRecord)

Ramon Wartala

Rails Konferenz - 10.6.2008

**

Page 2: Dokumenten Clustering

Kollektive Intelligenz

•Wisdom of the crowds•Collective intelligence•Selbstorganisation•Schwarmintelligenz

Page 3: Dokumenten Clustering

Wie schwer ist diese Kuh?

Page 4: Dokumenten Clustering

Information overload!!!

Page 5: Dokumenten Clustering

Clustering: Gruppen ähnlicher Dinge finden

Page 6: Dokumenten Clustering

Was sind relevante Informationen?

Page 7: Dokumenten Clustering

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“

Page 8: Dokumenten Clustering

Linguistisches Level Textanalyseverfahren

lexikalisch Stopwortliste, Lexikon

morphologisch Wortstammanalyse

syntaktisch statistische und grammatikalische Regeln

semantische Thesaurus

pragmatisch Expertensysteme

Linguististe Textanalyse

steigendeKomplexität

Page 9: Dokumenten Clustering

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'

Page 10: Dokumenten Clustering

Part-of-speech-taggingThis 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

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

Page 11: Dokumenten Clustering

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

Page 12: Dokumenten Clustering

Alles zusammenText in Wörter

trennen

Kurze Worte & Stopwörter filtern

Nur Nomen

Wort & Wortstamm

Page 13: Dokumenten Clustering

Term-Gewichte

Page 14: Dokumenten Clustering

Term-Frequenz

tfij=freqij

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).

Page 15: Dokumenten Clustering

Inverse Dokumenten frequenz

Die inverse Dokumentfrequenz idf hängt hingegen nicht vom einzelnen

Dokument, sondern vom Dokumentkorpus, der Gesamtmenge

aller Dokumente im ab

idfi= log ni

N

Page 16: Dokumenten Clustering

Term-Gewicht

wij= tfij * idfi =freqij

maxl(freqlj)log ni

N*

Das Gewicht w eines Terms i im Dokument j

Page 17: Dokumenten Clustering

Term1

Term2

Term3

Dokument1= (Term1, Term22, Term56)

Ergebnis: Dokumenten Vektorraummodell

Dokument1= (Term11, Term13, Term42)

Page 18: Dokumenten Clustering

Document < ActiveRecord::Base

Page 19: Dokumenten Clustering

Ähnlichkeit von Dingen = Korrelationsmaß

Page 20: Dokumenten Clustering

Korrelationsmaße• Skalarprodukt

• Cosinus

• Dice-Koeffiient

• Jaccard-Koeffizeint

• Overlap-Koeffizient

• Nummerisches Maß für die Ähnlichkeit zweier N-Dimensionaler Vektoren

Page 21: Dokumenten Clustering

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

Page 22: Dokumenten Clustering

Termgewichtung

Term Dokument1 Dokument2

Apfel 1 0

Birne 0 1

Mango 0,2 0,8

Kiwi 0,5 0,5

Pflaume 0 1

Page 23: Dokumenten Clustering

Invertierte ListeTermfreq > 0.5

Apfel Dokument1

Birne Dokument2

Mango Dokument2

Kiwi

Pflaume Dokumen2

Page 24: Dokumenten Clustering

Dokumenten-Vektor als Hash

• dokument1={”Apfel”⇒1, ”Kiwi”⇒0.5}

• dokument2={”Birne”⇒1, ”Mango”⇒0.8, ”Kiwi”⇒0.5}

Page 25: Dokumenten Clustering

Cosinus-Koeffizient

Page 26: Dokumenten Clustering

Cosinus-Koeffizient

gleich: sim=1.0 orthogonal: sim=0.0 ähnlich: 1 < sim > 0

Page 27: Dokumenten Clustering

Ziel von Dokumenten-Clustering

Page 28: 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

Ziele von Dokumenten Clustering

Page 29: Dokumenten Clustering

Vorteile von Clustering

Page 30: Dokumenten 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

Vorteile von Clustering

Page 31: Dokumenten Clustering

• 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

k-means Algorithmus

Page 32: Dokumenten Clustering

1. Lege k fest

2. Erzeuge k-Cluster (Zentroide)

3. Verteile alle Dokumente zufällig auf die Zentroide

4. Berechne Zentrodie als Durchschnittsvektor aller Dokumentenvektoren

5. Vergleiche jeden Dokumentenvektor mit jedem Zentroid

6. Verschiebe Dokumente zu Zentroiden mit der höchsten Ähnlichkeit

7. Fertig, wenn kein Dokument mehr verschoben wird. Sonst zu Schritt 4 zurück

k-means Algorithmus

Page 33: Dokumenten Clustering

D1

D2

D4

D5

D3

D1

D2

D4

D5

D3Z1

Z2

D1

D2

D4

D5

D3

Z1

Z2

D1

D2

D4

D5

D3Z1

Z2Z1

Z2

Page 34: Dokumenten Clustering

co2alarm.com - clustered green headlines

Page 35: Dokumenten Clustering

• 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

Page 36: Dokumenten Clustering
Page 37: Dokumenten Clustering

Quellen

Page 38: Dokumenten Clustering

http://web.media.mit.edu/~dustin/rubyai.html

1. 2. 3.

Page 39: Dokumenten Clustering

Kontakt

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.

[email protected]/profile Ramon_Wartalatwitter.com/rawar