Dokumenten Clustering

Preview:

DESCRIPTION

 

Citation preview

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 seltener er in anderen Dokumenten vorkommt“

Linguistisches Level Textanalyseverfahren

lexikalisch Stopwortliste, Lexikon

morphologisch Wortstammanalyse

syntaktisch statistische und grammatikalische Regeln

semantische Thesaurus

pragmatisch Expertensysteme

Linguististe Textanalyse

steigendeKomplexität

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'

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

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

Alles zusammenText in Wörter

trennen

Kurze Worte & Stopwörter filtern

Nur Nomen

Wort & Wortstamm

Term-Gewichte

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

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

Term-Gewicht

wij= tfij * idfi =freqij

maxl(freqlj)log ni

N*

Das Gewicht w eines Terms i im Dokument j

Term1

Term2

Term3

Dokument1= (Term1, Term22, Term56)

Ergebnis: Dokumenten Vektorraummodell

Dokument1= (Term11, Term13, Term42)

Document < ActiveRecord::Base

Ähnlichkeit von Dingen = Korrelationsmaß

Korrelationsmaße• Skalarprodukt

• Cosinus

• Dice-Koeffiient

• Jaccard-Koeffizeint

• Overlap-Koeffizient

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

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

Termgewichtung

Term Dokument1 Dokument2

Apfel 1 0

Birne 0 1

Mango 0,2 0,8

Kiwi 0,5 0,5

Pflaume 0 1

Invertierte ListeTermfreq > 0.5

Apfel Dokument1

Birne Dokument2

Mango Dokument2

Kiwi

Pflaume Dokumen2

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

• 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

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

Vorteile von 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

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

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

co2alarm.com - clustered green headlines

• 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

Quellen

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

1. 2. 3.

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.

ramon@wartala.dewww.wartala.dexing.com/profile Ramon_Wartalatwitter.com/rawar

Recommended